neovim

Personal neovim configuration files
git clone git://gtms.dev/neovim
Log | Files | Refs

base16.lua (23441B)


      1 -- start color
      2 -- base16-nvim (https://github.com/wincent/base16-nvim)
      3 -- by Greg Hurrell (https://github.com/wincent)
      4 -- based on
      5 -- base16-vim (https://github.com/chriskempson/base16-vim)
      6 -- by Chris Kempson (https://github.com/chriskempson)
      7 -- Gruvbox dark, hard scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
      8 local gui00 = '#1d2021'
      9 local gui01 = '#3c3836'
     10 local gui02 = '#504945'
     11 local gui03 = '#665c54'
     12 local gui04 = '#bdae93'
     13 local gui05 = '#d5c4a1'
     14 local gui06 = '#ebdbb2'
     15 local gui07 = '#fbf1c7'
     16 local gui08 = '#fb4934'
     17 local gui09 = '#fe8019'
     18 local gui0A = '#fabd2f'
     19 local gui0B = '#b8bb26'
     20 local gui0C = '#8ec07c'
     21 local gui0D = '#83a598'
     22 local gui0E = '#d3869b'
     23 local gui0F = '#d65d0e'
     24 
     25 local cterm00 = 0
     26 local cterm03 = 8
     27 local cterm05 = 7
     28 local cterm07 = 15
     29 local cterm08 = 1
     30 local cterm0A = 3
     31 local cterm0B = 2
     32 local cterm0C = 6
     33 local cterm0D = 4
     34 local cterm0E = 5
     35 local cterm01 = 10
     36 local cterm02 = 11
     37 local cterm04 = 12
     38 local cterm06 = 13
     39 local cterm09 = 9
     40 local cterm0F = 14
     41 
     42 vim.cmd [[
     43   highlight clear
     44   syntax reset
     45 ]]
     46 vim.g.colors_name = 'base16-gruvbox-dark-hard'
     47 
     48 -- Vim editor colors                    fg bg ctermfg ctermbg attr guisp
     49 vim.api.nvim_set_hl(0, 'Normal', { fg = gui05, bg = gui00, ctermfg = cterm05, ctermbg = cterm00 })
     50 vim.api.nvim_set_hl(0, 'Bold', { bold = true })
     51 vim.api.nvim_set_hl(0, 'Debug', { fg = gui08, ctermfg = cterm08 })
     52 vim.api.nvim_set_hl(0, 'Directory', { fg = gui0D, ctermfg = cterm0D })
     53 vim.api.nvim_set_hl(0, 'Error', { fg = gui00, bg = gui08, ctermfg = cterm00, ctermbg = cterm08 })
     54 vim.api.nvim_set_hl(0, 'ErrorMsg', { fg = gui08, bg = gui00, ctermfg = cterm08, ctermbg = cterm00 })
     55 vim.api.nvim_set_hl(0, 'Exception', { fg = gui08, ctermfg = cterm08 })
     56 vim.api.nvim_set_hl(0, 'FoldColumn', { fg = gui0C, bg = gui01, ctermfg = cterm0C, ctermbg = cterm01 })
     57 vim.api.nvim_set_hl(0, 'Folded', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
     58 vim.api.nvim_set_hl(0, 'IncSearch', { fg = gui01, bg = gui09, ctermfg = cterm01, ctermbg = cterm09 })
     59 vim.api.nvim_set_hl(0, 'Italic', {})
     60 vim.api.nvim_set_hl(0, 'Macro', { fg = gui08, ctermfg = cterm08 })
     61 vim.api.nvim_set_hl(0, 'MatchParen', { bg = gui03, ctermbg = cterm03 })
     62 vim.api.nvim_set_hl(0, 'ModeMsg', { fg = gui0B, ctermfg = cterm0B })
     63 vim.api.nvim_set_hl(0, 'MoreMsg', { fg = gui0B, ctermfg = cterm0B })
     64 vim.api.nvim_set_hl(0, 'Question', { fg = gui0D, ctermfg = cterm0D })
     65 vim.api.nvim_set_hl(0, 'Search', { fg = gui01, bg = gui0A, ctermfg = cterm01, ctermbg = cterm0A })
     66 vim.api.nvim_set_hl(0, 'Substitute', { fg = gui01, bg = gui0A, ctermfg = cterm01, ctermbg = cterm0A })
     67 vim.api.nvim_set_hl(0, 'SpecialKey', { fg = gui03, ctermfg = cterm03 })
     68 vim.api.nvim_set_hl(0, 'TooLong', { fg = gui08, ctermfg = cterm08 })
     69 vim.api.nvim_set_hl(0, 'Underlined', { fg = gui08, ctermfg = cterm08 })
     70 vim.api.nvim_set_hl(0, 'Visual', { bg = gui02, ctermbg = cterm02 })
     71 vim.api.nvim_set_hl(0, 'VisualNOS', { fg = gui08, ctermfg = cterm08 })
     72 vim.api.nvim_set_hl(0, 'WarningMsg', { fg = gui08, ctermfg = cterm08 })
     73 vim.api.nvim_set_hl(0, 'WildMenu', { fg = gui08, bg = gui0A, ctermfg = cterm08 })
     74 vim.api.nvim_set_hl(0, 'Title', { fg = gui0D, ctermfg = cterm0D })
     75 vim.api.nvim_set_hl(0, 'Conceal', { fg = gui0D, bg = gui00, ctermfg = cterm0D, ctermbg = cterm00 })
     76 vim.api.nvim_set_hl(0, 'Cursor', { fg = gui00, bg = gui05, ctermfg = cterm00, ctermbg = cterm05 })
     77 vim.api.nvim_set_hl(0, 'NonText', { fg = gui03, ctermfg = cterm03 })
     78 vim.api.nvim_set_hl(0, 'LineNr', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
     79 vim.api.nvim_set_hl(0, 'SignColumn', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
     80 vim.api.nvim_set_hl(0, 'StatusLine', { fg = gui04, bg = gui02, ctermfg = cterm04, ctermbg = cterm02 })
     81 vim.api.nvim_set_hl(0, 'StatusLineNC', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
     82 vim.api.nvim_set_hl(0, 'VertSplit', { fg = gui02, bg = gui02, ctermfg = cterm02, ctermbg = cterm02 })
     83 vim.api.nvim_set_hl(0, 'ColorColumn', { bg = gui01, ctermbg = cterm01 })
     84 vim.api.nvim_set_hl(0, 'CursorColumn', { bg = gui01, ctermbg = cterm01 })
     85 vim.api.nvim_set_hl(0, 'CursorLine', { bg = gui01, ctermbg = cterm01 })
     86 vim.api.nvim_set_hl(0, 'CursorLineNr', { fg = gui04, bg = gui01, ctermfg = cterm04, ctermbg = cterm01 })
     87 vim.api.nvim_set_hl(0, 'QuickFixLine', { bg = gui01, ctermbg = cterm01 })
     88 vim.api.nvim_set_hl(0, 'PMenu', { fg = gui05, bg = gui01, ctermfg = cterm05, ctermbg = cterm01 })
     89 vim.api.nvim_set_hl(0, 'PMenuSel', { fg = gui01, bg = gui05, ctermfg = cterm01, ctermbg = cterm05 })
     90 vim.api.nvim_set_hl(0, 'TabLine', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
     91 vim.api.nvim_set_hl(0, 'TabLineFill', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
     92 vim.api.nvim_set_hl(0, 'TabLineSel', { fg = gui0B, bg = gui01, ctermfg = cterm0B, ctermbg = cterm01 })
     93 
     94 -- Standard syntax highlighting
     95 vim.api.nvim_set_hl(0, 'Boolean', { fg = gui09, ctermfg = cterm09 })
     96 vim.api.nvim_set_hl(0, 'Character', { fg = gui08, ctermfg = cterm08 })
     97 vim.api.nvim_set_hl(0, 'Comment', { fg = gui03, ctermfg = cterm03 })
     98 vim.api.nvim_set_hl(0, 'Conditional', { fg = gui0E, ctermfg = cterm0E })
     99 vim.api.nvim_set_hl(0, 'Constant', { fg = gui09, ctermfg = cterm09 })
    100 vim.api.nvim_set_hl(0, 'Define', { fg = gui0E, ctermfg = cterm0E })
    101 vim.api.nvim_set_hl(0, 'Delimiter', { fg = gui0F, ctermfg = cterm0F })
    102 vim.api.nvim_set_hl(0, 'Float', { fg = gui09, ctermfg = cterm09 })
    103 vim.api.nvim_set_hl(0, 'Function', { fg = gui0D, ctermfg = cterm0D })
    104 vim.api.nvim_set_hl(0, 'Identifier', { fg = gui05, ctermfg = cterm05 })
    105 vim.api.nvim_set_hl(0, 'Include', { fg = gui0D, ctermfg = cterm0D })
    106 vim.api.nvim_set_hl(0, 'Keyword', { fg = gui0E, ctermfg = cterm0E })
    107 vim.api.nvim_set_hl(0, 'Label', { fg = gui0A, ctermfg = cterm0A })
    108 vim.api.nvim_set_hl(0, 'Number', { fg = gui09, ctermfg = cterm09 })
    109 vim.api.nvim_set_hl(0, 'Operator', { fg = gui05, ctermfg = cterm05 })
    110 vim.api.nvim_set_hl(0, 'PreProc', { fg = gui0A, ctermfg = cterm0A })
    111 vim.api.nvim_set_hl(0, 'Repeat', { fg = gui0A, ctermfg = cterm0A })
    112 vim.api.nvim_set_hl(0, 'Special', { fg = gui0C, ctermfg = cterm0C })
    113 vim.api.nvim_set_hl(0, 'SpecialChar', { fg = gui0F, ctermfg = cterm0F })
    114 vim.api.nvim_set_hl(0, 'Statement', { fg = gui0E, ctermfg = cterm0E })
    115 vim.api.nvim_set_hl(0, 'StorageClass', { fg = gui0A, ctermfg = cterm0A })
    116 vim.api.nvim_set_hl(0, 'String', { fg = gui0B, ctermfg = cterm0B })
    117 vim.api.nvim_set_hl(0, 'Structure', { fg = gui0E, ctermfg = cterm0E })
    118 vim.api.nvim_set_hl(0, 'Tag', { fg = gui0A, ctermfg = cterm0A })
    119 vim.api.nvim_set_hl(0, 'Todo', { fg = gui0A, bg = gui01, ctermfg = cterm0A, ctermbg = cterm01 })
    120 vim.api.nvim_set_hl(0, 'Type', { fg = gui0A, ctermfg = cterm0A })
    121 vim.api.nvim_set_hl(0, 'Typedef', { fg = gui0A, ctermfg = cterm0A })
    122 
    123 -- C highlighting
    124 vim.api.nvim_set_hl(0, 'cOperator', { fg = gui0C, ctermfg = cterm0C })
    125 vim.api.nvim_set_hl(0, 'cPreCondit', { fg = gui0E, ctermfg = cterm0E })
    126 
    127 -- C# highlighting
    128 vim.api.nvim_set_hl(0, 'csClass', { fg = gui0A, ctermfg = cterm0A })
    129 vim.api.nvim_set_hl(0, 'csAttribute', { fg = gui0A, ctermfg = cterm0A })
    130 vim.api.nvim_set_hl(0, 'csModifier', { fg = gui0E, ctermfg = cterm0E })
    131 vim.api.nvim_set_hl(0, 'csType', { fg = gui08, ctermfg = cterm08 })
    132 vim.api.nvim_set_hl(0, 'csUnspecifiedStatement', { fg = gui0D, ctermfg = cterm0D })
    133 vim.api.nvim_set_hl(0, 'csContextualStatement', { fg = gui0E, ctermfg = cterm0E })
    134 vim.api.nvim_set_hl(0, 'csNewDecleration', { fg = gui08, ctermfg = cterm08 })
    135 
    136 -- CSS highlighting
    137 vim.api.nvim_set_hl(0, 'cssBraces', { fg = gui05, ctermfg = cterm05 })
    138 vim.api.nvim_set_hl(0, 'cssClassName', { fg = gui0E, ctermfg = cterm0E })
    139 vim.api.nvim_set_hl(0, 'cssColor', { fg = gui0C, ctermfg = cterm0C })
    140 
    141 -- Diff highlighting
    142 vim.api.nvim_set_hl(0, 'DiffAdd', { fg = gui0B, bg = gui01, ctermfg = cterm0B, ctermbg = cterm01 })
    143 vim.api.nvim_set_hl(0, 'DiffChange', { fg = gui03, bg = gui01, ctermfg = cterm03, ctermbg = cterm01 })
    144 vim.api.nvim_set_hl(0, 'DiffDelete', { fg = gui08, bg = gui01, ctermfg = cterm08, ctermbg = cterm01 })
    145 vim.api.nvim_set_hl(0, 'DiffText', { fg = gui0D, bg = gui01, ctermfg = cterm0D, ctermbg = cterm01 })
    146 vim.api.nvim_set_hl(0, 'DiffAdded', { fg = gui0B, bg = gui00, ctermfg = cterm0B, ctermbg = cterm00 })
    147 vim.api.nvim_set_hl(0, 'DiffFile', { fg = gui08, bg = gui00, ctermfg = cterm08, ctermbg = cterm00 })
    148 vim.api.nvim_set_hl(0, 'DiffNewFile', { fg = gui0B, bg = gui00, ctermfg = cterm0B, ctermbg = cterm00 })
    149 vim.api.nvim_set_hl(0, 'DiffLine', { fg = gui0D, bg = gui00, ctermfg = cterm0D, ctermbg = cterm00 })
    150 vim.api.nvim_set_hl(0, 'DiffRemoved', { fg = gui08, bg = gui00, ctermfg = cterm08, ctermbg = cterm00 })
    151 
    152 -- Git highlighting
    153 vim.api.nvim_set_hl(0, 'gitcommitOverflow', { fg = gui08, ctermfg = cterm08 })
    154 vim.api.nvim_set_hl(0, 'gitcommitSummary', { fg = gui0B, ctermfg = cterm0B })
    155 vim.api.nvim_set_hl(0, 'gitcommitComment', { fg = gui03, ctermfg = cterm03 })
    156 vim.api.nvim_set_hl(0, 'gitcommitUntracked', { fg = gui03, ctermfg = cterm03 })
    157 vim.api.nvim_set_hl(0, 'gitcommitDiscarded', { fg = gui03, ctermfg = cterm03 })
    158 vim.api.nvim_set_hl(0, 'gitcommitSelected', { fg = gui03, ctermfg = cterm03 })
    159 vim.api.nvim_set_hl(0, 'gitcommitHeader', { fg = gui0E, ctermfg = cterm0E })
    160 vim.api.nvim_set_hl(0, 'gitcommitSelectedType', { fg = gui0D, ctermfg = cterm0D })
    161 vim.api.nvim_set_hl(0, 'gitcommitUnmergedType', { fg = gui0D, ctermfg = cterm0D })
    162 vim.api.nvim_set_hl(0, 'gitcommitDiscardedType', { fg = gui0D, ctermfg = cterm0D })
    163 vim.api.nvim_set_hl(0, 'gitcommitBranch', { fg = gui09, ctermfg = cterm09, bold = true })
    164 vim.api.nvim_set_hl(0, 'gitcommitUntrackedFile', { fg = gui0A, ctermfg = cterm0A })
    165 vim.api.nvim_set_hl(0, 'gitcommitUnmergedFile', { fg = gui08, ctermfg = cterm08, bold = true })
    166 vim.api.nvim_set_hl(0, 'gitcommitDiscardedFile', { fg = gui08, ctermfg = cterm08, bold = true })
    167 vim.api.nvim_set_hl(0, 'gitcommitSelectedFile', { fg = gui0B, ctermfg = cterm0B, bold = true })
    168 
    169 -- GitGutter highlighting
    170 vim.api.nvim_set_hl(0, 'GitGutterAdd', { fg = gui0B, bg = gui01, ctermfg = cterm0B, ctermbg = cterm01 })
    171 vim.api.nvim_set_hl(0, 'GitGutterChange', { fg = gui0D, bg = gui01, ctermfg = cterm0D, ctermbg = cterm01 })
    172 vim.api.nvim_set_hl(0, 'GitGutterDelete', { fg = gui08, bg = gui01, ctermfg = cterm08, ctermbg = cterm01 })
    173 vim.api.nvim_set_hl(0, 'GitGutterChangeDelete', { fg = gui0E, bg = gui01, ctermfg = cterm0E, ctermbg = cterm01 })
    174 
    175 -- HTML highlighting
    176 vim.api.nvim_set_hl(0, 'htmlBold', { fg = gui0A, ctermfg = cterm0A })
    177 vim.api.nvim_set_hl(0, 'htmlItalic', { fg = gui0E, ctermfg = cterm0E })
    178 vim.api.nvim_set_hl(0, 'htmlEndTag', { fg = gui05, ctermfg = cterm05 })
    179 vim.api.nvim_set_hl(0, 'htmlTag', { fg = gui05, ctermfg = cterm05 })
    180 
    181 -- JavaScript highlighting
    182 vim.api.nvim_set_hl(0, 'javaScript', { fg = gui05, ctermfg = cterm05 })
    183 vim.api.nvim_set_hl(0, 'javaScriptBraces', { fg = gui05, ctermfg = cterm05 })
    184 vim.api.nvim_set_hl(0, 'javaScriptNumber', { fg = gui09, ctermfg = cterm09 })
    185 
    186 -- pangloss/vim-javascript highlighting
    187 vim.api.nvim_set_hl(0, 'jsOperator', { fg = gui0D, ctermfg = cterm0D })
    188 vim.api.nvim_set_hl(0, 'jsStatement', { fg = gui0E, ctermfg = cterm0E })
    189 vim.api.nvim_set_hl(0, 'jsReturn', { fg = gui0E, ctermfg = cterm0E })
    190 vim.api.nvim_set_hl(0, 'jsThis', { fg = gui08, ctermfg = cterm08 })
    191 vim.api.nvim_set_hl(0, 'jsClassDefinition', { fg = gui0A, ctermfg = cterm0A })
    192 vim.api.nvim_set_hl(0, 'jsFunction', { fg = gui0E, ctermfg = cterm0E })
    193 vim.api.nvim_set_hl(0, 'jsFuncName', { fg = gui0D, ctermfg = cterm0D })
    194 vim.api.nvim_set_hl(0, 'jsFuncCall', { fg = gui0D, ctermfg = cterm0D })
    195 vim.api.nvim_set_hl(0, 'jsClassFuncName', { fg = gui0D, ctermfg = cterm0D })
    196 vim.api.nvim_set_hl(0, 'jsClassMethodType', { fg = gui0E, ctermfg = cterm0E })
    197 vim.api.nvim_set_hl(0, 'jsRegexpString', { fg = gui0C, ctermfg = cterm0C })
    198 vim.api.nvim_set_hl(0, 'jsGlobalObjects', { fg = gui0A, ctermfg = cterm0A })
    199 vim.api.nvim_set_hl(0, 'jsGlobalNodeObjects', { fg = gui0A, ctermfg = cterm0A })
    200 vim.api.nvim_set_hl(0, 'jsExceptions', { fg = gui0A, ctermfg = cterm0A })
    201 vim.api.nvim_set_hl(0, 'jsBuiltins', { fg = gui0A, ctermfg = cterm0A })
    202 
    203 -- LSP highlighting
    204 vim.api.nvim_set_hl(0, 'LspDiagnosticsDefaultError', { fg = gui08, ctermfg = cterm08 })
    205 vim.api.nvim_set_hl(0, 'LspDiagnosticsDefaultWarning', { fg = gui09, ctermfg = cterm09 })
    206 vim.api.nvim_set_hl(0, 'LspDiagnosticsDefaultHnformation', { fg = gui05, ctermfg = cterm05 })
    207 vim.api.nvim_set_hl(0, 'LspDiagnosticsDefaultHint', { fg = gui03, ctermfg = cterm03 })
    208 
    209 -- Mail highlighting
    210 vim.api.nvim_set_hl(0, 'mailQuoted1', { fg = gui0A, ctermfg = cterm0A })
    211 vim.api.nvim_set_hl(0, 'mailQuoted2', { fg = gui0B, ctermfg = cterm0B })
    212 vim.api.nvim_set_hl(0, 'mailQuoted3', { fg = gui0E, ctermfg = cterm0E })
    213 vim.api.nvim_set_hl(0, 'mailQuoted4', { fg = gui0C, ctermfg = cterm0C })
    214 vim.api.nvim_set_hl(0, 'mailQuoted5', { fg = gui0D, ctermfg = cterm0D })
    215 vim.api.nvim_set_hl(0, 'mailQuoted6', { fg = gui0A, ctermfg = cterm0A })
    216 vim.api.nvim_set_hl(0, 'mailURL', { fg = gui0D, ctermfg = cterm0D })
    217 vim.api.nvim_set_hl(0, 'mailEmail', { fg = gui0D, ctermfg = cterm0D })
    218 
    219 -- Markdown highlighting
    220 vim.api.nvim_set_hl(0, 'markdownCode', { fg = gui0B, ctermfg = cterm0B })
    221 vim.api.nvim_set_hl(0, 'markdownError', { fg = gui05, bg = gui00, ctermfg = cterm05, ctermbg = cterm00 })
    222 vim.api.nvim_set_hl(0, 'markdownCodeBlock', { fg = gui0B, ctermfg = cterm0B })
    223 vim.api.nvim_set_hl(0, 'markdownHeadingDelimiter', { fg = gui0D, ctermfg = cterm0D })
    224 
    225 -- NERDTree highlighting
    226 vim.api.nvim_set_hl(0, 'NERDTreeDirSlash', { fg = gui0D, ctermfg = cterm0D })
    227 vim.api.nvim_set_hl(0, 'NERDTreeExecFile', { fg = gui05, ctermfg = cterm05 })
    228 
    229 -- PHP highlighting
    230 vim.api.nvim_set_hl(0, 'phpMemberSelector', { fg = gui05, ctermfg = cterm05 })
    231 vim.api.nvim_set_hl(0, 'phpComparison', { fg = gui05, ctermfg = cterm05 })
    232 vim.api.nvim_set_hl(0, 'phpParent', { fg = gui05, ctermfg = cterm05 })
    233 vim.api.nvim_set_hl(0, 'phpMethodsVar', { fg = gui0C, ctermfg = cterm0C })
    234 
    235 -- Python highlighting
    236 vim.api.nvim_set_hl(0, 'pythonOperator', { fg = gui0E, ctermfg = cterm0E })
    237 vim.api.nvim_set_hl(0, 'pythonRepeat', { fg = gui0E, ctermfg = cterm0E })
    238 vim.api.nvim_set_hl(0, 'pythonInclude', { fg = gui0E, ctermfg = cterm0E })
    239 vim.api.nvim_set_hl(0, 'pythonStatement', { fg = gui0E, ctermfg = cterm0E })
    240 
    241 -- Ruby highlighting
    242 vim.api.nvim_set_hl(0, 'rubyAttribute', { fg = gui0D, ctermfg = cterm0D })
    243 vim.api.nvim_set_hl(0, 'rubyConstant', { fg = gui0A, ctermfg = cterm0A })
    244 vim.api.nvim_set_hl(0, 'rubyInterpolationDelimiter', { fg = gui0F, ctermfg = cterm0F })
    245 vim.api.nvim_set_hl(0, 'rubyRegexp', { fg = gui0C, ctermfg = cterm0C })
    246 vim.api.nvim_set_hl(0, 'rubySymbol', { fg = gui0B, ctermfg = cterm0B })
    247 vim.api.nvim_set_hl(0, 'rubyStringDelimiter', { fg = gui0B, ctermfg = cterm0B })
    248 
    249 -- SASS highlighting
    250 vim.api.nvim_set_hl(0, 'sassidChar', { fg = gui08, ctermfg = cterm08 })
    251 vim.api.nvim_set_hl(0, 'sassClassChar', { fg = gui09, ctermfg = cterm09 })
    252 vim.api.nvim_set_hl(0, 'sassInclude', { fg = gui0E, ctermfg = cterm0E })
    253 vim.api.nvim_set_hl(0, 'sassMixing', { fg = gui0E, ctermfg = cterm0E })
    254 vim.api.nvim_set_hl(0, 'sassMixinName', { fg = gui0D, ctermfg = cterm0D })
    255 
    256 -- Signify highlighting
    257 vim.api.nvim_set_hl(0, 'SignifySignAdd', { fg = gui0B, bg = gui01, ctermfg = cterm0B, ctermbg = cterm01 })
    258 vim.api.nvim_set_hl(0, 'SignifySignChange', { fg = gui0D, bg = gui01, ctermfg = cterm0D, ctermbg = cterm01 })
    259 vim.api.nvim_set_hl(0, 'SignifySignDelete', { fg = gui08, bg = gui01, ctermfg = cterm08, ctermbg = cterm01 })
    260 
    261 -- Spelling highlighting
    262 vim.api.nvim_set_hl(0, 'SpellBad', { undercurl = true })
    263 vim.api.nvim_set_hl(0, 'SpellLocal', { undercurl = true })
    264 vim.api.nvim_set_hl(0, 'SpellCap', { undercurl = true })
    265 vim.api.nvim_set_hl(0, 'SpellRare', { undercurl = true })
    266 
    267 -- Startify highlighting
    268 vim.api.nvim_set_hl(0, 'StartifyBracket', { fg = gui03, ctermfg = cterm03 })
    269 vim.api.nvim_set_hl(0, 'StartifyFile', { fg = gui07, ctermfg = cterm07 })
    270 vim.api.nvim_set_hl(0, 'StartifyFooter', { fg = gui03, ctermfg = cterm03 })
    271 vim.api.nvim_set_hl(0, 'StartifyHeader', { fg = gui0B, ctermfg = cterm0B })
    272 vim.api.nvim_set_hl(0, 'StartifyNumber', { fg = gui09, ctermfg = cterm09 })
    273 vim.api.nvim_set_hl(0, 'StartifyPath', { fg = gui03, ctermfg = cterm03 })
    274 vim.api.nvim_set_hl(0, 'StartifySection', { fg = gui0E, ctermfg = cterm0E })
    275 vim.api.nvim_set_hl(0, 'StartifySelect', { fg = gui0C, ctermfg = cterm0C })
    276 vim.api.nvim_set_hl(0, 'StartifySlash', { fg = gui03, ctermfg = cterm03 })
    277 vim.api.nvim_set_hl(0, 'StartifySpecial', { fg = gui03, ctermfg = cterm03 })
    278 
    279 -- Java highlighting
    280 vim.api.nvim_set_hl(0, 'javaOperator', { fg = gui0D, ctermfg = cterm0D })
    281 
    282 -- vim: filetype=lua
    283 -- end color
    284 --
    285 
    286 vim.api.nvim_set_hl(0, 'LineNr', { fg = gui03, bg = gui00 })
    287 vim.api.nvim_set_hl(0, 'SignColumn', { fg = gui03, bg = gui00 })
    288 vim.api.nvim_set_hl(0, 'StatusLine', { fg = gui04, bg = gui01 })
    289 vim.api.nvim_set_hl(0, 'TreesitterContext', { bg = gui01 })
    290 vim.api.nvim_set_hl(0, 'NormalFloat', {})
    291 vim.api.nvim_set_hl(0, 'WinSeparator', {})
    292 vim.api.nvim_set_hl(0, 'FloatBorder', {})
    293 vim.api.nvim_set_hl(0, 'StatusLine', { fg = 'background', bg = 'background' })
    294 vim.api.nvim_set_hl(0, 'Identifier', { fg = gui05, ctermfg = cterm05 })
    295 
    296 vim.api.nvim_set_hl(0, 'Beacon', { bg = 'fg' })
    297 vim.api.nvim_set_hl(0, 'LspInlayHint', { fg = gui03 })
    298 
    299 -- cmp
    300 vim.api.nvim_set_hl(0, 'CmpItemKindFunction', { fg = gui0E })
    301 vim.api.nvim_set_hl(0, 'CmpItemKindMethod', { link = 'CmpItemKindFunction' })
    302 vim.api.nvim_set_hl(0, 'CmpItemKindClass', { fg = gui0A })
    303 vim.api.nvim_set_hl(0, 'CmpItemKindConstructor', { fg = gui0D })
    304 
    305 -- leap
    306 vim.api.nvim_set_hl(0, 'LeapBackdrop', { link = 'Comment' })
    307 vim.api.nvim_set_hl(0, 'LeapMatch', { fg = '#00ff00' })
    308 vim.api.nvim_set_hl(0, 'LeapLabelPrimary', { fg = '#ffff00' })
    309 vim.api.nvim_set_hl(require('tms.p.leap').ast_ns, 'LeapLabelPrimary', { link = 'LeapMatch' })
    310 vim.api.nvim_set_hl(0, 'LeapLabelSecondary', { fg = '#ff0000' })
    311 
    312 -- Diff highlighting
    313 vim.api.nvim_set_hl(0, 'DiffAdd', { fg = gui0B, bg = gui00 })
    314 vim.api.nvim_set_hl(0, 'DiffChange', { fg = gui03, bg = gui00 })
    315 vim.api.nvim_set_hl(0, 'DiffDelete', { fg = gui08, bg = gui00 })
    316 vim.api.nvim_set_hl(0, 'DiffText', { fg = gui0D, bg = gui00 })
    317 vim.api.nvim_set_hl(0, 'DiffAdded', { fg = gui0B, bg = gui00 })
    318 vim.api.nvim_set_hl(0, 'DiffFile', { fg = gui08, bg = gui00 })
    319 vim.api.nvim_set_hl(0, 'DiffNewFile', { fg = gui0B, bg = gui00 })
    320 vim.api.nvim_set_hl(0, 'DiffLine', { fg = gui0D, bg = gui00 })
    321 vim.api.nvim_set_hl(0, 'DiffRemoved', { fg = gui08, bg = gui00 })
    322 
    323 -- GitGutter highlighting
    324 vim.api.nvim_set_hl(0, 'GitGutterAdd', { fg = gui0B, bg = gui00 })
    325 vim.api.nvim_set_hl(0, 'GitGutterChange', { fg = gui0D, bg = gui00 })
    326 vim.api.nvim_set_hl(0, 'GitGutterDelete', { fg = gui08, bg = gui00 })
    327 vim.api.nvim_set_hl(0, 'GitGutterChangeDelete', { fg = gui0E, bg = gui00 })
    328 
    329 vim.api.nvim_set_hl(0, 'CodeiumSuggestion', { link = 'Comment' })
    330 
    331 -- Hide all semantic highlights
    332 -- for _, group in ipairs(vim.fn.getcompletion('@lsp', 'highlight')) do
    333 --   vim.api.nvim_set_hl(0, group, {})
    334 -- end
    335 
    336 vim.api.nvim_set_hl(0, 'LspReferenceText', { underline = true })
    337 vim.api.nvim_set_hl(0, 'LspReferenceRead', { undercurl = true })
    338 
    339 -- relink @lsp to @treesitter
    340 local links = {
    341   ['@lsp.type.namespace'] = '@namespace',
    342   ['@lsp.type.type'] = '@type',
    343   ['@lsp.type.class'] = '@type',
    344   ['@lsp.type.enum'] = '@type',
    345   ['@lsp.type.interface'] = '@type',
    346   ['@lsp.type.struct'] = '@structure',
    347   ['@lsp.type.typeParameter'] = 'TypeDef',
    348   ['@lsp.type.parameter'] = '@parameter',
    349   ['@lsp.type.variable'] = '@variable',
    350   ['@lsp.type.property'] = '@property',
    351   ['@lsp.type.enumMember'] = '@constant',
    352   ['@lsp.type.function'] = '@function',
    353   ['@lsp.type.method'] = '@method',
    354   ['@lsp.type.macro'] = '@macro',
    355   ['@lsp.type.decorator'] = '@function',
    356   ['@lsp.type.keyword'] = '@keyword',
    357 }
    358 for newgroup, oldgroup in pairs(links) do
    359   vim.api.nvim_set_hl(0, newgroup, { link = oldgroup, default = true })
    360 end
    361 
    362 vim.api.nvim_set_hl(0, '@lsp.mod.annotation', { italic = true })
    363 vim.api.nvim_set_hl(0, '@lsp.type.type', { bold = true })
    364 -- vim.api.nvim_set_hl(0, '@variable.builtin', { link = 'Keyword' })
    365 
    366 for tsgroup, opts in pairs({
    367   ['@annotation'] = { italic = true, default = true },
    368   ['@comment'] = { link = 'Comment' },
    369   ['@none'] = { bg = 'NONE', fg = 'NONE' },
    370   ['@preproc'] = { link = 'PreProc' },
    371   ['@define'] = { link = 'Define' },
    372   ['@operator'] = { link = 'Operator' },
    373   ['@punctuation.delimiter'] = { link = 'Delimiter' },
    374   ['@punctuation.bracket'] = { link = 'Delimiter' },
    375   ['@punctuation.special'] = { link = 'Delimiter' },
    376   ['@string'] = { link = 'String' },
    377   ['@string.regex'] = { link = 'String' },
    378   ['@string.escape'] = { link = 'SpecialChar' },
    379   ['@string.special'] = { link = 'SpecialChar' },
    380   ['@character'] = { link = 'Character' },
    381   ['@character.special'] = { link = 'SpecialChar' },
    382   ['@boolean'] = { link = 'Boolean' },
    383   ['@number'] = { link = 'Number' },
    384   ['@float'] = { link = 'Float' },
    385   ['@function'] = { link = 'Function' },
    386   ['@function.call'] = { link = 'Function' },
    387   ['@function.builtin'] = { link = 'Special' },
    388   ['@function.macro'] = { link = 'Macro' },
    389   ['@method'] = { link = 'Function' },
    390   ['@method.call'] = { link = 'Function' },
    391   ['@constructor'] = { link = 'Special' },
    392   ['@parameter'] = { link = 'Identifier' },
    393   ['@keyword'] = { link = 'Keyword' },
    394   ['@keyword.function'] = { link = 'Keyword' },
    395   ['@keyword.return'] = { link = 'Keyword' },
    396   ['@conditional'] = { link = 'Conditional' },
    397   ['@repeat'] = { link = 'Repeat' },
    398   ['@debug'] = { link = 'Debug' },
    399   ['@label'] = { link = 'Label' },
    400   ['@include'] = { link = 'Include' },
    401   ['@exception'] = { link = 'Exception' },
    402   ['@type'] = { link = 'Type' },
    403   ['@type.builtin'] = { link = 'Type' },
    404   ['@type.qualifier'] = { link = 'Type' },
    405   ['@type.definition'] = { link = 'Typedef' },
    406   ['@storageclass'] = { link = 'StorageClass' },
    407   ['@attribute'] = { link = 'PreProc' },
    408   ['@field'] = { link = 'Identifier' },
    409   ['@property'] = { link = 'Identifier' },
    410   ['@variable.builtin'] = { link = 'Special' },
    411   ['@constant'] = { link = 'Constant' },
    412   ['@constant.builtin'] = { link = 'Special' },
    413   ['@constant.macro'] = { link = 'Define' },
    414   ['@symbol'] = { link = 'Identifier' },
    415   ['@text.title'] = { link = 'Title' },
    416   ['@text.literal'] = { link = 'String' },
    417   ['@text.uri'] = { link = 'Underlined' },
    418   ['@text.math'] = { link = 'Special' },
    419   ['@text.environment'] = { link = 'Macro' },
    420   ['@text.environment.name'] = { link = 'Type' },
    421   ['@text.reference'] = { link = 'Constant' },
    422   ['@text.todo'] = { link = 'Todo' },
    423   ['@text.todo.unchecked'] = { link = 'Todo' },
    424   ['@text.todo.checked'] = { link = 'Done' },
    425   ['@text.note'] = { link = 'SpecialComment' },
    426   ['@text.warning'] = { link = 'WarningMsg' },
    427   ['@text.danger'] = { link = 'ErrorMsg' },
    428   ['@text.diff.add'] = { link = 'diffAdded' },
    429   ['@text.diff.delete'] = { link = 'diffRemoved' },
    430   ['@tag'] = { link = 'Tag' },
    431   ['@tag.attribute'] = { link = 'Identifier' },
    432   ['@tag.delimiter'] = { link = 'Delimiter' },
    433 
    434   -- nvim-treesitter (0.8 overrides)
    435   -- ['@text.strong'] = { bold = true },
    436   -- ['@text.strike'] = { strikethrough = true },
    437   -- ['@text.emphasis'] = { italic = true },
    438   -- ['@text.underline'] = { underline = true },
    439 }) do
    440   vim.api.nvim_set_hl(0, tsgroup, opts)
    441 end