diff --git a/config/lazygit/config.yml b/config/lazygit/config.yml index a23d81a..18bec7b 100644 --- a/config/lazygit/config.yml +++ b/config/lazygit/config.yml @@ -1,3 +1,6 @@ gui: showIcons: false + theme: + selectedLineBgColor: + - '#585858' # set to `default` to have no background colour diff --git a/config/nvim/init.lua b/config/nvim/init.lua index a40d6ce..05e9109 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -594,7 +594,6 @@ local handlers = { require('lspconfig').rust_analyzer.setup { on_attach = on_attach, handlers = handlers, - -- require("rust-tools").setup() } local opts = { diff --git a/nightly_cm.nvim/lua/nightly_cm/theme.lua b/nightly_cm.nvim/lua/nightly_cm/theme.lua index 6d950b1..6350e41 100644 --- a/nightly_cm.nvim/lua/nightly_cm/theme.lua +++ b/nightly_cm.nvim/lua/nightly_cm/theme.lua @@ -1,398 +1,398 @@ local theme = {} function theme.setup() - local options = require("nightly_cm.config").options + local options = require("nightly_cm.config").options - local p = require("nightly_cm.palette").dark_colors + local p = require("nightly_cm.palette").dark_colors - if options.transparent then - p.background = "NONE" - vim.o.pumblend = 0 - end - - theme.highlights = { - -- Base highlights - Boolean = { fg = p.color5 }, - Character = { fg = p.color12 }, - ColorColumn = { bg = p.none }, - Comment = { fg = p.comment, style = options.styles.comments }, - Conceal = { fg = p.color4, bg = p.background }, - Conditional = { fg = p.color6 }, - Constant = { fg = p.color7 }, - Cursor = { fg = p.foreground, bg = p.foreground }, - CursorNC = { fg = "NONE", bg = "NONE" }, - CurSearch = { link = "IncSearch" }, - CursorColumn = { bg = p.background }, - CursorIM = { fg = p.foreground, bg = p.foreground }, - CursorLine = { bg = p.cursorline }, - CursorLineNr = { fg = p.foreground }, - Debug = { fg = p.color1 }, - Define = { fg = p.color6 }, - Delimiter = { fg = p.foreground }, - DiffAdd = { fg = p.color4, bg = p.background }, - DiffChange = { fg = p.color5, bg = p.background }, - DiffDelete = { fg = p.color1, bg = p.background }, - DiffText = { fg = p.color5, bg = p.background }, - Directory = { fg = p.color4 }, - EndOfBuffer = { fg = p.background }, - EndOfBufferNC = { fg = p.background }, - Error = { fg = p.color1, bg = p.background }, - ErrorMsg = { fg = p.color1, bg = p.background }, - Exception = { fg = p.color6 }, - Float = { fg = p.color5 }, - FloatBorder = { fg = p.comment , bg = p.black}, - FoldColumn = { fg = p.color4, bg = p.background }, - Folded = { fg = p.color4, bg = p.background }, - Function = { fg = p.color6, style = options.styles.functions }, - Identifier = { fg = p.color5 }, - Ignore = { fg = p.color7, bg = p.background }, - IncSearch = { fg = p.black, bg = p.color10 }, - Include = { fg = p.color6 }, - Keyword = { fg = p.color6, style = options.styles.keywords }, - Label = { fg = p.color4 }, - LineNr = { fg = p.color17 }, - Macro = { fg = p.color6 }, - MatchParen = { fg = p.color4, bg = p.background }, - ModeMsg = { fg = p.foreground, bg = p.background }, - MoreMsg = { fg = p.color5 }, - MsgArea = { fg = p.foreground, bg = p.background }, - MsgSeparator = { fg = p.foreground, bg = p.background }, - NonText = { fg = p.color5 }, - Normal = { fg = p.foreground, bg = p.background }, - NormalFloat = { bg = p.black }, - NormalNC = { fg = p.foreground, bg = p.background }, - Number = { fg = p.color3 }, - Operator = { fg = p.color6 }, - Pmenu = { fg = p.foreground, bg = p.black }, - PmenuSbar = { bg = p.black }, - PmenuSel = { fg = p.black, bg = p.color4 }, - PmenuThumb = { bg = p.color2 }, - PreCondit = { fg = p.color6 }, - PreProc = { fg = p.color6 }, - Question = { fg = p.color5 }, - QuickFixLine = { bg = p.color2 }, - Repeat = { fg = p.color6 }, - Search = { fg = p.black, bg = p.color4 }, - SignColumn = { fg = p.background, bg = p.background }, - Special = { fg = p.color6 }, - SpecialChar = { fg = p.foreground }, - SpecialComment = { fg = p.color2 }, - SpecialKey = { fg = p.color4 }, - SpellBad = { fg = p.color2 }, - SpellCap = { fg = p.color6 }, - SpellLocal = { fg = p.color4 }, - SpellRare = { fg = p.color6 }, - Statement = { fg = p.color6 }, - StatusLine = { fg = p.foreground, bg = p.background }, - StStatusLine = { fg = p.foreground, bg = p.background }, - Storage = { fg = p.color5 }, - StorageClass = { fg = p.color7 }, - String = { fg = p.color2 }, - Structure = { fg = p.color6 }, - Substitute = { fg = p.black, bg = p.color5 }, - TabLine = { fg = p.color2, bg = p.color16 }, - TabLineFill = { fg = p.foreground, bg = p.color16 }, - TabLineSel = { fg = p.foreground, bg = p.background }, - Tag = { fg = p.color4 }, - TermCursor = { fg = p.foreground, bg = p.foreground }, - TermCursorNC = { fg = p.foreground, bg = p.foreground }, - Title = { fg = p.color4, bold = true }, - Todo = { fg = p.color1, bg = p.background }, - type = { fg = p.color5 }, - typedef = { fg = p.color6 }, - underlined = { fg = p.color2, underline = true }, - Variable = { fg = p.color15 }, - VertSplit = { fg = p.color0 }, - Visual = { bg = p.color18 }, - VisualNOS = { bg = p.background }, - WarningMsg = { fg = p.color3, bg = p.background }, - Whitespace = { fg = p.color1 }, - WildMenu = { fg = p.color7, bg = p.color4 }, - lCursor = { fg = p.foreground, bg = p.foreground }, - - -- bufferline.nvim: https://github.com/akinsho/bufferline.nvim - BufferLineFill = { fg = p.background, bg = p.background }, - BufferLineIndicatorSelected = { fg = p.color2 }, - - -- Diagnostic - DiagnosticError = { fg = p.color1 }, - DiagnosticHint = { fg = p.color2 }, - DiagnosticInfo = { fg = p.color4 }, - DiagnosticWarn = { fg = p.color3 }, - DiagnosticUnnecessary = { fg = p.none }, - - -- diff - diffAdded = { fg = p.color4 }, - diffChanged = { fg = p.color5 }, - diffFile = { fg = p.color7 }, - diffIndexLine = { fg = p.color6 }, - diffLine = { fg = p.color5 }, - diffNewFile = { fg = p.color5 }, - diffOldFile = { fg = p.color5 }, - diffRemoved = { fg = p.color1 }, - - -- gitsigns: https://github.com/lewis6991/gitsigns.nvim - GitSignsAdd = { fg = p.color2 }, - GitSignsChange = { fg = p.color3 }, - GitSignsDelete = { fg = p.color1 }, - - -- indent-blankline.nvim: https://github.com/lukas-reineke/indent-blankline.nvim - IndentBlanklineChar = { fg = p.color17 }, - - -- LSP - LspInfoFiletype = { fg = p.color15 }, - LspReferenceText = { bg = p.color4 }, - LspReferenceRead = { bg = p.color4 }, - LspReferenceWrite = { bg = p.color4 }, - LspInfoBorder = { link = "FloatBorder" }, - - -- lspsaga.nvim: https://github.com/glepnir/lspsaga.nvim - DefinitionCount = { fg = p.color6 }, - DefinitionIcon = { fg = p.color7 }, - LspFloatWinBorder = { link = "FloatBorder" }, - LspFloatWinNormal = { bg = p.black }, - LspSagaBorderTitle = { fg = p.color7 }, - LspSagaCodeActionBorder = { link = "FloatBorder" }, - LspSagaCodeActionContent = { fg = p.color6 }, - LspSagaCodeActionTitle = { fg = p.color7 }, - LspSagaDefPreviewBorder = {}, - LspSagaFinderSelection = { fg = p.color5 }, - LspSagaHoverBorder = { link = "FloatBorder" }, - LspSagaRenameBorder = { link = "FloatBorder" }, - LspSagaSignatureHelpBorder = { link = "FloatBorder" }, - ReferencesCount = { fg = p.color6 }, - ReferencesIcon = { fg = p.color7 }, - TargetWord = { fg = p.color7 }, - - -- Neogit: https://github.com/TimUntersberger/neogit - NeogitBranch = { fg = p.color6 }, - NeogitDiffAddHighlight = { fg = p.color4, bg = p.background }, - NeogitDiffContextHighlight = { bg = p.background, fg = p.foreground }, - NeogitDiffDeleteHighlight = { fg = p.color1, bg = p.background }, - NeogitHunkHeader = { bg = p.black, fg = p.foreground }, - NeogitHunkHeaderHighlight = { bg = p.comment, fg = p.color7 }, - NeogitRemote = { fg = p.color6 }, - - -- Neovim - healthError = { fg = p.color1 }, - healthSuccess = { fg = p.color4 }, - healthWarning = { fg = p.color3 }, - - -- nvim-cmp: https://github.com/hrsh7th/nvim-cmp - CmpDocumentationBorder = { fg = p.color17, bg = p.black }, - CmpItemAbbr = { fg = p.foreground, bg = "NONE" }, - CmpItemAbbrDeprecated = { fg = p.color2, bg = "NONE" }, - CmpItemAbbrMatch = { fg = p.color2, bg = "NONE" }, - CmpItemAbbrMatchFuzzy = { fg = p.color2, bg = "NONE" }, - CmpItemKind = { fg = p.color4, bg = p.black }, - CmpItemMenu = { fg = p.color2, bg = "NONE" }, - CmpItemKindFolder = { fg = p.color4 }, - CmpItemKindFile = { fg = p.color2 }, - CmpItemKindConstructor = { fg = p.color5 }, - CmpItemKindInterface = { fg = p.color5 }, - CmpItemKindReference = { fg = p.color5 }, - CmpItemKindConstant = { fg = p.color5 }, - CmpItemKindProperty = { fg = p.color5 }, - CmpItemKindModule = { fg = p.color5 }, - CmpItemKindClass = { fg = p.color5 }, - CmpItemKindField = { fg = p.color5 }, - CmpItemKindEvent = { fg = p.color5 }, - CmpItemKindSnippet = { fg = p.color4 }, - CmpItemKindKeyword = { fg = p.color4 }, - CmpItemKindValue = { fg = p.color4 }, - CmpItemKindOperator = { fg = p.color4 }, - CmpItemKindTypeParameter = { fg = p.foreground }, - CmpItemKindVariable = { fg = p.foreground }, - CmpItemKindText = { fg = p.foreground }, - CmpItemKindUnit = { fg = p.foreground }, - - -- Yank - YankyPut = { link = "Visual" }, - YankyYanked = { link = "Visual" }, - YankHighlight = { bg = p.cursorline }, - - -- Markdown - markdownCodeBlock = { fg = p.color7 }, - markdownCodeDelimeter = { fg = p.color7 }, - markdownUrl = { fg = p.color15 }, - markdownLink = { fg = p.foreground, underline = true }, - - -- nvim-tree.lua: https://github.com/nvim-tree/nvim-tree.lua - NvimTreeEmptyFolderName = { fg = p.foreground }, - NvimTreeEndOfBuffer = { fg = p.background, bg = p.background }, - NvimTreeEndOfBufferNC = { fg = p.background, bg = p.background }, - NvimTreeFolderIcon = { fg = p.color4, bg = p.background }, - NvimTreeFolderName = { fg = p.foreground }, - NvimTreeGitDeleted = { fg = p.color1 }, - NvimTreeGitDirty = { fg = p.color5 }, - NvimTreeGitNew = { fg = p.color4 }, - NvimTreeImageFile = { fg = p.foreground }, - NvimTreeIndentMarker = { fg = p.color0 }, - NvimTreeNormal = { fg = p.foreground, bg = p.background }, - NvimTreeNormalNC = { fg = p.foreground, bg = p.background }, - NvimTreeOpenedFolderName = { fg = p.foreground }, - NvimTreeRootFolder = { fg = p.color12 }, - NvimTreeSpecialFile = { fg = p.color5 }, - NvimTreeStatusLineNC = { bg = p.background, fg = p.color16 }, - NvimTreeSymlink = { fg = p.color3 }, - NvimTreeWinSeparator = { fg = p.black }, - - -- nvim-treesitter: https://github.com/nvim-treesitter/nvim-treesitter - ["@attribute"] = { fg = p.color4 }, - ["@boolean"] = { fg = p.color6 }, - ["@character"] = { fg = p.color4 }, - ["@comment"] = { fg = p.comment, style = options.styles.comments }, - ["@conditional"] = { fg = p.color4 }, - ["@constant"] = { fg = p.color6 }, - ["@constant.builtin"] = { fg = p.color4 }, - ["@constant.macro"] = { fg = p.color3 }, - ["@constructor"] = { fg = p.color4 }, - ["@exception"] = { fg = p.color8 }, - ["@field"] = { fg = p.color7 }, - ["@float"] = { link = "@number" }, - ["@function"] = { fg = p.color4, style = options.styles.functions }, - ["@function.builtin"] = { fg = p.color14 }, - ["@function.macro"] = { fg = p.color2 }, - ["@include"] = { fg = p.color3 }, - ["@keyword"] = { fg = p.color15, style = options.styles.keywords }, - ["@keyword.function"] = { fg = p.color4, style = options.styles.functions }, - ["@keyword.operator"] = { fg = p.color12 }, - ["@keyword.return"] = { fg = p.color4 }, - ["@label"] = { fg = p.color3 }, - ["@method"] = { fg = p.color12 }, - ["@namespace"] = { fg = p.color5 }, - ["@number"] = { fg = p.color15 }, - ["@operator"] = { fg = p.color7 }, - ["@parameter"] = { fg = p.color15 }, - ["@parameter.reference"] = { fg = p.color15 }, - ["@property"] = { fg = p.color5 }, - ["@punctuation.bracket"] = { fg = p.color7 }, - ["@punctuation.delimiter"] = { fg = p.color7 }, - ["@punctuation.special"] = { fg = p.color7 }, - ["@repeat"] = { fg = p.color13 }, - ["@string"] = { fg = p.color2 }, - ["@string.escape"] = { fg = p.color4 }, - ["@string.regex"] = { fg = p.color2 }, - ["@string.special"] = { fg = p.color4 }, - ["@symbol"] = { fg = p.color3 }, - ["@tag"] = { fg = p.color4 }, - ["@tag.attribute"] = { fg = p.color3 }, - ["@tag.delimiter"] = { fg = p.color7 }, - ["@text"] = { fg = p.color7 }, - ["@text.danger"] = { fg = p.color9 }, - ["@text.emphasis"] = { fg = p.color7, italic = true }, - ["@text.environment.name"] = { fg = p.color3 }, - ["@text.environtment"] = { fg = p.color5 }, - ["@text.literal"] = { fg = p.color2, italic = true }, - ["@text.math"] = { fg = p.color6 }, - ["@text.note"] = { fg = p.black, bg = p.color2 }, - ["@text.reference"] = { fg = p.color6 }, - ["@text.strike"] = { fg = p.color7, strikethrough = true }, - ["@text.strong"] = { fg = p.color7, bold = true }, - ["@text.title"] = { fg = p.color3, bold = true }, - ["@text.underline"] = { fg = p.color15, underline = true }, - ["@text.uri"] = { fg = p.color3, underline = true }, - ["@text.warning"] = { fg = p.color0, bg = p.color1 }, - ["@type"] = { fg = p.color4 }, - ["@type.builtin"] = { fg = p.color3 }, - ["@variable"] = { fg = p.color7, style = options.styles.variables }, - ["@variable.builtin"] = { fg = p.color4 }, - - -- LSP semantic tokens - -- ["@lsp.type.comment"] = { link = "@comment" }, - -- ["@lsp.type.enum"] = { link = "@type" }, - -- ["@lsp.type.interface"] = { link = "Identifier" }, - -- ["@lsp.type.keyword"] = { link = "@keyword" }, - -- ["@lsp.type.namespace"] = { link = "@namespace" }, - -- ["@lsp.type.parameter"] = { link = "@parameter" }, - -- ["@lsp.type.property"] = { link = "@property" }, - -- ["@lsp.type.variable"] = {}, -- use treesitter styles for regular variables - -- ["@lsp.typemod.method.defaultLibrary"] = { link = "@function.builtin" }, - -- ["@lsp.typemod.function.defaultLibrary"] = { link = "@function.builtin" }, - -- ["@lsp.typemod.operator.injected"] = { link = "@operator" }, - -- ["@lsp.typemod.string.injected"] = { link = "@string" }, - -- ["@lsp.typemod.variable.defaultLibrary"] = { link = "@variable.builtin" }, - -- ["@lsp.typemod.variable.injected"] = { link = "@variable" }, - - -- alpha.nvim: https://github.com/goolord/alpha-nvim - AlphaHeader = { fg = p.color2 }, - AlphaButton = { fg = p.color4 }, - AlphaFooter = { fg = p.color3 }, - AlphaShortcut = { fg = p.color5 }, - - -- dashboard.nvim: https://github.com/nvimdev/dashboard-nvim - DashboardHeader = { fg = p.color2 }, - DashboardCenter = { fg = p.color4 }, - DashboardFooter = { fg = p.color3 }, - DashboardShortcut = { fg = p.color5 }, - - -- telescope.nvim: https://github.com/nvim-telescope/telescope.nvim - TelescopeMatching = { fg = p.color2 }, - TelescopeSelection = { fg = p.color2, bg = p.bg }, - TelescopeMultiSelection = { bg = p.color16 }, - TelescopePromptTitle = { fg = p.background, bg = p.color2 }, - TelescopePreviewLine = { bg = p.background }, - TelescopePromptPrefix = { fg = p.color2, bg = p.cursorline }, - TelescopePromptBorder = { fg = p.cursorline, bg = p.cursorline }, - TelescopePromptNormal = { fg = p.fg, bg = p.cursorline }, - TelescopeResultsTitle = { fg = p.color16, bg = p.color16 }, - TelescopeResultsBorder = { fg = p.color16, bg = p.color16 }, - TelescopeResultsNormal = { fg = p.foreground, bg = p.color16 }, - TelescopePreviewTitle = { fg = p.cursorline, bg = p.color3 }, - TelescopePreviewBorder = { fg = p.cursorline, bg = p.cursorline }, - TelescopePreviewNormal = { fg = p.foreground, bg = p.cursorline }, - - -- trouble.nvim: https://github.com/folke/trouble.nvim - LspTroubleCount = { fg = p.color6, bg = p.foreground }, - LspTroubleNormal = { fg = p.foreground, bg = p.background }, - LspTroubleText = { fg = p.foreground }, - - -- vim-gitgutter: https://github.com/airblade/vim-gitgutter - GitGutterAdd = { fg = p.color2 }, - GitGutterChange = { fg = p.color3 }, - GitGutterDelete = { fg = p.color1 }, - } - - theme.terminal_colors = { - terminal_color_0 = p.color0, - terminal_color_1 = p.color1, - terminal_color_2 = p.color2, - terminal_color_3 = p.color3, - terminal_color_4 = p.color4, - terminal_color_5 = p.color5, - terminal_color_6 = p.color6, - terminal_color_7 = p.color7, - terminal_color_8 = p.color8, - terminal_color_9 = p.color9, - terminal_color_10 = p.color10, - terminal_color_11 = p.color11, - terminal_color_12 = p.color12, - terminal_color_13 = p.color13, - terminal_color_14 = p.color14, - terminal_color_15 = p.color15, - } - - for option, value in pairs(theme.terminal_colors) do - vim.g[option] = value - end - - theme.highlights = vim.tbl_extend("force", {}, theme.highlights, options.highlights) - - -- Hide all semantic highlights - for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do - vim.api.nvim_set_hl(0, group, {}) - end - - -- Set the highlights - for group, colors in pairs(theme.highlights) do - if colors.style then - if type(colors.style) == "table" then - colors = vim.tbl_extend("force", colors, colors.style) - end - colors.style = nil + if options.transparent then + p.background = "NONE" + vim.o.pumblend = 0 + end + + theme.highlights = { + -- Base highlights + Boolean = { fg = p.color5 }, + Character = { fg = p.color12 }, + ColorColumn = { bg = p.none }, + Comment = { fg = p.comment, style = options.styles.comments }, + Conceal = { fg = p.color4, bg = p.background }, + Conditional = { fg = p.color6 }, + Constant = { fg = p.color7 }, + Cursor = { fg = p.foreground, bg = p.foreground }, + CursorNC = { fg = "NONE", bg = "NONE" }, + CurSearch = { link = "IncSearch" }, + CursorColumn = { bg = p.background }, + CursorIM = { fg = p.foreground, bg = p.foreground }, + CursorLine = { bg = p.cursorline }, + CursorLineNr = { fg = p.foreground }, + Debug = { fg = p.color1 }, + Define = { fg = p.color6 }, + Delimiter = { fg = p.foreground }, + DiffAdd = { fg = p.color4, bg = p.background }, + DiffChange = { fg = p.color5, bg = p.background }, + DiffDelete = { fg = p.color1, bg = p.background }, + DiffText = { fg = p.color5, bg = p.background }, + Directory = { fg = p.color4 }, + EndOfBuffer = { fg = p.background }, + EndOfBufferNC = { fg = p.background }, + Error = { fg = p.color1, bg = p.background }, + ErrorMsg = { fg = p.color1, bg = p.background }, + Exception = { fg = p.color6 }, + Float = { fg = p.color5 }, + FloatBorder = { fg = p.comment, bg = p.black }, + FoldColumn = { fg = p.color4, bg = p.background }, + Folded = { fg = p.color4, bg = p.background }, + Function = { fg = p.color6, style = options.styles.functions }, + Identifier = { fg = p.color5 }, + Ignore = { fg = p.color7, bg = p.background }, + IncSearch = { fg = p.black, bg = p.color10 }, + Include = { fg = p.color6 }, + Keyword = { fg = p.color6, style = options.styles.keywords }, + Label = { fg = p.color4 }, + LineNr = { fg = p.color17 }, + Macro = { fg = p.color6 }, + MatchParen = { fg = p.color4, bg = p.background }, + ModeMsg = { fg = p.foreground, bg = p.background }, + MoreMsg = { fg = p.color5 }, + MsgArea = { fg = p.foreground, bg = p.background }, + MsgSeparator = { fg = p.foreground, bg = p.background }, + NonText = { fg = p.color5 }, + Normal = { fg = p.foreground, bg = p.background }, + NormalFloat = { bg = p.black }, + NormalNC = { fg = p.foreground, bg = p.background }, + Number = { fg = p.color3 }, + Operator = { fg = p.color6 }, + Pmenu = { fg = p.foreground, bg = p.black }, + PmenuSbar = { bg = p.black }, + PmenuSel = { fg = p.black, bg = p.color4 }, + PmenuThumb = { bg = p.color2 }, + PreCondit = { fg = p.color6 }, + PreProc = { fg = p.color6 }, + Question = { fg = p.color5 }, + QuickFixLine = { bg = p.color2 }, + Repeat = { fg = p.color6 }, + Search = { fg = p.black, bg = p.color4 }, + SignColumn = { fg = p.background, bg = p.background }, + Special = { fg = p.color6 }, + SpecialChar = { fg = p.foreground }, + SpecialComment = { fg = p.color2 }, + SpecialKey = { fg = p.color4 }, + SpellBad = { fg = p.color2 }, + SpellCap = { fg = p.color6 }, + SpellLocal = { fg = p.color4 }, + SpellRare = { fg = p.color6 }, + Statement = { fg = p.color6 }, + StatusLine = { fg = p.foreground, bg = p.background }, + StStatusLine = { fg = p.foreground, bg = p.background }, + Storage = { fg = p.color5 }, + StorageClass = { fg = p.color7 }, + String = { fg = p.color2 }, + Structure = { fg = p.color6 }, + Substitute = { fg = p.black, bg = p.color5 }, + TabLine = { fg = p.color2, bg = p.color16 }, + TabLineFill = { fg = p.foreground, bg = p.color16 }, + TabLineSel = { fg = p.foreground, bg = p.background }, + Tag = { fg = p.color4 }, + TermCursor = { fg = p.foreground, bg = p.foreground }, + TermCursorNC = { fg = p.foreground, bg = p.foreground }, + Title = { fg = p.color4, bold = true }, + Todo = { fg = p.color1, bg = p.background }, + type = { fg = p.color5 }, + typedef = { fg = p.color6 }, + underlined = { fg = p.color2, underline = true }, + Variable = { fg = p.color15 }, + VertSplit = { fg = p.color0 }, + Visual = { bg = p.color18 }, + VisualNOS = { bg = p.background }, + WarningMsg = { fg = p.color3, bg = p.background }, + Whitespace = { fg = p.color1 }, + WildMenu = { fg = p.color7, bg = p.color4 }, + lCursor = { fg = p.foreground, bg = p.foreground }, + + -- bufferline.nvim: https://github.com/akinsho/bufferline.nvim + BufferLineFill = { fg = p.background, bg = p.background }, + BufferLineIndicatorSelected = { fg = p.color2 }, + + -- Diagnostic + DiagnosticError = { fg = p.color1 }, + DiagnosticHint = { fg = p.color2 }, + DiagnosticInfo = { fg = p.color4 }, + DiagnosticWarn = { fg = p.color3 }, + DiagnosticUnnecessary = { fg = p.none }, + + -- diff + diffAdded = { fg = p.color4 }, + diffChanged = { fg = p.color5 }, + diffFile = { fg = p.color7 }, + diffIndexLine = { fg = p.color6 }, + diffLine = { fg = p.color5 }, + diffNewFile = { fg = p.color5 }, + diffOldFile = { fg = p.color5 }, + diffRemoved = { fg = p.color1 }, + + -- gitsigns: https://github.com/lewis6991/gitsigns.nvim + GitSignsAdd = { fg = p.color2 }, + GitSignsChange = { fg = p.color3 }, + GitSignsDelete = { fg = p.color1 }, + + -- indent-blankline.nvim: https://github.com/lukas-reineke/indent-blankline.nvim + IndentBlanklineChar = { fg = p.color17 }, + + -- LSP + LspInfoFiletype = { fg = p.color15 }, + LspReferenceText = { bg = p.color4 }, + LspReferenceRead = { bg = p.color4 }, + LspReferenceWrite = { bg = p.color4 }, + LspInfoBorder = { link = "FloatBorder" }, + + -- lspsaga.nvim: https://github.com/glepnir/lspsaga.nvim + DefinitionCount = { fg = p.color6 }, + DefinitionIcon = { fg = p.color7 }, + LspFloatWinBorder = { link = "FloatBorder" }, + LspFloatWinNormal = { bg = p.black }, + LspSagaBorderTitle = { fg = p.color7 }, + LspSagaCodeActionBorder = { link = "FloatBorder" }, + LspSagaCodeActionContent = { fg = p.color6 }, + LspSagaCodeActionTitle = { fg = p.color7 }, + LspSagaDefPreviewBorder = {}, + LspSagaFinderSelection = { fg = p.color5 }, + LspSagaHoverBorder = { link = "FloatBorder" }, + LspSagaRenameBorder = { link = "FloatBorder" }, + LspSagaSignatureHelpBorder = { link = "FloatBorder" }, + ReferencesCount = { fg = p.color6 }, + ReferencesIcon = { fg = p.color7 }, + TargetWord = { fg = p.color7 }, + + -- Neogit: https://github.com/TimUntersberger/neogit + NeogitBranch = { fg = p.color6 }, + NeogitDiffAddHighlight = { fg = p.color4, bg = p.background }, + NeogitDiffContextHighlight = { bg = p.background, fg = p.foreground }, + NeogitDiffDeleteHighlight = { fg = p.color1, bg = p.background }, + NeogitHunkHeader = { bg = p.black, fg = p.foreground }, + NeogitHunkHeaderHighlight = { bg = p.comment, fg = p.color7 }, + NeogitRemote = { fg = p.color6 }, + + -- Neovim + healthError = { fg = p.color1 }, + healthSuccess = { fg = p.color4 }, + healthWarning = { fg = p.color3 }, + + -- nvim-cmp: https://github.com/hrsh7th/nvim-cmp + CmpDocumentationBorder = { fg = p.color17, bg = p.black }, + CmpItemAbbr = { fg = p.foreground, bg = "NONE" }, + CmpItemAbbrDeprecated = { fg = p.color2, bg = "NONE" }, + CmpItemAbbrMatch = { fg = p.color2, bg = "NONE" }, + CmpItemAbbrMatchFuzzy = { fg = p.color2, bg = "NONE" }, + CmpItemKind = { fg = p.color4, bg = p.black }, + CmpItemMenu = { fg = p.color2, bg = "NONE" }, + CmpItemKindFolder = { fg = p.color4 }, + CmpItemKindFile = { fg = p.color2 }, + CmpItemKindConstructor = { fg = p.color5 }, + CmpItemKindInterface = { fg = p.color5 }, + CmpItemKindReference = { fg = p.color5 }, + CmpItemKindConstant = { fg = p.color5 }, + CmpItemKindProperty = { fg = p.color5 }, + CmpItemKindModule = { fg = p.color5 }, + CmpItemKindClass = { fg = p.color5 }, + CmpItemKindField = { fg = p.color5 }, + CmpItemKindEvent = { fg = p.color5 }, + CmpItemKindSnippet = { fg = p.color4 }, + CmpItemKindKeyword = { fg = p.color4 }, + CmpItemKindValue = { fg = p.color4 }, + CmpItemKindOperator = { fg = p.color4 }, + CmpItemKindTypeParameter = { fg = p.foreground }, + CmpItemKindVariable = { fg = p.foreground }, + CmpItemKindText = { fg = p.foreground }, + CmpItemKindUnit = { fg = p.foreground }, + + -- Yank + YankyPut = { link = "Visual" }, + YankyYanked = { link = "Visual" }, + YankHighlight = { bg = p.cursorline }, + + -- Markdown + markdownCodeBlock = { fg = p.color7 }, + markdownCodeDelimeter = { fg = p.color7 }, + markdownUrl = { fg = p.color15 }, + markdownLink = { fg = p.foreground, underline = true }, + + -- nvim-tree.lua: https://github.com/nvim-tree/nvim-tree.lua + NvimTreeEmptyFolderName = { fg = p.foreground }, + NvimTreeEndOfBuffer = { fg = p.background, bg = p.background }, + NvimTreeEndOfBufferNC = { fg = p.background, bg = p.background }, + NvimTreeFolderIcon = { fg = p.color4, bg = p.background }, + NvimTreeFolderName = { fg = p.foreground }, + NvimTreeGitDeleted = { fg = p.color1 }, + NvimTreeGitDirty = { fg = p.color5 }, + NvimTreeGitNew = { fg = p.color4 }, + NvimTreeImageFile = { fg = p.foreground }, + NvimTreeIndentMarker = { fg = p.color0 }, + NvimTreeNormal = { fg = p.foreground, bg = p.background }, + NvimTreeNormalNC = { fg = p.foreground, bg = p.background }, + NvimTreeOpenedFolderName = { fg = p.foreground }, + NvimTreeRootFolder = { fg = p.color12 }, + NvimTreeSpecialFile = { fg = p.color5 }, + NvimTreeStatusLineNC = { bg = p.background, fg = p.color16 }, + NvimTreeSymlink = { fg = p.color3 }, + NvimTreeWinSeparator = { fg = p.black }, + + -- nvim-treesitter: https://github.com/nvim-treesitter/nvim-treesitter + ["@attribute"] = { fg = p.color4 }, + ["@boolean"] = { fg = p.color6 }, + ["@character"] = { fg = p.color4 }, + ["@comment"] = { fg = p.comment, style = options.styles.comments }, + ["@conditional"] = { fg = p.color4 }, + ["@constant"] = { fg = p.color6 }, + ["@constant.builtin"] = { fg = p.color4 }, + ["@constant.macro"] = { fg = p.color3 }, + ["@constructor"] = { fg = p.color4 }, + ["@exception"] = { fg = p.color8 }, + ["@field"] = { fg = p.color7 }, + ["@float"] = { link = "@number" }, + ["@function"] = { fg = p.color4, style = options.styles.functions }, + ["@function.builtin"] = { fg = p.color14 }, + ["@function.macro"] = { fg = p.color2 }, + ["@include"] = { fg = p.color3 }, + ["@keyword"] = { fg = p.color15, style = options.styles.keywords }, + ["@keyword.function"] = { fg = p.color4, style = options.styles.functions }, + ["@keyword.operator"] = { fg = p.color12 }, + ["@keyword.return"] = { fg = p.color4 }, + ["@label"] = { fg = p.color3 }, + ["@method"] = { fg = p.color12 }, + ["@namespace"] = { fg = p.color5 }, + ["@number"] = { fg = p.color15 }, + ["@operator"] = { fg = p.color7 }, + ["@parameter"] = { fg = p.color15 }, + ["@parameter.reference"] = { fg = p.color15 }, + ["@property"] = { fg = p.color5 }, + ["@punctuation.bracket"] = { fg = p.color7 }, + ["@punctuation.delimiter"] = { fg = p.color7 }, + ["@punctuation.special"] = { fg = p.color7 }, + ["@repeat"] = { fg = p.color13 }, + ["@string"] = { fg = p.color2 }, + ["@string.escape"] = { fg = p.color4 }, + ["@string.regex"] = { fg = p.color2 }, + ["@string.special"] = { fg = p.color4 }, + ["@symbol"] = { fg = p.color3 }, + ["@tag"] = { fg = p.color4 }, + ["@tag.attribute"] = { fg = p.color3 }, + ["@tag.delimiter"] = { fg = p.color7 }, + ["@text"] = { fg = p.color7 }, + ["@text.danger"] = { fg = p.color9 }, + ["@text.emphasis"] = { fg = p.color7, italic = true }, + ["@text.environment.name"] = { fg = p.color3 }, + ["@text.environtment"] = { fg = p.color5 }, + ["@text.literal"] = { fg = p.color2, italic = true }, + ["@text.math"] = { fg = p.color6 }, + ["@text.note"] = { fg = p.black, bg = p.color2 }, + ["@text.reference"] = { fg = p.color6 }, + ["@text.strike"] = { fg = p.color7, strikethrough = true }, + ["@text.strong"] = { fg = p.color7, bold = true }, + ["@text.title"] = { fg = p.color3, bold = true }, + ["@text.underline"] = { fg = p.color15, underline = true }, + ["@text.uri"] = { fg = p.color3, underline = true }, + ["@text.warning"] = { fg = p.color0, bg = p.color1 }, + ["@type"] = { fg = p.color4 }, + ["@type.builtin"] = { fg = p.color3 }, + ["@variable"] = { fg = p.color7, style = options.styles.variables }, + ["@variable.builtin"] = { fg = p.color4 }, + + -- LSP semantic tokens + -- ["@lsp.type.comment"] = { link = "@comment" }, + -- ["@lsp.type.enum"] = { link = "@type" }, + -- ["@lsp.type.interface"] = { link = "Identifier" }, + -- ["@lsp.type.keyword"] = { link = "@keyword" }, + -- ["@lsp.type.namespace"] = { link = "@namespace" }, + -- ["@lsp.type.parameter"] = { link = "@parameter" }, + -- ["@lsp.type.property"] = { link = "@property" }, + -- ["@lsp.type.variable"] = {}, -- use treesitter styles for regular variables + -- ["@lsp.typemod.method.defaultLibrary"] = { link = "@function.builtin" }, + -- ["@lsp.typemod.function.defaultLibrary"] = { link = "@function.builtin" }, + -- ["@lsp.typemod.operator.injected"] = { link = "@operator" }, + -- ["@lsp.typemod.string.injected"] = { link = "@string" }, + -- ["@lsp.typemod.variable.defaultLibrary"] = { link = "@variable.builtin" }, + -- ["@lsp.typemod.variable.injected"] = { link = "@variable" }, + + -- alpha.nvim: https://github.com/goolord/alpha-nvim + AlphaHeader = { fg = p.color2 }, + AlphaButton = { fg = p.color4 }, + AlphaFooter = { fg = p.color3 }, + AlphaShortcut = { fg = p.color5 }, + + -- dashboard.nvim: https://github.com/nvimdev/dashboard-nvim + DashboardHeader = { fg = p.color2 }, + DashboardCenter = { fg = p.color4 }, + DashboardFooter = { fg = p.color3 }, + DashboardShortcut = { fg = p.color5 }, + + -- telescope.nvim: https://github.com/nvim-telescope/telescope.nvim + TelescopeMatching = { fg = p.color2 }, + TelescopeSelection = { fg = p.color2, bg = p.bg }, + TelescopeMultiSelection = { bg = p.color16 }, + TelescopePromptTitle = { fg = p.background, bg = p.color2 }, + TelescopePreviewLine = { bg = p.background }, + TelescopePromptPrefix = { fg = p.color2, bg = p.cursorline }, + TelescopePromptBorder = { fg = p.cursorline, bg = p.cursorline }, + TelescopePromptNormal = { fg = p.fg, bg = p.cursorline }, + TelescopeResultsTitle = { fg = p.color16, bg = p.color16 }, + TelescopeResultsBorder = { fg = p.color16, bg = p.color16 }, + TelescopeResultsNormal = { fg = p.foreground, bg = p.color16 }, + TelescopePreviewTitle = { fg = p.cursorline, bg = p.color3 }, + TelescopePreviewBorder = { fg = p.cursorline, bg = p.cursorline }, + TelescopePreviewNormal = { fg = p.foreground, bg = p.cursorline }, + + -- trouble.nvim: https://github.com/folke/trouble.nvim + LspTroubleCount = { fg = p.color6, bg = p.foreground }, + LspTroubleNormal = { fg = p.foreground, bg = p.background }, + LspTroubleText = { fg = p.foreground }, + + -- vim-gitgutter: https://github.com/airblade/vim-gitgutter + GitGutterAdd = { fg = p.color2 }, + GitGutterChange = { fg = p.color3 }, + GitGutterDelete = { fg = p.color1 }, + } + + theme.terminal_colors = { + terminal_color_0 = p.color0, + terminal_color_1 = p.color1, + terminal_color_2 = p.color2, + terminal_color_3 = p.color3, + terminal_color_4 = p.color4, + terminal_color_5 = p.color5, + terminal_color_6 = p.color6, + terminal_color_7 = p.color7, + terminal_color_8 = p.color8, + terminal_color_9 = p.color9, + terminal_color_10 = p.color10, + terminal_color_11 = p.color11, + terminal_color_12 = p.color12, + terminal_color_13 = p.color13, + terminal_color_14 = p.color14, + terminal_color_15 = p.color15, + } + + for option, value in pairs(theme.terminal_colors) do + vim.g[option] = value + end + + theme.highlights = vim.tbl_extend("force", {}, theme.highlights, options.highlights) + + -- Hide all semantic highlights + for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do + vim.api.nvim_set_hl(0, group, {}) + end + + -- Set the highlights + for group, colors in pairs(theme.highlights) do + if colors.style then + if type(colors.style) == "table" then + colors = vim.tbl_extend("force", colors, colors.style) + end + colors.style = nil + end + vim.api.nvim_set_hl(0, group, colors) end - vim.api.nvim_set_hl(0, group, colors) - end end return theme