Просмотр исходного кода

group memoization through hi linking

Pavel Pertsev 10 лет назад
Родитель
Сommit
1f930b7c34
1 измененных файлов с 367 добавлено и 339 удалено
  1. 367 339
      colors/gruvbox.vim

+ 367 - 339
colors/gruvbox.vim

@@ -385,6 +385,39 @@ function! s:HL(group, fg, ...)
   execute join(histring, ' ')
 endfunction
 
+" }}}
+" Gruvbox Hi Groups: {{{
+
+" memoize common hi groups
+call s:HL('GruvboxFg0', s:fg0)
+call s:HL('GruvboxFg1', s:fg1)
+call s:HL('GruvboxFg3', s:fg3)
+call s:HL('GruvboxFg4', s:fg4)
+call s:HL('GruvboxGray', s:gray)
+call s:HL('GruvboxBg2', s:bg2)
+
+call s:HL('GruvboxRed', s:red)
+call s:HL('GruvboxRedBold', s:red, s:none, s:bold)
+call s:HL('GruvboxGreen', s:green)
+call s:HL('GruvboxGreenBold', s:green, s:none, s:bold)
+call s:HL('GruvboxYellow', s:yellow)
+call s:HL('GruvboxYellowBold', s:yellow, s:none, s:bold)
+call s:HL('GruvboxBlue', s:blue)
+" call s:HL('GruvboxBlueBold', s:blue, s:none, s:bold)
+call s:HL('GruvboxPurple', s:purple)
+" call s:HL('GruvboxPurpleBold', s:purple, s:none, s:bold)
+call s:HL('GruvboxAqua', s:aqua)
+call s:HL('GruvboxAquaBold', s:aqua, s:none, s:bold)
+call s:HL('GruvboxOrange', s:orange)
+call s:HL('GruvboxOrangeBold', s:orange, s:none, s:bold)
+
+call s:HL('GruvboxRedSign', s:red, s:sign_column, s:invert_signs)
+call s:HL('GruvboxGreenSign', s:green, s:sign_column, s:invert_signs)
+call s:HL('GruvboxYellowSign', s:yellow, s:sign_column, s:invert_signs)
+call s:HL('GruvboxBlueSign', s:blue, s:sign_column, s:invert_signs)
+call s:HL('GruvboxPurpleSign', s:purple, s:sign_column, s:invert_signs)
+call s:HL('GruvboxAquaSign', s:aqua, s:sign_column, s:invert_signs)
+
 " }}}
 
 " Vanilla colorscheme ---------------------------------------------------------
@@ -406,14 +439,14 @@ if version >= 700
   " Screen line that the cursor is
   call s:HL('CursorLine',   s:none, s:bg1)
   " Screen column that the cursor is
-  call s:HL('CursorColumn', s:none, s:bg1)
+  hi! link CursorColumn CursorLine
 
   " Tab pages line filler
   call s:HL('TabLineFill', s:bg4, s:vim_bg, s:invert_tabline)
   " Active tab page label
   call s:HL('TabLineSel', s:vim_bg, s:bg4, s:bold . s:invert_tabline)
   " Not active tab page label
-  call s:HL('TabLine', s:bg4, s:vim_bg, s:invert_tabline)
+  hi! link TabLine TabLineFill
 
   " Match paired bracket under the cursor
   call s:HL('MatchParen', s:none, s:bg3, s:bold)
@@ -430,11 +463,11 @@ if version >= 703
   call s:HL('CursorLineNr', s:yellow, s:bg1)
 endif
 
-call s:HL('NonText',    s:bg2)
-call s:HL('SpecialKey', s:bg2)
+hi! link NonText GruvboxBg2
+hi! link SpecialKey GruvboxBg2
 
 call s:HL('Visual',    s:none,  s:bg3, s:invert_selection)
-call s:HL('VisualNOS', s:none,  s:bg3, s:invert_selection)
+hi! link VisualNOS Visual
 
 call s:HL('Search',    s:bg0, s:yellow)
 call s:HL('IncSearch', s:bg0, s:hls_cursor)
@@ -451,21 +484,21 @@ call s:HL('VertSplit', s:fg4, s:vert_split)
 call s:HL('WildMenu', s:blue, s:bg2, s:bold)
 
 " Directory names, special names in listing
-call s:HL('Directory', s:green, s:none, s:bold)
+hi! link Directory GruvboxGreenBold
 
 " Titles for output from :set all, :autocmd, etc.
-call s:HL('Title', s:green, s:none, s:bold)
+hi! link Title GruvboxGreenBold
 
 " Error messages on the command line
 call s:HL('ErrorMsg',   s:vim_bg, s:red, s:bold)
 " More prompt: -- More --
-call s:HL('MoreMsg',    s:yellow, s:none, s:bold)
+hi! link MoreMsg GruvboxYellowBold
 " Current mode message: -- INSERT --
-call s:HL('ModeMsg',    s:yellow, s:none, s:bold)
+hi! link ModeMsg GruvboxYellowBold
 " 'Press enter' prompt and yes/no questions
-call s:HL('Question',   s:orange, s:none, s:bold)
+hi! link Question GruvboxOrangeBold
 " Warning messages
-call s:HL('WarningMsg', s:red, s:none, s:bold)
+hi! link WarningMsg GruvboxRedBold
 
 " }}}
 " Gutter: {{{
@@ -487,17 +520,17 @@ call s:HL('FoldColumn', s:gray, s:bg1)
 " Character under cursor
 call s:HL('Cursor', s:none, s:none, s:inverse)
 " Visual mode cursor, selection
-call s:HL('vCursor', s:none, s:none, s:inverse)
+hi! link vCursor Cursor
 " Input moder cursor
