neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

vim.lua (19291B)


      1 -- Name:         vim
      2 -- Description:  Vim's default color scheme
      3 -- Author:       Bram Moolenaar <Bram@vim.org>
      4 -- Maintainer:   The Vim Project <https://github.com/vim/vim>
      5 -- Website:      https://github.com/vim/vim
      6 -- License:      Same as Vim
      7 -- Last Updated: 2023 Aug 10
      8 
      9 -- This is Vim's default color scheme. It doesn't define the Normal
     10 -- highlighting, it uses whatever the colors used to be.
     11 
     12 vim.cmd.highlight('clear')
     13 vim.g.colors_name = 'vim'
     14 
     15 local hi = function(name, val)
     16  -- Force links
     17  val.force = true
     18 
     19  -- Make sure that `cterm` attribute is not populated from `gui`
     20  val.cterm = val.cterm or {} ---@type vim.api.keyset.highlight
     21 
     22  -- Define global highlight
     23  vim.api.nvim_set_hl(0, name, val)
     24 end
     25 
     26 --stylua: ignore start
     27 -- General
     28 hi('Normal', {})
     29 
     30 hi('Conceal',      { fg = 'LightGrey', bg = 'DarkGrey', ctermfg = 'LightGrey', ctermbg = 'DarkGrey' })
     31 hi('Cursor',       {})
     32 hi('lCursor',      {})
     33 hi('DiffText',     { bg = 'Red', bold = true,           ctermbg = 'Red', cterm = { bold = true } })
     34 hi('ErrorMsg',     { fg = 'White', bg = 'Red',          ctermfg = 'White', ctermbg = 'DarkRed' })
     35 hi('IncSearch',    { reverse = true,                    cterm = { reverse = true } })
     36 hi('ModeMsg',      { bold = true,                       cterm = { bold = true } })
     37 hi('NonText',      { fg = 'Blue', bold = true,          ctermfg = 'Blue' })
     38 hi('PmenuSbar',    { bg = 'Grey',                       ctermbg = 'Grey' })
     39 hi('StatusLine',   { reverse = true, bold = true,       cterm = { reverse = true, bold = true }})
     40 hi('StatusLineNC', { reverse = true,                    cterm = { reverse = true } })
     41 hi('TabLineFill',  { reverse = true,                    cterm = { reverse = true } })
     42 hi('TabLineSel',   { bold = true,                       cterm = { bold = true } })
     43 hi('TermCursor',   { reverse = true,                    cterm = { reverse = true } })
     44 hi('WinBar',       { bold = true,                       cterm = { bold = true } })
     45 hi('WildMenu',     { fg = 'Black', bg = 'Yellow',       ctermfg = 'Black', ctermbg = 'Yellow' })
     46 
     47 hi('VertSplit',      { link = 'Normal' })
     48 hi('WinSeparator',   { link = 'VertSplit' })
     49 hi('WinBarNC',       { link = 'WinBar' })
     50 hi('DiffTextAdd',    { link = 'DiffText' })
     51 hi('EndOfBuffer',    { link = 'NonText' })
     52 hi('LineNrAbove',    { link = 'LineNr' })
     53 hi('LineNrBelow',    { link = 'LineNr' })
     54 hi('QuickFixLine',   { link = 'Search' })
     55 hi('CursorLineSign', { link = 'SignColumn' })
     56 hi('CursorLineFold', { link = 'FoldColumn' })
     57 hi('CurSearch',      { link = 'Search' })
     58 hi('PmenuKind',      { link = 'Pmenu' })
     59 hi('PmenuKindSel',   { link = 'PmenuSel' })
     60 hi('PmenuMatch',     { link = 'Pmenu' })
     61 hi('PmenuMatchSel',  { link = 'PmenuSel' })
     62 hi('PmenuExtra',     { link = 'Pmenu' })
     63 hi('PmenuExtraSel',  { link = 'PmenuSel' })
     64 hi('PreInsert',      { link = 'Added' })
     65 hi('ComplMatchIns',  {})
     66 hi('ComplHint',      { link = 'NonText' })
     67 hi('ComplHintMore',  { link = 'MoreMsg' })
     68 hi('Substitute',     { link = 'Search' })
     69 hi('Whitespace',     { link = 'NonText' })
     70 hi('MsgSeparator',   { link = 'StatusLine' })
     71 hi('NormalFloat',    { link = 'Pmenu' })
     72 hi('FloatBorder',    { link = 'WinSeparator' })
     73 hi('FloatTitle',     { link = 'Title' })
     74 hi('FloatFooter',    { link = 'Title' })
     75 
     76 hi('FloatShadow',          { bg = 'Black', blend = 80 })
     77 hi('FloatShadowThrough',   { bg = 'Black', blend = 100 })
     78 hi('RedrawDebugNormal',    { reverse = true,             cterm = { reverse = true } })
     79 hi('RedrawDebugClear',     { bg = 'Yellow',              ctermbg = 'Yellow' })
     80 hi('RedrawDebugComposed',  { bg = 'Green',               ctermbg = 'Green' })
     81 hi('RedrawDebugRecompose', { bg = 'Red',                 ctermbg = 'Red' })
     82 hi('Error',                { fg = 'White', bg = 'Red',   ctermfg = 'White', ctermbg = 'Red' })
     83 hi('Todo',                 { fg = 'Blue', bg = 'Yellow', ctermfg = 'Black', ctermbg = 'Yellow' })
     84 
     85 hi('String',         { link = 'Constant' })
     86 hi('Character',      { link = 'Constant' })
     87 hi('Number',         { link = 'Constant' })
     88 hi('Boolean',        { link = 'Constant' })
     89 hi('Float',          { link = 'Number' })
     90 hi('Function',       { link = 'Identifier' })
     91 hi('Conditional',    { link = 'Statement' })
     92 hi('Repeat',         { link = 'Statement' })
     93 hi('Label',          { link = 'Statement' })
     94 hi('Operator',       { link = 'Statement' })
     95 hi('Keyword',        { link = 'Statement' })
     96 hi('Exception',      { link = 'Statement' })
     97 hi('Include',        { link = 'PreProc' })
     98 hi('Define',         { link = 'PreProc' })
     99 hi('Macro',          { link = 'PreProc' })
    100 hi('PreCondit',      { link = 'PreProc' })
    101 hi('StorageClass',   { link = 'Type' })
    102 hi('Structure',      { link = 'Type' })
    103 hi('Typedef',        { link = 'Type' })
    104 hi('Tag',            { link = 'Special' })
    105 hi('SpecialChar',    { link = 'Special' })
    106 hi('Delimiter',      { link = 'Special' })
    107 hi('SpecialComment', { link = 'Special' })
    108 hi('Debug',          { link = 'Special' })
    109 
    110 hi('DiagnosticError',            { fg = 'Red',                          ctermfg = 1 })
    111 hi('DiagnosticWarn',             { fg = 'Orange',                       ctermfg = 3 })
    112 hi('DiagnosticInfo',             { fg = 'LightBlue',                    ctermfg = 4 })
    113 hi('DiagnosticHint',             { fg = 'LightGrey',                    ctermfg = 7 })
    114 hi('DiagnosticOk',               { fg = 'LightGreen',                   ctermfg = 10 })
    115 hi('DiagnosticUnderlineError',   { sp = 'Red', underline = true,        cterm = { underline = true } })
    116 hi('DiagnosticUnderlineWarn',    { sp = 'Orange', underline = true,     cterm = { underline = true } })
    117 hi('DiagnosticUnderlineInfo',    { sp = 'LightBlue', underline = true,  cterm = { underline = true } })
    118 hi('DiagnosticUnderlineHint',    { sp = 'LightGrey', underline = true,  cterm = { underline = true } })
    119 hi('DiagnosticUnderlineOk',      { sp = 'LightGreen', underline = true, cterm = { underline = true } })
    120 hi('DiagnosticVirtualTextError', { link = 'DiagnosticError' })
    121 hi('DiagnosticVirtualTextWarn',  { link = 'DiagnosticWarn' })
    122 hi('DiagnosticVirtualTextInfo',  { link = 'DiagnosticInfo' })
    123 hi('DiagnosticVirtualTextHint',  { link = 'DiagnosticHint' })
    124 hi('DiagnosticVirtualTextOk',    { link = 'DiagnosticOk' })
    125 hi('DiagnosticFloatingError',    { link = 'DiagnosticError' })
    126 hi('DiagnosticFloatingWarn',     { link = 'DiagnosticWarn' })
    127 hi('DiagnosticFloatingInfo',     { link = 'DiagnosticInfo' })
    128 hi('DiagnosticFloatingHint',     { link = 'DiagnosticHint' })
    129 hi('DiagnosticFloatingOk',       { link = 'DiagnosticOk' })
    130 hi('DiagnosticSignError',        { link = 'DiagnosticError' })
    131 hi('DiagnosticSignWarn',         { link = 'DiagnosticWarn' })
    132 hi('DiagnosticSignInfo',         { link = 'DiagnosticInfo' })
    133 hi('DiagnosticSignHint',         { link = 'DiagnosticHint' })
    134 hi('DiagnosticSignOk',           { link = 'DiagnosticOk' })
    135 hi('DiagnosticDeprecated',       { sp = 'Red', strikethrough = true,    cterm = { strikethrough = true } })
    136 
    137 hi('DiagnosticUnnecessary', { link = 'Comment' })
    138 hi('LspInlayHint',          { link = 'NonText' })
    139 hi('SnippetTabstop',        { link = 'Visual' })
    140 hi('SnippetTabstopActive',  { link = 'SnippetTabstop' })
    141 
    142 -- Text
    143 hi('@markup.raw',       { link = 'Comment' })
    144 hi('@markup.link',      { link = 'Identifier' })
    145 hi('@markup.heading',   { link = 'Title' })
    146 hi('@markup.link.url',  { link = 'Underlined' })
    147 hi('@markup.underline', { link = 'Underlined' })
    148 hi('@comment.todo',     { link = 'Todo' })
    149 
    150 -- Miscs
    151 hi('@comment',     { link = 'Comment' })
    152 hi('@punctuation', { link = 'Delimiter' })
    153 
    154 -- Constants
    155 hi('@constant',          { link = 'Constant' })
    156 hi('@constant.builtin',  { link = 'Special' })
    157 hi('@constant.macro',    { link = 'Define' })
    158 hi('@keyword.directive', { link = 'Define' })
    159 hi('@string',            { link = 'String' })
    160 hi('@string.escape',     { link = 'SpecialChar' })
    161 hi('@string.special',    { link = 'SpecialChar' })
    162 hi('@character',         { link = 'Character' })
    163 hi('@character.special', { link = 'SpecialChar' })
    164 hi('@number',            { link = 'Number' })
    165 hi('@boolean',           { link = 'Boolean' })
    166 hi('@number.float',      { link = 'Float' })
    167 
    168 -- Functions
    169 hi('@function',                   { link = 'Function' })
    170 hi('@function.builtin',           { link = 'Special' })
    171 hi('@function.macro',             { link = 'Macro' })
    172 hi('@function.method',            { link = 'Function' })
    173 hi('@variable.parameter',         { link = 'Identifier' })
    174 hi('@variable.parameter.builtin', { link = 'Special' })
    175 hi('@variable.member',            { link = 'Identifier' })
    176 hi('@property',                   { link = 'Identifier' })
    177 hi('@attribute',                  { link = 'Macro' })
    178 hi('@attribute.builtin',          { link = 'Special' })
    179 hi('@constructor',                { link = 'Special' })
    180 
    181 -- Keywords
    182 hi('@keyword.conditional', { link = 'Conditional' })
    183 hi('@keyword.repeat',      { link = 'Repeat' })
    184 hi('@keyword.type',        { link = 'Structure' })
    185 hi('@label',               { link = 'Label' })
    186 hi('@operator',            { link = 'Operator' })
    187 hi('@keyword',             { link = 'Keyword' })
    188 hi('@keyword.exception',   { link = 'Exception' })
    189 
    190 hi('@variable',          { link = 'Identifier' })
    191 hi('@type',              { link = 'Type' })
    192 hi('@type.definition',   { link = 'Typedef' })
    193 hi('@module',            { link = 'Identifier' })
    194 hi('@keyword.import',    { link = 'Include' })
    195 hi('@keyword.directive', { link = 'PreProc' })
    196 hi('@keyword.debug',     { link = 'Debug' })
    197 hi('@tag',               { link = 'Tag' })
    198 hi('@tag.builtin',       { link = 'Special' })
    199 
    200 -- LSP semantic tokens
    201 hi('@lsp.type.class',         { link = 'Structure' })
    202 hi('@lsp.type.comment',       { link = 'Comment' })
    203 hi('@lsp.type.decorator',     { link = 'Function' })
    204 hi('@lsp.type.enum',          { link = 'Structure' })
    205 hi('@lsp.type.enumMember',    { link = 'Constant' })
    206 hi('@lsp.type.function',      { link = 'Function' })
    207 hi('@lsp.type.interface',     { link = 'Structure' })
    208 hi('@lsp.type.macro',         { link = 'Macro' })
    209 hi('@lsp.type.method',        { link = 'Function' })
    210 hi('@lsp.type.namespace',     { link = 'Structure' })
    211 hi('@lsp.type.parameter',     { link = 'Identifier' })
    212 hi('@lsp.type.property',      { link = 'Identifier' })
    213 hi('@lsp.type.struct',        { link = 'Structure' })
    214 hi('@lsp.type.type',          { link = 'Type' })
    215 hi('@lsp.type.typeParameter', { link = 'TypeDef' })
    216 hi('@lsp.type.variable',      { link = 'Identifier' })
    217 
    218 if vim.o.background == 'light' then
    219  -- Default colors only used with a light background.
    220  hi('ColorColumn',      { bg = 'LightRed',                             ctermbg = 'LightRed' })
    221  hi('CursorColumn',     { bg = 'Grey90',                               ctermbg = 'LightGrey' })
    222  hi('CursorLine',       { bg = 'Grey90',                               cterm = { underline = true } })
    223  hi('CursorLineNr',     { fg = 'Brown', bold = true,                   ctermfg = 'Brown', cterm = { underline = true } })
    224  hi('DiffAdd',          { bg = 'LightBlue',                            ctermbg = 'LightBlue' })
    225  hi('DiffChange',       { bg = 'LightMagenta',                         ctermbg = 'LightMagenta' })
    226  hi('DiffDelete',       { fg = 'Blue', bg = 'LightCyan', bold = true,  ctermfg = 'Blue', ctermbg = 'LightCyan' })
    227  hi('Directory',        { fg = 'Blue',                                 ctermfg = 'DarkBlue' })
    228  hi('FoldColumn',       { fg = 'DarkBlue', bg = 'Grey',                ctermfg = 'DarkBlue', ctermbg = 'Grey' })
    229  hi('Folded',           { fg = 'DarkBlue', bg = 'LightGrey',           ctermfg = 'DarkBlue', ctermbg = 'Grey' })
    230  hi('LineNr',           { fg = 'Brown',                                ctermfg = 'Brown' })
    231  hi('MatchParen',       { bg = 'Cyan',                                 ctermbg = 'Cyan' })
    232  hi('MoreMsg',          { fg = 'SeaGreen', bold = true,                ctermfg = 'DarkGreen' })
    233  hi('Pmenu',            { bg = 'LightMagenta',                         ctermfg = 'Black', ctermbg = 'LightMagenta' })
    234  hi('PmenuSel',         { bg = 'Grey',                                 ctermfg = 'Black', ctermbg = 'LightGrey' })
    235  hi('PmenuThumb',       { bg = 'Black',                                ctermbg = 'Black' })
    236  hi('Question',         { fg = 'SeaGreen', bold = true,                ctermfg = 'DarkGreen' })
    237  hi('Search',           { bg = 'Yellow',                               ctermbg = 'Yellow' })
    238  hi('SignColumn',       { fg = 'DarkBlue', bg = 'Grey',                ctermfg = 'DarkBlue', ctermbg = 'Grey' })
    239  hi('SpecialKey',       { fg = 'Blue',                                 ctermfg = 'DarkBlue' })
    240  hi('SpellBad',         { sp = 'Red', undercurl = true,                ctermbg = 'LightRed' })
    241  hi('SpellCap',         { sp = 'Blue', undercurl = true,               ctermbg = 'LightBlue' })
    242  hi('SpellLocal',       { sp = 'DarkCyan', undercurl = true,           ctermbg = 'Cyan' })
    243  hi('SpellRare',        { sp = 'Magenta', undercurl = true,            ctermbg = 'LightMagenta' })
    244  hi('StatusLineTerm',   { fg = 'White', bg = 'DarkGreen', bold = true, ctermfg = 'White', ctermbg = 'DarkGreen', cterm = { bold = true } })
    245  hi('StatusLineTermNC', { fg = 'White', bg = 'DarkGreen',              ctermfg = 'White', ctermbg = 'DarkGreen' })
    246  hi('TabLine',          { bg = 'LightGrey', underline = true,          ctermfg = 'Black', ctermbg = 'LightGrey', cterm = { underline = true } })
    247  hi('Title',            { fg = 'Magenta', bold = true,                 ctermfg = 'DarkMagenta' })
    248  hi('Visual',           { fg = 'Black', bg = 'LightGrey',              ctermfg = 'Black', ctermbg = 'Grey' })
    249  hi('WarningMsg',       { fg = 'Red',                                  ctermfg = 'DarkRed' })
    250  hi('Comment',          { fg = 'Blue',                                 ctermfg = 'DarkBlue' })
    251  hi('Constant',         { fg = 'Magenta',                              ctermfg = 'DarkRed' })
    252  hi('Special',          { fg = '#6a5acd',                              ctermfg = 'DarkMagenta' })
    253  hi('Identifier',       { fg = 'DarkCyan',                             ctermfg = 'DarkCyan' })
    254  hi('Statement',        { fg = 'Brown', bold = true,                   ctermfg = 'Brown' })
    255  hi('PreProc',          { fg = '#6a0dad',                              ctermfg = 'DarkMagenta' })
    256  hi('Type',             { fg = 'SeaGreen', bold = true,                ctermfg = 'DarkGreen' })
    257  hi('Underlined',       { fg = 'SlateBlue', underline = true,          ctermfg = 'DarkMagenta', cterm = { underline = true } })
    258  hi('Ignore',           {                                              ctermfg = 'White' })
    259  hi('Added',            { fg = 'SeaGreen',                             ctermfg = 'DarkGreen' })
    260  hi('Changed',          { fg = 'DodgerBlue',                           ctermfg = 'Blue' })
    261  hi('Removed',          { fg = 'Red',                                  ctermfg = 'Red' })
    262 else
    263  -- Default colors only used with a dark background.
    264  hi('ColorColumn',      { bg = 'DarkRed',                               ctermbg = 'DarkRed' })
    265  hi('CursorColumn',     { bg = 'Grey40',                                ctermbg = 'DarkGrey' })
    266  hi('CursorLine',       { bg = 'Grey40',                                cterm = { underline = true } })
    267  hi('CursorLineNr',     { fg = 'Yellow', bold = true,                   ctermfg = 'Yellow', cterm = { underline = true } })
    268  hi('DiffAdd',          { bg = 'DarkBlue',                              ctermbg = 'DarkBlue' })
    269  hi('DiffChange',       { bg = 'DarkMagenta',                           ctermbg = 'DarkMagenta' })
    270  hi('DiffDelete',       { fg = 'Blue', bg = 'DarkCyan', bold = true,    ctermfg = 'Blue', ctermbg = 'DarkCyan' })
    271  hi('Directory',        { fg = 'Cyan',                                  ctermfg = 'LightCyan' })
    272  hi('FoldColumn',       { fg = 'Cyan', bg = 'Grey',                     ctermfg = 'Cyan', ctermbg = 'DarkGrey' })
    273  hi('Folded',           { fg = 'Cyan', bg = 'DarkGrey',                 ctermfg = 'Cyan', ctermbg = 'DarkGrey' })
    274  hi('LineNr',           { fg = 'Yellow',                                ctermfg = 'Yellow' })
    275  hi('MatchParen',       { bg = 'DarkCyan',                              ctermbg = 'DarkCyan' })
    276  hi('MoreMsg',          { fg = 'SeaGreen', bold = true,                 ctermfg = 'LightGreen' })
    277  hi('Pmenu',            { bg = 'Magenta',                               ctermfg = 'Black', ctermbg = 'Magenta' })
    278  hi('PmenuSel',         { bg = 'DarkGrey',                              ctermfg = 'DarkGrey', ctermbg = 'Black' })
    279  hi('PmenuThumb',       { bg = 'White',                                 ctermbg = 'White' })
    280  hi('Question',         { fg = 'Green', bold = true,                    ctermfg = 'LightGreen' })
    281  hi('Search',           { fg = 'Black', bg = 'Yellow',                  ctermfg = 'Black', ctermbg = 'Yellow' })
    282  hi('SignColumn',       { fg = 'Cyan', bg = 'Grey',                     ctermfg = 'Cyan', ctermbg = 'DarkGrey' })
    283  hi('SpecialKey',       { fg = 'Cyan',                                  ctermfg = 'LightBlue' })
    284  hi('SpellBad',         { sp = 'Red', undercurl = true,                 ctermbg = 'Red' })
    285  hi('SpellCap',         { sp = 'Blue', undercurl = true,                ctermbg = 'Blue' })
    286  hi('SpellLocal',       { sp = 'Cyan', undercurl = true,                ctermbg = 'Cyan' })
    287  hi('SpellRare',        { sp = 'Magenta', undercurl = true,             ctermbg = 'Magenta' })
    288  hi('StatusLineTerm',   { fg = 'Black', bg = 'LightGreen', bold = true, ctermfg = 'Black', ctermbg = 'LightGreen', cterm = { bold = true } })
    289  hi('StatusLineTermNC', { fg = 'Black', bg = 'LightGreen',              ctermfg = 'Black', ctermbg = 'LightGreen' })
    290  hi('TabLine',          { bg = 'DarkGrey', underline = true,            ctermfg = 'White', ctermbg = 'DarkGrey', cterm = { underline = true } })
    291  hi('Title',            { fg = 'Magenta', bold = true,                  ctermfg = 'LightMagenta' })
    292  hi('Visual',           { fg = 'LightGrey', bg = '#575757',             ctermfg = 'Black', ctermbg = 'Grey' })
    293  hi('WarningMsg',       { fg = 'Red',                                   ctermfg = 'LightRed' })
    294  hi('Comment',          { fg = '#80a0ff',                               ctermfg = 'Cyan' })
    295  hi('Constant',         { fg = '#ffa0a0',                               ctermfg = 'Magenta' })
    296  hi('Special',          { fg = 'Orange',                                ctermfg = 'LightRed' })
    297  hi('Identifier',       { fg = '#40ffff',                               ctermfg = 'Cyan', cterm = { bold = true } })
    298  hi('Statement',        { fg = '#ffff60', bold = true,                  ctermfg = 'Yellow' })
    299  hi('PreProc',          { fg = '#ff80ff',                               ctermfg = 'LightBlue' })
    300  hi('Type',             { fg = '#60ff60', bold = true,                  ctermfg = 'LightGreen' })
    301  hi('Underlined',       { fg = '#80a0ff', underline = true,             ctermfg = 'LightBlue', cterm = { underline = true } })
    302  hi('Ignore',           {                                               ctermfg = 'Black' })
    303  hi('Added',            { fg = 'LimeGreen',                             ctermfg = 'Green' })
    304  hi('Changed',          { fg = 'DodgerBlue',                            ctermfg = 'Blue' })
    305  hi('Removed',          { fg = 'Red',                                   ctermfg = 'Red' })
    306 end
    307 --stylua: ignore end