dotfiles-ansible/roles/config/files/nvim/lua/user/themes/nord/init.lua

526 lines
21 KiB
Lua

local M = {}
local c = require('user.themes.nord.colors')
local util = require('user.util.color')
M.termcolors = {
c.grey1,
c.red,
c.green,
c.yellow,
c.blue,
c.purple,
c.cyan,
c.white1,
c.grey_bright,
c.red,
c.green,
c.yellow,
c.blue,
c.purple,
c.teal,
c.white2,
}
-- Ref: https://github.com/gbprod/nord.nvim
M.highlights = {
-- editor
Normal = { fg = c.fg },
NormalFloat = { fg = c.fg },
FloatBorder = { fg = c.white2 },
ColorColumn = { bg = c.grey1 },
Cursor = { fg = c.black, bg = c.fg },
CursorIM = { fg = c.black, bg = c.white1 },
CursorLine = { bg = c.grey1 },
TermCursor = { link = 'Cursor' },
TermCursorNC = { bg = c.grey1 },
Underlined = { fg = c.green, underline = true },
Ignore = { fg = c.grey1 },
Error = { fg = c.fg, bg = c.red },
LineNr = { fg = c.grey3 },
MatchParen = { fg = c.cyan, bg = c.grey3 },
NonText = { fg = c.highlight },
Whitespace = { fg = c.highlight },
EndOfBuffer = { fg = c.black }, -- hide filler lines with '~' completely
Pmenu = { fg = c.fg, bg = c.grey1 },
PmenuSbar = { fg = c.fg, bg = c.grey1 },
PmenuSel = { fg = c.cyan, bg = c.grey3, bold = true },
PmenuThumb = { fg = c.cyan, bg = c.grey3, bold = true },
SpecialKey = { fg = c.grey3 },
SpellBad = { fg = c.red, sp = c.red, undercurl = true },
SpellCap = { fg = c.yellow, sp = c.yellow, undercurl = true },
SpellLocal = { fg = c.white1, sp = c.white1, undercurl = true },
SpellRare = { fg = c.white2, sp = c.white2, undercurl = true },
Visual = { bg = c.grey2 },
VisualNOS = { bg = c.grey2 },
-- quickfix
QuickFixLine = { bg = c.grey2 },
qfLineNr = { fg = c.yellow },
-- :checkhealth
healthError = { fg = c.red, bg = c.grey1 },
healthSuccess = { fg = c.green, bg = c.grey1 },
healthWarning = { fg = c.yellow, bg = c.grey1 },
-- gutter
CursorColumn = { bg = c.grey1 },
CursorLineNr = { fg = c.fg },
Folded = { fg = c.highlight, bg = c.grey1 },
FoldColumn = { fg = c.grey3 },
SignColumn = { fg = c.grey1 },
-- navigation
Directory = { fg = c.cyan },
-- prompt
MsgArea = { link = 'Normal' },
ErrorMsg = { fg = c.fg, bg = c.red },
ModeMsg = { fg = c.fg },
MoreMsg = { fg = c.cyan },
Question = { fg = c.fg },
WarningMsg = { fg = c.black, bg = c.yellow },
WildMenu = { fg = c.cyan, bg = c.grey1 },
-- statusline
Statusline = { fg = c.cyan, bg = c.grey1 },
StatusLineNC = { fg = c.fg, bg = c.grey1 },
-- search
IncSearch = { fg = c.white2, bg = c.dark_blue, underline = true },
Search = { fg = c.grey1, bg = c.cyan },
CurSearch = { link = 'IncSearch' },
-- :s/../../
Substitute = { link = 'IncSearch' },
-- tabline
TabLine = { fg = c.fg, bg = c.grey3 },
TabLineFill = { fg = c.fg, bg = c.grey1 },
TabLineSel = { fg = c.black, bg = c.cyan },
-- winbar
WinBar = { fg = c.fg, bg = 'NONE' },
WinBarNC = { link = 'WinBar' },
-- window
Title = { fg = c.fg },
VertSplit = { fg = c.grey_bright },
-- base syntax
Boolean = { fg = c.blue },
Character = { fg = c.fg },
Comment = { fg = c.grey_bright, italic = true },
Conceal = { fg = 'NONE', bg = 'NONE' },
Conditional = { fg = c.blue, bold = true },
Constant = { fg = c.yellow },
Debug = { fg = c.highlight },
Define = { fg = c.blue },
Delimiter = { fg = c.white2 },
Exception = { fg = c.blue, bold = true },
Float = { fg = c.purple },
Function = { fg = c.cyan },
Identifier = { fg = c.fg },
Include = { fg = c.blue },
Keyword = { fg = c.blue, bold = true },
Label = { fg = c.purple },
Number = { fg = c.purple },
Operator = { fg = c.blue },
PreProc = { fg = c.blue },
Repeat = { fg = c.blue, bold = true },
Special = { fg = c.fg },
SpecialChar = { fg = c.yellow },
SpecialComment = { fg = c.cyan, italic = true },
Statement = { fg = c.blue },
StorageClass = { fg = c.blue },
String = { fg = c.green },
Structure = { fg = c.blue },
Tag = { fg = c.fg },
Todo = { fg = c.yellow },
Type = { fg = c.blue },
Typedef = { fg = c.blue },
Macro = { link = 'Define' },
PreCondit = { link = 'PreProc' },
Variable = { link = 'Identifier' },
-- diff
DiffAdd = { fg = c.green, bg = c.grey1 },
DiffChange = { fg = c.yellow, bg = c.grey1 },
DiffDelete = { fg = c.red, bg = c.grey1 },
DiffText = { fg = c.blue, bg = c.grey1 },
-- legacy diff groups for some plugins
diffAdded = { link = 'DiffAdd' },
diffRemoved = { link = 'DiffDelete' },
diffChanged = { link = 'DiffChange' },
-- NOTE: no TreeSitter grammars yet
-- asciidoc
asciidocAttributeEntry = { fg = c.purple, bold = true },
asciidocAttributeList = { fg = c.purple, bold = true },
asciidocAttributeRef = { fg = c.green, bold = true },
asciidocHLabel = { fg = c.blue },
asciidocListingBlock = { fg = c.teal },
asciidocMacro = { fg = c.green },
asciidocMacroAttributes = { fg = c.purple },
asciidocOneLineTitle = { link = '@text.title' },
asciidocPassthroughBlock = { fg = c.blue },
asciidocTriplePlusPassthrough = { fg = c.teal },
asciidocAdmonition = { link = 'Keyword' },
asciidocBackslash = { link = 'Keyword' },
asciidocQuotedBold = { bold = true },
asciidocQuotedEmphasized = { italic = true },
asciidocQuotedMonospaced = { fg = c.teal },
asciidocQuotedMonospaced2 = { link = 'asciidocQuotedMonospaced' },
asciidocQuotedUnconstrainedBold = { link = 'asciidocQuotedBold' },
asciidocQuotedUnconstrainedEmphasized = { link = 'asciidocQuotedEmphasized' },
asciidocURL = { link = '@text.uri' },
asciidocEmail = { link = '@text.uri' },
-- :help nvim-treesitter-highlights
['@annotation'] = { fg = c.blue, italic = true },
['@attribute'] = { fg = c.purple },
['@boolean'] = { link = 'Boolean' },
['@character'] = { link = 'Character' },
['@character.special'] = { link = 'SpecialChar' },
['@comment'] = { link = 'Comment' },
['@conditional'] = { link = 'Conditional' },
['@constant'] = { link = 'Constant' },
['@constant.builtin'] = { fg = c.teal },
['@constant.macro'] = { fg = c.teal },
['@conceal'] = { link = 'Conceal' },
['@constructor'] = { fg = c.blue },
['@debug'] = { link = 'Debug' },
['@define'] = { link = 'Define' },
['@error'] = { fg = c.red },
['@exception'] = { link = 'Exception' },
['@field'] = { fg = c.teal },
['@float'] = { link = 'Float' },
['@function'] = { link = 'Function' },
['@function.call'] = { link = 'Function' },
['@function.builtin'] = { link = 'Function' },
['@function.macro'] = { fg = c.teal },
['@include'] = { link = 'Include' },
['@keyword'] = { link = 'Keyword' },
['@keyword.function'] = { link = 'Keyword' },
['@keyword.return'] = { link = 'Keyword' },
['@keyword.operator'] = { link = 'Keyword' },
['@label'] = { link = 'Label' },
['@method'] = { fg = c.teal },
['@method.call'] = { fg = c.teal, bold = true },
['@namespace'] = { fg = c.white1 },
-- ['@none'] = { fg = 'NONE', bg = 'NONE' },
['@number'] = { link = 'Number' },
['@operator'] = { link = 'Operator' },
['@parameter'] = { fg = c.purple, italic = true },
['@parameter.reference'] = { fg = c.purple, italic = true },
['@preproc'] = { link = 'PreProc' },
['@property'] = { fg = c.teal },
['@punctuation.delimiter'] = { link = 'Delimiter' },
['@punctuation.bracket'] = { link = 'Delimiter' },
['@punctuation.special'] = { link = 'Delimiter' },
['@repeat'] = { link = 'Repeat' },
['@storageclass'] = { link = 'StorageClass' },
['@string'] = { link = 'String' },
['@string.regex'] = { fg = c.teal },
['@string.escape'] = { fg = c.purple },
['@string.special'] = { link = 'Special' },
['@symbol'] = { fg = c.purple },
['@tag'] = { link = 'Tag' },
['@tag.attribute'] = { fg = c.orange, italic = true },
['@tag.delimiter'] = { fg = c.purple },
['@text'] = { link = 'Normal' },
['@text.diff.add'] = { link = 'DiffAdd' },
['@text.diff.delete'] = { link = 'DiffDelete' },
['@text.strong'] = { bold = true },
['@text.emphasis'] = { italic = true },
['@text.underline'] = { underline = true },
['@text.strike'] = { strikethrough = true },
['@text.title'] = { fg = c.cyan, bold = true },
['@text.literal'] = { fg = c.green, italic = true },
['@text.uri'] = { fg = c.green, underline = true },
['@text.math'] = { fg = c.yellow },
['@text.reference'] = { fg = c.purple, italic = true },
['@text.environment'] = { fg = c.cyan },
['@text.environment.name'] = { fg = c.purple, bold = true },
['@text.todo'] = { link = 'Todo' },
['@text.note'] = { fg = c.blue, bold = true },
['@text.warning'] = { fg = c.yellow, bold = true },
['@text.danger'] = { fg = c.red, bold = true },
['@text.todo.unchecked'] = { fg = c.blue, bold = true },
['@text.todo.checked'] = { fg = c.green, bold = true },
['@type'] = { link = 'Type' },
['@type.builtin'] = { link = 'Type' },
['@type.qualifier'] = { fg = c.blue, bold = true, italic = true },
['@type.definition'] = { link = 'Typedef' },
['@variable'] = { link = 'Variable' },
['@variable.builtin'] = { link = 'Variable' },
-- LSP semantic tokens
['@lsp.type.builtinType'] = { link = '@type.builtin' },
['@lsp.type.class'] = { link = '@type' },
['@lsp.type.comment'] = { link = '@comment' },
['@lsp.type.enum'] = { link = '@type' },
['@lsp.type.enumMember'] = { link = '@constant' },
['@lsp.type.field'] = { link = '@field' },
['@lsp.type.function'] = { link = '@function' },
['@lsp.type.generic'] = { link = '@text' },
['@lsp.type.interface'] = { link = '@type' },
['@lsp.type.keyword'] = { link = '@keyword' },
['@lsp.type.macro'] = { link = '@function.macro' },
['@lsp.type.method'] = { link = '@method' },
['@lsp.type.namespace'] = { link = '@namespace' },
['@lsp.type.number'] = { link = '@number' },
['@lsp.type.parameter'] = { link = '@parameter' },
['@lsp.type.property'] = { link = '@property' },
['@lsp.type.struct'] = { link = 'Structure' },
['@lsp.type.typeParameter'] = { link = '@parameter' },
['@lsp.type.variable'] = { link = '@variable' },
['@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' },
['@lsp.typemod.variable.static'] = { link = '@constant' },
-- LSP
DiagnosticError = { fg = c.red },
DiagnosticWarn = { fg = c.yellow },
DiagnosticInfo = { fg = c.blue },
DiagnosticHint = { fg = c.cyan },
DiagnosticUnderlineError = { sp = c.red, underline = true },
DiagnosticUnderlineWarn = { sp = c.yellow, underline = true },
DiagnosticUnderlineInfo = { sp = c.blue, underline = true },
DiagnosticUnderlineHint = { sp = c.cyan, underline = true },
DiagnosticVirtualTextError = { fg = c.red, italic = true },
DiagnosticVirtualTextWarn = { fg = c.yellow, italic = true },
DiagnosticVirtualTextInfo = { fg = c.blue, italic = true },
DiagnosticVirtualTextHint = { fg = c.cyan, italic = true },
DiagnosticFloatingError = { link = 'DiagnosticError' },
DiagnosticFloatingWarn = { link = 'DiagnosticWarn' },
DiagnosticFloatingInfo = { link = 'DiagnosticInfo' },
DiagnosticFloatingHint = { link = 'DiagnosticHint' },
DiagnosticSignError = { link = 'DiagnosticError' },
DiagnosticSignWarn = { link = 'DiagnosticWarn' },
DiagnosticSignInfo = { link = 'DiagnosticInfo' },
DiagnosticSignHint = { link = 'DiagnosticHint' },
LspReferenceText = { fg = c.fg, bg = c.grey_bright },
LspReferenceRead = { fg = c.fg, bg = c.grey_bright },
LspReferenceWrite = { fg = c.fg, bg = c.grey_bright },
LspCodeLens = { link = 'Comment' },
LspInfoBorder = { link = 'FloatBorder' },
-- nvim-treesitter-context
TreesitterContext = { link = 'Pmenu' },
-- nvim-cmp
CmpItemAbbr = { fg = c.fg },
CmpItemAbbrMatch = { fg = c.yellow, bold = true },
CmpItemAbbrMatchFuzzy = { fg = c.yellow, bold = true },
CmpItemAbbrDeprecated = { fg = c.highlight, strikethrough = true },
CmpItemKind = { fg = c.green, bold = true },
CmpItemMenu = { fg = c.blue, bold = true },
-- LuaSnip
LuasnipChoiceNodeActive = { fg = c.orange },
LuasnipInsertNodeActive = { fg = c.blue },
-- gitsigns.nvim
GitSignsAdd = { fg = c.green, bold = true },
GitSignsAddNr = { fg = c.green },
GitSignsAddInline = { fg = c.black, bg = c.green },
GitSignsChange = { fg = c.yellow, bold = true },
GitSignsChangeNr = { fg = c.yellow },
GitSignsChangeInline = { fg = c.black, bg = c.yellow },
GitSignsDelete = { fg = c.red, bold = true },
GitSignsDeleteNr = { fg = c.red },
GitSignsDeleteInline = { fg = c.black, bg = c.red },
GitSignsCurrentLineBlame = { fg = c.grey_bright, bold = true, italic = true },
-- git-conflict.nvim
GitConflictCurrent = { bg = util.blend(c.green, c.black, 0.2) },
GitConflictIncoming = { bg = util.blend(c.blue, c.black, 0.2) },
GitConflictAncestor = { bg = util.blend(c.yellow, c.black, 0.2) },
-- rainbow-delimiters.nvim
RainbowDelimiterRed = { fg = c.red, bold = true },
RainbowDelimiterOrange = { fg = c.orange, bold = true },
RainbowDelimiterYellow = { fg = c.yellow, bold = true },
RainbowDelimiterGreen = { fg = c.green, bold = true },
RainbowDelimiterCyan = { fg = c.cyan, bold = true },
RainbowDelimiterBlue = { fg = c.blue, bold = true },
RainbowDelimiterViolet = { fg = c.purple, bold = true },
-- dashboard.nvim / alpha-nvim
DashboardHeader = { fg = c.cyan, bold = true },
DashboardCenter = { fg = c.blue, bold = true },
DashboardShortcut = { fg = c.green, bold = true },
DashboardFooter = { fg = c.yellow, bold = true },
-- nvim-tree.lua
NvimTreeNormal = { fg = c.fg },
NvimTreeIndentMarker = { fg = c.grey3 },
NvimTreeFolderIcon = { fg = c.fg },
NvimTreeRootFolder = { fg = c.teal, bold = true },
NvimTreeFolderName = { fg = c.blue },
NvimTreeEmptyFolderName = { fg = c.grey_bright },
NvimTreeImageFile = { fg = c.yellow },
NvimTreeExecFile = { fg = c.green },
NvimTreeSpecialFile = { fg = c.cyan, underline = true },
NvimTreeGitDirty = { fg = c.yellow },
NvimTreeGitDeleted = { fg = c.red },
NvimTreeWindowPicker = { fg = c.white2, bg = c.blue, bold = true },
-- which-key.nvim
WhichKey = { fg = c.green, bold = true },
WhichKeyGroup = { fg = c.cyan },
WhichKeyDesc = { fg = c.blue },
WhichKeySeparator = { fg = c.grey_bright },
WhichKeyFloat = { link = 'NormalFloat' },
WhichKeyValue = { link = 'Comment' },
-- nvim-notify
NotifyERRORBorder = { fg = c.red },
NotifyWARNBorder = { fg = c.yellow },
NotifyINFOBorder = { fg = c.blue },
NotifyDEBUGBorder = { fg = c.green },
NotifyTRACEBorder = { fg = c.white2 },
NotifyERRORIcon = { link = 'NotifyERRORBorder' },
NotifyWARNIcon = { link = 'NotifyWARNBorder' },
NotifyINFOIcon = { link = 'NotifyINFOBorder' },
NotifyDEBUGIcon = { link = 'NotifyDEBUGBorder' },
NotifyTRACEIcon = { link = 'NotifyTRACEBorder' },
NotifyERRORTitle = { link = 'NotifyERRORBorder' },
NotifyWARNTitle = { link = 'NotifyWARNBorder' },
NotifyINFOTitle = { link = 'NotifyINFOBorder' },
NotifyDEBUGTitle = { link = 'NotifyDEBUGBorder' },
NotifyTRACETitle = { link = 'NotifyTRACEBorder' },
NotifyERRORBody = { link = 'Normal' },
NotifyWARNBody = { link = 'Normal' },
NotifyINFOBody = { link = 'Normal' },
NotifyDEBUGBody = { link = 'Normal' },
NotifyTRACEBody = { link = 'Normal' },
-- nvim-scrollbar
ScrollbarHandle = { bg = c.grey1 },
ScrollbarError = { fg = c.red, bold = true },
ScrollbarErrorHandle = { fg = c.red, bg = c.grey1, bold = true },
ScrollbarWarn = { fg = c.yellow, bold = true },
ScrollbarWarnHandle = { fg = c.yellow, bg = c.grey1, bold = true },
ScrollbarInfo = { fg = c.blue, bold = true },
ScrollbarInfoHandle = { fg = c.blue, bg = c.grey1, bold = true },
ScrollbarHint = { fg = c.cyan, bold = true },
ScrollbarHintHandle = { fg = c.cyan, bg = c.grey1, bold = true },
ScrollbarMisc = { fg = c.white2, bold = true },
ScrollbarMiscHandle = { fg = c.white2, bg = c.grey1, bold = true },
-- indent-blankline.nvim
IblIndent = { fg = c.grey1 },
IblScope = { fg = c.grey_bright },
-- headlines.nvim
-- NOTE: keep bg of these in sync with OrgHeadlineLevel{1..6}
Headline1 = { bg = util.blend(c.purple, c.black, 0.09), bold = true },
Headline2 = { bg = util.blend(c.blue, c.black, 0.09), bold = true },
Headline3 = { bg = util.blend(c.green, c.black, 0.09), bold = true },
Headline4 = { bg = util.blend(c.yellow, c.black, 0.09), bold = true },
Headline5 = { bg = util.blend(c.orange, c.black, 0.09), bold = true },
Headline6 = { bg = util.blend(c.fg, c.black, 0.09), bold = true },
Quote = { fg = c.grey_bright },
CodeBlock = { bg = c.grey1 },
Dash = { fg = c.blue, bold = true },
-- nvim-orgmode
OrgHeadlineLevel1 = { fg = c.purple, bold = true },
OrgHeadlineLevel2 = { fg = c.blue, bold = true },
OrgHeadlineLevel3 = { fg = c.green, bold = true },
OrgHeadlineLevel4 = { fg = c.yellow, bold = true },
OrgHeadlineLevel5 = { fg = c.orange, bold = true },
OrgHeadlineLevel6 = { fg = c.fg, bold = true },
OrgTODO = { fg = c.green, bold = true },
OrgDONE = { fg = c.purple, bold = true },
OrgTSCheckbox = { link = '@text.todo.unchecked' },
OrgTSCheckboxChecked = { link = '@text.todo.checked' },
OrgTSCheckboxHalfChecked = { fg = c.blue, bold = true },
OrgAgendaDealine = { fg = c.red, bold = true },
OrgAgendaScheduled = { fg = c.green, bold = true },
OrgAgendaScheduledPast = { fg = c.blue, bold = true },
-- sniprun.nvim
SniprunVirtualTextOk = { bg = c.cyan, fg = c.black },
SniprunFloatingWinOk = { fg = c.cyan },
SniprunVirtualTextErr = { bg = c.orange, fg = c.black },
SniprunFloatingWinErr = { fg = c.orange },
-- trouble.nvim
LspTroubleText = { fg = c.blue, bold = true },
-- telescope.nvim
TelescopeBorder = { fg = c.cyan },
TelescopeTitle = { fg = c.black, bg = c.cyan, bold = true },
TelescopeSelection = { fg = c.fg, bg = c.grey1 },
TelescopeMultiSelection = { fg = c.fg, bg = c.grey1, bold = true },
TelescopeSelectionCaret = { fg = c.red, bg = c.grey1, bold = true },
TelescopeMatching = { fg = c.yellow, bold = true },
-- overseer.nvim
OverseerPENDING = { fg = c.purple, bold = true },
OverseerRUNNING = { fg = c.blue, bold = true },
OverseerSUCCESS = { fg = c.green, bold = true },
OverseerCANCELED = { fg = c.yellow, bold = true },
OverseerFAILURE = { fg = c.red, bold = true },
OverseerTask = { fg = c.cyan },
OverseerComponent = { fg = c.yellow },
OverseerField = { fg = c.green },
-- neogit
NeogitBranch = { fg = c.purple, bold = true },
NeogitRemote = { fg = c.green, bold = true },
NeogitObjectId = { fg = c.teal },
NeogitHunkHeader = { fg = c.yellow },
NeogitHunkHeaderHighlight = { fg = c.yellow, bold = true },
NeogitDiffDeleteHighlight = { fg = c.red },
NeogitDiffAddHighlight = { fg = c.green },
NeogitNotificationInfo = { fg = c.blue },
NeogitNotificationWarning = { fg = c.yellow },
NeogitNotificationError = { fg = c.red },
NeogitPopupSwitchKey = { fg = c.green },
NeogitPopupActionKey = { link = 'NeogitPopupSwitchKey' },
NeogitPopupOptionKey = { link = 'NeogitPopupSwitchKey' },
NeogitFilePath = { fg = c.blue },
NeogitCommitViewHeader = { fg = c.white2, bg = c.dark_blue, bold = true },
-- flash.nvim
FlashBackdrop = { fg = c.grey_bright },
FlashMatch = { fg = c.white2, bold = true },
FlashLabel = { fg = c.white2, bg = c.red, bold = true },
-- nvim-navic
NavicText = { link = 'Normal' },
NavicSeparator = { fg = c.cyan },
-- nvim-coverage
CoverageCovered = { fg = c.green },
CoverageUncovered = { fg = c.red },
CoveragePartial = { fg = c.yellow },
-- lazy.nvim
LazyDimmed = { link = 'Normal' },
LazyProp = { fg = c.highlight, bold = true },
LazyH1 = { fg = c.white2, bg = c.dark_blue, bold = true },
LazyH2 = { fg = c.purple, bold = true },
LazyButton = { fg = c.white2, bg = c.grey1 },
LazyButtonActive = { link = 'LazyH1' },
LazySpecial = { fg = c.white2 },
LazyCommit = { fg = c.teal },
LazyReasonImport = { fg = c.teal },
LazyReasonRuntime = { fg = c.green },
LazyReasonCmd = { fg = c.cyan, bold = true },
LazyReasonEvent = { fg = c.yellow, bold = true },
LazyReasonFt = { fg = c.purple, bold = true },
LazyReasonKeys = { fg = c.green, bold = true },
LazyReasonPlugin = { fg = c.blue, bold = true },
LazyReasonSource = { fg = c.red, bold = true },
LazyReasonStart = { fg = c.orange, bold = true },
}
return M