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

252 lines
13 KiB
VimL

" Quantum - A 24-bit Material color scheme for Vim
" Author: Brandon Siders
" License: MIT
highlight clear
if exists('syntax_on')
syntax reset
endif
set background=dark
let g:colors_name = 'quantum'
let g:quantum_italics = get(g:, 'quantum_italics', 0)
let g:quantum_black = get(g:, 'quantum_black', 0)
" Color Palette
let s:gray1 = g:quantum_black ? '#212121' : '#263238'
let s:gray2 = g:quantum_black ? '#292929' : '#2c3a41'
let s:gray3 = g:quantum_black ? '#474646' : '#425762'
let s:gray4 = g:quantum_black ? '#6a6c6c' : '#658494'
let s:gray5 = g:quantum_black ? '#b7bdc0' : '#aebbc5'
let s:red = '#dd7186'
let s:green = '#87bb7c'
let s:yellow = '#d5b875'
let s:blue = '#70ace5'
let s:purple = '#a48add'
let s:cyan = '#69c5ce'
let s:orange = '#d7956e'
let s:indigo = '#7681de'
function! s:HL(group, fg, bg, attr)
let l:attr = a:attr
if !g:quantum_italics && l:attr ==# 'italic'
let l:attr = 'none'
endif
if !empty(a:fg)
exec 'hi ' . a:group . ' guifg=' . a:fg
endif
if !empty(a:bg)
exec 'hi ' . a:group . ' guibg=' . a:bg
endif
if !empty(a:attr)
exec 'hi ' . a:group . ' gui=' . l:attr . ' cterm=' . l:attr
endif
endfun
" Vim Editor
call s:HL('ColorColumn', '', s:gray3, '')
call s:HL('Cursor', s:gray2, s:gray5, '')
call s:HL('CursorColumn', '', s:gray2, '')
call s:HL('CursorLine', '', s:gray2, 'none')
call s:HL('CursorLineNr', s:cyan, s:gray2, 'none')
call s:HL('Directory', s:blue, '', '')
call s:HL('DiffAdd', s:green, s:gray2, 'none')
call s:HL('DiffChange', s:yellow, s:gray2, 'none')
call s:HL('DiffDelete', s:red, s:gray2, 'none')
call s:HL('DiffText', s:blue, s:gray2, 'none')
call s:HL('ErrorMsg', s:red, s:gray1, 'bold')
call s:HL('FoldColumn', s:gray4, s:gray1, '')
call s:HL('Folded', s:gray3, s:gray1, '')
call s:HL('IncSearch', s:yellow, '', '')
call s:HL('LineNr', s:gray3, '', '')
call s:HL('MatchParen', s:gray4, s:cyan, 'bold')
call s:HL('ModeMsg', s:green, '', '')
call s:HL('MoreMsg', s:green, '', '')
call s:HL('NonText', s:gray4, '', 'none')
call s:HL('Normal', s:gray5, s:gray1, 'none')
call s:HL('Pmenu', s:gray5, s:gray3, '')
call s:HL('PmenuSbar', '', s:gray2, '')
call s:HL('PmenuSel', s:gray2, s:cyan, '')
call s:HL('PmenuThumb', '', s:gray4, '')
call s:HL('Question', s:blue, '', 'none')
call s:HL('Search', s:gray1, s:yellow, '')
call s:HL('SignColumn', s:gray5, s:gray1, '')
call s:HL('SpecialKey', s:gray4, '', '')
call s:HL('SpellCap', s:blue, s:gray2, 'undercurl')
call s:HL('SpellBad', s:red, s:gray2, 'undercurl')
call s:HL('StatusLine', s:gray5, s:gray3, 'none')
call s:HL('StatusLineNC', s:gray2, s:gray4, '')
call s:HL('TabLine', s:gray4, s:gray2, 'none')
call s:HL('TabLineFill', s:gray4, s:gray2, 'none')
call s:HL('TabLineSel', s:yellow, s:gray3, 'none')
call s:HL('Title', s:green, '', 'none')
call s:HL('VertSplit', s:gray4, s:gray1, 'none')
call s:HL('Visual', s:gray5, s:gray3, '')
call s:HL('WarningMsg', s:red, '', '')
call s:HL('WildMenu', s:gray2, s:cyan, '')
" Standard Syntax
call s:HL('Comment', s:gray4, '', 'italic')
call s:HL('Constant', s:orange, '', '')
call s:HL('String', s:green, '', '')
call s:HL('Character', s:green, '', '')
call s:HL('Identifier', s:red, '', 'none')
call s:HL('Function', s:blue, '', '')
call s:HL('Statement', s:purple, '', 'none')
call s:HL('Operator', s:cyan, '', '')
call s:HL('PreProc', s:cyan, '', '')
call s:HL('Include', s:blue, '', '')
call s:HL('Define', s:purple, '', 'none')
call s:HL('Macro', s:purple, '', '')
call s:HL('Type', s:yellow, '', 'none')
call s:HL('Structure', s:cyan, '', '')
call s:HL('Special', s:indigo, '', '')
call s:HL('Underlined', s:blue, '', 'none')
call s:HL('Error', s:red, s:gray1, 'bold')
call s:HL('Todo', s:orange, s:gray1, 'bold')
" CSS
call s:HL('cssAttrComma', s:purple, '', '')
call s:HL('cssAttributeSelector', s:green, '', '')
call s:HL('cssBraces', s:gray5, '', '')
call s:HL('cssClassName', s:yellow, '', '')
call s:HL('cssClassNameDot', s:yellow, '', '')
call s:HL('cssFontDescriptor', s:purple, '', '')
call s:HL('cssFunctionName', s:blue, '', '')
call s:HL('cssIdentifier', s:blue, '', '')
call s:HL('cssMediaType', s:orange, '', '')
call s:HL('cssProp', s:gray5, '', '')
call s:HL('cssSelectorOp', s:indigo, '', '')
call s:HL('cssSelectorOp2', s:indigo, '', '')
" Git Commit
call s:HL('gitcommitBranch', s:blue, '', '')
call s:HL('gitcommitUnmerged', s:green, '', '')
call s:HL('gitcommitUntrackedFile', s:cyan, '', '')
call s:HL('gitcommitSelectedFile', s:green, '', '')
call s:HL('gitcommitDiscardedFile', s:red, '', '')
call s:HL('gitcommitUnmergedFile', s:yellow, '', '')
call s:HL('gitcommitSelectedType', s:green, '', '')
call s:HL('gitcommitDiscardedType', s:red, '', '')
hi link gitcommitNoBranch gitcommitBranch
hi link gitcommitUntracked gitcommitComment
hi link gitcommitDiscarded gitcommitComment
hi link gitcommitSelected gitcommitComment
hi link gitcommitDiscardedArrow gitcommitDiscardedFile
hi link gitcommitSelectedArrow gitcommitSelectedFile
hi link gitcommitUnmergedArrow gitcommitUnmergedFile
" HTML
call s:HL('htmlEndTag', s:blue, '', '')
call s:HL('htmlLink', s:red, '', '')
call s:HL('htmlTag', s:blue, '', '')
call s:HL('htmlTitle', s:gray5, '', '')
call s:HL('htmlSpecialTagName', s:purple, '', '')
" Javascript
call s:HL('javaScriptBraces', s:gray5, '', '')
call s:HL('javaScriptNull', s:orange, '', '')
call s:HL('javaScriptIdentifier', s:purple, '', '')
call s:HL('javaScriptNumber', s:orange, '', '')
call s:HL('javaScriptRequire', s:cyan, '', '')
call s:HL('javaScriptReserved', s:purple, '', '')
" pangloss/vim-javascript
call s:HL('jsArrowFunction', s:purple, '', '')
call s:HL('jsClassKeywords', s:purple, '', '')
call s:HL('jsDocParam', s:green, '', '')
call s:HL('jsDocTags', s:cyan, '', '')
call s:HL('jsFuncCall', s:blue, '', '')
call s:HL('jsFunction', s:purple, '', '')
call s:HL('jsGlobalObjects', s:yellow, '', '')
call s:HL('jsGlobalNodeObjects', s:yellow, '', '')
call s:HL('jsNull', s:orange, '', '')
call s:HL('jsStorageClass', s:purple, '', '')
call s:HL('jsThis', s:red, '', '')
call s:HL('jsUndefined', s:orange, '', '')
" JSON
call s:HL('jsonCommentError', s:red, '', 'reverse')
call s:HL('jsonMissingCommaError', s:red, '', 'reverse')
call s:HL('jsonNoQuotesError', s:red, '', 'reverse')
call s:HL('jsonNumError', s:red, '', 'reverse')
call s:HL('jsonStringSQError', s:red, '', 'reverse')
call s:HL('jsonSemicolonError', s:red, '', 'reverse')
" Less
call s:HL('lessAmpersand', s:purple, '', '')
call s:HL('lessClassChar', s:yellow, '', '')
call s:HL('lessCssAttribute', s:gray5, '', '')
call s:HL('lessFunction', s:blue, '', '')
" Markdown
call s:HL('markdownBold', s:orange, '', 'bold')
call s:HL('markdownCode', s:cyan, '', '')
call s:HL('markdownCodeBlock', s:cyan, '', '')
call s:HL('markdownCodeDelimiter', s:cyan, '', '')
call s:HL('markdownHeadingDelimiter', s:green, '', '')
call s:HL('markdownHeadingRule', s:gray4, '', '')
call s:HL('markdownId', s:purple, '', '')
call s:HL('markdownItalic', s:blue, '', 'italic')
call s:HL('markdownListMarker', s:indigo, '', '')
call s:HL('markdownOrderedListMarker', s:indigo, '', '')
call s:HL('markdownRule', s:gray4, '', '')
call s:HL('markdownUrl', s:purple, '', '')
call s:HL('markdownUrlTitleDelimiter', s:green, '', '')
" Ruby
call s:HL('rubyInterpolation', s:cyan, '', '')
call s:HL('rubyInterpolationDelimiter', s:indigo, '', '')
call s:HL('rubyRegexp', s:cyan, '', '')
call s:HL('rubyRegexpDelimiter', s:indigo, '', '')
call s:HL('rubyStringDelimiter', s:green, '', '')
" Sass
call s:HL('sassAmpersand', s:purple, '', '')
call s:HL('sassClassChar', s:yellow, '', '')
" Vim-Fugitive
call s:HL('diffAdded', s:green, '', '')
call s:HL('diffRemoved', s:red, '', '')
" Vim-Gittgutter
call s:HL('GitGutterAdd', s:green, '', '')
call s:HL('GitGutterChange', s:yellow, '', '')
call s:HL('GitGutterChangeDelete', s:orange, '', '')
call s:HL('GitGutterDelete', s:red, '', '')
" Vim-Signify
hi link SignifySignAdd GitGutterAdd
hi link SignifySignChange GitGutterChange
hi link SignifySignDelete GitGutterDelete
" XML
call s:HL('xmlAttrib', s:yellow, '', '')
call s:HL('xmlEndTag', s:blue, '', '')
call s:HL('xmlTag', s:blue, '', '')
call s:HL('xmlTagName', s:blue, '', '')
" Neovim terminal colors
if has('nvim')
let g:terminal_color_0 = s:gray1
let g:terminal_color_1 = s:red
let g:terminal_color_2 = s:green
let g:terminal_color_3 = s:yellow
let g:terminal_color_4 = s:blue
let g:terminal_color_5 = s:purple
let g:terminal_color_6 = s:cyan
let g:terminal_color_7 = s:gray5
let g:terminal_color_8 = s:gray3
let g:terminal_color_9 = s:red
let g:terminal_color_10 = s:green
let g:terminal_color_11 = s:yellow
let g:terminal_color_12 = s:blue
let g:terminal_color_13 = s:purple
let g:terminal_color_14 = s:cyan
let g:terminal_color_15 = s:gray4
let g:terminal_color_background = g:terminal_color_0
let g:terminal_color_foreground = g:terminal_color_7
endif