-call s:HL('iCursor', s:none, s:none, s:inverse)
+hi! link iCursor Cursor
 " Language mapping cursor
-call s:HL('lCursor', s:none, s:none, s:inverse)
+hi! link lCursor Cursor
 
 " }}}
 " Syntax Highlighting: {{{
 
 if g:gruvbox_improved_strings == 0
-  call s:HL('Special', s:orange)
+  hi! link Special GruvboxOrange
 else
   call s:HL('Special', s:bg1, s:orange, s:italic)
 endif
@@ -507,40 +540,40 @@ call s:HL('Todo', s:vim_fg, s:vim_bg, s:bold . s:italic)
 call s:HL('Error', s:red, s:vim_bg, s:bold . s:inverse)
 
 " Generic statement
-call s:HL('Statement',   s:red)
+hi! link Statement GruvboxRed
 " if, then, else, endif, swicth, etc.
-call s:HL('Conditional', s:red)
+hi! link Conditional GruvboxRed
 " for, do, while, etc.
-call s:HL('Repeat',      s:red)
+hi! link Repeat GruvboxRed
 " case, default, etc.
-call s:HL('Label',       s:red)
+hi! link Label GruvboxRed
 " try, catch, throw
-call s:HL('Exception',   s:red)
+hi! link Exception GruvboxRed
 " sizeof, "+", "*", etc.
 hi! link Operator Normal
 " Any other keyword
-call s:HL('Keyword',     s:red)
+hi! link Keyword GruvboxRed
 
 " Variable name
-call s:HL('Identifier', s:blue)
+hi! link Identifier GruvboxBlue
 " Function name
-call s:HL('Function',   s:green, s:none, s:bold)
+hi! link Function GruvboxGreenBold
 
 " Generic preprocessor
-call s:HL('PreProc',   s:aqua)
+hi! link PreProc GruvboxAqua
 " Preprocessor #include
-call s:HL('Include',   s:aqua)
+hi! link Include GruvboxAqua
 " Preprocessor #define
-call s:HL('Define',    s:aqua)
+hi! link Define GruvboxAqua
 " Same as Define
-call s:HL('Macro',     s:aqua)
+hi! link Macro GruvboxAqua
 " Preprocessor #if, #else, #endif, etc.
-call s:HL('PreCondit', s:aqua)
+hi! link PreCondit GruvboxAqua
 
 " Generic constant
-call s:HL('Constant',  s:purple)
+hi! link Constant GruvboxPurple
 " Character constant: 'c', '/n'
-call s:HL('Character', s:purple)
+hi! link Character GruvboxPurple
 " String constant: "this is a string"
 if g:gruvbox_improved_strings == 0
   call s:HL('String',  s:green, s:none, s:italicize_strings)
@@ -548,20 +581,20 @@ else
   call s:HL('String',  s:bg1, s:fg1, s:italicize_strings)
 endif
 " Boolean constant: TRUE, false
-call s:HL('Boolean',   s:purple)
+hi! link Boolean GruvboxPurple
 " Number constant: 234, 0xff
-call s:HL('Number',    s:purple)
+hi! link Number GruvboxPurple
 " Floating point constant: 2.3e10
-call s:HL('Float',     s:purple)
+hi! link Float GruvboxPurple
 
 " Generic type
-call s:HL('Type', s:yellow)
+hi! link Type GruvboxYellow
 " static, register, volatile, etc
-call s:HL('StorageClass', s:orange)
+hi! link StorageClass GruvboxOrange
 " struct, union, enum, etc.
-call s:HL('Structure', s:aqua)
+hi! link Structure GruvboxAqua
 " typedef
-call s:HL('Typedef', s:yellow)
+hi! link Typedef GruvboxYellow
 
 " }}}
 " Completion Menu: {{{
@@ -680,23 +713,23 @@ let g:niji_light_colours = g:rbpt_colorpairs
 "}}}
 " GitGutter: {{{
 
