diff --git a/config/nvim/init.lua b/config/nvim/init.lua index a8afac0..8b94599 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -77,14 +77,22 @@ vim.opt.rtp:prepend(lazypath) -- Plugin installation ------------------------------------------------------------------- require('lazy').setup({ + -- { + -- 'Alexis12119/nightly.nvim', + -- priority = 1000, + -- config = function() + -- vim.cmd.colorscheme 'nightly_cm' + -- end, + -- }, + { - 'Alexis12119/nightly.nvim', + dir= "~/code_server/nightly_cm.nvim", priority = 1000, config = function() - vim.cmd.colorscheme 'nightly' + vim.cmd.colorscheme 'nightly_cm' end, }, - + { -- LSP Configuration & Plugins 'neovim/nvim-lspconfig', @@ -186,7 +194,7 @@ require('lazy').setup({ opts = { options = { icons_enabled = true, - theme = 'auto', + theme = 'nightly_cm', component_separators = '|', section_separators = '', globalstatus = true, @@ -281,6 +289,13 @@ require('lazy').setup({ }, }, + { + "norcalli/nvim-colorizer.lua", + config = function() + require("colorizer").setup() + end, + }, + }, {}) ------------------------------------------------------------------- @@ -608,6 +623,6 @@ vim.keymap.set('n', 'n', ":tabnew", { desc = 'Format code', silent = vim.keymap.set('n', 'c', ":tabclose", { desc = 'Format code', silent = true }) -- Customization for Pmenu -vim.api.nvim_set_hl(0, "PmenuSel", { bg = "#555555", fg = "NONE" }) -vim.api.nvim_set_hl(0, "Pmenu", { fg = "#C5CDD9", bg = "#000000" }) -vim.api.nvim_set_hl(0, "CmpItemAbbr", { fg = "#eeeeee", bg = "NONE" }) +-- vim.api.nvim_set_hl(0, "PmenuSel", { bg = "#555555", fg = "NONE" }) +-- vim.api.nvim_set_hl(0, "Pmenu", { fg = "#C5CDD9", bg = "#000000" }) +-- vim.api.nvim_set_hl(0, "CmpItemAbbr", { fg = "#eeeeee", bg = "NONE" }) diff --git a/nightly_cm.nvim/LICENSE.txt b/nightly_cm.nvim/LICENSE.txt new file mode 100644 index 0000000..7e2f7d7 --- /dev/null +++ b/nightly_cm.nvim/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Alexis Corporal + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/nightly_cm.nvim/README.md b/nightly_cm.nvim/README.md new file mode 100644 index 0000000..e69de29 diff --git a/nightly_cm.nvim/autoload/lightline/colorscheme/nightly.vim b/nightly_cm.nvim/autoload/lightline/colorscheme/nightly.vim new file mode 100644 index 0000000..56a8204 --- /dev/null +++ b/nightly_cm.nvim/autoload/lightline/colorscheme/nightly.vim @@ -0,0 +1,2 @@ +let s:palette = v:lua.require('lightline.colorscheme.nightly') +let g:lightline#colorscheme#nightly#palette = lightline#colorscheme#fill(s:palette) diff --git a/nightly_cm.nvim/colors/nightly_cm.lua b/nightly_cm.nvim/colors/nightly_cm.lua new file mode 100644 index 0000000..ae2a7fa --- /dev/null +++ b/nightly_cm.nvim/colors/nightly_cm.lua @@ -0,0 +1 @@ +require("nightly_cm").load() diff --git a/nightly_cm.nvim/lua/lualine/themes/nightly_cm.lua b/nightly_cm.nvim/lua/lualine/themes/nightly_cm.lua new file mode 100644 index 0000000..87a816e --- /dev/null +++ b/nightly_cm.nvim/lua/lualine/themes/nightly_cm.lua @@ -0,0 +1,39 @@ +local nightly = { + normal = { + a = { bg = "NONE", fg = "#87afd7" }, + b = { bg = "NONE", fg = "#c6c6c6" }, + c = { bg = "NONE", fg = "#c6c6c6" }, + }, + + insert = { + a = { bg = "NONE", fg = "#afd787" }, + b = { bg = "NONE", fg = "#c6c6c6" }, + }, + + command = { + a = { bg = "NONE", fg = "#d7af5f" }, + b = { bg = "NONE", fg = "#c6c6c6" }, + }, + + visual = { + a = { bg = "NONE", fg = "#87afd7" }, + b = { bg = "NONE", fg = "#c6c6c6" }, + }, + + replace = { + a = { bg = "NONE", fg = "#d75f00" }, + b = { bg = "NONE", fg = "#c6c6c6" }, + }, + + terminal = { + a = { bg = "NONE", fg = "#87afd7" }, + b = { bg = "NONE", fg = "#c6c6c6" }, + }, + + inactive = { + a = { bg = "NONE", fg = "#c6c6c6" }, + b = { bg = "NONE", fg = "#c6c6c6" }, + c = { bg = "NONE", fg = "#c6c6c6" }, + }, +} +return nightly diff --git a/nightly_cm.nvim/lua/nightly_cm/config.lua b/nightly_cm.nvim/lua/nightly_cm/config.lua new file mode 100644 index 0000000..f47a3c8 --- /dev/null +++ b/nightly_cm.nvim/lua/nightly_cm/config.lua @@ -0,0 +1,26 @@ +local M = {} + +local defaults = { + transparent = false, + styles = { + comments = { italic = true }, + functions = { italic = false }, + variables = { italic = false }, + keywords = { italic = false }, + }, + highlights = {}, +} + +M.options = {} + +function M.setup(options) + M.options = vim.tbl_deep_extend("force", {}, defaults, options or {}) +end + +function M.extend(options) + M.options = vim.tbl_deep_extend("force", {}, M.options or defaults, options or {}) +end + +M.setup() + +return M diff --git a/nightly_cm.nvim/lua/nightly_cm/init.lua b/nightly_cm.nvim/lua/nightly_cm/init.lua new file mode 100644 index 0000000..da7e57c --- /dev/null +++ b/nightly_cm.nvim/lua/nightly_cm/init.lua @@ -0,0 +1,22 @@ +local config = require "nightly_cm.config" +local M = {} + +M.setup = config.setup + +function M.load() + -- only needed to clear when not the default colorscheme + if vim.g.colors_name then + vim.cmd "hi clear" + end + + -- enable termguicolors + if vim.api.nvim_get_option "termguicolors" == false then + vim.opt.termguicolors = true + end + + vim.g.colors_name = "nightly_cm" + + require("nightly_cm.theme").setup() +end + +return M diff --git a/nightly_cm.nvim/lua/nightly_cm/palette.lua b/nightly_cm.nvim/lua/nightly_cm/palette.lua new file mode 100644 index 0000000..c101a52 --- /dev/null +++ b/nightly_cm.nvim/lua/nightly_cm/palette.lua @@ -0,0 +1,58 @@ +local M = {} + +M.dark_colors = { + color0 = "#000000", + color1 = "#d75f00", + color2 = "#afd787", + color3 = "#d7af5f", + color4 = "#87afd7", + color5 = "#d7d7af", + color6 = "#87afd7", + color7 = "#c6c6c6", + color8 = "#000000", + color9 = "#d75f00", + color10 = "#afd787", + color11 = "#d7af5f", + color12 = "#87afd7", + color13 = "#d7d7af", + color14 = "#87afd7", + color15 = "#eeeeee", + color16 = "#000000", + color17 = "#585858", + color18 = "#444444", + comment = "#6c6c6c", + black = "#000000", + background = "#262626", + foreground = "#c6c6c6", + cursorline = "#303030", + none = "NONE", +} +-- M.dark_colors = { +-- color0 = "#232323", +-- color1 = "#d75f00", +-- color2 = "#afd787", +-- color3 = "#d7d7af", +-- color4 = "#87afd7", +-- color5 = "#d7af5f", +-- color6 = "#87afd7", +-- color7 = "#B3b3b3", +-- color8 = "#2D2d2d", +-- color9 = "#d7d7af", +-- color10 = "#afd787", +-- color11 = "#d7af5f", +-- color12 = "#87afd7", +-- color13 = "#87afd7", +-- color14 = "#87afd7", +-- color15 = "#BDbdbd", +-- color16 = "#0F0f0f", +-- color17 = "#585858", +-- color18 = "#303030", +-- comment = "#444444", +-- black = "#000000", +-- background = "#262626", +-- foreground = "#c6c6c6", +-- cursorline = "#303030", +-- none = "NONE", +-- } + +return M diff --git a/nightly_cm.nvim/lua/nightly_cm/theme.lua b/nightly_cm.nvim/lua/nightly_cm/theme.lua new file mode 100644 index 0000000..946b146 --- /dev/null +++ b/nightly_cm.nvim/lua/nightly_cm/theme.lua @@ -0,0 +1,396 @@ +local theme = {} + +function theme.setup() + local options = require("nightly_cm.config").options + + 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 }, + 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 }, + 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.color17 }, + 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.background }, + NormalNC = { fg = p.foreground, bg = p.background }, + Number = { fg = p.color3 }, + Operator = { fg = p.color6 }, + Pmenu = { fg = p.color17, bg = p.color0 }, + PmenuSbar = { bg = p.color0 }, + 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 }, + StatusLineNC = { bg = p.background, fg = 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.background }, + TabLineFill = { fg = p.foreground, bg = p.background }, + 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.color18 }, + LspReferenceRead = { bg = p.color18 }, + LspReferenceWrite = { bg = p.color18 }, + 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.background }, + 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.background }, + CmpItemAbbr = { fg = p.foreground, bg = p.background }, + CmpItemAbbrDeprecated = { fg = p.color2, bg = p.background }, + CmpItemAbbrMatch = { fg = p.color7, bg = p.background }, + CmpItemAbbrMatchFuzzy = { fg = p.color7, bg = p.background }, + CmpItemKind = { fg = p.color4, bg = p.background }, + CmpItemMenu = { fg = p.color2, bg = p.background }, + 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.foreground, bg = p.background }, + NvimTreeEndOfBufferNC = { fg = p.foreground, 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.background }, + NvimTreeSymlink = { fg = p.color3 }, + NvimTreeWinSeparator = { fg = p.background }, + + -- 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.color15 }, + 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.background, bg = p.color3 }, + TelescopePreviewBorder = { fg = p.color16, bg = p.color16 }, + TelescopePreviewNormal = { fg = p.foreground, bg = p.color16 }, + + -- 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 +end + +return theme