Skip to content

Commit 382996d

Browse files
committed
feat(hipatterns)!: make default highlighting be more visible
Make them reverse and bold of diagnostic groups instead of directly linking to them.
1 parent 8ce1537 commit 382996d

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
- FEATURE: implement `yank_path` mapping to yank full path under cursor.
66

7+
## mini.hipatterns
8+
9+
- BREAKING FEATURE: make `MiniHipatterns{Fixme,Hack,Todo,Note}` highlight groups by default be reverse and bold variant of `Diagnostic{Error,Warn,Info,Hint}` group instead of directly link to them. This ensures better visibility for color schemes which don't have explicit 'mini.hipatterns' support.
10+
711
## mini.hues
812

913
- FEATURE: add `'lowmedium'` and `'mediumhigh'` saturation levels.

lua/mini/hipatterns.lua

+11-5
Original file line numberDiff line numberDiff line change
@@ -704,12 +704,18 @@ H.create_autocommands = function()
704704
au('ColorScheme', '*', H.on_colorscheme, 'Reload all enabled pattern highlighters')
705705
end
706706

707-
--stylua: ignore
708707
H.create_default_hl = function()
709-
vim.api.nvim_set_hl(0, 'MiniHipatternsFixme', { default = true, link = 'DiagnosticError' })
710-
vim.api.nvim_set_hl(0, 'MiniHipatternsHack', { default = true, link = 'DiagnosticWarn' })
711-
vim.api.nvim_set_hl(0, 'MiniHipatternsTodo', { default = true, link = 'DiagnosticInfo' })
712-
vim.api.nvim_set_hl(0, 'MiniHipatternsNote', { default = true, link = 'DiagnosticHint' })
708+
local hi_link_bold_reverse = function(to, from)
709+
local data = vim.fn.has('nvim-0.9') == 1 and vim.api.nvim_get_hl(0, { name = from, link = false })
710+
or vim.api.nvim_get_hl_by_name(from, true)
711+
data.default, data.bold, data.reverse = true, true, true
712+
data.cterm = { bold = true, reverse = true }
713+
vim.api.nvim_set_hl(0, to, data)
714+
end
715+
hi_link_bold_reverse('MiniHipatternsFixme', 'DiagnosticError')
716+
hi_link_bold_reverse('MiniHipatternsHack', 'DiagnosticWarn')
717+
hi_link_bold_reverse('MiniHipatternsTodo', 'DiagnosticInfo')
718+
hi_link_bold_reverse('MiniHipatternsNote', 'DiagnosticHint')
713719
end
714720

715721
H.is_disabled = function(buf_id)

tests/test_hipatterns.lua

+12-5
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,18 @@ T['setup()']['creates side effects'] = function()
8989

9090
-- Highlight groups
9191
child.cmd('hi clear')
92+
child.cmd('hi DiagnosticError guifg=#ff0000 ctermfg=9')
93+
child.cmd('hi DiagnosticWarn guifg=#ffff00 ctermfg=11')
94+
child.cmd('hi DiagnosticInfo guifg=#0000ff ctermfg=14')
95+
child.cmd('hi DiagnosticHint guifg=#00ffff ctermfg=12')
9296
load_module()
93-
expect.match(child.cmd_capture('hi MiniHipatternsFixme'), 'links to DiagnosticError')
94-
expect.match(child.cmd_capture('hi MiniHipatternsHack'), 'links to DiagnosticWarn')
95-
expect.match(child.cmd_capture('hi MiniHipatternsTodo'), 'links to DiagnosticInfo')
96-
expect.match(child.cmd_capture('hi MiniHipatternsNote'), 'links to DiagnosticHint')
97+
local has_highlight = function(group, value) expect.match(child.cmd_capture('hi ' .. group), value) end
98+
local ctermfg = child.fn.has('nvim-0.9') == 1 and function(x) return ' ctermfg=' .. x end or function(_) return '' end
99+
100+
has_highlight('MiniHipatternsFixme', 'cterm=bold,reverse' .. ctermfg(9) .. ' gui=bold,reverse guifg=#ff0000')
101+
has_highlight('MiniHipatternsHack', 'cterm=bold,reverse' .. ctermfg(11) .. ' gui=bold,reverse guifg=#ffff00')
102+
has_highlight('MiniHipatternsTodo', 'cterm=bold,reverse' .. ctermfg(14) .. ' gui=bold,reverse guifg=#0000ff')
103+
has_highlight('MiniHipatternsNote', 'cterm=bold,reverse' .. ctermfg(12) .. ' gui=bold,reverse guifg=#00ffff')
97104
end
98105

99106
T['setup()']['creates `config` field'] = function()
@@ -129,7 +136,7 @@ end
129136
T['setup()']['ensures colors'] = function()
130137
load_module()
131138
child.cmd('colorscheme default')
132-
expect.match(child.cmd_capture('hi MiniHipatternsFixme'), 'links to DiagnosticError')
139+
expect.match(child.cmd_capture('hi MiniHipatternsFixme'), 'gui=bold,reverse')
133140
end
134141

135142
T['Auto enable'] = new_set()

0 commit comments

Comments
 (0)