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

279 lines
10 KiB
VimL

"this is using the vim-gotham style of setting most colors
hi clear
if exists('syntax on') | syntax reset | endif
set background=dark
let g:colors_name = 'Revolution'
" Execute the 'highlight' command with a List of arguments.
function! s:Highlight(args)
exec 'highlight ' . join(a:args, ' ')
endfunction
function! s:AddGroundValues(accumulator, ground, color)
let new_list = a:accumulator
for [where, value] in items(a:color)
if value == "NONE" || value == "none" || value == ""
call add(new_list, where . a:ground . '= NONE')
else
call add(new_list, where . a:ground . '=' . value)
endif
endfor
return new_list
endfunction
function! s:Col(group, fg_name, ...)
" ... = optional bg_name
let pieces = [a:group]
if a:fg_name !=# ''
let pieces = s:AddGroundValues(pieces, 'fg', s:colors[a:fg_name])
endif
if a:0 > 0 && a:1 !=# ''
let pieces = s:AddGroundValues(pieces, 'bg', s:colors[a:1])
endif
call s:Clear(a:group)
call s:Highlight(pieces)
endfunction
function! s:Attr(group, attr)
let l:attrs = [a:group, 'term=' . a:attr, 'cterm=' . a:attr, 'gui=' . a:attr]
call s:Highlight(l:attrs)
endfunction
function! s:Clear(group)
exec 'highlight clear ' . a:group
endfunction
" Colors ======================================================================
" Let's store all the colors in a dictionary.
let s:colors = {}
" Base colors
let s:colors.base0 = { 'gui': '#bdae88', 'cterm': 144 }
let s:colors.base1 = { 'gui': '#492224', 'cterm': 52 }
let s:colors.base2 = { 'gui': '#a1a6a8', 'cterm': 248 }
let s:colors.base3 = { 'gui': '#192224', 'cterm': 235 }
let s:colors.base4 = { 'gui': '#bd9800', 'cterm': 1 }
let s:colors.base5 = { 'gui': '#536991', 'cterm': 60 }
let s:colors.base6 = { 'gui': '#b5b5b5', 'cterm': 249 }
let s:colors.base7 = { 'gui': '#965b3f', 'cterm': 137 }
let s:colors.base8 = { 'gui': '#4b4b4b', 'cterm': 239 }
let s:colors.base10 = { 'gui': '#536c70', 'cterm': 66 }
let s:colors.base11 = { 'gui': '#cfcfcf', 'cterm': 252 }
let s:colors.base12 = { 'gui': '#a33202', 'cterm': 130 }
let s:colors.base13 = { 'gui': '#ff0d0d', 'cterm': 196 }
let s:colors.base14 = { 'gui': '#f9f9ff', 'cterm': 189 }
let s:colors.base15 = { 'gui': 'NONE' , 'cterm': 254 }
let s:colors.base16 = { 'gui': '#6b6b6b', 'cterm': 242 }
let s:colors.base17 = { 'gui': '#a3b4ba', 'cterm': 109 }
let s:colors.base18 = { 'gui': '#c4c7c8', 'cterm': 251 }
let s:colors.base19 = { 'gui': '#835cad', 'cterm': 97 }
let s:colors.base20 = { 'gui': '#828282', 'cterm': 8 }
let s:colors.base21 = { 'gui': '#d9d5d5', 'cterm': 253 }
let s:colors.base22 = { 'gui': '#969693', 'cterm': 246 }
let s:colors.base23 = { 'gui': '#282828', 'cterm': 236 }
let s:colors.base24 = { 'gui': '#3a3c3e', 'cterm': 237 }
" Other colors.
let s:colors.red = { 'gui': '#c23127', 'cterm': 124 }
let s:colors.orange = { 'gui': '#d26937', 'cterm': 166 }
let s:colors.yellow = { 'gui': '#edb443', 'cterm': 214 }
let s:colors.magenta = { 'gui': '#888ca6', 'cterm': 67 }
let s:colors.violet = { 'gui': '#4e5166', 'cterm': 60 }
let s:colors.blue = { 'gui': '#195466', 'cterm': 24 }
let s:colors.cyan = { 'gui': '#33859E', 'cterm': 44 }
let s:colors.green = { 'gui': '#2aa889', 'cterm': 78 }
let s:colors.none = { 'gui': 'NONE', 'cterm': 'NONE' }
" Normal modes
call s:Col('Normal', 'base0', 'base3')
" Line, cursor and so on.
call s:Col('Cursor', 'base15', 'base14')
call s:Col('CursorLine', 'none', 'base24')
call s:Col('CursorColumn', 'base0', 'base23')
call s:Col('cursorim', 'base3', 'base1')
" Sign column, line numbers.
call s:Col('LineNr', 'base8')
call s:Col('SignColumn', 'base3', 'base3')
call s:Col('ColorColumn', 'base0', 'base24')
" Visual selection.
call s:Col('Visual', 'base0', 'base1')
" Easy-to-guess code elements.
call s:Col('Comment', 'base16')
call s:Col('String', 'base17')
call s:Col('Number', 'base18')
call s:Col('Statement', 'base7')
call s:Attr('Statement', 'bold')
call s:Col('Special', 'base4')
call s:Col('Identifier', 'base4')
" Constants, Ruby symbols.
call s:Col('Constant', 'base2')
" Some HTML tags (<title>, some <h*>s)
call s:Col('Title', 'base6', 'base1')
call s:Attr('Title', 'bold')
" <a> tags.
call s:Col('Underlined', 'base14', 'base3')
call s:Attr('Underlined', 'underline')
" Types, HTML attributes, Ruby constants (and class names).
call s:Col('Type', 'base5')
call s:Attr('Type', 'bold')
" Stuff like 'require' in Ruby.
call s:Col('PreProc', 'base19')
" Tildes on the bottom of the page.
call s:Col('NonText', 'base10')
" TODO and similar tags.
call s:Col('Todo', 'base13', 'base3')
" The column separating vertical splits.
call s:Col('VertSplit', 'base3', 'base8')
call s:Attr('VertSplit', 'bold')
call s:Col('StatusLineNC', 'base0', 'base8')
call s:Attr('StatusLineNC', 'bold')
" Matching parenthesis.
call s:Col('MatchParen', 'base4')
call s:Attr('MatchParen', 'bold')
" Special keys, e.g. some of the chars in 'listchars'. See ':h listchars'.
call s:Col('SpecialKey', 'base10')
call s:Attr('SpecialKey', 'bold')
" Folds.
call s:Col('Folded', 'base3', 'base2')
call s:Attr('Folded', 'bold')
call s:Col('FoldColumn', 'base3', 'base2')
call s:Attr('FoldColumn', 'bold')
" Searching.
call s:Col('Search', 'base0', 'base1')
call s:Col('IncSearch', 'base0', 'base1')
" Popup menu.
call s:Col('Pmenu', 'base0', 'base3')
call s:Col('PmenuSel', 'base0', 'base1')
call s:Col('PmenuSbar', 'base0', 'base20')
call s:Col('PmenuThumb', 'base15', 'base2')
" Command line stuff.
call s:Col('ErrorMsg', 'base11', 'base12')
call s:Col('ModeMsg', 'base21', 'base3')
call s:Attr('ModeMsg', 'bold')
" Wild menu.
" StatusLine determines the color of the non-active entries in the wild menu.
call s:Col('StatusLine', 'base0', 'base1')
call s:Attr('StatusLine', 'bold')
call s:Col('WildMenu', 'base0', 'base2')
" The 'Hit ENTER to continue prompt'.
"call s:Col('Question', )
" Tab line.
call s:Col('TabLineSel', 'base0', 'base1') " the selected tab
call s:Attr('TabLineSel', 'bold')
call s:Col('TabLine', 'base3', 'base22') " the non-selected tabs
call s:Attr('TabLine', 'bold')
call s:Col('TabLineFill', 'base3', 'base8') " the rest of the tab line
call s:Attr('TabLineFill', 'bold')
" Spelling.
call s:Col('SpellBad', 'base14', 'base3')
call s:Attr('SpellBad', 'underline')
call s:Col('SpellCap', 'base14', 'base3')
call s:Attr('SpellCap', 'underline')
call s:Col('SpellLocal', 'base14', 'base3')
call s:Attr('SpellLocal', 'underline')
call s:Col('SpellRare', 'base14', 'base3')
call s:Attr('SpellRare', 'underline')
" Diffing.
call s:Col('DiffAdd', 'base0', 'base23')
call s:Col('DiffChange', 'base0', 'base1')
call s:Col('DiffDelete', 'base0', 'base3')
call s:Col('DiffText', 'base0', 'base1')
" Directories (e.g. netrw).
call s:Col('Directory', 'base5')
call s:Attr('Directory', 'bold')
" Plugin =======================================================================
" GitGutter
call s:Col('GitGutterAdd', 'green', 'base3')
call s:Col('GitGutterChange', 'yellow', 'base3')
call s:Col('GitGutterDelete', 'red', 'base3')
call s:Col('GitGutterChangeDelete', 'orange', 'base3')
" vim-better-whitespace
call s:Col('ExtraWhitespace', 'violet', 'yellow')
" Cleanup =====================================================================
unlet s:colors
" End of gotham-esque settings
hi SpecialComment guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
hi Typedef guifg=#536991 guibg=NONE guisp=NONE gui=bold ctermfg=60 ctermbg=NONE cterm=bold
hi PreCondit guifg=#965b3f guibg=NONE guisp=NONE gui=NONE ctermfg=137 ctermbg=NONE cterm=NONE
hi Include guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
hi Float guifg=#A1A6A8 guibg=NONE guisp=NONE gui=NONE ctermfg=248 ctermbg=NONE cterm=NONE
hi StatusLineNC guifg=#bdae88 guibg=#4b4b4b guisp=#4b4b4b gui=bold ctermfg=144 ctermbg=239 cterm=bold
"hi CTagsMember -- no settings --
"hi CTagsGlobalConstant -- no settings --
"hi Ignore -- no settings --
hi Debug guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
hi SpecialChar guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
hi Conditional guifg=#BD9800 guibg=NONE guisp=NONE gui=bold ctermfg=1 ctermbg=NONE cterm=bold
hi StorageClass guifg=#536991 guibg=NONE guisp=NONE gui=bold ctermfg=60 ctermbg=NONE cterm=bold
hi Label guifg=#BD9800 guibg=NONE guisp=NONE gui=bold ctermfg=1 ctermbg=NONE cterm=bold
"hi CTagsImport -- no settings --
"hi CTagsGlobalVariable -- no settings --
hi Delimiter guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
"hi EnumerationValue -- no settings --
hi Character guifg=#A1A6A8 guibg=NONE guisp=NONE gui=NONE ctermfg=248 ctermbg=NONE cterm=NONE
hi Boolean guifg=#A1A6A8 guibg=NONE guisp=NONE gui=NONE ctermfg=248 ctermbg=NONE cterm=NONE
hi Operator guifg=#d9d5d5 guibg=NONE guisp=NONE gui=bold ctermfg=253 ctermbg=NONE cterm=bold
"hi Union -- no settings --
"hi Question -- no settings --
hi WarningMsg guifg=#A1A6A8 guibg=#912C00 guisp=#912C00 gui=NONE ctermfg=248 ctermbg=88 cterm=NONE
hi VisualNOS guifg=#192224 guibg=#F9F9FF guisp=#F9F9FF gui=underline ctermfg=235 ctermbg=189 cterm=underline
hi Define guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
hi Function guifg=#536991 guibg=NONE guisp=NONE gui=bold ctermfg=60 ctermbg=NONE cterm=bold
"hi EnumerationName -- no settings --
"hi MarkdownCodeBlock guifg=#dedede guibg=NONE guisp=NONE gui=BOLD
hi MoreMsg guifg=#BD9800 guibg=NONE guisp=NONE gui=bold ctermfg=1 ctermbg=NONE cterm=bold
hi SpellCap guifg=#F9F9FF guibg=#192224 guisp=#192224 gui=underline ctermfg=189 ctermbg=235 cterm=underline
hi VertSplit guifg=#262626 guibg=#4b4b4b guisp=#4b4b4b gui=bold ctermfg=235 ctermbg=239 cterm=bold
hi Exception guifg=#BD9800 guibg=NONE guisp=NONE gui=bold ctermfg=1 ctermbg=NONE cterm=bold
hi Keyword guifg=#BD9800 guibg=NONE guisp=NONE gui=bold ctermfg=1 ctermbg=NONE cterm=bold
hi Type guifg=#536991 guibg=NONE guisp=NONE gui=bold ctermfg=60 ctermbg=NONE cterm=bold
hi Error guifg=#A1A6A8 guibg=#912C00 guisp=#912C00 gui=NONE ctermfg=248 ctermbg=88 cterm=NONE
"hi DefinedName -- no settings --
hi Tag guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
hi LocalVariable guifg=#efae87 guibg=NONE guisp=NONE gui=bold ctermfg=209 ctermbg=NONE cterm=bold
hi Repeat guifg=#bd9700 guibg=NONE guisp=NONE gui=bold ctermfg=1 ctermbg=NONE cterm=bold
"hi CTagsClass -- no settings --
hi Structure guifg=#536991 guibg=NONE guisp=NONE gui=bold ctermfg=60 ctermbg=NONE cterm=bold
hi Macro guifg=#BD9800 guibg=NONE guisp=NONE gui=NONE ctermfg=1 ctermbg=NONE cterm=NONE
"hi clear -- no settings --