Files
nix-config/.config/nvim/colors/vimbrains.vim
2020-07-15 09:28:34 -04:00

364 lines
8.5 KiB
VimL

"vimbrains
hi clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name='vimbrains'
if !has('gui_running') && &t_Co != 256
finish
endif
" Palette
let s:bg = ["#1C1B19", 234]
let s:bg2 = ["#2D2C29", 235]
let s:fg = ["#FCE8C3", 223]
let s:muted = ["#918175", 240] "131
let s:key1 = ['#ce7828', 172]
let s:key2 = ["#FBB829", 3]
let s:string = ["#698857", 65]
let s:special = ["#6796bd", 67]
let s:annotation= ["#9975ab", 103]
let s:variable = ["#6c6c6c", 67]
" Setup Variables:
let s:none = ['NONE', 'NONE']
if !exists('g:vimbrains_bold')
let g:vimbrains_bold=1
endif
if !exists('g:vimbrains_italic')
if has('gui_running') || $TERM_ITALICS == 'true'
let g:vimbrains_italic=1
else
let g:vimbrains_italic=0
endif
endif
if !exists('g:vimbrains_undercurl')
let g:vimbrains_undercurl=1
endif
if !exists('g:vimbrains_underline')
let g:vimbrains_underline=1
endif
if !exists('g:vimbrains_inverse')
let g:vimbrains_inverse=1
endif
" Setup Emphasis:
let s:bold = 'bold,'
if g:vimbrains_bold == 0
let s:bold = ''
endif
let s:italic = 'italic,'
if g:vimbrains_italic == 0
let s:italic = ''
endif
let s:underline = 'underline,'
if g:vimbrains_underline == 0
let s:underline = ''
endif
let s:undercurl = 'undercurl,'
if g:vimbrains_undercurl == 0
let s:undercurl = ''
endif
let s:inverse = 'inverse,'
if g:vimbrains_inverse == 0
let s:inverse = ''
endif
" Highlighting Function:
function! s:HL(group, fg, ...)
" Arguments: group, guifg, guibg, gui, guisp
" foreground
let fg = a:fg
" background
if a:0 >= 1
let bg = a:1
else
let bg = s:none
endif
" emphasis
if a:0 >= 2 && strlen(a:2)
let emstr = a:2
else
let emstr = 'NONE,'
endif
let histring = [ 'hi', a:group,
\ 'guifg=' . fg[0], 'ctermfg=' . fg[1],
\ 'guibg=' . bg[0], 'ctermbg=' . bg[1],
\ 'gui=' . emstr[:-2], 'cterm=' . emstr[:-2]
\ ]
" special
if a:0 >= 3
call add(histring, 'guisp=' . a:3[0])
endif
execute join(histring, ' ')
endfunction
" Color definitions
call s:HL('Normal', s:fg, s:bg)
if version >= 700
call s:HL('CursorLine', s:none, s:bg2)
" Tab pages line filler
call s:HL('TabLineFill', s:bg, s:bg)
" Active tab page label
call s:HL('TabLineSel', s:bg, s:bg, s:bold)
" Not active tab page label
hi! link TabLine TabLineFill
" Match paired bracket under the cursor
call s:HL('MatchParen', s:key2, s:bg2, s:bold)
endif
if version >= 703
" Highlighted screen columns
call s:HL('ColorColumn', s:none, s:bg)
" Concealed element: \lambda → λ
call s:HL('Conceal', s:special, s:none)
" Line number of CursorLine
call s:HL('CursorLineNr', s:key2, s:bg)
endif
call s:HL('NonText', s:muted)
call s:HL('SpecialKey', s:muted)
call s:HL('Visual', s:fg, s:bg, s:inverse)
call s:HL('Search', s:bg, s:key2)
call s:HL('IncSearch', s:bg, s:key2)
call s:HL('Underlined', s:special, s:none, s:underline)
call s:HL('StatusLine', s:fg, s:bg2)
call s:HL('StatusLineNC', s:bg2, s:bg, s:underline)
" The column separating vertically split windows
call s:HL('VertSplit', s:fg, s:bg)
" Current match in wildmenu completion
call s:HL('WildMenu', s:key1, s:bg2, s:bold)
" Error messages on the command line
call s:HL('ErrorMsg', s:fg, s:key1)
call s:HL('MoreMsg', s:key2)
" Current mode message: -- INSERT --
call s:HL('ModeMsg', s:fg, s:bg)
" 'Press enter' prompt and yes/no questions
hi! link Question MoreMsg
" Warning messages
hi! link WarningMsg ErrorMsg
" Line number for :number and :# commands
call s:HL('LineNr', s:muted)
" Column where signs are displayed
call s:HL('SignColumn', s:none, s:bg)
" Line used for closed folds
call s:HL('Folded', s:muted, s:bg, s:italic)
" Column where folds are displayed
call s:HL('FoldColumn', s:muted, s:bg)
" Character under cursor
call s:HL('Cursor', s:fg, s:none, s:inverse)
"""" Syntax
"Dont highlight to much
call s:HL('Special', s:fg)
call s:HL('Comment', s:muted, s:none, s:italic)
"TODO
call s:HL('Todo', s:fg, s:bg, s:bold)
call s:HL('Error', s:key1, s:bg, s:bold . s:inverse)
" String constant: "this is a string"
call s:HL('String', s:string)
call s:HL('EscSequence', s:fg, s:none, s:bold)
call s:HL('Statement', s:key1)
" if, then, else, endif, swicth, etc.
hi! link Conditional Statement
" for, do, while, etc.
hi! link Repeat Statement
" case, default, etc.
hi! link Label Statement
" try, catch, throw
hi! link Exception Statement
" sizeof, "+", "*", etc.
""" MF
hi! link Operator Statement
" Any other keyword
hi! link Keyword Statement
call s:HL('Identifier', s:key1)
call s:HL('Function', s:annotation)
" Generic preprocessor
call s:HL('PreProc', s:key1)
" Preprocessor #include
hi! link Include PreProc
" Preprocessor #define
hi! link Define PreProc
" Same as Define
hi! link Macro PreProc
" Preprocessor #if, #else, #endif, etc.
hi! link PreCondit PreProc
" Generic constant
call s:HL('Constant', s:key2)
" Character constant: 'c', '/n'
hi! link Character Constant
" Boolean constant: TRUE, false
hi! link Boolean Constant
" Number constant: 234, 0xff
hi! link Number Constant
" Floating point constant: 2.3e10
hi! link Float Constant
" Generic type
call s:HL('Type', s:key1)
" static, register, volatile, etc
call s:HL('StorageClass', s:key1)
" struct, union, enum, etc.
call s:HL('Structure', s:key1)
" typedef
call s:HL('Typedef', s:key1)
if version >= 700
" Popup menu: normal item
""" MF
call s:HL('Pmenu', s:fg, s:bg2)
" Popup menu: selected item
call s:HL('PmenuSel', s:bg, s:special, s:bold)
" Popup menu: scrollbar
call s:HL('PmenuSbar', s:none, s:bg)
" Popup menu: scrollbar thumb
call s:HL('PmenuThumb', s:none, s:bg)
endif
" Spelling
if has("spell")
" Not capitalised word, or compile warnings
call s:HL('SpellCap', s:special, s:none, s:bold . s:italic)
" Not recognized word
call s:HL('SpellBad', s:none, s:none, s:undercurl, s:key1)
" Wrong spelling for selected region
call s:HL('SpellLocal', s:none, s:none, s:undercurl, s:key2)
" Rare word
call s:HL('SpellRare', s:none, s:none, s:undercurl, s:special)
endif
" Diff
call s:HL('DiffDelete', s:key1, s:bg, s:inverse)
call s:HL('DiffAdd', s:string, s:bg, s:inverse)
" Alternative setting
call s:HL('DiffChange', s:special, s:bg, s:inverse)
call s:HL('DiffText', s:key2, s:bg, s:inverse)
" HTML
call s:HL('htmlLink', s:fg, s:none, s:underline)
call s:HL('htmlTitle', s:fg, s:none, s:bold)
call s:HL('htmlTag', s:key1, s:none)
call s:HL('htmlTagName', s:key1, s:none)
call s:HL('htmlArg', s:key2, s:none)
call s:HL('htmlSpecialChar', s:key2, s:none, s:underline)
call s:HL('htmlBold', s:fg, s:bg, s:bold)
call s:HL('htmlBoldUnderline', s:fg, s:bg, s:bold . s:underline)
call s:HL('htmlBoldItalic', s:fg, s:bg, s:bold . s:italic)
call s:HL('htmlBoldUnderlineItalic', s:fg, s:bg, s:bold . s:underline . s:italic)
call s:HL('htmlUnderline', s:fg, s:bg, s:underline)
call s:HL('htmlUnderlineItalic', s:fg, s:bg, s:underline . s:italic)
call s:HL('htmlItalic', s:fg, s:bg, s:italic)
" Markdown
call s:HL('markdownH1', s:key1, s:bg, s:bold)
hi! link markdownH2 markdownH1
hi! link markdownH3 markdownH1
hi! link markdownH4 markdownH1
hi! link markdownH5 markdownH1
" Python
call s:HL('pythonDecorator', s:annotation, s:bg)
call s:HL('pythonInclude', s:key1, s:bg)
call s:HL('pythonImport', s:key1, s:bg)
call s:HL('pythonBoolean', s:key2, s:bg)
call s:HL('pythonFunction', s:fg, s:bg)
call s:HL('pythonBuiltin', s:key2, s:bg)
call s:HL('pythonStatement', s:key1, s:bg)
hi! link pythonCoding Comment
hi! link pythonBytesEscape EscSequence
" Scala
call s:HL('scalaAnnotation', s:annotation, s:bg)
call s:HL('scalaNameDefinition', s:variable, s:bg)
call s:HL('scalaSquareBracketsBrackets', s:fg, s:bg)
call s:HL('scalaTypeDeclaration', s:fg, s:bg)
call s:HL('scalaKeywordModifier', s:key1, s:bg)
call s:HL('scalaSpecial', s:key2, s:bg)
"Vim
call s:HL('vimBracket', s:key2, s:bg)
hi! link vimNotation vimBracket
hi! link vimMapModKey vimBracket
hi! link vimCommentTitle Todo
"C
hi! link cSpecial EscSequence
"D
hi! link dEscSequence EscSequence
" NERDTree
call s:HL('NERDTreeDir', s:string, s:bg)
hi! link pythonCoding Comment
call s:HL('NERDTreeClosable', s:fg, s:bg)
call s:HL('NERDTreeOpenable', s:fg, s:bg)
call s:HL('NERDTreeDirSlash', s:fg, s:bg)
call s:HL('NERDTreeUp', s:fg, s:bg)
hi Title guifg=gold gui=bold cterm=bold ctermfg=yellow
hi Ignore guifg=grey40 cterm=bold ctermfg=7
hi Directory ctermfg=darkcyan
hi VisualNOS cterm=bold,underline
hi SpellErrors cterm=bold ctermfg=7 ctermbg=1 gui=undercurl,bold