-call s:HL('GitGutterAdd', s:green, s:sign_column, s:invert_signs)
-call s:HL('GitGutterChange', s:aqua, s:sign_column, s:invert_signs)
-call s:HL('GitGutterDelete', s:red, s:sign_column, s:invert_signs)
-call s:HL('GitGutterChangeDelete', s:aqua, s:sign_column, s:invert_signs)
+hi! link GitGutterAdd GruvboxGreenSign
+hi! link GitGutterChange GruvboxAquaSign
+hi! link GitGutterDelete GruvboxRedSign
+hi! link GitGutterChangeDelete GruvboxAquaSign
 
 " }}}
 " GitCommit: "{{{
 
-call s:HL('gitcommitSelectedFile', s:green)
-call s:HL('gitcommitDiscardedFile', s:red)
+hi! link gitcommitSelectedFile GruvboxGreen
+hi! link gitcommitDiscardedFile GruvboxRed
 
 " }}}
 " Signify: {{{
 
-call s:HL('SignifySignAdd', s:green, s:sign_column, s:invert_signs)
-call s:HL('SignifySignChange ', s:aqua, s:sign_column, s:invert_signs)
-call s:HL('SignifySignDelete', s:red, s:sign_column, s:invert_signs)
+hi! link SignifySignAdd GruvboxGreenSign
+hi! link SignifySignChange GruvboxAquaSign
+hi! link SignifySignDelete GruvboxRedSign
 
 " }}}
 " Syntastic: {{{
@@ -704,14 +737,14 @@ call s:HL('SignifySignDelete', s:red, s:sign_column, s:invert_signs)
 call s:HL('SyntasticError', s:none, s:none, s:undercurl, s:red)
 call s:HL('SyntasticWarning', s:none, s:none, s:undercurl, s:yellow)
 
-call s:HL('SyntasticErrorSign', s:red, s:sign_column, s:invert_signs)
-call s:HL('SyntasticWarningSign', s:yellow, s:sign_column, s:invert_signs)
+hi! link SyntasticErrorSign GruvboxRedSign
+hi! link SyntasticWarningSign GruvboxYellowSign
 
 " }}}
 " Signature: {{{
 
-call s:HL('SignatureMarkerText', s:purple, s:sign_column, s:invert_signs)
-call s:HL('SignatureMarkText', s:blue, s:sign_column, s:invert_signs)
+hi! link SignatureMarkerText GruvboxPurpleSign
+hi! link SignatureMarkText GruvboxBlueSign
 
 let g:SignatureMarkerTextHL='"SignatureMarkerText"'
 let g:SignatureMarkTextHL='"SignatureMarkText"'
@@ -719,19 +752,19 @@ let g:SignatureMarkTextHL='"SignatureMarkText"'
 " }}}
 " ShowMarks: {{{
 
-call s:HL('ShowMarksHLl', s:blue, s:sign_column, s:invert_signs)
-call s:HL('ShowMarksHLu', s:blue, s:sign_column, s:invert_signs)
-call s:HL('ShowMarksHLo', s:blue, s:sign_column, s:invert_signs)
-call s:HL('ShowMarksHLm', s:blue, s:sign_column, s:invert_signs)
+hi! link ShowMarksHLl GruvboxBlueSign
+hi! link ShowMarksHLu GruvboxBlueSign
+hi! link ShowMarksHLo GruvboxBlueSign
+hi! link ShowMarksHLm GruvboxBlueSign
 
 " }}}
 " CtrlP: {{{
 
-call s:HL('CtrlPMatch', s:yellow)
-call s:HL('CtrlPNoEntries', s:red)
-call s:HL('CtrlPPrtBase', s:bg2)
-call s:HL('CtrlPPrtCursor', s:blue)
-call s:HL('CtrlPLinePre', s:bg2)
+hi! link CtrlPMatch GruvboxYellow
+hi! link CtrlPNoEntries GruvboxRed
+hi! link CtrlPPrtBase GruvboxBg2
+hi! link CtrlPPrtCursor GruvboxBlue
+hi! link CtrlPLinePre GruvboxBg2
 
 call s:HL('CtrlPMode1', s:blue, s:bg2, s:bold)
 call s:HL('CtrlPMode2', s:bg0, s:blue, s:bold)
@@ -740,15 +773,15 @@ call s:HL('CtrlPStats', s:fg4, s:bg2, s:bold)
 " }}}
 " Startify: {{{
 
-call s:HL('StartifyBracket', s:fg3)
-call s:HL('StartifyFile', s:fg0)
-call s:HL('StartifyNumber', s:blue)
-call s:HL('StartifyPath', s:gray)
-call s:HL('StartifySlash', s:gray)
-call s:HL('StartifySection', s:yellow)
-call s:HL('StartifySpecial', s:bg2)
-call s:HL('StartifyHeader', s:orange)
-call s:HL('StartifyFooter', s:bg2)
+hi! link StartifyBracket GruvboxFg3
+hi! link StartifyFile GruvboxFg0
+hi! link StartifyNumber GruvboxBlue
+hi! link StartifyPath GruvboxGray
+hi! link StartifySlash GruvboxGray
+hi! link StartifySection GruvboxYellow
+hi! link StartifySpecial GruvboxBg2
+hi! link StartifyHeader GruvboxOrange
+hi! link StartifyFooter GruvboxBg2
 
 " }}}
 " Vimshell: {{{
@@ -765,31 +798,31 @@ let g:vimshell_escape_colors = [
 " Filetype specific -----------------------------------------------------------
 " Diff: {{{
 
-call s:HL('diffAdded', s:green)
-call s:HL('diffRemoved', s:red)
-call s:HL('diffChanged', s:aqua)
+hi! link diffAdded GruvboxGreen
+hi! link diffRemoved GruvboxRed
+hi! link diffChanged GruvboxAqua
 
-call s:HL('diffFile', s:orange)
-call s:HL('diffNewFile', s:yellow)
+hi! link diffFile GruvboxOrange
+hi! link diffNewFile GruvboxYellow
 
-call s:HL('diffLine', s:blue)
+hi! link diffLine GruvboxBlue
 
 " }}}
 " Html: {{{
 
-call s:HL('htmlTag', s:blue)
-call s:HL('htmlEndTag', s:blue)
+hi! link htmlTag GruvboxBlue
+hi! link htmlEndTag GruvboxBlue
 
-call s:HL('htmlTagName', s:aqua, s:none, s:bold)
-call s:HL('htmlArg', s:aqua)
+hi! link htmlTagName GruvboxAquaBold
+hi! link htmlArg GruvboxAqua
 
-call s:HL('htmlScriptTag', s:purple)
-call s:HL('htmlTagN', s:fg1)
-call s:HL('htmlSpecialTagName', s:aqua, s:none, s:bold)
+hi! link htmlScriptTag GruvboxPurple
+hi! link htmlTagN GruvboxFg1
+hi! link htmlSpecialTagName GruvboxAquaBold
 
 call s:HL('htmlLink', s:fg4, s:none, s:underline)
 
-call s:HL('htmlSpecialChar', s:orange)
+hi! link htmlSpecialChar GruvboxOrange
 
 call s:HL('htmlBold', s:vim_fg, s:vim_bg, s:bold)
 call s:HL('htmlBoldUnderline', s:vim_fg, s:vim_bg, s:bold . s:underline)
@@ -803,314 +836,315 @@ call s:HL('htmlItalic', s:vim_fg, s:vim_bg, s:italic)
 " }}}
 " Xml: {{{
 
-call s:HL('xmlTag', s:blue)
-call s:HL('xmlEndTag', s:blue)
-call s:HL('xmlTagName', s:blue)
-call s:HL('xmlEqual', s:blue)
-call s:HL('docbkKeyword', s:aqua, s:none, s:bold)
-
-call s:HL('xmlDocTypeDecl', s:gray)
-call s:HL('xmlDocTypeKeyword', s:purple)
-call s:HL('xmlCdataStart', s:gray)
-call s:HL('xmlCdataCdata', s:purple)
-call s:HL('dtdFunction', s:gray)
-call s:HL('dtdTagName', s:purple)
-
-call s:HL('xmlAttrib', s:aqua)
-call s:HL('xmlProcessingDelim', s:gray)
-call s:HL('dtdParamEntityPunct', s:gray)
-call s:HL('dtdParamEntityDPunct', s:gray)
-call s:HL('xmlAttribPunct', s:gray)
-
-call s:HL('xmlEntity', s:orange)
-call s:HL('xmlEntityPunct', s:orange)
+hi! link xmlTag GruvboxBlue
+hi! link xmlEndTag GruvboxBlue
+hi! link xmlTagName GruvboxBlue
+hi! link xmlEqual GruvboxBlue
+hi! link docbkKeyword GruvboxAquaBold
+
+hi! link xmlDocTypeDecl GruvboxGray
+hi! link xmlDocTypeKeyword GruvboxPurple
+hi! link xmlCdataStart GruvboxGray
+hi! link xmlCdataCdata GruvboxPurple
+hi! link dtdFunction GruvboxGray
+hi! link dtdTagName GruvboxPurple
+
+hi! link xmlAttrib GruvboxAqua
+hi! link xmlProcessingDelim GruvboxGray
+hi! link dtdParamEntityPunct GruvboxGray
+hi! link dtdParamEntityDPunct GruvboxGray
+hi! link xmlAttribPunct GruvboxGray
+
+hi! link xmlEntity GruvboxOrange
+hi! link xmlEntityPunct GruvboxOrange
 " }}}
 " Vim: {{{
 
 call s:HL('vimCommentTitle', s:fg4_256, s:none, s:bold . s:italicize_comments)
 
-call s:HL('vimNotation', s:orange)
-call s:HL('vimBracket', s:orange)
-call s:HL('vimMapModKey', s:orange)
-call s:HL('vimFuncSID', s:fg3)
-call s:HL('vimSetSep', s:fg3)
-call s:HL('vimSep', s:fg3)
-call s:HL('vimContinue', s:fg3)
+hi! link vimNotation GruvboxOrange
+hi! link vimBracket GruvboxOrange
+hi! link vimMapModKey GruvboxOrange
+hi! link vimFuncSID GruvboxFg3
+hi! link vimSetSep GruvboxFg3
+hi! link vimSep GruvboxFg3
+hi! link vimContinue GruvboxFg3
 
 " }}}
 " Clojure: {{{
 
-call s:HL('clojureKeyword', s:blue)
-call s:HL('clojureCond', s:orange)
-call s:HL('clojureSpecial', s:orange)
-call s:HL('clojureDefine', s:orange)
+hi! link clojureKeyword GruvboxBlue
+hi! link clojureCond GruvboxOrange
+hi! link clojureSpecial GruvboxOrange
+hi! link clojureDefine GruvboxOrange
 
-call s:HL('clojureFunc', s:yellow)
-call s:HL('clojureRepeat', s:yellow)
-call s:HL('clojureCharacter', s:aqua)
-call s:HL('clojureStringEscape', s:aqua)
-call s:HL('clojureException', s:red)
+hi! link clojureFunc GruvboxYellow
+hi! link clojureRepeat GruvboxYellow
+hi! link clojureCharacter GruvboxAqua
+hi! link clojureStringEscape GruvboxAqua
+hi! link clojureException GruvboxRed
 
-call s:HL('clojureRegexp', s:aqua)
-call s:HL('clojureRegexpEscape', s:aqua)
+hi! link clojureRegexp GruvboxAqua
+hi! link clojureRegexpEscape GruvboxAqua
 call s:HL('clojureRegexpCharClass', s:fg3, s:none, s:bold)
-call s:HL('clojureRegexpMod', s:fg3, s:none, s:bold)
-call s:HL('clojureRegexpQuantifier', s:fg3, s:none, s:bold)
+hi! link clojureRegexpMod clojureRegexpCharClass
+hi! link clojureRegexpQuantifier clojureRegexpCharClass
 
-call s:HL('clojureParen', s:fg3)
-call s:HL('clojureAnonArg', s:yellow)
-call s:HL('clojureVariable', s:blue)
-call s:HL('clojureMacro', s:orange)
+hi! link clojureParen GruvboxFg3
+hi! link clojureAnonArg GruvboxYellow
+hi! link clojureVariable GruvboxBlue
+hi! link clojureMacro GruvboxOrange
 
-call s:HL('clojureMeta', s:yellow)
-call s:HL('clojureDeref', s:yellow)
-call s:HL('clojureQuote', s:yellow)
-call s:HL('clojureUnquote', s:yellow)
+hi! link clojureMeta GruvboxYellow
+hi! link clojureDeref GruvboxYellow
+hi! link clojureQuote GruvboxYellow
+hi! link clojureUnquote GruvboxYellow
 
 " }}}
 " C: {{{
 
-call s:HL('cOperator', s:purple)
-call s:HL('cStructure', s:orange)
+hi! link cOperator GruvboxPurple
+hi! link cStructure GruvboxOrange
 
 " }}}
 " Python: {{{
 
-call s:HL('pythonBuiltin', s:orange)
-call s:HL('pythonBuiltinObj', s:orange)
-call s:HL('pythonBuiltinFunc', s:orange)
-call s:HL('pythonFunction', s:aqua)
-call s:HL('pythonDecorator', s:red)
-call s:HL('pythonInclude', s:blue)
-call s:HL('pythonImport', s:blue)
-call s:HL('pythonRun', s:blue)
-call s:HL('pythonCoding', s:blue)
-call s:HL('pythonOperator', s:red)
-call s:HL('pythonExceptions', s:purple)
-call s:HL('pythonBoolean', s:purple)
-call s:HL('pythonDot', s:fg3)
+hi! link pythonBuiltin GruvboxOrange
+hi! link pythonBuiltinObj GruvboxOrange
+hi! link pythonBuiltinFunc GruvboxOrange
+hi! link pythonFunction GruvboxAqua
+hi! link pythonDecorator GruvboxRed
+hi! link pythonInclude GruvboxBlue
+hi! link pythonImport GruvboxBlue
+hi! link pythonRun GruvboxBlue
+hi! link pythonCoding GruvboxBlue
+hi! link pythonOperator GruvboxRed
+hi! link pythonExceptions GruvboxPurple
+hi! link pythonBoolean GruvboxPurple
+hi! link pythonDot GruvboxFg3
 
 " }}}
 " CSS: {{{
 
-call s:HL('cssBraces', s:blue)
-call s:HL('cssFunctionName', s:yellow)
-call s:HL('cssIdentifier', s:orange)
-call s:HL('cssClassName', s:green)
-call s:HL('cssColor', s:blue)
-call s:HL('cssSelectorOp', s:blue)
-call s:HL('cssSelectorOp2', s:blue)
-call s:HL('cssImportant', s:green)
-call s:HL('cssVendor', s:fg1)
-
-call s:HL('cssTextProp', s:aqua)
-call s:HL('cssAnimationProp', s:aqua)
-call s:HL('cssUIProp', s:yellow)
-call s:HL('cssTransformProp', s:aqua)
-call s:HL('cssTransitionProp', s:aqua)
-call s:HL('cssPrintProp', s:aqua)
-call s:HL('cssPositioningProp', s:yellow)
-call s:HL('cssBoxProp', s:aqua)
-call s:HL('cssFontDescriptorProp', s:aqua)
-call s:HL('cssFlexibleBoxProp', s:aqua)
-call s:HL('cssBorderOutlineProp', s:aqua)
-call s:HL('cssBackgroundProp', s:aqua)
-call s:HL('cssMarginProp', s:aqua)
-call s:HL('cssListProp', s:aqua)
-call s:HL('cssTableProp', s:aqua)
-call s:HL('cssFontProp', s:aqua)
-call s:HL('cssPaddingProp', s:aqua)
-call s:HL('cssDimensionProp', s:aqua)
-call s:HL('cssRenderProp', s:aqua)
-call s:HL('cssColorProp', s:aqua)
-call s:HL('cssGeneratedContentProp', s:aqua)
+hi! link cssBraces GruvboxBlue
+hi! link cssFunctionName GruvboxYellow
+hi! link cssIdentifier GruvboxOrange
+hi! link cssClassName GruvboxGreen
+hi! link cssColor GruvboxBlue
+hi! link cssSelectorOp GruvboxBlue
+hi! link cssSelectorOp2 GruvboxBlue
+hi! link cssImportant GruvboxGreen
+hi! link cssVendor GruvboxFg1
+
+hi! link cssTextProp GruvboxAqua
+hi! link cssAnimationProp GruvboxAqua
+hi! link cssUIProp GruvboxYellow
+hi! link cssTransformProp GruvboxAqua
+hi! link cssTransitionProp GruvboxAqua
+hi! link cssPrintProp GruvboxAqua
+hi! link cssPositioningProp GruvboxYellow
+hi! link cssBoxProp GruvboxAqua
+hi! link cssFontDescriptorProp GruvboxAqua
+hi! link cssFlexibleBoxProp GruvboxAqua
+hi! link cssBorderOutlineProp GruvboxAqua
+hi! link cssBackgroundProp GruvboxAqua
+hi! link cssMarginProp GruvboxAqua
+hi! link cssListProp GruvboxAqua
+hi! link cssTableProp GruvboxAqua
+hi! link cssFontProp GruvboxAqua
+hi! link cssPaddingProp GruvboxAqua
+hi! link cssDimensionProp GruvboxAqua
+hi! link cssRenderProp GruvboxAqua
+hi! link cssColorProp GruvboxAqua
+hi! link cssGeneratedContentProp GruvboxAqua
 
 " }}}
 " JavaScript: {{{
 
-call s:HL('javaScriptBraces', s:fg1)
-call s:HL('javaScriptFunction', s:aqua)
-call s:HL('javaScriptIdentifier', s:red)
-call s:HL('javaScriptMember', s:blue)
-call s:HL('javaScriptNumber', s:purple)
-call s:HL('javaScriptNull', s:purple)
-call s:HL('javaScriptParens', s:fg3)
+hi! link javaScriptBraces GruvboxFg1
+hi! link javaScriptFunction GruvboxAqua
+hi! link javaScriptIdentifier GruvboxRed
+hi! link javaScriptMember GruvboxBlue
+hi! link javaScriptNumber GruvboxPurple
+hi! link javaScriptNull GruvboxPurple
+hi! link javaScriptParens GruvboxFg3
 
 " }}}
 " YAJS: {{{
 
-call s:HL('javascriptImport', s:aqua)
-call s:HL('javascriptExport', s:aqua)
-call s:HL('javascriptClassKeyword', s:aqua)
-call s:HL('javascriptClassExtends', s:aqua)
-call s:HL('javascriptDefault', s:aqua)
-
-call s:HL('javascriptClassName', s:yellow)
-call s:HL('javascriptClassSuperName', s:yellow)
-call s:HL('javascriptGlobal', s:yellow)
-
-call s:HL('javascriptEndColons', s:fg1)
-call s:HL('javascriptFuncArg', s:fg1)
-call s:HL('javascriptGlobalMethod', s:fg1)
-call s:HL('javascriptNodeGlobal', s:fg1)
-
-" call s:HL('javascriptVariable', s:orange)
-call s:HL('javascriptVariable', s:red)
-" call s:HL('javascriptIdentifier', s:orange)
-" call s:HL('javascriptClassSuper', s:orange)
-call s:HL('javascriptIdentifier', s:orange)
-call s:HL('javascriptClassSuper', s:orange)
-
-" call s:HL('javascriptFuncKeyword', s:orange)
-" call s:HL('javascriptAsyncFunc', s:orange)
-call s:HL('javascriptFuncKeyword', s:aqua)
-call s:HL('javascriptAsyncFunc', s:aqua)
-call s:HL('javascriptClassStatic', s:orange)
-
-call s:HL('javascriptOperator', s:red)
-call s:HL('javascriptForOperator', s:red)
-call s:HL('javascriptYield', s:red)
-call s:HL('javascriptExceptions', s:red)
-call s:HL('javascriptMessage', s:red)
-
-call s:HL('javascriptTemplateSB', s:aqua)
-call s:HL('javascriptTemplateSubstitution', s:fg1)
-
-" call s:HL('javascriptLabel', s:blue)
-" call s:HL('javascriptObjectLabel', s:blue)
-" call s:HL('javascriptPropertyName', s:blue)
-call s:HL('javascriptLabel', s:fg1)
-call s:HL('javascriptObjectLabel', s:fg1)
-call s:HL('javascriptPropertyName', s:fg1)
-
-call s:HL('javascriptLogicSymbols', s:fg1)
-call s:HL('javascriptArrowFunc', s:fg1)
-
-call s:HL('javascriptDocParamName', s:fg4)
-call s:HL('javascriptDocTags', s:fg4)
-call s:HL('javascriptDocNotation', s:fg4)
-call s:HL('javascriptDocParamType', s:fg4)
-call s:HL('javascriptDocNamedParamType', s:fg4)
+hi! link javascriptImport GruvboxAqua
+hi! link javascriptExport GruvboxAqua
+hi! link javascriptClassKeyword GruvboxAqua
+hi! link javascriptClassExtends GruvboxAqua
+hi! link javascriptDefault GruvboxAqua
+
+hi! link javascriptClassName GruvboxYellow
+hi! link javascriptClassSuperName GruvboxYellow
+hi! link javascriptGlobal GruvboxYellow
+
+hi! link javascriptEndColons GruvboxFg1
+hi! link javascriptFuncArg GruvboxFg1
+hi! link javascriptGlobalMethod GruvboxFg1
+hi! link javascriptNodeGlobal GruvboxFg1
+
+" hi! link javascriptVariable GruvboxOrange
+hi! link javascriptVariable GruvboxRed
+" hi! link javascriptIdentifier GruvboxOrange
+" hi! link javascriptClassSuper GruvboxOrange
+hi! link javascriptIdentifier GruvboxOrange
+hi! link javascriptClassSuper GruvboxOrange
+
+" hi! link javascriptFuncKeyword GruvboxOrange
+" hi! link javascriptAsyncFunc GruvboxOrange
+hi! link javascriptFuncKeyword GruvboxAqua
+hi! link javascriptAsyncFunc GruvboxAqua
+hi! link javascriptClassStatic GruvboxOrange
+
+hi! link javascriptOperator GruvboxRed
+hi! link javascriptForOperator GruvboxRed
+hi! link javascriptYield GruvboxRed
+hi! link javascriptExceptions GruvboxRed
+hi! link javascriptMessage GruvboxRed
+
+hi! link javascriptTemplateSB GruvboxAqua
+hi! link javascriptTemplateSubstitution GruvboxFg1
+
+" hi! link javascriptLabel GruvboxBlue
+" hi! link javascriptObjectLabel GruvboxBlue
+" hi! link javascriptPropertyName GruvboxBlue
+hi! link javascriptLabel GruvboxFg1
+hi! link javascriptObjectLabel GruvboxFg1
+hi! link javascriptPropertyName GruvboxFg1
+
+hi! link javascriptLogicSymbols GruvboxFg1
+hi! link javascriptArrowFunc GruvboxFg1
+
+hi! link javascriptDocParamName GruvboxFg4
+hi! link javascriptDocTags GruvboxFg4
+hi! link javascriptDocNotation GruvboxFg4
+hi! link javascriptDocParamType GruvboxFg4
+hi! link javascriptDocNamedParamType GruvboxFg4
 
 " }}}
 " CoffeeScript: {{{
 
-call s:HL('coffeeExtendedOp', s:fg3)
-call s:HL('coffeeSpecialOp', s:fg3)
-call s:HL('coffeeCurly', s:orange)
-call s:HL('coffeeParen', s:fg3)
-call s:HL('coffeeBracket', s:orange)
+hi! link coffeeExtendedOp GruvboxFg3
+hi! link coffeeSpecialOp GruvboxFg3
+hi! link coffeeCurly GruvboxOrange
+hi! link coffeeParen GruvboxFg3
+hi! link coffeeBracket GruvboxOrange
 
 " }}}
 " Ruby: {{{
 
-call s:HL('rubyStringDelimiter', s:green)
-call s:HL('rubyInterpolationDelimiter', s:aqua)
+hi! link rubyStringDelimiter GruvboxGreen
+hi! link rubyInterpolationDelimiter GruvboxAqua
 
 " }}}
 " ObjectiveC: {{{
 
-call s:HL('objcTypeModifier', s:red)
-call s:HL('objcDirective', s:blue)
+hi! link objcTypeModifier GruvboxRed
+hi! link objcDirective GruvboxBlue
 
 " }}}
 " Go: {{{
 
-call s:HL('goDirective', s:aqua)
-call s:HL('goConstants', s:purple)
-call s:HL('goDeclaration', s:red)
-call s:HL('goDeclType', s:blue)
-call s:HL('goBuiltins', s:orange)
+hi! link goDirective GruvboxAqua
+hi! link goConstants GruvboxPurple
+hi! link goDeclaration GruvboxRed
+hi! link goDeclType GruvboxBlue
+hi! link goBuiltins GruvboxOrange
 
 " }}}
 " Lua: {{{
 
-call s:HL('luaIn', s:red)
-call s:HL('luaFunction', s:aqua)
-call s:HL('luaTable', s:orange)
+hi! link luaIn GruvboxRed
+hi! link luaFunction GruvboxAqua
+hi! link luaTable GruvboxOrange
 
 " }}}
 " MoonScript: {{{
 
-call s:HL('moonSpecialOp', s:fg3)
-call s:HL('moonExtendedOp', s:fg3)
-call s:HL('moonFunction', s:fg3)
-call s:HL('moonObject', s:yellow)
+hi! link moonSpecialOp GruvboxFg3
+hi! link moonExtendedOp GruvboxFg3
+hi! link moonFunction GruvboxFg3
+hi! link moonObject GruvboxYellow
 
 " }}}
 " Java: {{{
 
-call s:HL('javaAnnotation', s:blue)
-call s:HL('javaDocTags', s:aqua)
+hi! link javaAnnotation GruvboxBlue
+hi! link javaDocTags GruvboxAqua
 hi! link javaCommentTitle vimCommentTitle
-call s:HL('javaParen', s:fg3)
-call s:HL('javaParen1', s:fg3)
-call s:HL('javaParen2', s:fg3)
-call s:HL('javaParen3', s:fg3)
-call s:HL('javaParen4', s:fg3)
-call s:HL('javaParen5', s:fg3)
-call s:HL('javaOperator', s:orange)
+hi! link javaParen GruvboxFg3
+hi! link javaParen1 GruvboxFg3
+hi! link javaParen2 GruvboxFg3
+hi! link javaParen3 GruvboxFg3
+hi! link javaParen4 GruvboxFg3
+hi! link javaParen5 GruvboxFg3
+hi! link javaOperator GruvboxOrange
 
-call s:HL('javaVarArg', s:green)
+hi! link javaVarArg GruvboxGreen
 
 " }}}
 " Elixir: {{{
 
 hi! link elixirDocString Comment
 
-call s:HL('elixirStringDelimiter', s:green)
-call s:HL('elixirInterpolationDelimiter', s:aqua)
+hi! link elixirStringDelimiter GruvboxGreen
+hi! link elixirInterpolationDelimiter GruvboxAqua
 
 " }}}
 " Scala: {{{
 
 " NB: scala vim syntax file is kinda horrible
-call s:HL('scalaNameDefinition', s:fg1)
-call s:HL('scalaCaseFollowing', s:fg1)
-call s:HL('scalaCapitalWord', s:fg1)
-call s:HL('scalaTypeExtension', s:fg1)
+hi! link scalaNameDefinition GruvboxFg1
+hi! link scalaCaseFollowing GruvboxFg1
+hi! link scalaCapitalWord GruvboxFg1
+hi! link scalaTypeExtension GruvboxFg1
 
-call s:HL('scalaKeyword', s:red)
-call s:HL('scalaKeywordModifier', s:red)
+hi! link scalaKeyword GruvboxRed
+hi! link scalaKeywordModifier GruvboxRed
 
-call s:HL('scalaSpecial', s:aqua)
-call s:HL('scalaOperator', s:fg1)
+hi! link scalaSpecial GruvboxAqua
+hi! link scalaOperator GruvboxFg1
 
-call s:HL('scalaTypeDeclaration', s:yellow)
-call s:HL('scalaTypeTypePostDeclaration', s:yellow)
+hi! link scalaTypeDeclaration GruvboxYellow
+hi! link scalaTypeTypePostDeclaration GruvboxYellow
 
-call s:HL('scalaInstanceDeclaration', s:fg1)
-call s:HL('scalaInterpolation', s:aqua)
+hi! link scalaInstanceDeclaration GruvboxFg1
+hi! link scalaInterpolation GruvboxAqua
 
 " }}}
 " Markdown: {{{
 
 call s:HL('markdownItalic', s:fg3, s:none, s:italic)
 
-call s:HL('markdownH1', s:green, s:none, s:bold)
-call s:HL('markdownH2', s:green, s:none, s:bold)
-call s:HL('markdownH3', s:yellow, s:none, s:bold)
-call s:HL('markdownH4', s:yellow, s:none, s:bold)
-call s:HL('markdownH5', s:yellow)
-call s:HL('markdownH6', s:yellow)
 
-call s:HL('markdownCode', s:aqua)
-call s:HL('markdownCodeBlock', s:aqua)
-call s:HL('markdownCodeDelimiter', s:aqua)
+hi! link markdownH1 GruvboxGreenBold
+hi! link markdownH2 GruvboxGreenBold
+hi! link markdownH3 GruvboxYellowBold
+hi! link markdownH4 GruvboxYellowBold
+hi! link markdownH5 GruvboxYellow
+hi! link markdownH6 GruvboxYellow
+
+hi! link markdownCode GruvboxAqua
+hi! link markdownCodeBlock GruvboxAqua
+hi! link markdownCodeDelimiter GruvboxAqua
 
-call s:HL('markdownBlockquote', s:gray)
-call s:HL('markdownListMarker', s:gray)
-call s:HL('markdownOrderedListMarker', s:gray)
-call s:HL('markdownRule', s:gray)
-call s:HL('markdownHeadingRule', s:gray)
+hi! link markdownBlockquote GruvboxGray
+hi! link markdownListMarker GruvboxGray
+hi! link markdownOrderedListMarker GruvboxGray
+hi! link markdownRule GruvboxGray
+hi! link markdownHeadingRule GruvboxGray
 
-call s:HL('markdownUrlDelimiter', s:fg3)
-call s:HL('markdownLinkDelimiter', s:fg3)
-call s:HL('markdownLinkTextDelimiter', s:fg3)
+hi! link markdownUrlDelimiter GruvboxFg3
+hi! link markdownLinkDelimiter GruvboxFg3
+hi! link markdownLinkTextDelimiter GruvboxFg3
 
-call s:HL('markdownHeadingDelimiter', s:orange)
-call s:HL('markdownUrl', s:purple)
-call s:HL('markdownUrlTitleDelimiter', s:green)
+hi! link markdownHeadingDelimiter GruvboxOrange
+hi! link markdownUrl GruvboxPurple
+hi! link markdownUrlTitleDelimiter GruvboxGreen
 
 call s:HL('markdownLinkText', s:gray, s:none, s:underline)
 call s:HL('markdownIdDeclaration', s:gray, s:none, s:underline)
@@ -1118,44 +1152,44 @@ call s:HL('markdownIdDeclaration', s:gray, s:none, s:underline)
 " }}}
 " Haskell: {{{
 
-" call s:HL('haskellType', s:yellow)
-" call s:HL('haskellOperators', s:orange)
-" call s:HL('haskellConditional', s:aqua)
-" call s:HL('haskellLet', s:orange)
+" hi! link haskellType GruvboxYellow
+" hi! link haskellOperators GruvboxOrange
+" hi! link haskellConditional GruvboxAqua
+" hi! link haskellLet GruvboxOrange
 "
-call s:HL('haskellType', s:fg1)
-call s:HL('haskellIdentifier', s:fg1)
-call s:HL('haskellSeparator', s:fg1)
-call s:HL('haskellDelimiter', s:fg4)
-call s:HL('haskellOperators', s:blue)
+hi! link haskellType GruvboxFg1
+hi! link haskellIdentifier GruvboxFg1
+hi! link haskellSeparator GruvboxFg1
+hi! link haskellDelimiter GruvboxFg4
+hi! link haskellOperators GruvboxBlue
 "
-call s:HL('haskellBacktick', s:orange)
-call s:HL('haskellStatement', s:orange)
-call s:HL('haskellConditional', s:orange)
-
-call s:HL('haskellLet', s:aqua)
-call s:HL('haskellDefault', s:aqua)
-call s:HL('haskellWhere', s:aqua)
-call s:HL('haskellBottom', s:aqua)
-call s:HL('haskellBlockKeywords', s:aqua)
-call s:HL('haskellImportKeywords', s:aqua)
-call s:HL('haskellDeclKeyword', s:aqua)
-call s:HL('haskellDeriving', s:aqua)
-call s:HL('haskellAssocType', s:aqua)
-
-call s:HL('haskellNumber', s:purple)
-call s:HL('haskellPragma', s:purple)
-
-call s:HL('haskellString', s:green)
-call s:HL('haskellChar', s:green)
+hi! link haskellBacktick GruvboxOrange
+hi! link haskellStatement GruvboxOrange
+hi! link haskellConditional GruvboxOrange
+
+hi! link haskellLet GruvboxAqua
+hi! link haskellDefault GruvboxAqua
+hi! link haskellWhere GruvboxAqua
+hi! link haskellBottom GruvboxAqua
+hi! link haskellBlockKeywords GruvboxAqua
+hi! link haskellImportKeywords GruvboxAqua
+hi! link haskellDeclKeyword GruvboxAqua
+hi! link haskellDeriving GruvboxAqua
+hi! link haskellAssocType GruvboxAqua
+
+hi! link haskellNumber GruvboxPurple
+hi! link haskellPragma GruvboxPurple
+
+hi! link haskellString GruvboxGreen
+hi! link haskellChar GruvboxGreen
 
 " }}}
 " Json: {{{
 
-call s:HL('jsonKeyword', s:green)
-call s:HL('jsonQuote', s:green)
-call s:HL('jsonBraces', s:fg1)
-call s:HL('jsonString', s:fg1)
+hi! link jsonKeyword GruvboxGreen
+hi! link jsonQuote GruvboxGreen
+hi! link jsonBraces GruvboxFg1
+hi! link jsonString GruvboxFg1
 
 " }}}
 
@@ -1165,16 +1199,10 @@ call s:HL('jsonString', s:fg1)
 
 function! GruvboxHlsShowCursor()
   call s:HL('Cursor', s:bg0, s:hls_cursor)
-  call s:HL('vCursor', s:bg0, s:hls_cursor)
-  call s:HL('iCursor', s:bg0, s:hls_cursor)
-  call s:HL('lCursor', s:bg0, s:hls_cursor)
 endfunction
 
 function! GruvboxHlsHideCursor()
   call s:HL('Cursor', s:none, s:none, s:inverse)
-  call s:HL('vCursor', s:none, s:none, s:inverse)
-  call s:HL('iCursor', s:none, s:none, s:inverse)
-  call s:HL('lCursor', s:none, s:none, s:inverse)
 endfunction
 
 " }}}