neovim

mrgrouse's beloved, handmade neovim configuration
Log | Files | Refs | README

config.lua (13526B)


      1 local M = {}
      2 
      3 M.highlights_base = function (colors)
      4   return {
      5     Normal = { fg = colors.foreground, bg = colors.background },
      6     StatusLineNC = { bg = colors.background, fg = colors.background },
      7     StatusLine = { bg = colors.background, fg = colors.background },
      8     SignColumn = { bg = colors.background, fg = colors.background },
      9     MsgArea = { fg = colors.foreground, bg = colors.background },
     10     ModeMsg = { fg = colors.foreground, bg = colors.background },
     11     MsgSeparator = { fg = colors.foreground, bg = colors.background },
     12     SpellBad = { fg = colors.color2 },
     13     SpellCap = { fg = colors.color6 },
     14     SpellLocal = { fg = colors.color4 },
     15     SpellRare = { fg = colors.color6 },
     16     NormalNC = { fg = colors.foreground, bg = colors.background },
     17     Pmenu = { fg = colors.foreground, bg = colors.background },
     18     PmenuSel = { fg = colors.background, bg = colors.color4 },
     19     WildMenu = { fg = colors.color7, bg = colors.color4 },
     20     CursorLineNr = { fg = colors.color1 },
     21     Comment = { fg = colors.color1 },
     22     Folded = { fg = colors.color4, bg = colors.background },
     23     FoldColumn = { fg = colors.color4, bg = colors.background },
     24     LineNr = { fg = colors.color9, bg = colors.background },
     25     FloatBorder = { fg = colors.foreground, bg = colors.background },
     26     Whitespace = { fg = colors.color1 },
     27     VertSplit = { fg = colors.background, bg = colors.color1 },
     28     CursorLine = { bg = colors.background },
     29     CursorColumn = { bg = colors.background },
     30     ColorColumn = { bg = colors.background },
     31     NormalFloat = { bg = colors.background },
     32     Visual = { bg = colors.color1, fg = colors.foreground },
     33     VisualNOS = { bg = colors.background },
     34     WarningMsg = { fg = colors.color3, bg = colors.background },
     35     DiffAdd = { fg = colors.background, bg = colors.color4 },
     36     DiffChange = { fg = colors.background, bg = colors.color5 },
     37     DiffDelete = { fg = colors.background, bg = colors.color11 },
     38     QuickFixLine = { bg = colors.color2 },
     39     PmenuSbar = { bg = colors.background },
     40     PmenuThumb = { bg = colors.color2 },
     41     MatchParen = { fg = colors.color4, bg = colors.background },
     42     Cursor = { fg = colors.foreground, bg = colors.cursor },
     43     lCursor = { fg = colors.foreground, bg = colors.cursor },
     44     CursorIM = { fg = colors.foreground, bg = colors.cursor },
     45     TermCursor = { fg = colors.foreground, bg = colors.cursor },
     46     TermCursorNC = { fg = colors.foreground, bg = colors.cursor },
     47     Conceal = { fg = colors.color4, bg = colors.background },
     48     Directory = { fg = colors.color4 },
     49     SpecialKey = { fg = colors.color4 },
     50     Title = { fg = colors.color4 },
     51     ErrorMsg = { fg = colors.color11, bg = colors.background },
     52     Search = { fg = colors.foreground, bg = colors.color1 },
     53     IncSearch = { fg = colors.foreground, bg = colors.color1 },
     54     Substitute = { fg = colors.color1, bg = colors.color6 },
     55     MoreMsg = { fg = colors.color5 },
     56     Question = { fg = colors.color5 },
     57     EndOfBuffer = { fg = colors.background },
     58     NonText = { fg = colors.color1 },
     59     Variable = { fg = colors.color5 },
     60     String = { fg = colors.color12 },
     61     Character = { fg = colors.color12 },
     62     Constant = { fg = colors.color5 },
     63     Number = { fg = colors.color5 },
     64     Boolean = { fg = colors.color5 },
     65     Float = { fg = colors.color5 },
     66     Identifier = { fg = colors.color5 },
     67     Function = { fg = colors.color6 },
     68     Operator = { fg = colors.color6 },
     69     Type = { fg = colors.color5 },
     70     StorageClass = { fg = colors.color7 },
     71     Structure = { fg = colors.color6 },
     72     Typedef = { fg = colors.color6 },
     73     Keyword = { fg = colors.color6 },
     74     Statement = { fg = colors.color6 },
     75     Conditional = { fg = colors.color6 },
     76     Repeat = { fg = colors.color6 },
     77     Label = { fg = colors.color4 },
     78     Exception = { fg = colors.color6 },
     79     Include = { fg = colors.color6 },
     80     PreProc = { fg = colors.color6 },
     81     Define = { fg = colors.color6 },
     82     Macro = { fg = colors.color6 },
     83     PreCondit = { fg = colors.color6 },
     84     Special = { fg = colors.color6 },
     85     SpecialChar = { fg = colors.foreground },
     86     Tag = { fg = colors.color4 },
     87     Debug = { fg = colors.color11 },
     88     Delimiter = { fg = colors.foreground },
     89     SpecialComment = { fg = colors.color2 },
     90     Ignore = { fg = colors.color7, bg = colors.background },
     91     Todo = { fg = colors.color11, bg = colors.background },
     92     Error = { fg = colors.color11, bg = colors.background },
     93     TabLine = { fg = colors.color2, bg = colors.background },
     94     TabLineSel = { fg = colors.foreground, bg = colors.background },
     95     TabLineFill = { fg = colors.foreground, bg = colors.background },
     96     CmpDocumentationBorder = { fg = colors.foreground, bg = colors.background },
     97     CmpItemAbbr = { fg = colors.foreground, bg = colors.background },
     98     CmpItemAbbrDeprecated = { fg = colors.color2, bg = colors.background },
     99     CmpItemAbbrMatch = { fg = colors.color7, bg = colors.background },
    100     CmpItemAbbrMatchFuzzy = { fg = colors.color7, bg = colors.background },
    101     CmpItemKind = { fg = colors.color4, bg = colors.background },
    102     CmpItemMenu = { fg = colors.color2, bg = colors.background },
    103 
    104     -- treesitter
    105 
    106     -- These groups are for the neovim tree-sitter highlights.
    107     -- As of writing, tree-sitter support is a WIP, group names may color5.
    108     -- By default, most of these groups link to an appropriate Vim group,
    109     -- TSError -> Error for example, so you do not have to define these unless
    110     -- you explicitly want to support Treesitter's improved syntax awareness.
    111 
    112     -- TSAnnotation        = { };    -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information.
    113     -- TSAttribute         = { };    -- (unstable) TODO: docs
    114     -- TSBoolean           = { };    -- For booleans.
    115     -- TSCharacter         = { };    -- For characters.
    116     -- TSComment           = { };    -- For color1 blocks.
    117     TSNote = { fg = colors.background, bg = colors.color5 },
    118     TSComment = { fg = colors.color1 },
    119     TSWarning = { fg = colors.background, bg = colors.color5 },
    120     TSDanger = { fg = colors.background, bg = colors.color3 },
    121     TSConstructor = { fg = colors.color6 }, -- For constructor calls and definitions: `= { }` in Lua, and Java constructors.
    122     -- TSConditional       = { };    -- For keywords related to conditionnals.
    123     -- TSConstant          = { };    -- For constants
    124     -- TSConstBuiltin      = { };    -- For constant that are built in the language: `nil` in Lua.
    125     -- TSConstMacro        = { };    -- For constants that are defined by macros: `NULL` in C.
    126     -- TSError             = { };    -- For syntax/parser errors.
    127     -- TSException         = { };    -- For exception related keywords.
    128     TSField = { fg = colors.color12 }, -- For fields.
    129     -- TSFloat             = { };    -- For floats.
    130     -- TSFunction          = { };    -- For function (calls and definitions).
    131     -- TSFuncBuiltin       = { };    -- For builtin functions: `table.insert` in Lua.
    132     -- TSFuncMacro         = { };    -- For macro defined fuctions (calls and definitions): each `macro_rules` in Rust.
    133     -- TSInclude           = { };    -- For includes: `#include` in C, `use` or `extern crate` in Rust, or `require` in Lua.
    134     TSKeyword = { fg = colors.color6 }, -- For keywords that don't fall in previous categories.
    135     TSKeywordFunction = { fg = colors.color6 }, -- For keywords used to define a fuction.
    136     TSLabel = { fg = colors.color7 }, -- For labels: `label:` in C and `:label:` in Lua.
    137     -- TSMethod            = { };    -- For method calls and definitions.
    138     -- TSNamespace         = { };    -- For identifiers referring to modules and namespaces.
    139     -- TSNone              = { };    -- TODO: docs
    140     -- TSNumber            = { };    -- For all numbers
    141     TSOperator = { fg = colors.color7 }, -- For any operator: `+`, but also `->` and `*` in C.
    142     TSParameter = { fg = colors.color5 }, -- For parameters of a function.
    143     -- TSParameterReference= { };    -- For references to parameters of a function.
    144     TSProperty = { fg = colors.color4 }, -- Same as `TSField`.
    145     TSPunctDelimiter = { fg = colors.color7 }, -- For delimiters ie: `.`
    146     TSPunctBracket = { fg = colors.foreground }, -- For brackets and parens.
    147     TSPunctSpecial = { fg = colors.color7 }, -- For special punctutation that does not fall in the catagories before.
    148     -- TSRepeat            = { };    -- For keywords related to loops.
    149     -- TSString            = { };    -- For strings.
    150     TSStringRegex = { fg = colors.color7 }, -- For regexes.
    151     TSStringEscape = { fg = colors.color6 }, -- For escape characters within a string.
    152     -- TSSymbol            = { };    -- For identifiers referring to symbols or atoms.
    153     -- TSType              = { };    -- For types.
    154     -- TSTypeBuiltin       = { };    -- For builtin types.
    155     TSVariableBuiltin = { fg = colors.color11 }, -- Variable names that are defined by the languages, like `this` or `self`.
    156 
    157     -- TSTag               = { };    -- Tags like html tag names.
    158     -- TSTagDelimiter      = { };    -- Tag delimiter like `<` `>` `/`
    159     -- TSText              = { };    -- For strings considered text in a markup language.
    160     TSTextReference = { fg = colors.color8 },
    161     -- TSEmphasis          = { };    -- For text to be represented with emphasis.
    162     -- TSUnderline         = { };    -- For text to be represented with an underline.
    163     -- TSStrike            = { };    -- For strikethrough text.
    164     -- TSTitle             = { };    -- Text that is part of a title.
    165     -- TSLiteral           = { };    -- Literal text.
    166     -- TSURI               = { };    -- Any URI like a link or email.
    167 
    168     -- LspTrouble
    169     LspTroubleText = { fg = colors.foreground },
    170     LspTroubleCount = { fg = colors.color6, bg = colors.foreground },
    171     LspTroubleNormal = { fg = colors.foreground, bg = colors.background },
    172 
    173     -- Illuminate
    174     illuminatedWord = { bg = colors.foreground },
    175     illuminatedCurWord = { bg = colors.foreground },
    176 
    177     -- diff
    178     diffAdded = { fg = colors.color4 },
    179     diffRemoved = { fg = colors.color11 },
    180     diffChanged = { fg = colors.color5 },
    181     diffOldFile = { fg = colors.color5 },
    182     diffNewFile = { fg = colors.color5 },
    183     diffFile = { fg = colors.color7 },
    184     diffLine = { fg = colors.color1 },
    185     diffIndexLine = { fg = colors.color6 },
    186 
    187    -- Neogit
    188     NeogitBranch = { fg = colors.color6 },
    189     NeogitRemote = { fg = colors.color6 },
    190     NeogitHunkHeader = { bg = colors.background, fg = colors.foreground },
    191     NeogitHunkHeaderHighlight = { bg = colors.foreground, fg = colors.color7 },
    192     NeogitDiffContextHighlight = { bg = colors.background, fg = colors.foreground },
    193     NeogitDiffDeleteHighlight = { fg = colors.color11, bg = colors.color11 },
    194     NeogitDiffAddHighlight = { fg = colors.color4, bg = colors.color4 },
    195 
    196     -- GitGutter
    197     GitGutterAdd = { fg = colors.color4 }, -- diff mode: Added line |diff.txt|
    198     GitGutterChange = { fg = colors.color5 }, -- diff mode: Changed line |diff.txt|
    199     GitGutterDelete = { fg = colors.color11 }, -- diff mode: Deleted line |diff.txt|
    200 
    201     -- GitSigns
    202     GitSignsAdd = { fg = colors.color4 }, -- diff mode: Added line |diff.txt|
    203     GitSignsChange = { fg = colors.color5 }, -- diff mode: Changed line |diff.txt|
    204     GitSignsDelete = { fg = colors.color11 }, -- diff mode: Deleted line |diff.txt|
    205 
    206     -- Telescope
    207     TelescopeBorder = { fg = colors.color1, bg = colors.background },
    208     TelescopeNormal = { fg = colors.foreground, bg = colors.background },
    209     TelescopeSelection = { fg = colors.background, bg = colors.color1 },
    210 
    211     -- Indent Blank Line
    212     IndentBlanklineChar = { fg = colors.color1, bg = colors.background },
    213 
    214     -- NvimTree
    215     NvimTreeNormal = { fg = colors.foreground, bg = colors.background },
    216     NvimTreeNormalNC = { fg = colors.foreground, bg = colors.background },
    217     NvimTreeRootFolder = { fg = colors.color1 },
    218     NvimTreeGitDirty = { fg = colors.color5 },
    219     NvimTreeGitNew = { fg = colors.color4 },
    220     NvimTreeGitDeleted = { fg = colors.color11 },
    221     NvimTreeSpecialFile = { fg = colors.color6 },
    222     NvimTreeIndentMarker = { fg = colors.foreground },
    223     NvimTreeImageFile = { fg = colors.foreground },
    224     NvimTreeSymlink = { fg = colors.color7 },
    225     NvimTreeFolderIcon = { fg = colors.color2, bg = colors.background },
    226     NvimTreeStatusLineNC = { bg = colors.background, fg = colors.background },
    227 
    228     -- LspSaga
    229     LspFloatWinNormal = { bg = colors.background },
    230     LspFloatWinBorder = { fg = colors.foreground },
    231     LspSagaBorderTitle = { fg = colors.color7 },
    232     LspSagaHoverBorder = { fg = colors.color7 },
    233     LspSagaRenameBorder = { fg = colors.color4 },
    234     LspSagaDefPreviewBorder = { fg = colors.color4 },
    235     LspSagaCodeActionBorder = { fg = colors.color7 },
    236     LspSagaFinderSelection = { fg = colors.color1 },
    237     LspSagaCodeActionTitle = { fg = colors.color7 },
    238     LspSagaCodeActionContent = { fg = colors.color6 },
    239     LspSagaSignatureHelpBorder = { fg = colors.color11 },
    240     ReferencesCount = { fg = colors.color6 },
    241     DefinitionCount = { fg = colors.color6 },
    242     DefinitionIcon = { fg = colors.color7 },
    243     ReferencesIcon = { fg = colors.color7 },
    244     TargetWord = { fg = colors.color7 },
    245 
    246     -- NeoVim
    247     healthError = { fg = colors.color11 },
    248     healthSuccess = { fg = colors.color4 },
    249     healthWarning = { fg = colors.color5 },
    250 
    251     -- BufferLine
    252     BufferLineIndicatorSelected = { fg = colors.color5 },
    253     BufferLineFill = { bg = colors.background },
    254   }
    255 end
    256 
    257 return M