From 89e271c0951fe11614943dd9296e12f1475e309a Mon Sep 17 00:00:00 2001 From: siduck Date: Sun, 1 May 2022 21:24:33 +0530 Subject: [PATCH] ease changing/adding highlight group colors nvim_set_hl function from nvim v0.7 was used, now the highlight groups & their colors are in one whole table, can easily merge user highlghts override table, check https://nvchad.github.io/config/Custom%20config#override-default-highlights --- lua/colors/highlights.lua | 282 ++++++++++++++++++++++-------------- lua/core/default_config.lua | 2 +- 2 files changed, 171 insertions(+), 113 deletions(-) diff --git a/lua/colors/highlights.lua b/lua/colors/highlights.lua index 5d68d25..9a86167 100644 --- a/lua/colors/highlights.lua +++ b/lua/colors/highlights.lua @@ -22,124 +22,182 @@ local red = colors.red local white = colors.white local yellow = colors.yellow local orange = colors.orange -local one_bg3 = colors.one_bg3 - --- functions for setting highlights -local fg = require("core.utils").fg -local fg_bg = require("core.utils").fg_bg -local bg = require("core.utils").bg - --- Comments -fg("Comment", grey_fg) -- Disable cursor line cmd "hi clear CursorLine" --- Line number -fg("cursorlinenr", white) - --- same it bg, so it doesn't appear -fg("EndOfBuffer", black) - --- For floating windows -fg("FloatBorder", blue) -bg("NormalFloat", darker_black) - --- Pmenu -bg("Pmenu", one_bg) -bg("PmenuSbar", one_bg2) -bg("PmenuSel", pmenu_bg) -bg("PmenuThumb", nord_blue) -fg("CmpItemAbbr", white) -fg("CmpItemAbbrMatch", white) -fg("CmpItemKind", white) -fg("CmpItemMenu", white) --- misc - --- inactive statuslines as thin lines -fg("StatusLineNC", one_bg3 .. " gui=underline") - -fg("LineNr", grey) -fg("NvimInternalError", red) -fg("WinSeparator", one_bg2) +-- highlight groups & colors +local hl_cols = { + + Comment = { fg = grey_fg }, + + -- line numbers + CursorLineNr = { fg = white }, + LineNr = { fg = grey }, + + -- those ugly ~'s + EndOfBuffer = { fg = black }, + + -- floating windows + FloatBorder = { fg = blue }, + NormalFloat = { bg = darker_black }, + + -- Pmenu i.e completion menu + Pmenu = { bg = one_bg }, + PmenuSbar = { bg = one_bg2 }, + PmenuSel = { bg = pmenu_bg, fg = black }, + PmenuThumb = { bg = nord_blue }, + + -- nvim cmp + CmpItemAbbr = { fg = white }, + CmpItemAbbrMatch = { fg = white }, + CmpItemKind = { fg = white }, + CmpItemMenu = { fg = white }, + + NvimInternalError = { fg = red }, + WinSeparator = { fg = one_bg2 }, + + -- Dashboard i.e alpha.nvim + AlphaHeader = { fg = grey_fg }, + AlphaButtons = { fg = light_grey }, + + -- Gitsigns.nvim + DiffAdd = { + fg = blue, + bg = "NONE", + }, + + DiffChange = { + fg = light_grey, + bg = "NONE", + }, + + DiffChangeDelete = { + fg = red, + bg = "NONE", + }, + + DiffModified = { + fg = orange, + bg = "NONE", + }, + + DiffDelete = { + fg = red, + bg = "NONE", + }, + + -- Indent blankline + IndentBlanklineChar = { fg = line }, + IndentBlanklineSpaceChar = { fg = line }, + + -- Lsp Diagnostics + DiagnosticHint = { fg = purple }, + DiagnosticError = { fg = red }, + DiagnosticWarn = { fg = yellow }, + DiagnosticInformation = { fg = green }, + + -- NvimTree + NvimTreeEmptyFolderName = { fg = folder_bg }, + NvimTreeEndOfBuffer = { fg = darker_black }, + NvimTreeFolderIcon = { fg = folder_bg }, + NvimTreeFolderName = { fg = folder_bg }, + NvimTreeGitDirty = { fg = red }, + NvimTreeIndentMarker = { fg = one_bg2 }, + NvimTreeNormal = { bg = darker_black }, + NvimTreeNormalNC = { bg = darker_black }, + NvimTreeOpenedFolderName = { fg = folder_bg }, + + NvimTreeWinSeparator = { + fg = darker_black, + bg = darker_black, + }, + + NvimTreeWindowPicker = { + fg = red, + bg = black2, + }, + + -- Telescope + TelescopeBorder = { + fg = darker_black, + bg = darker_black, + }, + + TelescopePromptBorder = { + fg = black2, + bg = black2, + }, + + TelescopePromptNormal = { + fg = white, + bg = black2, + }, + + TelescopePromptPrefix = { + fg = red, + bg = black2, + }, + + TelescopeNormal = { bg = darker_black }, + + TelescopePreviewTitle = { + fg = black, + bg = green, + }, + + TelescopePromptTitle = { + fg = black, + bg = red, + }, + + TelescopeResultsTitle = { + fg = darker_black, + bg = darker_black, + }, + + TelescopeSelection = { bg = black2 }, +} if ui.transparency then - bg("Normal", "NONE") - bg("Folded", "NONE") - fg("Folded", "NONE") - fg("Comment", grey) + local hl_groups = { + "NormalFloat", + "Normal", + "Folded", + "NvimTreeNormal", + "NvimTreeNormalNC", + "TelescopeNormal", + "TelescopePrompt", + "TelescopeResults", + "TelescopeBorder", + "TelescopePromptBorder", + "TelescopePromptNormal", + "TelescopePromptPrefix", + } + + for index, _ in ipairs(hl_groups) do + hl_cols[hl_groups[index]] = { + bg = "NONE", + } + end + + hl_cols.NvimTreeWinSeparator = { + fg = grey, + bg = "NONE", + } + + hl_cols.TelescopeResultsTitle = { + fg = black, + bg = blue, + } end --- [[ Plugin Highlights - --- Dashboard -fg("AlphaHeader", grey_fg) -fg("AlphaButtons", light_grey) - --- Git signs -fg_bg("DiffAdd", blue, "NONE") -fg_bg("DiffChange", grey_fg, "NONE") -fg_bg("DiffChangeDelete", red, "NONE") -fg_bg("DiffModified", red, "NONE") -fg_bg("DiffDelete", red, "NONE") - --- Indent blankline plugin -fg("IndentBlanklineChar", line) -fg("IndentBlanklineSpaceChar", line) - --- Lsp diagnostics - -fg("DiagnosticHint", purple) -fg("DiagnosticError", red) -fg("DiagnosticWarn", yellow) -fg("DiagnosticInformation", green) - --- NvimTree -fg("NvimTreeEmptyFolderName", folder_bg) -fg("NvimTreeEndOfBuffer", darker_black) -fg("NvimTreeFolderIcon", folder_bg) -fg("NvimTreeFolderName", folder_bg) -fg("NvimTreeGitDirty", red) -fg("NvimTreeIndentMarker", one_bg2) -bg("NvimTreeNormal", darker_black) -bg("NvimTreeNormalNC", darker_black) -fg("NvimTreeOpenedFolderName", folder_bg) -fg("NvimTreeRootFolder", red .. " gui=underline") -- enable underline for root folder in nvim tree -fg_bg("NvimTreeStatuslineNc", darker_black, darker_black) -fg_bg("NvimTreeWinSeparator", darker_black, darker_black) -fg_bg("NvimTreeWindowPicker", red, black2) - --- Telescope -fg_bg("TelescopeBorder", darker_black, darker_black) -fg_bg("TelescopePromptBorder", black2, black2) - -fg_bg("TelescopePromptNormal", white, black2) -fg_bg("TelescopePromptPrefix", red, black2) - -bg("TelescopeNormal", darker_black) - -fg_bg("TelescopePreviewTitle", black, green) -fg_bg("TelescopePromptTitle", black, red) -fg_bg("TelescopeResultsTitle", darker_black, darker_black) - -bg("TelescopeSelection", black2) - --- Disable some highlight in nvim tree if transparency enabled -if ui.transparency then - bg("NormalFloat", "NONE") - bg("NvimTreeNormal", "NONE") - bg("NvimTreeNormalNC", "NONE") - bg("NvimTreeStatusLineNC", "NONE") - fg_bg("NvimTreeWinSeparator", grey, "NONE") - - -- telescope - bg("TelescopeBorder", "NONE") - bg("TelescopePrompt", "NONE") - bg("TelescopeResults", "NONE") - bg("TelescopePromptBorder", "NONE") - bg("TelescopePromptNormal", "NONE") - bg("TelescopeNormal", "NONE") - bg("TelescopePromptPrefix", "NONE") - fg("TelescopeBorder", one_bg) - fg_bg("TelescopeResultsTitle", black, blue) +local utils = require "core.utils" +local user_highlights = utils.load_config().ui.hl_override + +-- override user highlights if there are any +hl_cols = vim.tbl_deep_extend("force", hl_cols, user_highlights) + +for hl, col in pairs(hl_cols) do + vim.api.nvim_set_hl(0, hl, col) end diff --git a/lua/core/default_config.lua b/lua/core/default_config.lua index 72dbf7a..242caf2 100644 --- a/lua/core/default_config.lua +++ b/lua/core/default_config.lua @@ -18,7 +18,7 @@ M.options = { ---- UI ----- M.ui = { - hl_override = "", + hl_override = {}, colors = "", -- path of your file that contains colors theme = "onedark", -- default theme transparency = false,