fix(ui): Use a seperate highlight for connectors

* Some colorschemes do some funky things with the comment highlight, most
  notably making them italic, which messes up the outline connector. Fix
  this by copying the foreground color from the comment hl into a new
  highlight.

* Closes #42
This commit is contained in:
simrat39
2021-07-27 15:16:03 -07:00
parent 6a51c637dd
commit 1784dcc520

View File

@@ -27,25 +27,40 @@ local function highlight_text(name, text, hl_group)
end end
function M.setup_highlights() function M.setup_highlights()
-- Setup the FocusedSymbol highlight group if it hasnt been done already by
-- a theme or manually set
if vim.fn.hlexists('FocusedSymbol') == 0 then
vim.cmd 'hi FocusedSymbol term=italic,bold cterm=italic ctermbg=yellow ctermfg=darkblue gui=bold,italic guibg=yellow guifg=darkblue'
end
-- Some colorschemes do some funky things with the comment highlight, most
-- notably making them italic, which messes up the outline connector. Fix
-- this by copying the foreground color from the comment hl into a new
-- highlight.
local comment_fg_gui = vim.fn.synIDattr(vim.fn.hlID('SignColumn'), 'fg',
'gui')
local comment_fg_cterm = vim.fn.synIDattr(vim.fn.hlID('SignColumn'), 'fg',
'cterm')
vim.cmd(string.format('hi SymbolsOutlineConnector ctermfg=%s guifg=%s',
comment_fg_cterm, comment_fg_gui))
local symbols = config.options.symbols local symbols = config.options.symbols
-- markers -- markers
highlight_text("marker_middle", M.markers.middle, "Comment") highlight_text("marker_middle", M.markers.middle, "SymbolsOutlineConnector")
highlight_text("marker_vertical", M.markers.vertical, "Comment") highlight_text("marker_vertical", M.markers.vertical,
highlight_text("markers_horizontal", M.markers.horizontal, "Comment") "SymbolsOutlineConnector")
highlight_text("markers_bottom", M.markers.bottom, "Comment") highlight_text("markers_horizontal", M.markers.horizontal,
"SymbolsOutlineConnector")
highlight_text("markers_bottom", M.markers.bottom, "SymbolsOutlineConnector")
for _, value in ipairs(symbol_kinds) do for _, value in ipairs(symbol_kinds) do
local symbol = symbols[value] local symbol = symbols[value]
highlight_text(value, symbol.icon, symbol.hl) highlight_text(value, symbol.icon, symbol.hl)
end end
-- Setup the FocusedSymbol highlight group if it hasnt been done already by
-- a theme or manually set
if vim.fn.hlexists('FocusedSymbol') == 0 then
vim.cmd(
'hi FocusedSymbol term=italic,bold cterm=italic ctermbg=yellow ctermfg=darkblue gui=bold,italic guibg=yellow guifg=darkblue')
end
end end
return M return M