changeset 662:f280738a90a6

[vim] vendor theme and add some more
author nanaya <me@nanaya.pro>
date Fri, 10 Dec 2021 20:20:30 +0900
parents c74dffea6a0a
children 850b04203732
files rc/vim-srcery-drk rc/vimrc setup update-vendor vendor/vim-colors/PaperColor.vim vendor/vim-colors/codedark.vim vendor/vim-colors/srcery.vim
diffstat 7 files changed, 4170 insertions(+), 844 deletions(-) [+]
line wrap: on
line diff
--- a/rc/vim-srcery-drk	Fri Dec 10 19:02:27 2021 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,820 +0,0 @@
-" 'srcery.vim' -- Vim color scheme.
-" Maintainer:   Roosta (mail@roosta.sh)
-" Corruptor: Kudabux
-" Description:  Colorscheme that focus ease of use and clearly defined contrasting colors with a slightly earthy tone.
-
-if version > 580
-  hi clear
-  if exists("syntax_on")
-    syntax reset
-  endif
-endif
-
-let g:colors_name='srcery'
-
-if !has('gui_running') && &t_Co != 256
-  finish
-endif
-
-" Palette {{{
-
-let s:black          = ["#1C1B19", 0]
-let s:red            = ["#FF3128", 1]
-let s:green          = ["#519F50", 2]
-let s:yellow         = ["#FBB829", 3]
-let s:blue           = ["#5573A3", 4]
-let s:magenta        = ["#E02C6D", 5]
-let s:cyan           = ["#0AAEB3", 6]
-let s:gray           = ["#918175", 7]
-let s:bright_black   = ["#2D2C29", 8]
-let s:bright_red     = ["#F75341", 9]
-let s:bright_green   = ["#98BC37", 10]
-let s:bright_yellow  = ["#FED06E", 11]
-let s:bright_blue    = ["#8EB2F7", 12]
-let s:bright_magenta = ["#E35682", 13]
-let s:bright_cyan    = ["#53FDE9", 14]
-let s:white          = ["#FCE8C3", 15]
-
-" default xterm colors.
-let s:orange        = ['#D75F00', 166]  
-let s:bright_orange = ['#FF8700', 208]
-let s:hard_black    = ['#080808', 232]
-let s:gray_alt      = ['#4E4E4E', 239]
-
-"}}}
-" Setup Variables: {{{
-
-let s:none = ['NONE', 'NONE']
-
-if !exists('g:srcery_bold')
-  let g:srcery_bold=1
-endif
-
-if !exists('g:srcery_italic')
-  if has('gui_running') || $TERM_ITALICS == 'true'
-    let g:srcery_italic=1
-  else
-    let g:srcery_italic=0
-  endif
-endif
-
-if !exists('g:srcery_undercurl')
-  let g:srcery_undercurl=1
-endif
-
-if !exists('g:srcery_underline')
-  let g:srcery_underline=1
-endif
-
-if !exists('g:srcery_inverse')
-  let g:srcery_inverse=1
-endif
-
-" }}}
-" Setup Emphasis: {{{
-
-let s:bold = 'bold,'
-if g:srcery_bold == 0
-  let s:bold = ''
-endif
-
-let s:italic = 'italic,'
-if g:srcery_italic == 0
-  let s:italic = ''
-endif
-
-let s:underline = 'underline,'
-if g:srcery_underline == 0
-  let s:underline = ''
-endif
-
-let s:undercurl = 'undercurl,'
-if g:srcery_undercurl == 0
-  let s:undercurl = ''
-endif
-
-let s:inverse = 'inverse,'
-if g:srcery_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
-"}}}
-" Srcery Hi Groups: {{{
-
-" memoize common hi groups
-call s:HL('SrceryWhite', s:white)
-call s:HL('SrceryRed', s:red)
-call s:HL('SrceryGreen', s:green)
-call s:HL('SrceryYellow', s:yellow)
-call s:HL('SrceryBlue', s:blue)
-call s:HL('SrceryMagenta', s:magenta)
-call s:HL('SrceryCyan', s:cyan)
-
-call s:HL('SrceryRedbold', s:red, s:none, s:bold)
-call s:HL('SrceryGreenbold', s:green, s:none, s:bold)
-call s:HL('SrceryYellowbold', s:yellow, s:none, s:bold)
-call s:HL('SrceryBluebold', s:blue, s:none, s:bold)
-call s:HL('SrceryMagentabold', s:magenta, s:none, s:bold)
-call s:HL('SrceryCyanbold', s:cyan, s:none, s:bold)
-
-call s:HL('SrceryBrightRed', s:bright_red, s:none)
-call s:HL('SrceryBrightGreen', s:bright_green, s:none)
-call s:HL('SrceryBrightYellow', s:bright_yellow, s:none)
-call s:HL('SrceryBrightBlue', s:bright_blue, s:none)
-call s:HL('SrceryBrightMagenta', s:bright_magenta, s:none)
-call s:HL('SrceryBrightCyan', s:bright_cyan, s:none)
-
-" special
-call s:HL('SrceryOrange', s:orange)
-call s:HL('SrceryOrangeBold', s:orange, s:none, s:bold)
-call s:HL('SrceryGrayAlt', s:gray_alt)
-call s:HL('SrceryHardBlack', s:hard_black)
-
-" }}}
-
-" Vanilla colorscheme ---------------------------------------------------------
-" General UI: {{{
-
-" Normal text
-call s:HL('Normal', s:white, s:black)
-
-if version >= 700
-  " Screen line that the cursor is
-  call s:HL('CursorLine',   s:none, s:bright_black)
-  " Screen column that the cursor is
-  hi! link CursorColumn CursorLine
-
-  " Tab pages line filler
-  call s:HL('TabLineFill', s:green, s:black)
-  " Active tab page label
-  call s:HL('TabLineSel', s:red, s:black, s:bold)
-  " Not active tab page label
-  hi! link TabLine TabLineFill
-
-  " Match paired bracket under the cursor
-  call s:HL('MatchParen', s:yellow, s:bright_black, s:bold)
-endif
-
-if version >= 703
-  " Highlighted screen columns
-  call s:HL('ColorColumn',  s:none, s:bright_black)
-
-  " Concealed element: \lambda → λ
-  call s:HL('Conceal', s:blue, s:none)
-
-  " Line number of CursorLine
-  call s:HL('CursorLineNr', s:yellow, s:black)
-endif
-
-hi! link NonText SrceryGrayAlt
-hi! link SpecialKey SrceryGrayAlt
-
-call s:HL('Visual',    s:none,  s:black, s:inverse)
-hi! link VisualNOS Visual
-
-call s:HL('Search',    s:black, s:yellow)
-call s:HL('IncSearch', s:black, s:yellow)
-
-call s:HL('Underlined', s:blue, s:none, s:underline)
-
-call s:HL('StatusLine',   s:white, s:bright_black)
-call s:HL('StatusLineNC', s:white, s:bright_black, s:underline)
-
-" The column separating vertically split windows
-call s:HL('VertSplit', s:bright_black, s:bright_black)
-
-" Current match in wildmenu completion
-call s:HL('WildMenu', s:blue, s:black, s:bold)
-
-" Directory names, special names in listing
-hi! link Directory SrceryGreenBold
-
-" Titles for output from :set all, :autocmd, etc.
-hi! link Title SrceryGreenBold
-
-" Error messages on the command line
-call s:HL('ErrorMsg',   s:white, s:red)
-" More prompt: -- More --
-hi! link MoreMsg SrceryYellowBold
-" Current mode message: -- INSERT --
-hi! link ModeMsg SrceryYellowBold
-" 'Press enter' prompt and yes/no questions
-hi! link Question SrceryOrangeBold
-" Warning messages
-hi! link WarningMsg SrceryRedBold
-
-" }}}
-" Gutter: {{{
-
-" Line number for :number and :# commands
-call s:HL('LineNr', s:gray)
-
-" Column where signs are displayed
-call s:HL('SignColumn', s:none, s:black)
-
-" Line used for closed folds
-call s:HL('Folded', s:gray, s:black, s:italic)
-" Column where folds are displayed
-call s:HL('FoldColumn', s:gray, s:black)
-
-" }}}
-" Cursor: {{{
-
-" Character under cursor
-call s:HL('Cursor', s:none, s:none, s:inverse)
-" Visual mode cursor, selection
-hi! link vCursor Cursor
-" Input moder cursor
-hi! link iCursor Cursor
-" Language mapping cursor
-hi! link lCursor Cursor
-
-" }}}
-" Syntax Highlighting: {{{
-
-hi! link Special SrceryOrange
-
-call s:HL('Comment', s:gray, s:none, s:italic)
-call s:HL('Todo', s:white, s:black, s:bold . s:italic)
-call s:HL('Error', s:red, s:black, s:bold . s:inverse)
-
-" String constant: "this is a string"
-call s:HL('String',  s:bright_green)
-
-" Generic statement
-hi! link Statement SrceryRed
-" if, then, else, endif, swicth, etc.
-hi! link Conditional SrceryRed
-" for, do, while, etc.
-hi! link Repeat SrceryRed
-" case, default, etc.
-hi! link Label SrceryRed
-" try, catch, throw
-hi! link Exception SrceryRed
-" sizeof, "+", "*", etc.
-hi! link Operator Normal
-" Any other keyword
-hi! link Keyword SrceryRed
-
-" Variable name
-hi! link Identifier SrceryBlue
-" Function name
-hi! link Function SrceryGreenBold
-
-" Generic preprocessor
-hi! link PreProc SrceryCyan
-" Preprocessor #include
-hi! link Include SrceryCyan
-" Preprocessor #define
-hi! link Define SrceryCyan
-" Same as Define
-hi! link Macro SrceryCyan
-" Preprocessor #if, #else, #endif, etc.
-hi! link PreCondit SrceryCyan
-
-" Generic constant
-hi! link Constant SrceryBrightMagenta
-" Character constant: 'c', '/n'
-hi! link Character SrceryBrightMagenta
-" Boolean constant: TRUE, false
-hi! link Boolean SrceryBrightMagenta
-" Number constant: 234, 0xff
-hi! link Number SrceryBrightMagenta
-" Floating point constant: 2.3e10
-hi! link Float SrceryBrightMagenta
-
-" Generic type
-hi! link Type SrceryYellow
-" static, register, volatile, etc
-hi! link StorageClass SrceryOrange
-" struct, union, enum, etc.
-hi! link Structure SrceryCyan
-" typedef
-hi! link Typedef SrceryYellow
-
-" }}}
-" Completion Menu: {{{
-
-if version >= 700
-  " Popup menu: normal item
-  call s:HL('Pmenu', s:white, s:black)
-  " Popup menu: selected item
-  call s:HL('PmenuSel', s:black, s:blue, s:bold)
-  " Popup menu: scrollbar
-  call s:HL('PmenuSbar', s:none, s:black)
-  " Popup menu: scrollbar thumb
-  call s:HL('PmenuThumb', s:none, s:black)
-endif
-
-" }}}
-" Diffs: {{{
-
-call s:HL('DiffDelete', s:red, s:black, s:inverse)
-call s:HL('DiffAdd',    s:green, s:black, s:inverse)
-"call s:HL('DiffChange', s:black, s:blue)
-"call s:HL('DiffText',   s:black, s:yellow)
-
-" Alternative setting
-call s:HL('DiffChange', s:cyan, s:black, s:inverse)
-call s:HL('DiffText',   s:yellow, s:black, s:inverse)
-
-" }}}
-" Spelling: {{{
-
-if has("spell")
-  " Not capitalised word, or compile warnings
-  call s:HL('SpellCap',   s:green, s:none, s:bold . s:italic)
-  " Not recognized word
-  call s:HL('SpellBad',   s:none, s:none, s:undercurl, s:blue)
-  " Wrong spelling for selected region
-  call s:HL('SpellLocal', s:none, s:none, s:undercurl, s:cyan)
-  " Rare word
-  call s:HL('SpellRare',  s:none, s:none, s:undercurl, s:magenta)
-endif
-
-" }}}
-
-" Plugin specific -------------------------------------------------------------
-" Sneak: {{{
-
-hi! link SneakPluginTarget Search
-hi! link SneakStreakTarget Search
-call s:HL('SneakStreakMask', s:yellow, s:yellow)
-hi! link SneakStreakStatusLine Search
-
-" }}}
-" Rainbow Parentheses: {{{
-
-if !exists('g:rbpt_colorpairs')
-  let g:rbpt_colorpairs =
-    \ [
-      \ ['blue', '#458588'], ['magenta', '#b16286'],
-      \ ['red',  '#cc241d'], ['166',     '#d65d0e']
-    \ ]
-endif
-
-let g:rainbow_guifgs = [ '#d65d0e', '#cc241d', '#b16286', '#458588' ]
-let g:rainbow_ctermfgs = [ '166', 'red', 'magenta', 'blue' ]
-
-if !exists('g:rainbow_conf')
-   let g:rainbow_conf = {}
-endif
-if !has_key(g:rainbow_conf, 'guifgs')
-   let g:rainbow_conf['guifgs'] = g:rainbow_guifgs
-endif
-if !has_key(g:rainbow_conf, 'ctermfgs')
-   let g:rainbow_conf['ctermfgs'] = g:rainbow_ctermfgs
-endif
-
-let g:niji_dark_colours = g:rbpt_colorpairs
-let g:niji_light_colours = g:rbpt_colorpairs
-
-"}}}
-" GitGutter: {{{
-
-hi! link GitGutterAdd SrceryGreen
-hi! link GitGutterChange SrceryCyan
-hi! link GitGutterDelete SrceryRed
-hi! link GitGutterChangeDelete SrceryCyan
-
-" }}}
-" GitCommit: "{{{
-
-hi! link gitcommitSelectedFile SrceryGreen
-hi! link gitcommitDiscardedFile SrceryRed
-
-" }}}
-
-" Filetype specific -----------------------------------------------------------
-" Diff: {{{
-
-hi! link diffAdded SrceryGreen
-hi! link diffRemoved SrceryRed
-hi! link diffChanged SrceryCyan
-
-hi! link diffFile SrceryOrange
-hi! link diffNewFile SrceryYellow
-
-hi! link diffLine SrceryBlue
-
-" }}}
-" Html: {{{
-
-hi! link htmlTag SrceryBlue
-hi! link htmlEndTag SrceryBlue
-
-hi! link htmlTagName SrceryCyanBold
-hi! link htmlArg SrceryCyan
-
-hi! link htmlScriptTag SrceryMagenta
-hi! link htmlTagN SrceryFg1
-hi! link htmlSpecialTagName SrceryCyanBold
-
-call s:HL('htmlLink', s:white, s:none, s:underline)
-
-hi! link htmlSpecialChar SrceryYellow
-
-call s:HL('htmlBold', s:white, s:black, s:bold)
-call s:HL('htmlBoldUnderline', s:white, s:black, s:bold . s:underline)
-call s:HL('htmlBoldItalic', s:white, s:black, s:bold . s:italic)
-call s:HL('htmlBoldUnderlineItalic', s:white, s:black, s:bold . s:underline . s:italic)
-
-call s:HL('htmlUnderline', s:white, s:black, s:underline)
-call s:HL('htmlUnderlineItalic', s:white, s:black, s:underline . s:italic)
-call s:HL('htmlItalic', s:white, s:black, s:italic)
-
-" }}}
-" Xml: {{{
-
-hi! link xmlTag SrceryBlue
-hi! link xmlEndTag SrceryBlue
-hi! link xmlTagName SrceryBlue
-hi! link xmlEqual SrceryBlue
-hi! link docbkKeyword SrceryCyanBold
-
-hi! link xmlDocTypeDecl SrceryGray
-hi! link xmlDocTypeKeyword SrceryMagenta
-hi! link xmlCdataStart SrceryGray
-hi! link xmlCdataCdata SrceryMagenta
-hi! link dtdFunction SrceryGray
-hi! link dtdTagName SrceryMagenta
-
-hi! link xmlAttrib SrceryCyan
-hi! link xmlProcessingDelim SrceryGray
-hi! link dtdParamEntityPunct SrceryGray
-hi! link dtdParamEntityDPunct SrceryGray
-hi! link xmlAttribPunct SrceryGray
-
-hi! link xmlEntity SrceryYellow
-hi! link xmlEntityPunct SrceryYellow
-" }}}
-" Vim: {{{
-
-call s:HL('vimCommentTitle', s:white, s:none, s:bold . s:italic)
-
-hi! link vimNotation SrceryYellow
-hi! link vimBracket SrceryYellow
-hi! link vimMapModKey SrceryYellow
-hi! link vimFuncSID SrceryWhite
-hi! link vimSetSep SrceryWhite
-hi! link vimSep SrceryWhite
-hi! link vimContinue SrceryWhite
-
-" }}}
-" Clojure: {{{
-
-hi! link clojureKeyword SrceryBlue
-hi! link clojureCond SrceryOrange
-hi! link clojureSpecial SrceryOrange
-hi! link clojureDefine SrceryOrange
-
-hi! link clojureFunc SrceryYellow
-hi! link clojureRepeat SrceryYellow
-hi! link clojureCharacter SrceryCyan
-hi! link clojureStringEscape SrceryCyan
-hi! link clojureException SrceryRed
-
-hi! link clojureRegexp SrceryCyan
-hi! link clojureRegexpEscape SrceryCyan
-call s:HL('clojureRegexpCharClass', s:white, s:none, s:bold)
-hi! link clojureRegexpMod clojureRegexpCharClass
-hi! link clojureRegexpQuantifier clojureRegexpCharClass
-
-hi! link clojureParen SrceryFg3
-hi! link clojureAnonArg SrceryYellow
-hi! link clojureVariable SrceryBlue
-hi! link clojureMacro SrceryOrange
-
-hi! link clojureMeta SrceryYellow
-hi! link clojureDeref SrceryYellow
-hi! link clojureQuote SrceryYellow
-hi! link clojureUnquote SrceryYellow
-" }}}
-" C: {{{
-
-hi! link cOperator SrceryMagenta
-hi! link cStructure SrceryYellow
-
-" }}}
-" Python: {{{
-
-hi! link pythonBuiltin SrceryYellow
-hi! link pythonBuiltinObj SrceryYellow
-hi! link pythonBuiltinFunc SrceryYellow
-hi! link pythonFunction SrceryCyan
-hi! link pythonDecorator SrceryRed
-hi! link pythonInclude SrceryBlue
-hi! link pythonImport SrceryBlue
-hi! link pythonRun SrceryBlue
-hi! link pythonCoding SrceryBlue
-hi! link pythonOperator SrceryRed
-hi! link pythonExceptions SrceryMagenta
-hi! link pythonBoolean SrceryMagenta
-hi! link pythonDot SrceryWhite
-
-" }}}
-" CSS: {{{
-
-hi! link cssBraces SrceryBlue
-hi! link cssFunctionName SrceryYellow
-hi! link cssIdentifier SrceryYellow
-hi! link cssClassName SrceryGreen
-hi! link cssColor SrceryBlue
-hi! link cssSelectorOp SrceryBlue
-hi! link cssSelectorOp2 SrceryBlue
-hi! link cssImportant SrceryGreen
-hi! link cssVendor SrceryFg1
-
-hi! link cssTextProp SrceryCyan
-hi! link cssAnimationProp SrceryCyan
-hi! link cssUIProp SrceryYellow
-hi! link cssTransformProp SrceryCyan
-hi! link cssTransitionProp SrceryCyan
-hi! link cssPrintProp SrceryCyan
-hi! link cssPositioningProp SrceryYellow
-hi! link cssBoxProp SrceryCyan
-hi! link cssFontDescriptorProp SrceryCyan
-hi! link cssFlexibleBoxProp SrceryCyan
-hi! link cssBorderOutlineProp SrceryCyan
-hi! link cssBackgroundProp SrceryCyan
-hi! link cssMarginProp SrceryCyan
-hi! link cssListProp SrceryCyan
-hi! link cssTableProp SrceryCyan
-hi! link cssFontProp SrceryCyan
-hi! link cssPaddingProp SrceryCyan
-hi! link cssDimensionProp SrceryCyan
-hi! link cssRenderProp SrceryCyan
-hi! link cssColorProp SrceryCyan
-hi! link cssGeneratedContentProp SrceryCyan
-
-" }}}
-" JavaScript: {{{
-
-hi! link javaScriptBraces SrceryFg1
-hi! link javaScriptFunction SrceryCyan
-hi! link javaScriptIdentifier SrceryRed
-hi! link javaScriptMember SrceryBlue
-hi! link javaScriptNumber SrceryMagenta
-hi! link javaScriptNull SrceryMagenta
-hi! link javaScriptParens SrceryWhite
-
-" }}}
-" YAJS: {{{
-
-hi! link javascriptImport SrceryCyan
-hi! link javascriptExport SrceryCyan
-hi! link javascriptClassKeyword SrceryCyan
-hi! link javascriptClassExtends SrceryCyan
-hi! link javascriptDefault SrceryCyan
-
-hi! link javascriptClassName SrceryYellow
-hi! link javascriptClassSuperName SrceryYellow
-hi! link javascriptGlobal SrceryYellow
-
-hi! link javascriptEndColons SrceryFg1
-hi! link javascriptFuncArg SrceryFg1
-hi! link javascriptGlobalMethod SrceryFg1
-hi! link javascriptNodeGlobal SrceryFg1
-
-" hi! link javascriptVariable SrceryYellow
-hi! link javascriptVariable SrceryRed
-" hi! link javascriptIdentifier SrceryYellow
-" hi! link javascriptClassSuper SrceryYellow
-hi! link javascriptIdentifier SrceryYellow
-hi! link javascriptClassSuper SrceryYellow
-
-" hi! link javascriptFuncKeyword SrceryYellow
-" hi! link javascriptAsyncFunc SrceryYellow
-hi! link javascriptFuncKeyword SrceryCyan
-hi! link javascriptAsyncFunc SrceryCyan
-hi! link javascriptClassStatic SrceryYellow
-
-hi! link javascriptOperator SrceryRed
-hi! link javascriptForOperator SrceryRed
-hi! link javascriptYield SrceryRed
-hi! link javascriptExceptions SrceryRed
-hi! link javascriptMessage SrceryRed
-
-hi! link javascriptTemplateSB SrceryCyan
-hi! link javascriptTemplateSubstitution SrceryFg1
-
-" hi! link javascriptLabel SrceryBlue
-" hi! link javascriptObjectLabel SrceryBlue
-" hi! link javascriptPropertyName SrceryBlue
-hi! link javascriptLabel SrceryFg1
-hi! link javascriptObjectLabel SrceryFg1
-hi! link javascriptPropertyName SrceryFg1
-
-hi! link javascriptLogicSymbols SrceryFg1
-hi! link javascriptArrowFunc SrceryFg1
-
-hi! link javascriptDocParamName SrceryFg4
-hi! link javascriptDocTags SrceryFg4
-hi! link javascriptDocNotation SrceryFg4
-hi! link javascriptDocParamType SrceryFg4
-hi! link javascriptDocNamedParamType SrceryFg4
-
-" }}}
-" CoffeeScript: {{{
-
-hi! link coffeeExtendedOp SrceryWhite
-hi! link coffeeSpecialOp SrceryWhite
-hi! link coffeeCurly SrceryYellow
-hi! link coffeeParen SrceryWhite
-hi! link coffeeBracket SrceryYellow
-
-" }}}
-" Ruby: {{{
-
-hi! link rubyStringDelimiter SrceryGreen
-hi! link rubyInterpolationDelimiter SrceryCyan
-
-" }}}
-" ObjectiveC: {{{
-
-hi! link objcTypeModifier SrceryRed
-hi! link objcDirective SrceryBlue
-
-" }}}
-" Go: {{{
-
-hi! link goDirective SrceryCyan
-hi! link goConstants SrceryMagenta
-hi! link goDeclaration SrceryRed
-hi! link goDeclType SrceryBlue
-hi! link goBuiltins SrceryYellow
-
-" }}}
-" Lua: {{{
-
-hi! link luaIn SrceryRed
-hi! link luaFunction SrceryCyan
-hi! link luaTable SrceryYellow
-
-" }}}
-" MoonScript: {{{
-
-hi! link moonSpecialOp SrceryWhite
-hi! link moonExtendedOp SrceryWhite
-hi! link moonFunction SrceryWhite
-hi! link moonObject SrceryYellow
-
-" }}}
-" Java: {{{
-
-hi! link javaAnnotation SrceryBlue
-hi! link javaDocTags SrceryCyan
-hi! link javaCommentTitle vimCommentTitle
-hi! link javaParen SrceryWhite
-hi! link javaParen1 SrceryWhite
-hi! link javaParen2 SrceryWhite
-hi! link javaParen3 SrceryWhite
-hi! link javaParen4 SrceryWhite
-hi! link javaParen5 SrceryWhite
-hi! link javaOperator SrceryYellow
-
-hi! link javaVarArg SrceryGreen
-
-" }}}
-" Elixir: {{{
-
-hi! link elixirDocString Comment
-
-hi! link elixirStringDelimiter SrceryGreen
-hi! link elixirInterpolationDelimiter SrceryCyan
-
-" }}}
-" Scala: {{{
-
-" NB: scala vim syntax file is kinda horrible
-hi! link scalaNameDefinition SrceryFg1
-hi! link scalaCaseFollowing SrceryFg1
-hi! link scalaCapitalWord SrceryFg1
-hi! link scalaTypeExtension SrceryFg1
-
-hi! link scalaKeyword SrceryRed
-hi! link scalaKeywordModifier SrceryRed
-
-hi! link scalaSpecial SrceryCyan
-hi! link scalaOperator SrceryFg1
-
-hi! link scalaTypeDeclaration SrceryYellow
-hi! link scalaTypeTypePostDeclaration SrceryYellow
-
-hi! link scalaInstanceDeclaration SrceryFg1
-hi! link scalaInterpolation SrceryCyan
-
-" }}}
-" Markdown: {{{
-
-call s:HL('markdownItalic', s:white, s:none, s:italic)
-
-hi! link markdownH1 SrceryGreenBold
-hi! link markdownH2 SrceryGreenBold
-hi! link markdownH3 SrceryYellowBold
-hi! link markdownH4 SrceryYellowBold
-hi! link markdownH5 SrceryYellow
-hi! link markdownH6 SrceryYellow
-
-hi! link markdownCode SrceryCyan
-hi! link markdownCodeBlock SrceryCyan
-hi! link markdownCodeDelimiter SrceryCyan
-
-hi! link markdownBlockquote SrceryGray
-hi! link markdownListMarker SrceryGray
-hi! link markdownOrderedListMarker SrceryGray
-hi! link markdownRule SrceryGray
-hi! link markdownHeadingRule SrceryGray
-
-hi! link markdownUrlDelimiter SrceryWhite
-hi! link markdownLinkDelimiter SrceryWhite
-hi! link markdownLinkTextDelimiter SrceryWhite
-
-hi! link markdownHeadingDelimiter SrceryYellow
-hi! link markdownUrl SrceryMagenta
-hi! link markdownUrlTitleDelimiter SrceryGreen
-
-call s:HL('markdownLinkText', s:gray, s:none, s:underline)
-hi! link markdownIdDeclaration markdownLinkText
-
-" }}}
-" Haskell: {{{
-
-" hi! link haskellType SrceryYellow
-" hi! link haskellOperators SrceryYellow
-" hi! link haskellConditional SrceryCyan
-" hi! link haskellLet SrceryYellow
-"
-hi! link haskellType SrceryFg1
-hi! link haskellIdentifier SrceryFg1
-hi! link haskellSeparator SrceryFg1
-hi! link haskellDelimiter SrceryFg4
-hi! link haskellOperators SrceryBlue
-"
-hi! link haskellBacktick SrceryYellow
-hi! link haskellStatement SrceryYellow
-hi! link haskellConditional SrceryYellow
-
-hi! link haskellLet SrceryCyan
-hi! link haskellDefault SrceryCyan
-hi! link haskellWhere SrceryCyan
-hi! link haskellBottom SrceryCyan
-hi! link haskellBlockKeywords SrceryCyan
-hi! link haskellImportKeywords SrceryCyan
-hi! link haskellDeclKeyword SrceryCyan
-hi! link haskellDeriving SrceryCyan
-hi! link haskellAssocType SrceryCyan
-
-hi! link haskellNumber SrceryMagenta
-hi! link haskellPragma SrceryMagenta
-
-hi! link haskellString SrceryGreen
-hi! link haskellChar SrceryGreen
-
-" }}}
-" Json: {{{
-
-hi! link jsonKeyword SrceryGreen
-hi! link jsonQuote SrceryGreen
-hi! link jsonBraces SrceryFg1
-hi! link jsonString SrceryFg1
-
-" }}}
-
-" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker:
--- a/rc/vimrc	Fri Dec 10 19:02:27 2021 +0900
+++ b/rc/vimrc	Fri Dec 10 20:20:30 2021 +0900
@@ -85,7 +85,7 @@
   set nofoldenable
   set background=dark
 
-  colorscheme srcery-drk
+  colorscheme srcery
 endif
 
 if has("autocmd")
--- a/setup	Fri Dec 10 19:02:27 2021 +0900
+++ b/setup	Fri Dec 10 20:20:30 2021 +0900
@@ -142,32 +142,18 @@
   done
 }
 
-_vim_autoload() {
+_vim_x() {
   case "${1}" in
     install) _echon "Copying";;
     uninstall) _echon "Removing";;
   esac
-  _echon " vim autoloads..."
-
-  for i in "${basedir}/vendor/vim-autoload"/*.vim; do
-    autoload_file_name="`basename "/${i}"`"
-    _echon "[${autoload_file_name}]"
-    _rc "${1}" "../vendor/vim-autoload/${autoload_file_name}" ".vim/autoload/${autoload_file_name}" > /dev/null
-  done
-  _echo ...done
-}
+  x="${2}"
+  _echon " vim ${x}..."
 
-_vim_syntax() {
-  case "${1}" in
-    install) _echon "Copying";;
-    uninstall) _echon "Removing";;
-  esac
-  _echon " vim syntaxes..."
-
-  for i in "${basedir}/vendor/vim-syntax"/*.vim; do
-    syntax_file_name="`basename "/${i}"`"
-    _echon "[${syntax_file_name}]"
-    _rc "${1}" "../vendor/vim-syntax/${syntax_file_name}" ".vim/syntax/${syntax_file_name}" > /dev/null
+  for i in "${basedir}/vendor/vim-${x}"/*.vim; do
+    file_name="`basename "/${i}"`"
+    _echon "[${file_name}]"
+    _rc "${1}" "../vendor/vim-${x}/${file_name}" ".vim/${x}/${file_name}" > /dev/null
   done
   _echo ...done
 }
@@ -210,8 +196,9 @@
     _rc "${1}" "inputrc" ".inputrc"
     _tmux "${1}"
     _rc "${1}" "vim-srcery-drk" ".vim/colors/srcery-drk.vim"
-    _vim_syntax "${1}"
-    _vim_autoload "${1}"
+    _vim_x "${1}" autoload
+    _vim_x "${1}" colors
+    _vim_x "${1}" syntax
     _rc "${1}" "vimrc" ".vimrc"
     _rc "${1}" "irbrc" ".irbrc"
   ;;
--- a/update-vendor	Fri Dec 10 19:02:27 2021 +0900
+++ b/update-vendor	Fri Dec 10 20:20:30 2021 +0900
@@ -46,3 +46,12 @@
   # _get https://raw.githubusercontent.com/vim/vim/master/runtime/syntax/typescriptcommon.vim
   # _get https://raw.githubusercontent.com/vim/vim/master/runtime/syntax/typescriptreact.vim
 )
+
+(
+  cd "$(dirname "$0")/vendor/vim-colors"
+
+  rm -f *.vim
+  _get https://raw.githubusercontent.com/NLKNguyen/papercolor-theme/master/colors/PaperColor.vim
+  _get https://raw.githubusercontent.com/srcery-colors/srcery-vim/master/colors/srcery.vim
+  _get https://raw.githubusercontent.com/tomasiser/vim-code-dark/master/colors/codedark.vim
+)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/vim-colors/PaperColor.vim	Fri Dec 10 20:20:30 2021 +0900
@@ -0,0 +1,2296 @@
+" Theme: PaperColor
+" Author: Nikyle Nguyen <NLKNguyen@MSN.com>
+" License: MIT
+" Source: http://github.com/NLKNguyen/papercolor-theme
+
+let s:version = '0.9.x'
+
+" Note on navigating this source code:
+" - Use folding feature to collapse/uncollapse blocks of marked code
+"     zM to fold all markers in this file to see the structure of the source code
+"     zR to unfold all recursively
+"     za to toggle a fold
+"     See: http://vim.wikia.com/wiki/Folding
+" - The main section is at the end where the functions are called in order.
+
+" Theme Repository: {{{
+
+let s:themes = {}
+
+" }}}
+
+fun! s:register_default_theme()
+  " Theme name should be lowercase
+  let s:themes['default'] = {
+        \   'maintainer'  : 'Nikyle Nguyen <me@Nikyle.com>',
+        \   'source' : 'http://github.com/NLKNguyen/papercolor-theme',
+        \   'description' : 'The original PaperColor Theme, inspired by Google Material Design',
+        \   'options' : {
+        \       'allow_bold': 1
+        \    }
+        \ }
+
+  " Theme can have 'light' and/or 'dark' color palette.
+  " Color values can be HEX and/or 256-color. Use empty string '' if not provided.
+  " Only color00 -> color15 are required. The rest are optional.
+  let s:themes['default'].light = {
+        \     'NO_CONVERSION': 1,
+        \     'TEST_256_COLOR_CONSISTENCY' : 1,
+        \     'palette' : {
+        \       'color00' : ['#eeeeee', '255'],
+        \       'color01' : ['#af0000', '124'],
+        \       'color02' : ['#008700', '28'],
+        \       'color03' : ['#5f8700', '64'],
+        \       'color04' : ['#0087af', '31'],
+        \       'color05' : ['#878787', '102'],
+        \       'color06' : ['#005f87', '24'],
+        \       'color07' : ['#444444', '238'],
+        \       'color08' : ['#bcbcbc', '250'],
+        \       'color09' : ['#d70000', '160'],
+        \       'color10' : ['#d70087', '162'],
+        \       'color11' : ['#8700af', '91'],
+        \       'color12' : ['#d75f00', '166'],
+        \       'color13' : ['#d75f00', '166'],
+        \       'color14' : ['#005faf', '25'],
+        \       'color15' : ['#005f87', '24'],
+        \       'color16' : ['#0087af', '31'],
+        \       'color17' : ['#008700', '28'],
+        \       'cursor_fg' : ['#eeeeee', '255'],
+        \       'cursor_bg' : ['#005f87', '24'],
+        \       'cursorline' : ['#e4e4e4', '254'],
+        \       'cursorcolumn' : ['#e4e4e4', '254'],
+        \       'cursorlinenr_fg' : ['#af5f00', '130'],
+        \       'cursorlinenr_bg' : ['#eeeeee', '255'],
+        \       'popupmenu_fg' : ['#444444', '238'],
+        \       'popupmenu_bg' : ['#d0d0d0', '252'],
+        \       'search_fg' : ['#444444', '238'],
+        \       'search_bg' : ['#ffff5f', '227'],
+        \       'linenumber_fg' : ['#b2b2b2', '249'],
+        \       'linenumber_bg' : ['#eeeeee', '255'],
+        \       'vertsplit_fg' : ['#005f87', '24'],
+        \       'vertsplit_bg' : ['#eeeeee', '255'],
+        \       'statusline_active_fg' : ['#e4e4e4', '254'],
+        \       'statusline_active_bg' : ['#005f87', '24'],
+        \       'statusline_inactive_fg' : ['#444444', '238'],
+        \       'statusline_inactive_bg' : ['#d0d0d0', '252'],
+        \       'todo_fg' : ['#00af5f', '35'],
+        \       'todo_bg' : ['#eeeeee', '255'],
+        \       'error_fg' : ['#af0000', '124'],
+        \       'error_bg' : ['#ffd7ff', '225'],
+        \       'matchparen_bg' : ['#c6c6c6', '251'],
+        \       'matchparen_fg' : ['#005f87', '24'],
+        \       'visual_fg' : ['#eeeeee', '255'],
+        \       'visual_bg' : ['#0087af', '31'],
+        \       'folded_fg' : ['#0087af', '31'],
+        \       'folded_bg' : ['#afd7ff', '153'],
+        \       'wildmenu_fg': ['#444444', '238'],
+        \       'wildmenu_bg': ['#ffff00', '226'],
+        \       'spellbad':   ['#ffafd7', '218'],
+        \       'spellcap':   ['#ffffaf', '229'],
+        \       'spellrare':  ['#afff87', '156'],
+        \       'spelllocal': ['#d7d7ff', '189'],
+        \       'diffadd_fg':    ['#008700', '28'],
+        \       'diffadd_bg':    ['#afffaf', '157'],
+        \       'diffdelete_fg': ['#af0000', '124'],
+        \       'diffdelete_bg': ['#ffd7ff', '225'],
+        \       'difftext_fg':   ['#0087af', '31'],
+        \       'difftext_bg':   ['#ffffd7', '230'],
+        \       'diffchange_fg': ['#444444', '238'],
+        \       'diffchange_bg': ['#ffd787', '222'],
+        \       'tabline_bg':          ['#005f87', '24'],
+        \       'tabline_active_fg':   ['#444444', '238'],
+        \       'tabline_active_bg':   ['#e4e4e4', '254'],
+        \       'tabline_inactive_fg': ['#eeeeee', '255'],
+        \       'tabline_inactive_bg': ['#0087af', '31'],
+        \       'buftabline_bg':          ['#005f87', '24'],
+        \       'buftabline_current_fg':  ['#444444', '238'],
+        \       'buftabline_current_bg':  ['#e4e4e4', '254'],
+        \       'buftabline_active_fg':   ['#eeeeee', '255'],
+        \       'buftabline_active_bg':   ['#005faf', '25'],
+        \       'buftabline_inactive_fg': ['#eeeeee', '255'],
+        \       'buftabline_inactive_bg': ['#0087af', '31']
+        \     }
+        \   }
+
+  " TODO: idea for subtheme options
+  " let s:themes['default'].light.subtheme = {
+  "       \     'alternative' : {
+  "       \         'options' : {
+  "       \           'transparent_background': 1
+  "       \         },
+  "       \         'palette' : {
+  "       \         }
+  "       \     }
+  "       \ }
+
+  let s:themes['default'].dark = {
+        \     'NO_CONVERSION': 1,
+        \     'TEST_256_COLOR_CONSISTENCY' : 1,
+        \     'palette' : {
+        \       'color00' : ['#1c1c1c', '234'],
+        \       'color01' : ['#af005f', '125'],
+        \       'color02' : ['#5faf00', '70'],
+        \       'color03' : ['#d7af5f', '179'],
+        \       'color04' : ['#5fafd7', '74'],
+        \       'color05' : ['#808080', '244'],
+        \       'color06' : ['#d7875f', '173'],
+        \       'color07' : ['#d0d0d0', '252'],
+        \       'color08' : ['#585858', '240'],
+        \       'color09' : ['#5faf5f', '71'],
+        \       'color10' : ['#afd700', '148'],
+        \       'color11' : ['#af87d7', '140'],
+        \       'color12' : ['#ffaf00', '214'],
+        \       'color13' : ['#ff5faf', '205'],
+        \       'color14' : ['#00afaf', '37'],
+        \       'color15' : ['#5f8787', '66'],
+        \       'color16' : ['#5fafd7', '74'],
+        \       'color17' : ['#d7af00', '178'],
+        \       'cursor_fg' : ['#1c1c1c', '234'],
+        \       'cursor_bg' : ['#c6c6c6', '251'],
+        \       'cursorline' : ['#303030', '236'],
+        \       'cursorcolumn' : ['#303030', '236'],
+        \       'cursorlinenr_fg' : ['#ffff00', '226'],
+        \       'cursorlinenr_bg' : ['#1c1c1c', '234'],
+        \       'popupmenu_fg' : ['#c6c6c6', '251'],
+        \       'popupmenu_bg' : ['#303030', '236'],
+        \       'search_fg' : ['#000000', '16'],
+        \       'search_bg' : ['#00875f', '29'],
+        \       'linenumber_fg' : ['#585858', '240'],
+        \       'linenumber_bg' : ['#1c1c1c', '234'],
+        \       'vertsplit_fg' : ['#5f8787', '66'],
+        \       'vertsplit_bg' : ['#1c1c1c', '234'],
+        \       'statusline_active_fg' : ['#1c1c1c', '234'],
+        \       'statusline_active_bg' : ['#5f8787', '66'],
+        \       'statusline_inactive_fg' : ['#bcbcbc', '250'],
+        \       'statusline_inactive_bg' : ['#3a3a3a', '237'],
+        \       'todo_fg' : ['#ff8700', '208'],
+        \       'todo_bg' : ['#1c1c1c', '234'],
+        \       'error_fg' : ['#af005f', '125'],
+        \       'error_bg' : ['#5f0000', '52'],
+        \       'matchparen_bg' : ['#4e4e4e', '239'],
+        \       'matchparen_fg' : ['#c6c6c6', '251'],
+        \       'visual_fg' : ['#000000', '16'],
+        \       'visual_bg' : ['#8787af', '103'],
+        \       'folded_fg' : ['#d787ff', '177'],
+        \       'folded_bg' : ['#5f005f', '53'],
+        \       'wildmenu_fg': ['#1c1c1c', '234'],
+        \       'wildmenu_bg': ['#afd700', '148'],
+        \       'spellbad':   ['#5f0000', '52'],
+        \       'spellcap':   ['#5f005f', '53'],
+        \       'spellrare':  ['#005f00', '22'],
+        \       'spelllocal': ['#00005f', '17'],
+        \       'diffadd_fg':    ['#87d700', '112'],
+        \       'diffadd_bg':    ['#005f00', '22'],
+        \       'diffdelete_fg': ['#af005f', '125'],
+        \       'diffdelete_bg': ['#5f0000', '52'],
+        \       'difftext_fg':   ['#5fffff', '87'],
+        \       'difftext_bg':   ['#008787', '30'],
+        \       'diffchange_fg': ['#d0d0d0', '252'],
+        \       'diffchange_bg': ['#005f5f', '23'],
+        \       'tabline_bg':          ['#262626', '235'],
+        \       'tabline_active_fg':   ['#121212', '233'],
+        \       'tabline_active_bg':   ['#00afaf', '37'],
+        \       'tabline_inactive_fg': ['#bcbcbc', '250'],
+        \       'tabline_inactive_bg': ['#585858', '240'],
+        \       'buftabline_bg':          ['#262626', '235'],
+        \       'buftabline_current_fg':  ['#121212', '233'],
+        \       'buftabline_current_bg':  ['#00afaf', '37'],
+        \       'buftabline_active_fg':   ['#00afaf', '37'],
+        \       'buftabline_active_bg':   ['#585858', '240'],
+        \       'buftabline_inactive_fg': ['#bcbcbc', '250'],
+        \       'buftabline_inactive_bg': ['#585858', '240']
+        \     }
+        \   }
+endfun
+
+" ============================ THEME REGISTER =================================
+
+" Acquire Theme Data: {{{
+
+" Brief:
+"   Function to get theme information and store in variables for other
+"   functions to use
+"
+" Require:
+"   s:themes    <dictionary>    collection of all theme palettes
+"
+" Require Optionally:
+"   {g:PaperColor_Theme_[s:theme_name]}   <dictionary>  user custom theme palette
+"   g:PaperColor_Theme_Options            <dictionary>  user options
+"
+" Expose:
+"   s:theme_name       <string>     the name of the selected theme
+"   s:selected_theme   <dictionary> the selected theme object (contains palette, etc.)
+"   s:selected_variant <string>     'light' or 'dark'
+"   s:palette          <dictionary> the palette of selected theme
+"   s:options          <dictionary> user options
+fun! s:acquire_theme_data()
+
+  " Get theme name: {{{
+  let s:theme_name = 'default'
+
+  if exists("g:PaperColor_Theme") " Users expressed theme preference
+    let lowercase_theme_name = tolower(g:PaperColor_Theme)
+
+    if lowercase_theme_name !=? 'default'
+      let theme_identifier = 'PaperColor_' . lowercase_theme_name
+      let autoload_function = theme_identifier . '#register'
+
+      call {autoload_function}()
+
+      let theme_variable = 'g:' . theme_identifier
+
+      if exists(theme_variable)
+        let s:theme_name = lowercase_theme_name
+        let s:themes[s:theme_name] = {theme_variable}
+      endif
+
+    endif
+
+  endif
+  " }}}
+
+  if s:theme_name ==? 'default'
+    " Either no other theme is specified or they failed to load
+    " Defer loading default theme until now
+    call s:register_default_theme()
+  endif
+
+  let s:selected_theme = s:themes[s:theme_name]
+
+  " Get Theme Variant: either dark or light  {{{
+  let s:selected_variant = 'dark'
+
+  let s:is_dark=(&background == 'dark')
+
+  if s:is_dark
+    if has_key(s:selected_theme, 'dark')
+      let s:selected_variant = 'dark'
+    else " in case the theme only provides the other variant
+      let s:selected_variant = 'light'
+    endif
+
+  else " is light background
+    if has_key(s:selected_theme, 'light')
+      let s:selected_variant = 'light'
+    else " in case the theme only provides the other variant
+      let s:selected_variant = 'dark'
+    endif
+  endif
+
+  let s:palette = s:selected_theme[s:selected_variant].palette
+
+  " Systematic User-Config Options: {{{
+  " Example config in .vimrc
+  " let g:PaperColor_Theme_Options = {
+  "       \   'theme': {
+  "       \     'default': {
+  "       \       'allow_bold': 1,
+  "       \       'allow_italic': 0,
+  "       \       'transparent_background': 1
+  "       \     }
+  "       \   },
+  "       \   'language': {
+  "       \     'python': {
+  "       \       'highlight_builtins' : 1
+  "       \     },
+  "       \     'c': {
+  "       \       'highlight_builtins' : 1
+  "       \     },
+  "       \     'cpp': {
+  "       \       'highlight_standard_library': 1
+  "       \     }
+  "       \   }
+  "       \ }
+  "
+  let s:options = {}
+
+
+  if exists("g:PaperColor_Theme_Options")
+    let s:options = g:PaperColor_Theme_Options
+  endif
+  " }}}
+
+  " }}}
+endfun
+
+
+" }}}
+
+" Identify Color Mode: {{{
+
+fun! s:identify_color_mode()
+  let s:MODE_16_COLOR = 0
+  let s:MODE_256_COLOR = 1
+  let s:MODE_GUI_COLOR = 2
+
+  if has("gui_running")  || has('termguicolors') && &termguicolors || has('nvim') && $NVIM_TUI_ENABLE_TRUE_COLOR
+    let s:mode = s:MODE_GUI_COLOR
+  elseif (&t_Co >= 256)
+    let s:mode = s:MODE_256_COLOR
+  else
+    let s:mode = s:MODE_16_COLOR
+  endif
+endfun
+
+" }}}
+
+" ============================ OPTION HANDLER =================================
+
+" Generate Them Option Variables: {{{
+
+
+fun! s:generate_theme_option_variables()
+  " 0. All possible theme option names must be registered here
+  let l:available_theme_options = [
+        \ 'allow_bold',
+        \ 'allow_italic',
+        \ 'transparent_background',
+        \ ]
+
+  " 1. Generate variables and set to default value
+  for l:option in l:available_theme_options
+      let s:{'themeOpt_' . l:option} = 0
+  endfor
+
+  let s:themeOpt_override = {} " special case, this has to be a dictionary
+
+  " 2. Reassign value to the above variables based on theme settings
+
+  " 2.1 In case the theme has top-level options
+  if has_key(s:selected_theme, 'options')
+    let l:theme_options = s:selected_theme['options']
+    for l:opt_name in keys(l:theme_options)
+      let s:{'themeOpt_' . l:opt_name} = l:theme_options[l:opt_name]
+      " echo 's:themeOpt_' . l:opt_name . ' = ' . s:{'themeOpt_' . l:opt_name}
+    endfor
+  endif
+
+  " 2.2 In case the theme has specific variant options
+  if has_key(s:selected_theme[s:selected_variant], 'options')
+    let l:theme_options = s:selected_theme[s:selected_variant]['options']
+    for l:opt_name in keys(l:theme_options)
+      let s:{'themeOpt_' . l:opt_name} = l:theme_options[l:opt_name]
+      " echo 's:themeOpt_' . l:opt_name . ' = ' . s:{'themeOpt_' . l:opt_name}
+    endfor
+  endif
+
+
+  " 3. Reassign value to the above variables which the user customizes
+  " Part of user-config options
+  let s:theme_options = {}
+  if has_key(s:options, 'theme')
+    let s:theme_options = s:options['theme']
+  endif
+
+  " 3.1 In case user sets for a theme without specifying which variant
+  if has_key(s:theme_options, s:theme_name)
+    let l:theme_options = s:theme_options[s:theme_name]
+    for l:opt_name in keys(l:theme_options)
+      let s:{'themeOpt_' . l:opt_name} = l:theme_options[l:opt_name]
+      " echo 's:themeOpt_' . l:opt_name . ' = ' . s:{'themeOpt_' . l:opt_name}
+    endfor
+  endif
+
+
+  " 3.2 In case user sets for a specific variant of a theme
+
+  " Create the string that the user might have set for this theme variant
+  " for example, 'default.dark'
+  let l:specific_theme_variant = s:theme_name . '.' . s:selected_variant
+
+  if has_key(s:theme_options, l:specific_theme_variant)
+    let l:theme_options = s:theme_options[l:specific_theme_variant]
+    for l:opt_name in keys(l:theme_options)
+      let s:{'themeOpt_' . l:opt_name} = l:theme_options[l:opt_name]
+      " echo 's:themeOpt_' . l:opt_name . ' = ' . s:{'themeOpt_' . l:opt_name}
+    endfor
+  endif
+
+endfun
+" }}}
+
+" Check If Theme Has Hint: {{{
+"
+" Brief:
+"   Function to Check if the selected theme and variant has a hint
+"
+" Details:
+"   A hint is a known key that has value 1
+"   It is not part of theme design but is used for technical purposes
+"
+" Example:
+"   If a theme has hint 'NO_CONVERSION', then we can assume that every
+"   color value is a complete pair, so we don't have to check.
+
+fun! s:theme_has_hint(hint)
+  return has_key(s:selected_theme[s:selected_variant], a:hint) &&
+        \ s:selected_theme[s:selected_variant][a:hint] == 1
+endfun
+" }}}
+
+" Set Overriding Colors: {{{
+
+fun! s:set_overriding_colors()
+
+  if s:theme_has_hint('NO_CONVERSION')
+    " s:convert_colors will not do anything, so we take care of conversion
+    " for the overriding colors that need to be converted
+
+    if s:mode == s:MODE_GUI_COLOR
+      " if GUI color is not provided, convert from 256 color that must be available
+      if !empty(s:themeOpt_override)
+        call s:load_256_to_GUI_converter()
+      endif
+
+      for l:color in keys(s:themeOpt_override)
+        let l:value = s:themeOpt_override[l:color]
+        if l:value[0] == ''
+          let l:value[0] = s:to_HEX[l:value[1]]
+        endif
+        let s:palette[l:color] = l:value
+      endfor
+
+    elseif s:mode == s:MODE_256_COLOR
+      " if 256 color is not provided, convert from GUI color that must be available
+      if !empty(s:themeOpt_override)
+        call s:load_GUI_to_256_converter()
+      endif
+
+      for l:color in keys(s:themeOpt_override)
+        let l:value = s:themeOpt_override[l:color]
+        if l:value[1] == ''
+          let l:value[1] = s:to_256(l:value[0])
+        endif
+        let s:palette[l:color] = l:value
+      endfor
+    endif
+
+  else " simply set the colors and let s:convert_colors() take care of conversion
+
+    for l:color in keys(s:themeOpt_override)
+      let s:palette[l:color] = s:themeOpt_override[l:color]
+    endfor
+  endif
+
+endfun
+" }}}
+
+" Generate Language Option Variables: {{{
+
+" Brief:
+"   Function to generate language option variables so that there is no need to
+"   look up from the dictionary every time the option value is checked in the
+"   function s:apply_syntax_highlightings()
+"
+" Require:
+"   s:options <dictionary> user options
+"
+" Require Optionally:
+"   g:PaperColor_Theme_Options  <dictionary>  user option config in .vimrc
+"
+" Expose:
+"   s:langOpt_[LANGUAGE]__[OPTION]  <any>   variables for language options
+"
+" Example:
+"     g:PaperColor_Theme_Options has something like this:
+"       'language': {
+"       \   'python': {
+"       \     'highlight_builtins': 1
+"       \   }
+"       }
+"    The following variable will be generated:
+"    s:langOpt_python__highlight_builtins = 1
+
+fun! s:generate_language_option_variables()
+  " 0. All possible theme option names must be registered here
+  let l:available_language_options = [
+        \   'c__highlight_builtins',
+        \   'cpp__highlight_standard_library',
+        \   'python__highlight_builtins'
+        \ ]
+
+  " 1. Generate variables and set to default value
+  for l:option in l:available_language_options
+    let s:{'langOpt_' . l:option} = 0
+  endfor
+
+  " Part of user-config options
+  if has_key(s:options, 'language')
+    let l:language_options = s:options['language']
+    " echo l:language_options
+    for l:lang in keys(l:language_options)
+      let l:options = l:language_options[l:lang]
+      " echo l:lang
+      " echo l:options
+      for l:option in keys(l:options)
+        let s:{'langOpt_' . l:lang . '__' . l:option} = l:options[l:option]
+        " echo 's:langOpt_' . l:lang . '__' . l:option . ' = ' . l:options[l:option]
+      endfor
+    endfor
+
+  endif
+
+endfun
+" }}}
+
+" =========================== COLOR CONVERTER =================================
+
+fun! s:load_GUI_to_256_converter()
+  " GUI-color To 256-color: {{{
+  " Returns an approximate grey index for the given grey level
+  fun! s:grey_number(x)
+    if &t_Co == 88
+      if a:x < 23
+        return 0
+      elseif a:x < 69
+        return 1
+      elseif a:x < 103
+        return 2
+      elseif a:x < 127
+        return 3
+      elseif a:x < 150
+        return 4
+      elseif a:x < 173
+        return 5
+      elseif a:x < 196
+        return 6
+      elseif a:x < 219
+        return 7
+      elseif a:x < 243
+        return 8
+      else
+        return 9
+      endif
+    else
+      if a:x < 14
+        return 0
+      else
+        let l:n = (a:x - 8) / 10
+        let l:m = (a:x - 8) % 10
+        if l:m < 5
+          return l:n
+        else
+          return l:n + 1
+        endif
+      endif
+    endif
+  endfun
+
+  " Returns the actual grey level represented by the grey index
+  fun! s:grey_level(n)
+    if &t_Co == 88
+      if a:n == 0
+        return 0
+      elseif a:n == 1
+        return 46
+      elseif a:n == 2
+        return 92
+      elseif a:n == 3
+        return 115
+      elseif a:n == 4
+        return 139
+      elseif a:n == 5
+        return 162
+      elseif a:n == 6
+        return 185
+      elseif a:n == 7
+        return 208
+      elseif a:n == 8
+        return 231
+      else
+        return 255
+      endif
+    else
+      if a:n == 0
+        return 0
+      else
+        return 8 + (a:n * 10)
+      endif
+    endif
+  endfun
+
+  " Returns the palette index for the given grey index
+  fun! s:grey_colour(n)
+    if &t_Co == 88
+      if a:n == 0
+        return 16
+      elseif a:n == 9
+        return 79
+      else
+        return 79 + a:n
+      endif
+    else
+      if a:n == 0
+        return 16
+      elseif a:n == 25
+        return 231
+      else
+        return 231 + a:n
+      endif
+    endif
+  endfun
+
+  " Returns an approximate colour index for the given colour level
+  fun! s:rgb_number(x)
+    if &t_Co == 88
+      if a:x < 69
+        return 0
+      elseif a:x < 172
+        return 1
+      elseif a:x < 230
+        return 2
+      else
+        return 3
+      endif
+    else
+      if a:x < 75
+        return 0
+      else
+        let l:n = (a:x - 55) / 40
+        let l:m = (a:x - 55) % 40
+        if l:m < 20
+          return l:n
+        else
+          return l:n + 1
+        endif
+      endif
+    endif
+  endfun
+
+  " Returns the actual colour level for the given colour index
+  fun! s:rgb_level(n)
+    if &t_Co == 88
+      if a:n == 0
+        return 0
+      elseif a:n == 1
+        return 139
+      elseif a:n == 2
+        return 205
+      else
+        return 255
+      endif
+    else
+      if a:n == 0
+        return 0
+      else
+        return 55 + (a:n * 40)
+      endif
+    endif
+  endfun
+
+  " Returns the palette index for the given R/G/B colour indices
+  fun! s:rgb_colour(x, y, z)
+    if &t_Co == 88
+      return 16 + (a:x * 16) + (a:y * 4) + a:z
+    else
+      return 16 + (a:x * 36) + (a:y * 6) + a:z
+    endif
+  endfun
+
+  " Returns the palette index to approximate the given R/G/B colour levels
+  fun! s:colour(r, g, b)
+    " Get the closest grey
+    let l:gx = s:grey_number(a:r)
+    let l:gy = s:grey_number(a:g)
+    let l:gz = s:grey_number(a:b)
+
+    " Get the closest colour
+    let l:x = s:rgb_number(a:r)
+    let l:y = s:rgb_number(a:g)
+    let l:z = s:rgb_number(a:b)
+
+    if l:gx == l:gy && l:gy == l:gz
+      " There are two possibilities
+      let l:dgr = s:grey_level(l:gx) - a:r
+      let l:dgg = s:grey_level(l:gy) - a:g
+      let l:dgb = s:grey_level(l:gz) - a:b
+      let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
+      let l:dr = s:rgb_level(l:gx) - a:r
+      let l:dg = s:rgb_level(l:gy) - a:g
+      let l:db = s:rgb_level(l:gz) - a:b
+      let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
+      if l:dgrey < l:drgb
+        " Use the grey
+        return s:grey_colour(l:gx)
+      else
+        " Use the colour
+        return s:rgb_colour(l:x, l:y, l:z)
+      endif
+    else
+      " Only one possibility
+      return s:rgb_colour(l:x, l:y, l:z)
+    endif
+  endfun
+
+  " Returns the palette index to approximate the '#rrggbb' hex string
+  fun! s:to_256(rgb)
+    let l:r = ("0x" . strpart(a:rgb, 1, 2)) + 0
+    let l:g = ("0x" . strpart(a:rgb, 3, 2)) + 0
+    let l:b = ("0x" . strpart(a:rgb, 5, 2)) + 0
+
+    return s:colour(l:r, l:g, l:b)
+  endfun
+
+
+
+  " }}}
+endfun
+
+fun! s:load_256_to_GUI_converter()
+" 256-color To GUI-color: {{{
+
+""" Xterm 256 color dictionary
+" See: http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
+"
+let s:to_HEX = {
+      \ '00':  '#000000',  '01':  '#800000',  '02':  '#008000',  '03':  '#808000',  '04':  '#000080',
+      \ '05':  '#800080',  '06':  '#008080',  '07':  '#c0c0c0',  '08':  '#808080',  '09':  '#ff0000',
+      \ '10':  '#00ff00',  '11':  '#ffff00',  '12':  '#0000ff',  '13':  '#ff00ff',  '14':  '#00ffff',
+      \ '15':  '#ffffff',  '16':  '#000000',  '17':  '#00005f',  '18':  '#000087',  '19':  '#0000af',
+      \ '20':  '#0000d7',  '21':  '#0000ff',  '22':  '#005f00',  '23':  '#005f5f',  '24':  '#005f87',
+      \ '25':  '#005faf',  '26':  '#005fd7',  '27':  '#005fff',  '28':  '#008700',  '29':  '#00875f',
+      \ '30':  '#008787',  '31':  '#0087af',  '32':  '#0087d7',  '33':  '#0087ff',  '34':  '#00af00',
+      \ '35':  '#00af5f',  '36':  '#00af87',  '37':  '#00afaf',  '38':  '#00afd7',  '39':  '#00afff',
+      \ '40':  '#00d700',  '41':  '#00d75f',  '42':  '#00d787',  '43':  '#00d7af',  '44':  '#00d7d7',
+      \ '45':  '#00d7ff',  '46':  '#00ff00',  '47':  '#00ff5f',  '48':  '#00ff87',  '49':  '#00ffaf',
+      \ '50':  '#00ffd7',  '51':  '#00ffff',  '52':  '#5f0000',  '53':  '#5f005f',  '54':  '#5f0087',
+      \ '55':  '#5f00af',  '56':  '#5f00d7',  '57':  '#5f00ff',  '58':  '#5f5f00',  '59':  '#5f5f5f',
+      \ '60':  '#5f5f87',  '61':  '#5f5faf',  '62':  '#5f5fd7',  '63':  '#5f5fff',  '64':  '#5f8700',
+      \ '65':  '#5f875f',  '66':  '#5f8787',  '67':  '#5f87af',  '68':  '#5f87d7',  '69':  '#5f87ff',
+      \ '70':  '#5faf00',  '71':  '#5faf5f',  '72':  '#5faf87',  '73':  '#5fafaf',  '74':  '#5fafd7',
+      \ '75':  '#5fafff',  '76':  '#5fd700',  '77':  '#5fd75f',  '78':  '#5fd787',  '79':  '#5fd7af',
+      \ '80':  '#5fd7d7',  '81':  '#5fd7ff',  '82':  '#5fff00',  '83':  '#5fff5f',  '84':  '#5fff87',
+      \ '85':  '#5fffaf',  '86':  '#5fffd7',  '87':  '#5fffff',  '88':  '#870000',  '89':  '#87005f',
+      \ '90':  '#870087',  '91':  '#8700af',  '92':  '#8700d7',  '93':  '#8700ff',  '94':  '#875f00',
+      \ '95':  '#875f5f',  '96':  '#875f87',  '97':  '#875faf',  '98':  '#875fd7',  '99':  '#875fff',
+      \ '100': '#878700',  '101': '#87875f',  '102': '#878787',  '103': '#8787af',  '104': '#8787d7',
+      \ '105': '#8787ff',  '106': '#87af00',  '107': '#87af5f',  '108': '#87af87',  '109': '#87afaf',
+      \ '110': '#87afd7',  '111': '#87afff',  '112': '#87d700',  '113': '#87d75f',  '114': '#87d787',
+      \ '115': '#87d7af',  '116': '#87d7d7',  '117': '#87d7ff',  '118': '#87ff00',  '119': '#87ff5f',
+      \ '120': '#87ff87',  '121': '#87ffaf',  '122': '#87ffd7',  '123': '#87ffff',  '124': '#af0000',
+      \ '125': '#af005f',  '126': '#af0087',  '127': '#af00af',  '128': '#af00d7',  '129': '#af00ff',
+      \ '130': '#af5f00',  '131': '#af5f5f',  '132': '#af5f87',  '133': '#af5faf',  '134': '#af5fd7',
+      \ '135': '#af5fff',  '136': '#af8700',  '137': '#af875f',  '138': '#af8787',  '139': '#af87af',
+      \ '140': '#af87d7',  '141': '#af87ff',  '142': '#afaf00',  '143': '#afaf5f',  '144': '#afaf87',
+      \ '145': '#afafaf',  '146': '#afafd7',  '147': '#afafff',  '148': '#afd700',  '149': '#afd75f',
+      \ '150': '#afd787',  '151': '#afd7af',  '152': '#afd7d7',  '153': '#afd7ff',  '154': '#afff00',
+      \ '155': '#afff5f',  '156': '#afff87',  '157': '#afffaf',  '158': '#afffd7',  '159': '#afffff',
+      \ '160': '#d70000',  '161': '#d7005f',  '162': '#d70087',  '163': '#d700af',  '164': '#d700d7',
+      \ '165': '#d700ff',  '166': '#d75f00',  '167': '#d75f5f',  '168': '#d75f87',  '169': '#d75faf',
+      \ '170': '#d75fd7',  '171': '#d75fff',  '172': '#d78700',  '173': '#d7875f',  '174': '#d78787',
+      \ '175': '#d787af',  '176': '#d787d7',  '177': '#d787ff',  '178': '#d7af00',  '179': '#d7af5f',
+      \ '180': '#d7af87',  '181': '#d7afaf',  '182': '#d7afd7',  '183': '#d7afff',  '184': '#d7d700',
+      \ '185': '#d7d75f',  '186': '#d7d787',  '187': '#d7d7af',  '188': '#d7d7d7',  '189': '#d7d7ff',
+      \ '190': '#d7ff00',  '191': '#d7ff5f',  '192': '#d7ff87',  '193': '#d7ffaf',  '194': '#d7ffd7',
+      \ '195': '#d7ffff',  '196': '#ff0000',  '197': '#ff005f',  '198': '#ff0087',  '199': '#ff00af',
+      \ '200': '#ff00d7',  '201': '#ff00ff',  '202': '#ff5f00',  '203': '#ff5f5f',  '204': '#ff5f87',
+      \ '205': '#ff5faf',  '206': '#ff5fd7',  '207': '#ff5fff',  '208': '#ff8700',  '209': '#ff875f',
+      \ '210': '#ff8787',  '211': '#ff87af',  '212': '#ff87d7',  '213': '#ff87ff',  '214': '#ffaf00',
+      \ '215': '#ffaf5f',  '216': '#ffaf87',  '217': '#ffafaf',  '218': '#ffafd7',  '219': '#ffafff',
+      \ '220': '#ffd700',  '221': '#ffd75f',  '222': '#ffd787',  '223': '#ffd7af',  '224': '#ffd7d7',
+      \ '225': '#ffd7ff',  '226': '#ffff00',  '227': '#ffff5f',  '228': '#ffff87',  '229': '#ffffaf',
+      \ '230': '#ffffd7',  '231': '#ffffff',  '232': '#080808',  '233': '#121212',  '234': '#1c1c1c',
+      \ '235': '#262626',  '236': '#303030',  '237': '#3a3a3a',  '238': '#444444',  '239': '#4e4e4e',
+      \ '240': '#585858',  '241': '#626262',  '242': '#6c6c6c',  '243': '#767676',  '244': '#808080',
+      \ '245': '#8a8a8a',  '246': '#949494',  '247': '#9e9e9e',  '248': '#a8a8a8',  '249': '#b2b2b2',
+      \ '250': '#bcbcbc',  '251': '#c6c6c6',  '252': '#d0d0d0',  '253': '#dadada',  '254': '#e4e4e4',
+      \ '255': '#eeeeee' }
+
+" }}}
+endfun
+
+" ========================== ENVIRONMENT ADAPTER ==============================
+
+" Set Format Attributes: {{{
+
+fun! s:set_format_attributes()
+  " These are the default
+  if s:mode == s:MODE_GUI_COLOR
+    let s:ft_bold    = " cterm=bold gui=bold "
+    let s:ft_none    = " cterm=none gui=none "
+    let s:ft_reverse = " cterm=reverse gui=reverse "
+    let s:ft_italic  = " cterm=italic gui=italic "
+    let s:ft_italic_bold = " cterm=italic,bold gui=italic,bold "
+  elseif s:mode == s:MODE_256_COLOR
+    let s:ft_bold    = " cterm=bold "
+    let s:ft_none    = " cterm=none "
+    let s:ft_reverse = " cterm=reverse "
+    let s:ft_italic  = " cterm=italic "
+    let s:ft_italic_bold = " cterm=italic,bold "
+  else
+    let s:ft_bold    = ""
+    let s:ft_none    = " cterm=none "
+    let s:ft_reverse = " cterm=reverse "
+    let s:ft_italic  = ""
+    let s:ft_italic_bold = ""
+  endif
+
+  " Unless instructed otherwise either by theme setting or user overriding
+
+  if s:themeOpt_allow_bold == 0
+    let s:ft_bold    = ""
+  endif
+  if s:themeOpt_allow_italic == 0
+    let s:ft_italic = ""
+    let s:ft_italic_bold = s:ft_bold
+  endif
+
+endfun
+
+" }}}
+
+" Convert Colors If Needed: {{{
+fun! s:convert_colors()
+  if s:theme_has_hint('NO_CONVERSION')
+    return
+  endif
+
+  if s:mode == s:MODE_GUI_COLOR
+    " if GUI color is not provided, convert from 256 color that must be available
+    call s:load_256_to_GUI_converter()
+
+    for l:color in keys(s:palette)
+      let l:value = s:palette[l:color]
+      if l:value[0] == ''
+        let l:value[0] = s:to_HEX[l:value[1]]
+      endif
+      let s:palette[l:color] = l:value
+    endfor
+
+  elseif s:mode == s:MODE_256_COLOR
+    " if 256 color is not provided, convert from GUI color that must be available
+    call s:load_GUI_to_256_converter()
+
+    for l:color in keys(s:palette)
+      let l:value = s:palette[l:color]
+      if l:value[1] == ''
+        let l:value[1] = s:to_256(l:value[0])
+      endif
+      let s:palette[l:color] = l:value
+    endfor
+  endif
+  " otherwise use the terminal colors and none of the theme colors are used
+endfun
+
+" }}}
+
+" ============================ COLOR POPULARIZER ===============================
+
+" Set Color Variables: {{{
+fun! s:set_color_variables()
+
+  " Helper: {{{
+  " -------
+  " Function to dynamically generate variables that store the color strings
+  " for setting highlighting. Each color name will have 2 variables with prefix
+  " s:fg_ and s:bg_. For example:
+  " if a:color_name is 'Normal' and a:color_value is ['#000000', '0', 'Black'],
+  " the following 2 variables will be created:
+  "   s:fg_Normal that stores the string ' guifg=#000000 '
+  "   s:bg_Normal that stores the string ' guibg=#000000 '
+  " Depending on the color mode, ctermfg and ctermbg will be either 0 or Black
+  "
+  " Rationale:
+  " The whole purpose is for speed. We generate these ahead of time so that we
+  " don't have to do look up or do any if-branch when we set the highlightings.
+  "
+  " Furthermore, multiple function definitions for each mode actually reduces
+  " the need for multiple if-branches inside a single function. This is not
+  " pretty, but Vim Script is slow, so reducing if-branches in function that is
+  " often called helps speeding things up quite a bit. Think of this like macro.
+  "
+  " If you are familiar with the old code base (v0.9 and ealier), this way of
+  " generate variables dramatically reduces the loading speed.
+  " None of previous optimization tricks gets anywhere near this.
+  if s:mode == s:MODE_GUI_COLOR
+    fun! s:create_color_variables(color_name, rich_color, term_color)
+      let {'s:fg_' . a:color_name} = ' guifg=' . a:rich_color[0] . ' '
+      let {'s:bg_' . a:color_name} = ' guibg=' . a:rich_color[0] . ' '
+      let {'s:sp_' . a:color_name} = ' guisp=' . a:rich_color[0] . ' '
+    endfun
+  elseif s:mode == s:MODE_256_COLOR
+    fun! s:create_color_variables(color_name, rich_color, term_color)
+      let {'s:fg_' . a:color_name} = ' ctermfg=' . a:rich_color[1] . ' '
+      let {'s:bg_' . a:color_name} = ' ctermbg=' . a:rich_color[1] . ' '
+      let {'s:sp_' . a:color_name} = ''
+    endfun
+  else
+    fun! s:create_color_variables(color_name, rich_color, term_color)
+      let {'s:fg_' . a:color_name} = ' ctermfg=' . a:term_color . ' '
+      let {'s:bg_' . a:color_name} = ' ctermbg=' . a:term_color . ' '
+      let {'s:sp_' . a:color_name} = ''
+    endfun
+  endif
+  " }}}
+
+  " Color value format: Array [<GUI COLOR/HEX >, <256-Base>, <16-Base>]
+  " 16-Base is terminal's native color palette that can be alternated through
+  " the terminal settings. The 16-color names are according to `:h cterm-colors`
+
+  " BASIC COLORS:
+  " color00-15 are required by all themes.
+  " These are also how the terminal color palette for the target theme should be.
+  " See README for theme design guideline
+  "
+  " An example format of the below variable's value: ['#262626', '234', 'Black']
+  " Where the 1st value is HEX color for GUI Vim, 2nd value is for 256-color terminal,
+  " and the color name on the right is for 16-color terminal (the actual terminal colors
+  " can be different from what the color names suggest). See :h cterm-colors
+  "
+  " Depending on the provided color palette and current Vim, the 1st and 2nd
+  " parameter might not exist, for example, on 16-color terminal, the variables below
+  " only store the color names to use the terminal color palette which is the only
+  " thing available therefore no need for GUI-color or 256-color.
+
+  let color00 = get(s:palette, 'color00')
+  let color01 = get(s:palette, 'color01')
+  let color02 = get(s:palette, 'color02')
+  let color03 = get(s:palette, 'color03')
+  let color04 = get(s:palette, 'color04')
+  let color05 = get(s:palette, 'color05')
+  let color06 = get(s:palette, 'color06')
+  let color07 = get(s:palette, 'color07')
+  let color08 = get(s:palette, 'color08')
+  let color09 = get(s:palette, 'color09')
+  let color10 = get(s:palette, 'color10')
+  let color11 = get(s:palette, 'color11')
+  let color12 = get(s:palette, 'color12')
+  let color13 = get(s:palette, 'color13')
+  let color14 = get(s:palette, 'color14')
+  let color15 = get(s:palette, 'color15')
+
+  call s:create_color_variables('background', color00 , 'Black')
+  call s:create_color_variables('negative',   color01 , 'DarkRed')
+  call s:create_color_variables('positive',   color02 , 'DarkGreen')
+  call s:create_color_variables('olive',      color03 , 'DarkYellow') " string
+  call s:create_color_variables('neutral',    color04 , 'DarkBlue')
+  call s:create_color_variables('comment',    color05 , 'DarkMagenta')
+  call s:create_color_variables('navy',       color06 , 'DarkCyan') " storageclass
+  call s:create_color_variables('foreground', color07 , 'LightGray')
+
+  call s:create_color_variables('nontext',   color08 , 'DarkGray')
+  call s:create_color_variables('red',       color09 , 'LightRed') " import / try/catch
+  call s:create_color_variables('pink',      color10 , 'LightGreen') " statement, type
+  call s:create_color_variables('purple',    color11 , 'LightYellow') " if / conditional
+  call s:create_color_variables('accent',    color12 , 'LightBlue')
+  call s:create_color_variables('orange',    color13 , 'LightMagenta') " number
+  call s:create_color_variables('blue',      color14 , 'LightCyan') " other keyword
+  call s:create_color_variables('highlight', color15 , 'White')
+
+  " Note: special case for FoldColumn group. I want to get rid of this case.
+  call s:create_color_variables('transparent', [color00[0], 'none'], 'none')
+
+  " EXTENDED COLORS:
+  " From here on, all colors are optional and must have default values (3rd parameter of the
+  " `get` command) that point to the above basic colors in case the target theme doesn't
+  " provide the extended colors. The default values should be reasonably sensible.
+  " The terminal color must be provided also.
+
+  call s:create_color_variables('aqua',  get(s:palette, 'color16', color14) , 'LightCyan')
+  call s:create_color_variables('green', get(s:palette, 'color17', color13) , 'LightMagenta')
+  call s:create_color_variables('wine',  get(s:palette, 'color18', color11) , 'LightYellow')
+
+  " LineNumber: when set number
+  call s:create_color_variables('linenumber_fg', get(s:palette, 'linenumber_fg', color08) , 'DarkGray')
+  call s:create_color_variables('linenumber_bg', get(s:palette, 'linenumber_bg', color00) , 'Black')
+
+  " Vertical Split: when there are more than 1 window side by side, ex: <C-W><C-V>
+  call s:create_color_variables('vertsplit_fg', get(s:palette, 'vertsplit_fg', color15) , 'White')
+  call s:create_color_variables('vertsplit_bg', get(s:palette, 'vertsplit_bg', color00) , 'Black')
+
+  " Statusline: when set status=2
+  call s:create_color_variables('statusline_active_fg', get(s:palette, 'statusline_active_fg', color00) , 'Black')
+  call s:create_color_variables('statusline_active_bg', get(s:palette, 'statusline_active_bg', color15) , 'White')
+  call s:create_color_variables('statusline_inactive_fg', get(s:palette, 'statusline_inactive_fg', color07) , 'LightGray')
+  call s:create_color_variables('statusline_inactive_bg', get(s:palette, 'statusline_inactive_bg', color08) , 'DarkGray')
+
+
+  " Cursor: in normal mode
+  call s:create_color_variables('cursor_fg', get(s:palette, 'cursor_fg', color00) , 'Black')
+  call s:create_color_variables('cursor_bg', get(s:palette, 'cursor_bg', color07) , 'LightGray')
+
+  call s:create_color_variables('cursorline', get(s:palette, 'cursorline', color00) , 'Black')
+
+  " CursorColumn: when set cursorcolumn
+  call s:create_color_variables('cursorcolumn', get(s:palette, 'cursorcolumn', color00) , 'Black')
+
+  " CursorLine Number: when set cursorline number
+  call s:create_color_variables('cursorlinenr_fg', get(s:palette, 'cursorlinenr_fg', color13) , 'LightMagenta')
+  call s:create_color_variables('cursorlinenr_bg', get(s:palette, 'cursorlinenr_bg', color00) , 'Black')
+
+  " Popup Menu: when <C-X><C-N> for autocomplete
+  call s:create_color_variables('popupmenu_fg', get(s:palette, 'popupmenu_fg', color07) , 'LightGray')
+  call s:create_color_variables('popupmenu_bg', get(s:palette, 'popupmenu_bg', color08) , 'DarkGray') " TODO: double check this, might resolve an issue
+
+  " Search: ex: when * on a word
+  call s:create_color_variables('search_fg', get(s:palette, 'search_fg', color00) , 'Black')
+  call s:create_color_variables('search_bg', get(s:palette, 'search_bg', color15) , 'Yellow')
+
+  " Todo: ex: TODO
+  call s:create_color_variables('todo_fg', get(s:palette, 'todo_fg', color05) , 'LightYellow')
+  call s:create_color_variables('todo_bg', get(s:palette, 'todo_bg', color00) , 'Black')
+
+  " Error: ex: turn spell on and have invalid words
+  call s:create_color_variables('error_fg', get(s:palette, 'error_fg', color01) , 'DarkRed')
+  call s:create_color_variables('error_bg', get(s:palette, 'error_bg', color00) , 'Black')
+
+  " Match Parenthesis: selecting an opening/closing pair and the other one will be highlighted
+  call s:create_color_variables('matchparen_fg', get(s:palette, 'matchparen_fg', color00) , 'LightMagenta')
+  call s:create_color_variables('matchparen_bg', get(s:palette, 'matchparen_bg', color05) , 'Black')
+
+  " Visual:
+  call s:create_color_variables('visual_fg', get(s:palette, 'visual_fg', color08) , 'Black')
+  call s:create_color_variables('visual_bg', get(s:palette, 'visual_bg', color07) , 'White')
+
+  " Folded:
+  call s:create_color_variables('folded_fg', get(s:palette, 'folded_fg', color00) , 'Black')
+  call s:create_color_variables('folded_bg', get(s:palette, 'folded_bg', color05) , 'DarkYellow')
+
+  " WildMenu: Autocomplete command, ex: :color <tab><tab>
+  call s:create_color_variables('wildmenu_fg', get(s:palette, 'wildmenu_fg', color00) , 'Black')
+  call s:create_color_variables('wildmenu_bg', get(s:palette, 'wildmenu_bg', color06) , 'LightGray')
+
+  " Spelling: when spell on and there are spelling problems like this for example: papercolor. a vim color scheme
+  call s:create_color_variables('spellbad', get(s:palette, 'spellbad', color04) , 'DarkRed')
+  call s:create_color_variables('spellcap', get(s:palette, 'spellcap', color05) , 'DarkMagenta')
+  call s:create_color_variables('spellrare', get(s:palette, 'spellrare', color06) , 'DarkYellow')
+  call s:create_color_variables('spelllocal', get(s:palette, 'spelllocal', color01) , 'DarkBlue')
+
+  " Diff:
+  call s:create_color_variables('diffadd_fg', get(s:palette, 'diffadd_fg', color00) , 'Black')
+  call s:create_color_variables('diffadd_bg', get(s:palette, 'diffadd_bg', color02) , 'DarkGreen')
+
+  call s:create_color_variables('diffdelete_fg', get(s:palette, 'diffdelete_fg', color00) , 'Black')
+  call s:create_color_variables('diffdelete_bg', get(s:palette, 'diffdelete_bg', color04) , 'DarkRed')
+
+  call s:create_color_variables('difftext_fg', get(s:palette, 'difftext_fg', color00) , 'Black')
+  call s:create_color_variables('difftext_bg', get(s:palette, 'difftext_bg', color06) , 'DarkYellow')
+
+  call s:create_color_variables('diffchange_fg', get(s:palette, 'diffchange_fg', color00) , 'Black')
+  call s:create_color_variables('diffchange_bg', get(s:palette, 'diffchange_bg', color14) , 'LightYellow')
+
+  " Tabline: when having tabs, ex: :tabnew
+  call s:create_color_variables('tabline_bg',          get(s:palette, 'tabline_bg',          color00) , 'Black')
+  call s:create_color_variables('tabline_active_fg',   get(s:palette, 'tabline_active_fg',   color07) , 'LightGray')
+  call s:create_color_variables('tabline_active_bg',   get(s:palette, 'tabline_active_bg',   color00) , 'Black')
+  call s:create_color_variables('tabline_inactive_fg', get(s:palette, 'tabline_inactive_fg', color07) , 'Black')
+  call s:create_color_variables('tabline_inactive_bg', get(s:palette, 'tabline_inactive_bg', color08) , 'DarkMagenta')
+
+  " Plugin: BufTabLine https://github.com/ap/vim-buftabline
+  call s:create_color_variables('buftabline_bg',          get(s:palette, 'buftabline_bg',          color00) , 'Black')
+  call s:create_color_variables('buftabline_current_fg',  get(s:palette, 'buftabline_current_fg',  color07) , 'LightGray')
+  call s:create_color_variables('buftabline_current_bg',  get(s:palette, 'buftabline_current_bg',  color05) , 'DarkMagenta')
+  call s:create_color_variables('buftabline_active_fg',   get(s:palette, 'buftabline_active_fg',   color07) , 'LightGray')
+  call s:create_color_variables('buftabline_active_bg',   get(s:palette, 'buftabline_active_bg',   color12) , 'LightBlue')
+  call s:create_color_variables('buftabline_inactive_fg', get(s:palette, 'buftabline_inactive_fg', color07) , 'LightGray')
+  call s:create_color_variables('buftabline_inactive_bg', get(s:palette, 'buftabline_inactive_bg', color00) , 'Black')
+
+  " Neovim terminal colors https://neovim.io/doc/user/nvim_terminal_emulator.html#nvim-terminal-emulator-configuration
+  " TODO: Fix this
+  let g:terminal_color_0  = color00[0]
+  let g:terminal_color_1  = color01[0]
+  let g:terminal_color_2  = color02[0]
+  let g:terminal_color_3  = color03[0]
+  let g:terminal_color_4  = color04[0]
+  let g:terminal_color_5  = color05[0]
+  let g:terminal_color_6  = color06[0]
+  let g:terminal_color_7  = color07[0]
+  let g:terminal_color_8  = color08[0]
+  let g:terminal_color_9  = color09[0]
+  let g:terminal_color_10 = color10[0]
+  let g:terminal_color_11 = color11[0]
+  let g:terminal_color_12 = color12[0]
+  let g:terminal_color_13 = color13[0]
+  let g:terminal_color_14 = color14[0]
+  let g:terminal_color_15 = color15[0]
+
+  " Vim 8's :terminal buffer ANSI colors
+  if has('terminal')
+    let g:terminal_ansi_colors = [color00[0], color01[0], color02[0], color03[0],
+        \ color04[0], color05[0], color06[0], color07[0], color08[0], color09[0],
+        \ color10[0], color11[0], color12[0], color13[0], color14[0], color15[0]]
+  endif
+
+endfun
+" }}}
+
+" Apply Syntax Highlightings: {{{
+
+fun! s:apply_syntax_highlightings()
+
+  if s:themeOpt_transparent_background
+    exec 'hi Normal' . s:fg_foreground
+    " Switching between dark & light variant through `set background`
+    " NOTE: Handle background switching right after `Normal` group because of
+    " God-know-why reason. Not doing this way had caused issue before
+    if s:is_dark " DARK VARIANT
+      set background=dark
+    else " LIGHT VARIANT
+      set background=light
+    endif
+
+    exec 'hi NonText' . s:fg_nontext
+    exec 'hi LineNr' . s:fg_linenumber_fg
+    exec 'hi Conceal' . s:fg_linenumber_fg
+    exec 'hi VertSplit' . s:fg_vertsplit_fg . s:ft_none
+    exec 'hi FoldColumn' . s:fg_folded_fg . s:bg_transparent . s:ft_none
+  else
+    exec 'hi Normal' . s:fg_foreground . s:bg_background
+    " Switching between dark & light variant through `set background`
+    if s:is_dark " DARK VARIANT
+      set background=dark
+      exec 'hi EndOfBuffer' . s:fg_cursor_fg  . s:ft_none
+    else " LIGHT VARIANT
+      set background=light
+    endif
+
+    exec 'hi NonText' . s:fg_nontext . s:bg_background
+    exec 'hi LineNr' . s:fg_linenumber_fg . s:bg_linenumber_bg
+    exec 'hi Conceal' . s:fg_linenumber_fg . s:bg_linenumber_bg
+    exec 'hi VertSplit' . s:fg_vertsplit_bg . s:bg_vertsplit_fg
+    exec 'hi FoldColumn' . s:fg_folded_fg . s:bg_background . s:ft_none
+  endif
+
+  exec 'hi Cursor' . s:fg_cursor_fg . s:bg_cursor_bg
+  exec 'hi SpecialKey' . s:fg_nontext
+  exec 'hi Search' . s:fg_search_fg . s:bg_search_bg
+  exec 'hi StatusLine' . s:fg_statusline_active_bg . s:bg_statusline_active_fg
+  exec 'hi StatusLineNC' . s:fg_statusline_inactive_bg . s:bg_statusline_inactive_fg
+  exec 'hi StatusLineTerm' . s:fg_statusline_active_bg . s:bg_statusline_active_fg
+  exec 'hi StatusLineTermNC' . s:fg_statusline_inactive_bg . s:bg_statusline_inactive_fg
+  exec 'hi Visual' . s:fg_visual_fg . s:bg_visual_bg
+  exec 'hi Directory' . s:fg_blue
+  exec 'hi ModeMsg' . s:fg_olive
+  exec 'hi MoreMsg' . s:fg_olive
+  exec 'hi Question' . s:fg_olive
+  exec 'hi WarningMsg' . s:fg_pink
+  exec 'hi MatchParen' . s:fg_matchparen_fg . s:bg_matchparen_bg
+  exec 'hi Folded' . s:fg_folded_fg . s:bg_folded_bg
+  exec 'hi WildMenu' . s:fg_wildmenu_fg . s:bg_wildmenu_bg . s:ft_bold
+
+  if version >= 700
+    exec 'hi CursorLine'  . s:bg_cursorline . s:ft_none
+    if s:mode == s:MODE_16_COLOR
+      exec 'hi CursorLineNr' . s:fg_cursorlinenr_fg . s:bg_cursorlinenr_bg
+    else
+      exec 'hi CursorLineNr' . s:fg_cursorlinenr_fg . s:bg_cursorlinenr_bg . s:ft_none
+    endif
+    exec 'hi CursorColumn'  . s:bg_cursorcolumn . s:ft_none
+    exec 'hi PMenu' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_none
+    exec 'hi PMenuSel' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_reverse
+    if s:themeOpt_transparent_background
+      exec 'hi SignColumn' . s:fg_green . s:ft_none
+    else
+      exec 'hi SignColumn' . s:fg_green . s:bg_background . s:ft_none
+    endif
+  end
+  if version >= 703
+    exec 'hi ColorColumn'  . s:bg_cursorcolumn . s:ft_none
+  end
+
+  exec 'hi TabLine' . s:fg_tabline_inactive_fg . s:bg_tabline_inactive_bg . s:ft_none
+  exec 'hi TabLineFill' . s:fg_tabline_bg . s:bg_tabline_bg . s:ft_none
+  exec 'hi TabLineSel' . s:fg_tabline_active_fg . s:bg_tabline_active_bg . s:ft_none
+
+  exec 'hi BufTabLineCurrent' . s:fg_buftabline_current_fg . s:bg_buftabline_current_bg . s:ft_none
+  exec 'hi BufTabLineActive' . s:fg_buftabline_active_fg . s:bg_buftabline_active_bg . s:ft_none
+  exec 'hi BufTabLineHidden' . s:fg_buftabline_inactive_fg . s:bg_buftabline_inactive_bg . s:ft_none
+  exec 'hi BufTabLineFill'  . s:bg_buftabline_bg . s:ft_none
+
+  " Standard Group Highlighting:
+  exec 'hi Comment' . s:fg_comment . s:ft_italic
+
+  exec 'hi Constant' . s:fg_orange
+  exec 'hi String' . s:fg_olive
+  exec 'hi Character' . s:fg_olive
+  exec 'hi Number' . s:fg_orange
+  exec 'hi Boolean' . s:fg_green . s:ft_bold
+  exec 'hi Float' . s:fg_orange
+
+  exec 'hi Identifier' . s:fg_navy
+  exec 'hi Function' . s:fg_foreground
+
+  exec 'hi Statement' . s:fg_pink . s:ft_none
+  exec 'hi Conditional' . s:fg_purple . s:ft_bold
+  exec 'hi Repeat' . s:fg_purple . s:ft_bold
+  exec 'hi Label' . s:fg_blue
+  exec 'hi Operator' . s:fg_aqua . s:ft_none
+  exec 'hi Keyword' . s:fg_blue
+  exec 'hi Exception' . s:fg_red
+
+  exec 'hi PreProc' . s:fg_blue
+  exec 'hi Include' . s:fg_red
+  exec 'hi Define' . s:fg_blue
+  exec 'hi Macro' . s:fg_blue
+  exec 'hi PreCondit' . s:fg_aqua
+
+  exec 'hi Type' . s:fg_pink . s:ft_bold
+  exec 'hi StorageClass' . s:fg_navy . s:ft_bold
+  exec 'hi Structure' . s:fg_blue . s:ft_bold
+  exec 'hi Typedef' . s:fg_pink . s:ft_bold
+
+  exec 'hi Special' . s:fg_foreground
+  exec 'hi SpecialChar' . s:fg_foreground
+  exec 'hi Tag' . s:fg_green
+  exec 'hi Delimiter' . s:fg_aqua
+  exec 'hi SpecialComment' . s:fg_comment . s:ft_bold
+  exec 'hi Debug' . s:fg_orange
+
+  exec 'hi Error' . s:fg_error_fg . s:bg_error_bg
+  exec 'hi Todo' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold
+
+  exec 'hi Title' . s:fg_comment
+  exec 'hi Global' . s:fg_blue
+
+  " Neovim (LSP) diagnostics
+  if has('nvim')
+    exec 'hi LspDiagnosticsDefaultError' . s:fg_error_fg . s:bg_error_bg
+    exec 'hi LspDiagnosticsDefaultWarning' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold
+    exec 'hi LspDiagnosticsDefaultInformation' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold
+    exec 'hi LspDiagnosticsDefaultHint' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold
+
+    exec 'hi LspDiagnosticsUnderlineError cterm=undercurl gui=undercurl' . s:sp_error_fg
+    exec 'hi LspDiagnosticsUnderlineWarning cterm=undercurl gui=undercurl' . s:sp_todo_fg
+    exec 'hi LspDiagnosticsUnderlineInformation cterm=undercurl gui=undercurl' . s:sp_todo_fg
+    exec 'hi LspDiagnosticsUnderlineHint cterm=undercurl gui=undercurl' . s:sp_todo_fg
+
+    hi! link DiagnosticError LspDiagnosticsDefaultError
+    hi! link DiagnosticWarn LspDiagnosticsDefaultWarning
+    hi! link DiagnosticInfo LspDiagnosticsDefaultInformation
+    hi! link DiagnosticHint LspDiagnosticsDefaultHint
+
+    hi! link DiagnosticUnderlineError LspDiagnosticsUnderlineError
+    hi! link DiagnosticUnderlineWarn LspDiagnosticsUnderlineWarning
+    hi! link DiagnosticUnderlineInfo LspDiagnosticsUnderlineInformation
+    hi! link DiagnosticUnderlineHint LspDiagnosticsUnderlineHint
+  endif
+
+  " Extension {{{
+  " VimL Highlighting
+  exec 'hi vimCommand' . s:fg_pink
+  exec 'hi vimVar' . s:fg_navy
+  exec 'hi vimFuncKey' . s:fg_pink
+  exec 'hi vimFunction' . s:fg_blue . s:ft_bold
+  exec 'hi vimNotFunc' . s:fg_pink
+  exec 'hi vimMap' . s:fg_red
+  exec 'hi vimAutoEvent' . s:fg_aqua . s:ft_bold
+  exec 'hi vimMapModKey' . s:fg_aqua
+  exec 'hi vimFuncName' . s:fg_purple
+  exec 'hi vimIsCommand' . s:fg_foreground
+  exec 'hi vimFuncVar' . s:fg_aqua
+  exec 'hi vimLet' . s:fg_red
+  exec 'hi vimContinue' . s:fg_aqua
+  exec 'hi vimMapRhsExtend' . s:fg_foreground
+  exec 'hi vimCommentTitle' . s:fg_comment . s:ft_italic_bold
+  exec 'hi vimBracket' . s:fg_aqua
+  exec 'hi vimParenSep' . s:fg_aqua
+  exec 'hi vimNotation' . s:fg_aqua
+  exec 'hi vimOper' . s:fg_foreground
+  exec 'hi vimOperParen' . s:fg_foreground
+  exec 'hi vimSynType' . s:fg_purple
+  exec 'hi vimSynReg' . s:fg_pink . s:ft_none
+  exec 'hi vimSynRegion' . s:fg_foreground
+  exec 'hi vimSynMtchGrp' . s:fg_pink
+  exec 'hi vimSynNextgroup' . s:fg_pink
+  exec 'hi vimSynKeyRegion' . s:fg_green
+  exec 'hi vimSynRegOpt' . s:fg_blue
+  exec 'hi vimSynMtchOpt' . s:fg_blue
+  exec 'hi vimSynContains' . s:fg_pink
+  exec 'hi vimGroupName' . s:fg_foreground
+  exec 'hi vimGroupList' . s:fg_foreground
+  exec 'hi vimHiGroup' . s:fg_foreground
+  exec 'hi vimGroup' . s:fg_navy . s:ft_bold
+  exec 'hi vimOnlyOption' . s:fg_blue
+
+  " Makefile Highlighting
+  exec 'hi makeIdent' . s:fg_blue
+  exec 'hi makeSpecTarget' . s:fg_olive
+  exec 'hi makeTarget' . s:fg_red
+  exec 'hi makeStatement' . s:fg_aqua . s:ft_bold
+  exec 'hi makeCommands' . s:fg_foreground
+  exec 'hi makeSpecial' . s:fg_orange . s:ft_bold
+
+  " CMake Highlighting (Builtin)
+  exec 'hi cmakeStatement' . s:fg_blue
+  exec 'hi cmakeArguments' . s:fg_foreground
+  exec 'hi cmakeVariableValue' . s:fg_pink
+
+  " CMake Highlighting (Plugin: https://github.com/pboettch/vim-cmake-syntax)
+  exec 'hi cmakeCommand' . s:fg_blue
+  exec 'hi cmakeCommandConditional' . s:fg_purple . s:ft_bold
+  exec 'hi cmakeKWset' . s:fg_orange
+  exec 'hi cmakeKWvariable_watch' . s:fg_orange
+  exec 'hi cmakeKWif' . s:fg_orange
+  exec 'hi cmakeArguments' . s:fg_foreground
+  exec 'hi cmakeKWproject' . s:fg_pink
+  exec 'hi cmakeGeneratorExpressions' . s:fg_orange
+  exec 'hi cmakeGeneratorExpression' . s:fg_aqua
+  exec 'hi cmakeVariable' . s:fg_pink
+  exec 'hi cmakeProperty' . s:fg_aqua
+  exec 'hi cmakeKWforeach' . s:fg_aqua
+  exec 'hi cmakeKWunset' . s:fg_aqua
+  exec 'hi cmakeKWmacro' . s:fg_aqua
+  exec 'hi cmakeKWget_property' . s:fg_aqua
+  exec 'hi cmakeKWset_tests_properties' . s:fg_aqua
+  exec 'hi cmakeKWmessage' . s:fg_aqua
+  exec 'hi cmakeKWinstall_targets' . s:fg_orange
+  exec 'hi cmakeKWsource_group' . s:fg_orange
+  exec 'hi cmakeKWfind_package' . s:fg_aqua
+  exec 'hi cmakeKWstring' . s:fg_olive
+  exec 'hi cmakeKWinstall' . s:fg_aqua
+  exec 'hi cmakeKWtarget_sources' . s:fg_orange
+
+  " C Highlighting
+  exec 'hi cType' . s:fg_pink . s:ft_bold
+  exec 'hi cFormat' . s:fg_olive
+  exec 'hi cStorageClass' . s:fg_navy . s:ft_bold
+
+  exec 'hi cBoolean' . s:fg_green . s:ft_bold
+  exec 'hi cCharacter' . s:fg_olive
+  exec 'hi cConstant' . s:fg_green . s:ft_bold
+  exec 'hi cConditional' . s:fg_purple . s:ft_bold
+  exec 'hi cSpecial' . s:fg_olive . s:ft_bold
+  exec 'hi cDefine' . s:fg_blue
+  exec 'hi cNumber' . s:fg_orange
+  exec 'hi cPreCondit' . s:fg_aqua
+  exec 'hi cRepeat' . s:fg_purple . s:ft_bold
+  exec 'hi cLabel' . s:fg_aqua
+  " exec 'hi cAnsiFunction' . s:fg_aqua . s:ft_bold
+  " exec 'hi cAnsiName' . s:fg_pink
+  exec 'hi cDelimiter' . s:fg_blue
+  " exec 'hi cBraces' . s:fg_foreground
+  " exec 'hi cIdentifier' . s:fg_blue . s:bg_pink
+  " exec 'hi cSemiColon'  . s:bg_blue
+  exec 'hi cOperator' . s:fg_aqua
+  " exec 'hi cStatement' . s:fg_pink
+  " exec 'hi cTodo' . s:fg_comment . s:ft_bold
+  " exec 'hi cStructure' . s:fg_blue . s:ft_bold
+  exec 'hi cCustomParen' . s:fg_foreground
+  " exec 'hi cCustomFunc' . s:fg_foreground
+  " exec 'hi cUserFunction' . s:fg_blue . s:ft_bold
+  exec 'hi cOctalZero' . s:fg_purple . s:ft_bold
+  if s:langOpt_c__highlight_builtins == 1
+    exec 'hi cFunction' . s:fg_blue
+  else
+    exec 'hi cFunction' . s:fg_foreground
+  endif
+
+  " CPP highlighting
+  exec 'hi cppBoolean' . s:fg_green . s:ft_bold
+  exec 'hi cppSTLnamespace' . s:fg_purple
+  exec 'hi cppSTLexception' . s:fg_pink
+  exec 'hi cppSTLfunctional' . s:fg_foreground . s:ft_bold
+  exec 'hi cppSTLiterator' . s:fg_foreground . s:ft_bold
+  exec 'hi cppExceptions' . s:fg_red
+  exec 'hi cppStatement' . s:fg_blue
+  exec 'hi cppStorageClass' . s:fg_navy . s:ft_bold
+  exec 'hi cppAccess' . s:fg_orange . s:ft_bold
+  if s:langOpt_cpp__highlight_standard_library == 1
+    exec 'hi cppSTLconstant' . s:fg_green . s:ft_bold
+    exec 'hi cppSTLtype' . s:fg_pink . s:ft_bold
+    exec 'hi cppSTLfunction' . s:fg_blue
+    exec 'hi cppSTLios' . s:fg_olive . s:ft_bold
+  else
+    exec 'hi cppSTLconstant' . s:fg_foreground
+    exec 'hi cppSTLtype' . s:fg_foreground
+    exec 'hi cppSTLfunction' . s:fg_foreground
+    exec 'hi cppSTLios' . s:fg_foreground
+  endif
+  " exec 'hi cppSTL' . s:fg_blue
+
+  " Rust highlighting
+  exec 'hi rustKeyword' . s:fg_pink
+  exec 'hi rustModPath' . s:fg_blue
+  exec 'hi rustModPathSep' . s:fg_blue
+  exec 'hi rustLifetime' . s:fg_purple
+  exec 'hi rustStructure' . s:fg_aqua . s:ft_bold
+  exec 'hi rustAttribute' . s:fg_aqua . s:ft_bold
+  exec 'hi rustPanic' . s:fg_olive . s:ft_bold
+  exec 'hi rustTrait' . s:fg_blue . s:ft_bold
+  exec 'hi rustEnum' . s:fg_green . s:ft_bold
+  exec 'hi rustEnumVariant' . s:fg_green
+  exec 'hi rustSelf' . s:fg_orange
+  exec 'hi rustSigil' . s:fg_aqua . s:ft_bold
+  exec 'hi rustOperator' . s:fg_aqua . s:ft_bold
+  exec 'hi rustMacro' . s:fg_olive . s:ft_bold
+  exec 'hi rustMacroVariable' . s:fg_olive
+  exec 'hi rustAssert' . s:fg_olive . s:ft_bold
+  exec 'hi rustConditional' . s:fg_purple . s:ft_bold
+
+  " Lex highlighting
+  exec 'hi lexCFunctions' . s:fg_foreground
+  exec 'hi lexAbbrv' . s:fg_purple
+  exec 'hi lexAbbrvRegExp' . s:fg_aqua
+  exec 'hi lexAbbrvComment' . s:fg_comment
+  exec 'hi lexBrace' . s:fg_navy
+  exec 'hi lexPat' . s:fg_aqua
+  exec 'hi lexPatComment' . s:fg_comment
+  exec 'hi lexPatTag' . s:fg_orange
+  " exec 'hi lexPatBlock' . s:fg_foreground . s:ft_bold
+  exec 'hi lexSlashQuote' . s:fg_foreground
+  exec 'hi lexSep' . s:fg_foreground
+  exec 'hi lexStartState' . s:fg_orange
+  exec 'hi lexPatTagZone' . s:fg_olive . s:ft_bold
+  exec 'hi lexMorePat' . s:fg_olive . s:ft_bold
+  exec 'hi lexOptions' . s:fg_olive . s:ft_bold
+  exec 'hi lexPatString' . s:fg_olive
+
+  " Yacc highlighting
+  exec 'hi yaccNonterminal' . s:fg_navy
+  exec 'hi yaccDelim' . s:fg_orange
+  exec 'hi yaccInitKey' . s:fg_aqua
+  exec 'hi yaccInit' . s:fg_navy
+  exec 'hi yaccKey' . s:fg_purple
+  exec 'hi yaccVar' . s:fg_aqua
+
+  " NASM highlighting
+  exec 'hi nasmStdInstruction' . s:fg_navy
+  exec 'hi nasmGen08Register' . s:fg_aqua
+  exec 'hi nasmGen16Register' . s:fg_aqua
+  exec 'hi nasmGen32Register' . s:fg_aqua
+  exec 'hi nasmGen64Register' . s:fg_aqua
+  exec 'hi nasmHexNumber' . s:fg_purple
+  exec 'hi nasmStorage' . s:fg_aqua . s:ft_bold
+  exec 'hi nasmLabel' . s:fg_pink
+  exec 'hi nasmDirective' . s:fg_blue . s:ft_bold
+  exec 'hi nasmLocalLabel' . s:fg_orange
+
+  " GAS highlighting
+  exec 'hi gasSymbol' . s:fg_pink
+  exec 'hi gasDirective' . s:fg_blue . s:ft_bold
+  exec 'hi gasOpcode_386_Base' . s:fg_navy
+  exec 'hi gasDecimalNumber' . s:fg_purple
+  exec 'hi gasSymbolRef' . s:fg_pink
+  exec 'hi gasRegisterX86' . s:fg_blue
+  exec 'hi gasOpcode_P6_Base' . s:fg_navy
+  exec 'hi gasDirectiveStore' . s:fg_foreground . s:ft_bold
+
+  " MIPS highlighting
+  exec 'hi mipsInstruction' . s:fg_pink
+  exec 'hi mipsRegister' . s:fg_navy
+  exec 'hi mipsLabel' . s:fg_aqua . s:ft_bold
+  exec 'hi mipsDirective' . s:fg_purple . s:ft_bold
+
+  " Shell/Bash highlighting
+  exec 'hi bashStatement' . s:fg_foreground . s:ft_bold
+  exec 'hi shDerefVar' . s:fg_aqua . s:ft_bold
+  exec 'hi shDerefSimple' . s:fg_aqua
+  exec 'hi shFunction' . s:fg_orange . s:ft_bold
+  exec 'hi shStatement' . s:fg_foreground
+  exec 'hi shLoop' . s:fg_purple . s:ft_bold
+  exec 'hi shQuote' . s:fg_olive
+  exec 'hi shCaseEsac' . s:fg_aqua . s:ft_bold
+  exec 'hi shSnglCase' . s:fg_purple . s:ft_none
+  exec 'hi shFunctionOne' . s:fg_navy
+  exec 'hi shCase' . s:fg_navy
+  exec 'hi shSetList' . s:fg_navy
+  " @see Dockerfile Highlighting section for more sh*
+
+  " PowerShell Highlighting
+  exec 'hi ps1Type' . s:fg_green . s:ft_bold
+  exec 'hi ps1Variable' . s:fg_navy
+  exec 'hi ps1Boolean' . s:fg_navy . s:ft_bold
+  exec 'hi ps1FunctionInvocation' . s:fg_pink
+  exec 'hi ps1FunctionDeclaration' . s:fg_pink
+  exec 'hi ps1Keyword' . s:fg_blue . s:ft_bold
+  exec 'hi ps1Exception' . s:fg_red
+  exec 'hi ps1Operator' . s:fg_aqua . s:ft_bold
+  exec 'hi ps1CommentDoc' . s:fg_purple
+  exec 'hi ps1CDocParam' . s:fg_orange
+
+  " HTML Highlighting
+  exec 'hi htmlTitle' . s:fg_green . s:ft_bold
+  exec 'hi htmlH1' . s:fg_green . s:ft_bold
+  exec 'hi htmlH2' . s:fg_aqua . s:ft_bold
+  exec 'hi htmlH3' . s:fg_purple . s:ft_bold
+  exec 'hi htmlH4' . s:fg_orange . s:ft_bold
+  exec 'hi htmlTag' . s:fg_comment
+  exec 'hi htmlTagName' . s:fg_wine
+  exec 'hi htmlArg' . s:fg_pink
+  exec 'hi htmlEndTag' . s:fg_comment
+  exec 'hi htmlString' . s:fg_blue
+  exec 'hi htmlScriptTag' . s:fg_comment
+  exec 'hi htmlBold' . s:fg_foreground . s:ft_bold
+  exec 'hi htmlItalic' . s:fg_comment . s:ft_italic
+  exec 'hi htmlBoldItalic' . s:fg_navy . s:ft_italic_bold
+  " exec 'hi htmlLink' . s:fg_blue . s:ft_bold
+  exec 'hi htmlTagN' . s:fg_wine . s:ft_bold
+  exec 'hi htmlSpecialTagName' . s:fg_wine
+  exec 'hi htmlComment' . s:fg_comment . s:ft_italic
+  exec 'hi htmlCommentPart' . s:fg_comment . s:ft_italic
+
+  " CSS Highlighting
+  exec 'hi cssIdentifier' . s:fg_pink
+  exec 'hi cssPositioningProp' . s:fg_foreground
+  exec 'hi cssNoise' . s:fg_foreground
+  exec 'hi cssBoxProp' . s:fg_foreground
+  exec 'hi cssTableAttr' . s:fg_purple
+  exec 'hi cssPositioningAttr' . s:fg_navy
+  exec 'hi cssValueLength' . s:fg_orange
+  exec 'hi cssFunctionName' . s:fg_blue
+  exec 'hi cssUnitDecorators' . s:fg_aqua
+  exec 'hi cssColor' . s:fg_blue . s:ft_bold
+  exec 'hi cssBraces' . s:fg_pink
+  exec 'hi cssBackgroundProp' . s:fg_foreground
+  exec 'hi cssTextProp' . s:fg_foreground
+  exec 'hi cssDimensionProp' . s:fg_foreground
+  exec 'hi cssClassName' . s:fg_pink
+
+  " Markdown Highlighting
+  exec 'hi markdownHeadingRule' . s:fg_pink . s:ft_bold
+  exec 'hi markdownH1' . s:fg_pink . s:ft_bold
+  exec 'hi markdownH2' . s:fg_orange . s:ft_bold
+  exec 'hi markdownBlockquote' . s:fg_pink
+  exec 'hi markdownCodeBlock' . s:fg_olive
+  exec 'hi markdownCode' . s:fg_olive
+  exec 'hi markdownLink' . s:fg_blue . s:ft_bold
+  exec 'hi markdownUrl' . s:fg_blue
+  exec 'hi markdownLinkText' . s:fg_pink
+  exec 'hi markdownLinkTextDelimiter' . s:fg_purple
+  exec 'hi markdownLinkDelimiter' . s:fg_purple
+  exec 'hi markdownCodeDelimiter' . s:fg_blue
+
+  exec 'hi mkdCode' . s:fg_olive
+  exec 'hi mkdLink' . s:fg_blue . s:ft_bold
+  exec 'hi mkdURL' . s:fg_comment
+  exec 'hi mkdString' . s:fg_foreground
+  exec 'hi mkdBlockQuote' . s:fg_pink
+  exec 'hi mkdLinkTitle' . s:fg_pink
+  exec 'hi mkdDelimiter' . s:fg_aqua
+  exec 'hi mkdRule' . s:fg_pink
+
+  " reStructuredText Highlighting
+  exec 'hi rstSections' . s:fg_pink . s:ft_bold
+  exec 'hi rstDelimiter' . s:fg_pink . s:ft_bold
+  exec 'hi rstExplicitMarkup' . s:fg_pink . s:ft_bold
+  exec 'hi rstDirective' . s:fg_blue
+  exec 'hi rstHyperlinkTarget' . s:fg_green
+  exec 'hi rstExDirective' . s:fg_foreground
+  exec 'hi rstInlineLiteral' . s:fg_olive
+  exec 'hi rstInterpretedTextOrHyperlinkReference' . s:fg_blue
+
+  " Python Highlighting
+  exec 'hi pythonImport' . s:fg_pink . s:ft_bold
+  exec 'hi pythonExceptions' . s:fg_red
+  exec 'hi pythonException' . s:fg_purple . s:ft_bold
+  exec 'hi pythonInclude' . s:fg_red
+  exec 'hi pythonStatement' . s:fg_pink
+  exec 'hi pythonConditional' . s:fg_purple . s:ft_bold
+  exec 'hi pythonRepeat' . s:fg_purple . s:ft_bold
+  exec 'hi pythonFunction' . s:fg_aqua . s:ft_bold
+  exec 'hi pythonPreCondit' . s:fg_purple
+  exec 'hi pythonExClass' . s:fg_orange
+  exec 'hi pythonOperator' . s:fg_purple . s:ft_bold
+  exec 'hi pythonBuiltin' . s:fg_foreground
+  exec 'hi pythonDecorator' . s:fg_orange
+
+  exec 'hi pythonString' . s:fg_olive
+  exec 'hi pythonEscape' . s:fg_olive . s:ft_bold
+  exec 'hi pythonStrFormatting' . s:fg_olive . s:ft_bold
+
+  exec 'hi pythonBoolean' . s:fg_green . s:ft_bold
+  exec 'hi pythonBytesEscape' . s:fg_olive . s:ft_bold
+  exec 'hi pythonDottedName' . s:fg_purple
+  exec 'hi pythonStrFormat' . s:fg_foreground
+
+  if s:langOpt_python__highlight_builtins == 1
+    exec 'hi pythonBuiltinFunc' . s:fg_blue
+    exec 'hi pythonBuiltinObj' . s:fg_red
+  else
+    exec 'hi pythonBuiltinFunc' . s:fg_foreground
+    exec 'hi pythonBuiltinObj' . s:fg_foreground
+  endif
+
+  " Java Highlighting
+  exec 'hi javaExternal' . s:fg_pink
+  exec 'hi javaAnnotation' . s:fg_orange
+  exec 'hi javaTypedef' . s:fg_aqua
+  exec 'hi javaClassDecl' . s:fg_aqua . s:ft_bold
+  exec 'hi javaScopeDecl' . s:fg_blue . s:ft_bold
+  exec 'hi javaStorageClass' . s:fg_navy . s:ft_bold
+  exec 'hi javaBoolean' . s:fg_green . s:ft_bold
+  exec 'hi javaConstant' . s:fg_blue
+  exec 'hi javaCommentTitle' . s:fg_wine
+  exec 'hi javaDocTags' . s:fg_aqua
+  exec 'hi javaDocComment' . s:fg_comment
+  exec 'hi javaDocParam' . s:fg_foreground
+  exec 'hi javaStatement' . s:fg_pink
+
+  " JavaScript Highlighting
+  exec 'hi javaScriptBraces' . s:fg_blue
+  exec 'hi javaScriptParens' . s:fg_blue
+  exec 'hi javaScriptIdentifier' . s:fg_pink
+  exec 'hi javaScriptFunction' . s:fg_blue . s:ft_bold
+  exec 'hi javaScriptConditional' . s:fg_purple . s:ft_bold
+  exec 'hi javaScriptRepeat' . s:fg_purple . s:ft_bold
+  exec 'hi javaScriptBoolean' . s:fg_green . s:ft_bold
+  exec 'hi javaScriptNumber' . s:fg_orange
+  exec 'hi javaScriptMember' . s:fg_navy
+  exec 'hi javaScriptReserved' . s:fg_navy
+  exec 'hi javascriptNull' . s:fg_comment . s:ft_bold
+  exec 'hi javascriptGlobal' . s:fg_foreground
+  exec 'hi javascriptStatement' . s:fg_pink
+  exec 'hi javaScriptMessage' . s:fg_foreground
+  exec 'hi javaScriptMember' . s:fg_foreground
+
+  " TypeScript Highlighting
+  exec 'hi typescriptDecorators' . s:fg_orange
+  exec 'hi typescriptLabel' . s:fg_purple . s:ft_bold
+
+  " @target https://github.com/pangloss/vim-javascript
+  exec 'hi jsImport' . s:fg_pink . s:ft_bold
+  exec 'hi jsExport' . s:fg_pink . s:ft_bold
+  exec 'hi jsModuleAs' . s:fg_pink . s:ft_bold
+  exec 'hi jsFrom' . s:fg_pink . s:ft_bold
+  exec 'hi jsExportDefault' . s:fg_pink . s:ft_bold
+  exec 'hi jsFuncParens' . s:fg_blue
+  exec 'hi jsFuncBraces' . s:fg_blue
+  exec 'hi jsParens' . s:fg_blue
+  exec 'hi jsBraces' . s:fg_blue
+  exec 'hi jsNoise' . s:fg_blue
+
+  " Jsx Highlighting
+  " @target https://github.com/MaxMEllon/vim-jsx-pretty
+  exec 'hi jsxTagName' . s:fg_wine
+  exec 'hi jsxComponentName' . s:fg_wine
+  exec 'hi jsxAttrib' . s:fg_pink
+  exec 'hi jsxEqual' . s:fg_comment
+  exec 'hi jsxString' . s:fg_blue
+  exec 'hi jsxCloseTag' . s:fg_comment
+  exec 'hi jsxCloseString' . s:fg_comment
+  exec 'hi jsxDot' . s:fg_wine
+  exec 'hi jsxNamespace' . s:fg_wine
+  exec 'hi jsxPunct' . s:fg_comment
+
+  " Json Highlighting
+  " @target https://github.com/elzr/vim-json
+  exec 'hi jsonKeyword' . s:fg_blue
+  exec 'hi jsonString' . s:fg_olive
+  exec 'hi jsonQuote' . s:fg_comment
+  exec 'hi jsonNoise' . s:fg_foreground
+  exec 'hi jsonKeywordMatch' . s:fg_foreground
+  exec 'hi jsonBraces' . s:fg_foreground
+  exec 'hi jsonNumber' . s:fg_orange
+  exec 'hi jsonNull' . s:fg_purple . s:ft_bold
+  exec 'hi jsonBoolean' . s:fg_green . s:ft_bold
+  exec 'hi jsonCommentError' . s:fg_pink . s:bg_background
+
+  " Go Highlighting
+  exec 'hi goDirective' . s:fg_red
+  exec 'hi goDeclaration' . s:fg_blue . s:ft_bold
+  exec 'hi goStatement' . s:fg_pink
+  exec 'hi goConditional' . s:fg_purple . s:ft_bold
+  exec 'hi goConstants' . s:fg_orange
+  exec 'hi goFunction' . s:fg_orange
+  " exec 'hi goTodo' . s:fg_comment . s:ft_bold
+  exec 'hi goDeclType' . s:fg_blue
+  exec 'hi goBuiltins' . s:fg_purple
+
+  " Systemtap Highlighting
+  " exec 'hi stapBlock' . s:fg_comment . s:ft_none
+  exec 'hi stapComment' . s:fg_comment . s:ft_none
+  exec 'hi stapProbe' . s:fg_aqua . s:ft_bold
+  exec 'hi stapStat' . s:fg_navy . s:ft_bold
+  exec 'hi stapFunc' . s:fg_foreground
+  exec 'hi stapString' . s:fg_olive
+  exec 'hi stapTarget' . s:fg_navy
+  exec 'hi stapStatement' . s:fg_pink
+  exec 'hi stapType' . s:fg_pink . s:ft_bold
+  exec 'hi stapSharpBang' . s:fg_comment
+  exec 'hi stapDeclaration' . s:fg_pink
+  exec 'hi stapCMacro' . s:fg_blue
+
+  " DTrace Highlighting
+  exec 'hi dtraceProbe' . s:fg_blue
+  exec 'hi dtracePredicate' . s:fg_purple . s:ft_bold
+  exec 'hi dtraceComment' . s:fg_comment
+  exec 'hi dtraceFunction' . s:fg_foreground
+  exec 'hi dtraceAggregatingFunction' . s:fg_blue . s:ft_bold
+  exec 'hi dtraceStatement' . s:fg_navy . s:ft_bold
+  exec 'hi dtraceIdentifier' . s:fg_pink
+  exec 'hi dtraceOption' . s:fg_pink
+  exec 'hi dtraceConstant' . s:fg_orange
+  exec 'hi dtraceType' . s:fg_pink . s:ft_bold
+
+  " PlantUML Highlighting
+  exec 'hi plantumlPreProc' . s:fg_orange . s:ft_bold
+  exec 'hi plantumlDirectedOrVerticalArrowRL' . s:fg_pink
+  exec 'hi plantumlDirectedOrVerticalArrowLR' . s:fg_pink
+  exec 'hi plantumlString' . s:fg_olive
+  exec 'hi plantumlActivityThing' . s:fg_purple
+  exec 'hi plantumlText' . s:fg_navy
+  exec 'hi plantumlClassPublic' . s:fg_olive . s:ft_bold
+  exec 'hi plantumlClassPrivate' . s:fg_red
+  exec 'hi plantumlColonLine' . s:fg_orange
+  exec 'hi plantumlClass' . s:fg_navy
+  exec 'hi plantumlHorizontalArrow' . s:fg_pink
+  exec 'hi plantumlTypeKeyword' . s:fg_blue . s:ft_bold
+  exec 'hi plantumlKeyword' . s:fg_pink . s:ft_bold
+
+  exec 'hi plantumlType' . s:fg_blue . s:ft_bold
+  exec 'hi plantumlBlock' . s:fg_pink . s:ft_bold
+  exec 'hi plantumlPreposition' . s:fg_orange
+  exec 'hi plantumlLayout' . s:fg_blue . s:ft_bold
+  exec 'hi plantumlNote' . s:fg_orange
+  exec 'hi plantumlLifecycle' . s:fg_aqua
+  exec 'hi plantumlParticipant' . s:fg_foreground . s:ft_bold
+
+
+  " Haskell Highlighting
+  exec 'hi haskellType' . s:fg_aqua . s:ft_bold
+  exec 'hi haskellIdentifier' . s:fg_orange . s:ft_bold
+  exec 'hi haskellOperators' . s:fg_pink
+  exec 'hi haskellWhere' . s:fg_foreground . s:ft_bold
+  exec 'hi haskellDelimiter' . s:fg_aqua
+  exec 'hi haskellImportKeywords' . s:fg_pink
+  exec 'hi haskellStatement' . s:fg_purple . s:ft_bold
+
+
+  " SQL/MySQL Highlighting
+  exec 'hi sqlStatement' . s:fg_pink . s:ft_bold
+  exec 'hi sqlType' . s:fg_blue . s:ft_bold
+  exec 'hi sqlKeyword' . s:fg_pink
+  exec 'hi sqlOperator' . s:fg_aqua
+  exec 'hi sqlSpecial' . s:fg_green . s:ft_bold
+
+  exec 'hi mysqlVariable' . s:fg_olive . s:ft_bold
+  exec 'hi mysqlType' . s:fg_blue . s:ft_bold
+  exec 'hi mysqlKeyword' . s:fg_pink
+  exec 'hi mysqlOperator' . s:fg_aqua
+  exec 'hi mysqlSpecial' . s:fg_green . s:ft_bold
+
+
+  " Octave/MATLAB Highlighting
+  exec 'hi octaveVariable' . s:fg_foreground
+  exec 'hi octaveDelimiter' . s:fg_pink
+  exec 'hi octaveQueryVar' . s:fg_foreground
+  exec 'hi octaveSemicolon' . s:fg_purple
+  exec 'hi octaveFunction' . s:fg_navy
+  exec 'hi octaveSetVar' . s:fg_blue
+  exec 'hi octaveUserVar' . s:fg_foreground
+  exec 'hi octaveArithmeticOperator' . s:fg_aqua
+  exec 'hi octaveBeginKeyword' . s:fg_purple . s:ft_bold
+  exec 'hi octaveElseKeyword' . s:fg_purple . s:ft_bold
+  exec 'hi octaveEndKeyword' . s:fg_purple . s:ft_bold
+  exec 'hi octaveStatement' . s:fg_pink
+
+  " Ruby Highlighting
+  exec 'hi rubyModule' . s:fg_navy . s:ft_bold
+  exec 'hi rubyClass' . s:fg_pink . s:ft_bold
+  exec 'hi rubyPseudoVariable' . s:fg_comment . s:ft_bold
+  exec 'hi rubyKeyword' . s:fg_pink
+  exec 'hi rubyInstanceVariable' . s:fg_purple
+  exec 'hi rubyFunction' . s:fg_foreground . s:ft_bold
+  exec 'hi rubyDefine' . s:fg_pink
+  exec 'hi rubySymbol' . s:fg_aqua
+  exec 'hi rubyConstant' . s:fg_blue
+  exec 'hi rubyAccess' . s:fg_navy
+  exec 'hi rubyAttribute' . s:fg_green
+  exec 'hi rubyInclude' . s:fg_red
+  exec 'hi rubyLocalVariableOrMethod' . s:fg_orange
+  exec 'hi rubyCurlyBlock' . s:fg_foreground
+  exec 'hi rubyCurlyBlockDelimiter' . s:fg_aqua
+  exec 'hi rubyArrayDelimiter' . s:fg_aqua
+  exec 'hi rubyStringDelimiter' . s:fg_olive
+  exec 'hi rubyInterpolationDelimiter' . s:fg_orange
+  exec 'hi rubyConditional' . s:fg_purple . s:ft_bold
+  exec 'hi rubyRepeat' . s:fg_purple . s:ft_bold
+  exec 'hi rubyControl' . s:fg_purple . s:ft_bold
+  exec 'hi rubyException' . s:fg_purple . s:ft_bold
+  exec 'hi rubyExceptional' . s:fg_purple . s:ft_bold
+  exec 'hi rubyBoolean' . s:fg_green . s:ft_bold
+
+  " Fortran Highlighting
+  exec 'hi fortranUnitHeader' . s:fg_blue . s:ft_bold
+  exec 'hi fortranIntrinsic' . s:fg_blue . s:bg_background . s:ft_none
+  exec 'hi fortranType' . s:fg_pink . s:ft_bold
+  exec 'hi fortranTypeOb' . s:fg_pink . s:ft_bold
+  exec 'hi fortranStructure' . s:fg_aqua
+  exec 'hi fortranStorageClass' . s:fg_navy . s:ft_bold
+  exec 'hi fortranStorageClassR' . s:fg_navy . s:ft_bold
+  exec 'hi fortranKeyword' . s:fg_pink
+  exec 'hi fortranReadWrite' . s:fg_aqua . s:ft_bold
+  exec 'hi fortranIO' . s:fg_navy
+  exec 'hi fortranOperator' . s:fg_aqua . s:ft_bold
+  exec 'hi fortranCall' . s:fg_aqua . s:ft_bold
+  exec 'hi fortranContinueMark' . s:fg_green
+
+  " ALGOL Highlighting (Plugin: https://github.com/sterpe/vim-algol68)
+  exec 'hi algol68Statement' . s:fg_blue . s:ft_bold
+  exec 'hi algol68Operator' . s:fg_aqua . s:ft_bold
+  exec 'hi algol68PreProc' . s:fg_green
+  exec 'hi algol68Function' . s:fg_blue
+
+  " R Highlighting
+  exec 'hi rType' . s:fg_blue
+  exec 'hi rArrow' . s:fg_pink
+  exec 'hi rDollar' . s:fg_blue
+
+  " XXD Highlighting
+  exec 'hi xxdAddress' . s:fg_navy
+  exec 'hi xxdSep' . s:fg_pink
+  exec 'hi xxdAscii' . s:fg_pink
+  exec 'hi xxdDot' . s:fg_aqua
+
+  " PHP Highlighting
+  exec 'hi phpIdentifier' . s:fg_foreground
+  exec 'hi phpVarSelector' . s:fg_pink
+  exec 'hi phpKeyword' . s:fg_blue
+  exec 'hi phpRepeat' . s:fg_purple . s:ft_bold
+  exec 'hi phpConditional' . s:fg_purple . s:ft_bold
+  exec 'hi phpStatement' . s:fg_pink
+  exec 'hi phpAssignByRef' . s:fg_aqua . s:ft_bold
+  exec 'hi phpSpecialFunction' . s:fg_blue
+  exec 'hi phpFunctions' . s:fg_blue
+  exec 'hi phpComparison' . s:fg_aqua
+  exec 'hi phpBackslashSequences' . s:fg_olive . s:ft_bold
+  exec 'hi phpMemberSelector' . s:fg_blue
+  exec 'hi phpStorageClass' . s:fg_purple . s:ft_bold
+  exec 'hi phpDefine' . s:fg_navy
+  exec 'hi phpIntVar' . s:fg_navy . s:ft_bold
+
+  " Perl Highlighting
+  exec 'hi perlFiledescRead' . s:fg_green
+  exec 'hi perlMatchStartEnd' . s:fg_pink
+  exec 'hi perlStatementFlow' . s:fg_pink
+  exec 'hi perlStatementStorage' . s:fg_pink
+  exec 'hi perlFunction' . s:fg_pink . s:ft_bold
+  exec 'hi perlMethod' . s:fg_foreground
+  exec 'hi perlStatementFiledesc' . s:fg_orange
+  exec 'hi perlVarPlain' . s:fg_navy
+  exec 'hi perlSharpBang' . s:fg_comment
+  exec 'hi perlStatementInclude' . s:fg_aqua . s:ft_bold
+  exec 'hi perlStatementScalar' . s:fg_purple
+  exec 'hi perlSubName' . s:fg_aqua . s:ft_bold
+  exec 'hi perlSpecialString' . s:fg_olive . s:ft_bold
+
+  " Pascal Highlighting
+  exec 'hi pascalType' . s:fg_pink . s:ft_bold
+  exec 'hi pascalStatement' . s:fg_blue . s:ft_bold
+  exec 'hi pascalPredefined' . s:fg_pink
+  exec 'hi pascalFunction' . s:fg_foreground
+  exec 'hi pascalStruct' . s:fg_navy . s:ft_bold
+  exec 'hi pascalOperator' . s:fg_aqua . s:ft_bold
+  exec 'hi pascalPreProc' . s:fg_green
+  exec 'hi pascalAcces' . s:fg_navy . s:ft_bold
+
+  " Lua Highlighting
+  exec 'hi luaFunc' . s:fg_foreground
+  exec 'hi luaIn' . s:fg_blue . s:ft_bold
+  exec 'hi luaFunction' . s:fg_pink
+  exec 'hi luaStatement' . s:fg_blue
+  exec 'hi luaRepeat' . s:fg_blue . s:ft_bold
+  exec 'hi luaCondStart' . s:fg_purple . s:ft_bold
+  exec 'hi luaTable' . s:fg_aqua . s:ft_bold
+  exec 'hi luaConstant' . s:fg_green . s:ft_bold
+  exec 'hi luaElse' . s:fg_purple . s:ft_bold
+  exec 'hi luaCondElseif' . s:fg_purple . s:ft_bold
+  exec 'hi luaCond' . s:fg_purple . s:ft_bold
+  exec 'hi luaCondEnd' . s:fg_purple
+
+  " Clojure highlighting:
+  exec 'hi clojureConstant' . s:fg_blue
+  exec 'hi clojureBoolean' . s:fg_orange
+  exec 'hi clojureCharacter' . s:fg_olive
+  exec 'hi clojureKeyword' . s:fg_pink
+  exec 'hi clojureNumber' . s:fg_orange
+  exec 'hi clojureString' . s:fg_olive
+  exec 'hi clojureRegexp' . s:fg_purple
+  exec 'hi clojureRegexpEscape' . s:fg_pink
+  exec 'hi clojureParen' . s:fg_aqua
+  exec 'hi clojureVariable' . s:fg_olive
+  exec 'hi clojureCond' . s:fg_blue
+  exec 'hi clojureDefine' . s:fg_blue . s:ft_bold
+  exec 'hi clojureException' . s:fg_red
+  exec 'hi clojureFunc' . s:fg_navy
+  exec 'hi clojureMacro' . s:fg_blue
+  exec 'hi clojureRepeat' . s:fg_blue
+  exec 'hi clojureSpecial' . s:fg_blue . s:ft_bold
+  exec 'hi clojureQuote' . s:fg_blue
+  exec 'hi clojureUnquote' . s:fg_blue
+  exec 'hi clojureMeta' . s:fg_blue
+  exec 'hi clojureDeref' . s:fg_blue
+  exec 'hi clojureAnonArg' . s:fg_blue
+  exec 'hi clojureRepeat' . s:fg_blue
+  exec 'hi clojureDispatch' . s:fg_aqua
+
+  " Dockerfile Highlighting
+  " @target https://github.com/docker/docker/tree/master/contrib/syntax/vim
+  exec 'hi dockerfileKeyword' . s:fg_blue
+  exec 'hi shDerefVar' . s:fg_purple . s:ft_bold
+  exec 'hi shOperator' . s:fg_aqua
+  exec 'hi shOption' . s:fg_navy
+  exec 'hi shLine' . s:fg_foreground
+  exec 'hi shWrapLineOperator' . s:fg_pink
+
+  " NGINX Highlighting
+  " @target https://github.com/evanmiller/nginx-vim-syntax
+  exec 'hi ngxDirectiveBlock' . s:fg_pink . s:ft_bold
+  exec 'hi ngxDirective' . s:fg_blue . s:ft_none
+  exec 'hi ngxDirectiveImportant' . s:fg_blue . s:ft_bold
+  exec 'hi ngxString' . s:fg_olive
+  exec 'hi ngxVariableString' . s:fg_purple
+  exec 'hi ngxVariable' . s:fg_purple . s:ft_none
+
+  " Yaml Highlighting
+  exec 'hi yamlBlockMappingKey' . s:fg_blue
+  exec 'hi yamlKeyValueDelimiter' . s:fg_pink
+  exec 'hi yamlBlockCollectionItemStart' . s:fg_pink
+
+  " Qt QML Highlighting
+  exec 'hi qmlObjectLiteralType' . s:fg_pink
+  exec 'hi qmlReserved' . s:fg_purple
+  exec 'hi qmlBindingProperty' . s:fg_navy
+  exec 'hi qmlType' . s:fg_navy
+
+  " Dosini Highlighting
+  exec 'hi dosiniHeader' . s:fg_pink
+  exec 'hi dosiniLabel' . s:fg_blue
+
+  " Mail highlighting
+  exec 'hi mailHeaderKey' . s:fg_blue
+  exec 'hi mailHeaderEmail' . s:fg_purple
+  exec 'hi mailSubject' . s:fg_pink
+  exec 'hi mailHeader' . s:fg_comment
+  exec 'hi mailURL' . s:fg_aqua
+  exec 'hi mailEmail' . s:fg_purple
+  exec 'hi mailQuoted1' . s:fg_olive
+  exec 'hi mailQuoted2' . s:fg_navy
+
+  " XML Highlighting
+  exec 'hi xmlProcessingDelim' . s:fg_pink
+  exec 'hi xmlString' . s:fg_olive
+  exec 'hi xmlEqual' . s:fg_orange
+  exec 'hi xmlAttrib' . s:fg_navy
+  exec 'hi xmlAttribPunct' . s:fg_pink
+  exec 'hi xmlTag' . s:fg_blue
+  exec 'hi xmlTagName' . s:fg_blue
+  exec 'hi xmlEndTag' . s:fg_blue
+  exec 'hi xmlNamespace' . s:fg_orange
+
+  " Exlixir Highlighting
+  " @target https://github.com/elixir-lang/vim-elixir
+  exec 'hi elixirAlias' . s:fg_blue . s:ft_bold
+  exec 'hi elixirAtom' . s:fg_navy
+  exec 'hi elixirVariable' . s:fg_navy
+  exec 'hi elixirUnusedVariable' . s:fg_foreground . s:ft_bold
+  exec 'hi elixirInclude' . s:fg_purple
+  exec 'hi elixirStringDelimiter' . s:fg_olive
+  exec 'hi elixirKeyword' . s:fg_purple . s:ft_bold
+  exec 'hi elixirFunctionDeclaration' . s:fg_aqua . s:ft_bold
+  exec 'hi elixirBlockDefinition' . s:fg_pink
+  exec 'hi elixirDefine' . s:fg_pink
+  exec 'hi elixirStructDefine' . s:fg_pink
+  exec 'hi elixirPrivateDefine' . s:fg_pink
+  exec 'hi elixirModuleDefine' . s:fg_pink
+  exec 'hi elixirProtocolDefine' . s:fg_pink
+  exec 'hi elixirImplDefine' . s:fg_pink
+  exec 'hi elixirModuleDeclaration' . s:fg_aqua . s:ft_bold
+  exec 'hi elixirDocString' . s:fg_olive
+  exec 'hi elixirDocTest' . s:fg_green . s:ft_bold
+
+  " Erlang Highlighting
+  exec 'hi erlangBIF' . s:fg_purple . s:ft_bold
+  exec 'hi erlangBracket' . s:fg_pink
+  exec 'hi erlangLocalFuncCall' . s:fg_foreground
+  exec 'hi erlangVariable' . s:fg_foreground
+  exec 'hi erlangAtom' . s:fg_navy
+  exec 'hi erlangAttribute' . s:fg_blue . s:ft_bold
+  exec 'hi erlangRecordDef' . s:fg_blue . s:ft_bold
+  exec 'hi erlangRecord' . s:fg_blue
+  exec 'hi erlangRightArrow' . s:fg_blue . s:ft_bold
+  exec 'hi erlangStringModifier' . s:fg_olive . s:ft_bold
+  exec 'hi erlangInclude' . s:fg_blue . s:ft_bold
+  exec 'hi erlangKeyword' . s:fg_pink
+  exec 'hi erlangGlobalFuncCall' . s:fg_foreground
+
+  " Cucumber Highlighting
+  exec 'hi cucumberFeature' . s:fg_blue . s:ft_bold
+  exec 'hi cucumberBackground' . s:fg_pink . s:ft_bold
+  exec 'hi cucumberScenario' . s:fg_pink . s:ft_bold
+  exec 'hi cucumberGiven' . s:fg_orange
+  exec 'hi cucumberGivenAnd' . s:fg_blue
+  exec 'hi cucumberThen' . s:fg_orange
+  exec 'hi cucumberThenAnd' . s:fg_blue
+  exec 'hi cucumberWhen' . s:fg_purple . s:ft_bold
+  exec 'hi cucumberScenarioOutline' . s:fg_pink . s:ft_bold
+  exec 'hi cucumberExamples' . s:fg_aqua
+  exec 'hi cucumberTags' . s:fg_aqua
+  exec 'hi cucumberPlaceholder' . s:fg_aqua
+
+  " Ada Highlighting
+  exec 'hi adaInc' . s:fg_aqua . s:ft_bold
+  exec 'hi adaSpecial' . s:fg_aqua . s:ft_bold
+  exec 'hi adaKeyword' . s:fg_pink
+  exec 'hi adaBegin' . s:fg_pink
+  exec 'hi adaEnd' . s:fg_pink
+  exec 'hi adaTypedef' . s:fg_navy . s:ft_bold
+  exec 'hi adaAssignment' . s:fg_aqua . s:ft_bold
+  exec 'hi adaAttribute' . s:fg_green
+
+  " COBOL Highlighting
+  exec 'hi cobolMarker' . s:fg_comment . s:bg_cursorline
+  exec 'hi cobolLine' . s:fg_foreground
+  exec 'hi cobolReserved' . s:fg_blue
+  exec 'hi cobolDivision' . s:fg_pink . s:ft_bold
+  exec 'hi cobolDivisionName' . s:fg_pink . s:ft_bold
+  exec 'hi cobolSection' . s:fg_navy . s:ft_bold
+  exec 'hi cobolSectionName' . s:fg_navy . s:ft_bold
+  exec 'hi cobolParagraph' . s:fg_purple
+  exec 'hi cobolParagraphName' . s:fg_purple
+  exec 'hi cobolDeclA' . s:fg_purple
+  exec 'hi cobolDecl' . s:fg_green
+  exec 'hi cobolCALLs' . s:fg_aqua . s:ft_bold
+  exec 'hi cobolEXECs' . s:fg_aqua . s:ft_bold
+
+  " GNU sed highlighting
+  exec 'hi sedST' . s:fg_purple . s:ft_bold
+  exec 'hi sedFlag' . s:fg_purple . s:ft_bold
+  exec 'hi sedRegexp47' . s:fg_pink
+  exec 'hi sedRegexpMeta' . s:fg_blue . s:ft_bold
+  exec 'hi sedReplacement47' . s:fg_olive
+  exec 'hi sedReplaceMeta' . s:fg_orange . s:ft_bold
+  exec 'hi sedAddress' . s:fg_pink
+  exec 'hi sedFunction' . s:fg_aqua . s:ft_bold
+  exec 'hi sedBranch' . s:fg_green . s:ft_bold
+  exec 'hi sedLabel' . s:fg_green . s:ft_bold
+
+  " GNU awk highlighting
+  exec 'hi awkPatterns' . s:fg_pink . s:ft_bold
+  exec 'hi awkSearch' . s:fg_pink
+  exec 'hi awkRegExp' . s:fg_blue . s:ft_bold
+  exec 'hi awkCharClass' . s:fg_blue . s:ft_bold
+  exec 'hi awkFieldVars' . s:fg_green . s:ft_bold
+  exec 'hi awkStatement' . s:fg_blue . s:ft_bold
+  exec 'hi awkFunction' . s:fg_blue
+  exec 'hi awkVariables' . s:fg_green . s:ft_bold
+  exec 'hi awkArrayElement' . s:fg_orange
+  exec 'hi awkOperator' . s:fg_foreground
+  exec 'hi awkBoolLogic' . s:fg_foreground
+  exec 'hi awkExpression' . s:fg_foreground
+  exec 'hi awkSpecialPrintf' . s:fg_olive . s:ft_bold
+
+  " Elm highlighting
+  exec 'hi elmImport' . s:fg_navy
+  exec 'hi elmAlias' . s:fg_aqua
+  exec 'hi elmType' . s:fg_pink
+  exec 'hi elmOperator' . s:fg_aqua . s:ft_bold
+  exec 'hi elmBraces' . s:fg_aqua . s:ft_bold
+  exec 'hi elmTypedef' . s:fg_blue .  s:ft_bold
+  exec 'hi elmTopLevelDecl' . s:fg_green . s:ft_bold
+
+  " Purescript highlighting
+  exec 'hi purescriptModuleKeyword' . s:fg_navy
+  exec 'hi purescriptImportKeyword' . s:fg_navy
+  exec 'hi purescriptModuleName' . s:fg_pink
+  exec 'hi purescriptOperator' . s:fg_aqua . s:ft_bold
+  exec 'hi purescriptType' . s:fg_pink
+  exec 'hi purescriptTypeVar' . s:fg_navy
+  exec 'hi purescriptStructure' . s:fg_blue . s:ft_bold
+  exec 'hi purescriptLet' . s:fg_blue . s:ft_bold
+  exec 'hi purescriptFunction' . s:fg_green . s:ft_bold
+  exec 'hi purescriptDelimiter' . s:fg_aqua . s:ft_bold
+  exec 'hi purescriptStatement' . s:fg_purple . s:ft_bold
+  exec 'hi purescriptConstructor' . s:fg_pink
+  exec 'hi purescriptWhere' . s:fg_purple . s:ft_bold
+
+  " F# highlighting
+  exec 'hi fsharpTypeName' . s:fg_pink
+  exec 'hi fsharpCoreClass' . s:fg_pink
+  exec 'hi fsharpType' . s:fg_pink
+  exec 'hi fsharpKeyword' . s:fg_blue . s:ft_bold
+  exec 'hi fsharpOperator' . s:fg_aqua . s:ft_bold
+  exec 'hi fsharpBoolean' . s:fg_green . s:ft_bold
+  exec 'hi fsharpFormat' . s:fg_foreground
+  exec 'hi fsharpLinq' . s:fg_blue
+  exec 'hi fsharpKeyChar' . s:fg_aqua . s:ft_bold
+  exec 'hi fsharpOption' . s:fg_orange
+  exec 'hi fsharpCoreMethod' . s:fg_purple
+  exec 'hi fsharpAttrib' . s:fg_orange
+  exec 'hi fsharpModifier' . s:fg_aqua
+  exec 'hi fsharpOpen' . s:fg_red
+
+  " ASN.1 highlighting
+  exec 'hi asnExternal' . s:fg_green . s:ft_bold
+  exec 'hi asnTagModifier' . s:fg_purple
+  exec 'hi asnBraces' . s:fg_aqua . s:ft_bold
+  exec 'hi asnDefinition' . s:fg_foreground
+  exec 'hi asnStructure' . s:fg_blue
+  exec 'hi asnType' . s:fg_pink
+  exec 'hi asnTypeInfo' . s:fg_aqua . s:ft_bold
+  exec 'hi asnFieldOption' . s:fg_purple
+
+  " }}}
+
+  " Plugin: Netrw
+  exec 'hi netrwVersion' . s:fg_red
+  exec 'hi netrwList' . s:fg_pink
+  exec 'hi netrwHidePat' . s:fg_olive
+  exec 'hi netrwQuickHelp' . s:fg_blue
+  exec 'hi netrwHelpCmd' . s:fg_blue
+  exec 'hi netrwDir' . s:fg_aqua . s:ft_bold
+  exec 'hi netrwClassify' . s:fg_pink
+  exec 'hi netrwExe' . s:fg_green
+  exec 'hi netrwSuffixes' . s:fg_comment
+  exec 'hi netrwTreeBar' . s:fg_linenumber_fg
+
+  " Plugin: NERDTree
+  exec 'hi NERDTreeUp' . s:fg_comment
+  exec 'hi NERDTreeHelpCommand' . s:fg_pink
+  exec 'hi NERDTreeHelpTitle' . s:fg_blue . s:ft_bold
+  exec 'hi NERDTreeHelpKey' . s:fg_pink
+  exec 'hi NERDTreeHelp' . s:fg_foreground
+  exec 'hi NERDTreeToggleOff' . s:fg_red
+  exec 'hi NERDTreeToggleOn' . s:fg_green
+  exec 'hi NERDTreeDir' . s:fg_blue . s:ft_bold
+  exec 'hi NERDTreeDirSlash' . s:fg_pink
+  exec 'hi NERDTreeFile' . s:fg_foreground
+  exec 'hi NERDTreeExecFile' . s:fg_green
+  exec 'hi NERDTreeOpenable' . s:fg_aqua . s:ft_bold
+  exec 'hi NERDTreeClosable' . s:fg_pink
+
+  " Plugin: Tagbar
+  exec 'hi TagbarHelpTitle' . s:fg_blue . s:ft_bold
+  exec 'hi TagbarHelp' . s:fg_foreground
+  exec 'hi TagbarKind' . s:fg_pink
+  exec 'hi TagbarSignature' . s:fg_aqua
+
+  " Plugin: Vimdiff
+  exec 'hi DiffAdd' . s:fg_diffadd_fg . s:bg_diffadd_bg . s:ft_none
+  exec 'hi DiffChange' . s:fg_diffchange_fg . s:bg_diffchange_bg . s:ft_none
+  exec 'hi DiffDelete' . s:fg_diffdelete_fg . s:bg_diffdelete_bg . s:ft_none
+  exec 'hi DiffText' . s:fg_difftext_fg . s:bg_difftext_bg . s:ft_none
+
+  " Plugin: AGit
+  exec 'hi agitHead' . s:fg_green . s:ft_bold
+  exec 'hi agitHeader' . s:fg_olive
+  exec 'hi agitStatAdded' . s:fg_diffadd_fg
+  exec 'hi agitStatRemoved' . s:fg_diffdelete_fg
+  exec 'hi agitDiffAdd' . s:fg_diffadd_fg
+  exec 'hi agitDiffRemove' . s:fg_diffdelete_fg
+  exec 'hi agitDiffHeader' . s:fg_pink
+  exec 'hi agitDiff' . s:fg_foreground
+  exec 'hi agitDiffIndex' . s:fg_purple
+  exec 'hi agitDiffFileName' . s:fg_aqua
+  exec 'hi agitLog' . s:fg_foreground
+  exec 'hi agitAuthorMark' . s:fg_olive
+  exec 'hi agitDateMark' . s:fg_comment
+  exec 'hi agitHeaderLabel' . s:fg_aqua
+  exec 'hi agitDate' . s:fg_aqua
+  exec 'hi agitTree' . s:fg_pink
+  exec 'hi agitRef' . s:fg_blue . s:ft_bold
+  exec 'hi agitRemote' . s:fg_purple . s:ft_bold
+  exec 'hi agitTag' . s:fg_orange . s:ft_bold
+
+  " Plugin: Spell Checking
+  exec 'hi SpellBad' . s:fg_foreground . s:bg_spellbad
+  exec 'hi SpellCap' . s:fg_foreground . s:bg_spellcap
+  exec 'hi SpellRare' . s:fg_foreground . s:bg_spellrare
+  exec 'hi SpellLocal' . s:fg_foreground . s:bg_spelllocal
+
+  " Plugin: Indent Guides
+  exec 'hi IndentGuidesOdd'  . s:bg_background
+  exec 'hi IndentGuidesEven'  . s:bg_cursorline
+
+  " Plugin: Startify
+  exec 'hi StartifyFile' . s:fg_blue . s:ft_bold
+  exec 'hi StartifyNumber' . s:fg_orange
+  exec 'hi StartifyHeader' . s:fg_comment
+  exec 'hi StartifySection' . s:fg_pink
+  exec 'hi StartifyPath' . s:fg_foreground
+  exec 'hi StartifySlash' . s:fg_navy
+  exec 'hi StartifyBracket' . s:fg_aqua
+  exec 'hi StartifySpecial' . s:fg_aqua
+
+  " Plugin: Signify
+  exec 'hi SignifyLineChange' . s:fg_diffchange_fg
+  exec 'hi SignifySignChange' . s:fg_diffchange_fg
+  exec 'hi SignifyLineAdd' . s:fg_diffadd_fg
+  exec 'hi SignifySignAdd' . s:fg_diffadd_fg
+  exec 'hi SignifyLineDelete' . s:fg_diffdelete_fg
+  exec 'hi SignifySignDelete' . s:fg_diffdelete_fg
+
+  " Git commit message
+  exec 'hi gitcommitSummary' . s:fg_blue
+  exec 'hi gitcommitHeader' . s:fg_green . s:ft_bold
+  exec 'hi gitcommitSelectedType' . s:fg_blue
+  exec 'hi gitcommitSelectedFile' . s:fg_pink
+  exec 'hi gitcommitUntrackedFile' . s:fg_diffdelete_fg
+  exec 'hi gitcommitBranch' . s:fg_aqua . s:ft_bold
+  exec 'hi gitcommitDiscardedType' . s:fg_diffdelete_fg
+  exec 'hi gitcommitDiff' . s:fg_comment
+
+  exec 'hi diffFile' . s:fg_blue
+  exec 'hi diffSubname' . s:fg_comment
+  exec 'hi diffIndexLine' . s:fg_comment
+  exec 'hi diffAdded' . s:fg_diffadd_fg
+  exec 'hi diffRemoved' . s:fg_diffdelete_fg
+  exec 'hi diffLine' . s:fg_orange
+  exec 'hi diffBDiffer' . s:fg_orange
+  exec 'hi diffNewFile' . s:fg_comment
+
+  " Pluging: CoC
+  exec 'hi CocFloating' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_none
+  exec 'hi CocErrorFloat' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_none
+  exec 'hi CocWarningFloat' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_none
+  exec 'hi CocInfoFloat' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_none
+  exec 'hi CocHintFloat' . s:fg_popupmenu_fg . s:bg_popupmenu_bg . s:ft_none
+
+  exec 'hi CocErrorHighlight' . s:fg_foreground . s:bg_spellbad
+  exec 'hi CocWarningHighlight' . s:fg_foreground . s:bg_spellcap
+  exec 'hi CocInfoHighlight' . s:fg_foreground . s:bg_spellcap
+  exec 'hi CocHintHighlight' . s:fg_foreground . s:bg_spellcap
+
+  exec 'hi CocErrorSign' . s:fg_error_fg . s:bg_error_bg
+  exec 'hi CocWarningSign' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold
+  exec 'hi CocInfoSign' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold
+  exec 'hi CocHintSign' . s:fg_todo_fg . s:bg_todo_bg . s:ft_bold
+
+endfun
+" }}}
+
+" ================================== MISC =====================================
+" Command to show theme information {{{
+fun! g:PaperColor()
+  echom 'PaperColor Theme Framework'
+  echom '  version ' . s:version
+  echom '  by Nikyle Nguyen et al.'
+  echom '  at https://github.com/NLKNguyen/papercolor-theme/'
+  echom ' '
+  echom 'Current theme: ' . s:theme_name
+  echom '  ' . s:selected_theme['description']
+  echom '  by ' . s:selected_theme['maintainer']
+  echom '  at ' . s:selected_theme['source']
+
+  " TODO: add diff display for theme color names between 'default' and current
+  " theme if it is a custom theme, i.e. child theme.
+endfun
+
+" @brief command alias for g:PaperColor()
+command! -nargs=0 PaperColor :call g:PaperColor()
+" }}}
+
+" =============================== MAIN ========================================
+
+hi clear
+syntax reset
+let g:colors_name = "PaperColor"
+
+call s:acquire_theme_data()
+call s:identify_color_mode()
+
+call s:generate_theme_option_variables()
+call s:generate_language_option_variables()
+
+call s:set_format_attributes()
+call s:set_overriding_colors()
+
+call s:convert_colors()
+call s:set_color_variables()
+
+call s:apply_syntax_highlightings()
+
+" =============================================================================
+" Cheers!
+" vim: fdm=marker ff=unix
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/vim-colors/codedark.vim	Fri Dec 10 20:20:30 2021 +0900
@@ -0,0 +1,553 @@
+" Vim Code Dark (color scheme)
+" https://github.com/tomasiser/vim-code-dark
+
+scriptencoding utf-8
+
+set background=dark
+hi clear
+if exists("syntax_on")
+    syntax reset
+endif
+let g:colors_name="codedark"
+
+" Highlighting function (inspiration from https://github.com/chriskempson/base16-vim)
+if &t_Co >= 256
+    let g:codedark_term256=1
+elseif !exists("g:codedark_term256")
+    let g:codedark_term256=0
+endif
+fun! <sid>hi(group, fg, bg, attr, sp)
+  if !empty(a:fg)
+    exec "hi " . a:group . " guifg=" . a:fg.gui . " ctermfg=" . (g:codedark_term256 ? a:fg.cterm256 : a:fg.cterm)
+  endif
+  if !empty(a:bg)
+    exec "hi " . a:group . " guibg=" . a:bg.gui . " ctermbg=" . (g:codedark_term256 ? a:bg.cterm256 : a:bg.cterm)
+  endif
+  if a:attr != ""
+    exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr
+  endif
+  if !empty(a:sp)
+    exec "hi " . a:group . " guisp=" . a:sp.gui
+  endif
+endfun
+
+" ------------------
+" Color definitions:
+" ------------------
+
+" Terminal colors (base16):
+let s:cterm00 = "00"
+let s:cterm03 = "08"
+let s:cterm05 = "07"
+let s:cterm07 = "15"
+let s:cterm08 = "01"
+let s:cterm0A = "03"
+let s:cterm0B = "02"
+let s:cterm0C = "06"
+let s:cterm0D = "04"
+let s:cterm0E = "05"
+if exists('base16colorspace') && base16colorspace == "256"
+  let s:cterm01 = "18"
+  let s:cterm02 = "19"
+  let s:cterm04 = "20"
+  let s:cterm06 = "21"
+  let s:cterm09 = "16"
+  let s:cterm0F = "17"
+else
+  let s:cterm01 = "00"
+  let s:cterm02 = "08"
+  let s:cterm04 = "07"
+  let s:cterm06 = "07"
+  let s:cterm09 = "06"
+  let s:cterm0F = "03"
+endif
+
+" General appearance colors:
+" (some of them may be unused)
+
+let s:cdNone = {'gui': 'NONE', 'cterm': 'NONE', 'cterm256': 'NONE'}
+let s:cdFront = {'gui': '#D4D4D4', 'cterm': s:cterm05, 'cterm256': '188'}
+let s:cdBack = {'gui': '#1E1E1E', 'cterm': s:cterm00, 'cterm256': '234'}
+
+let s:cdTabCurrent = {'gui': '#1E1E1E', 'cterm': s:cterm00, 'cterm256': '234'}
+let s:cdTabOther = {'gui': '#2D2D2D', 'cterm': s:cterm01, 'cterm256': '236'}
+let s:cdTabOutside = {'gui': '#252526', 'cterm': s:cterm01, 'cterm256': '235'}
+
+let s:cdLeftDark = {'gui': '#252526', 'cterm': s:cterm01, 'cterm256': '235'}
+let s:cdLeftMid = {'gui': '#373737', 'cterm': s:cterm03, 'cterm256': '237'}
+let s:cdLeftLight = {'gui': '#3F3F46', 'cterm': s:cterm03, 'cterm256': '238'}
+
+let s:cdPopupFront = {'gui': '#BBBBBB', 'cterm': s:cterm06, 'cterm256': '250'}
+let s:cdPopupBack = {'gui': '#2D2D30', 'cterm': s:cterm01, 'cterm256': '236'}
+let s:cdPopupHighlightBlue = {'gui': '#073655', 'cterm': s:cterm0D, 'cterm256': '24'}
+let s:cdPopupHighlightGray = {'gui': '#3D3D40', 'cterm': s:cterm03, 'cterm256': '237'}
+
+let s:cdSplitLight = {'gui': '#898989', 'cterm': s:cterm04, 'cterm256': '245'}
+let s:cdSplitDark = {'gui': '#444444', 'cterm': s:cterm03, 'cterm256': '238'}
+let s:cdSplitThumb = {'gui': '#424242', 'cterm': s:cterm04, 'cterm256': '238'}
+
+let s:cdCursorDarkDark = {'gui': '#222222', 'cterm': s:cterm01, 'cterm256': '235'}
+let s:cdCursorDark = {'gui': '#51504F', 'cterm': s:cterm03, 'cterm256': '239'}
+let s:cdCursorLight = {'gui': '#AEAFAD', 'cterm': s:cterm04, 'cterm256': '145'}
+let s:cdSelection = {'gui': '#264F78', 'cterm': s:cterm03, 'cterm256': '24'}
+let s:cdLineNumber = {'gui': '#5A5A5A', 'cterm': s:cterm04, 'cterm256': '240'}
+
+let s:cdDiffRedDark = {'gui': '#4B1818', 'cterm': s:cterm08, 'cterm256': '52'}
+let s:cdDiffRedLight = {'gui': '#6F1313', 'cterm': s:cterm08, 'cterm256': '52'}
+let s:cdDiffRedLightLight = {'gui': '#FB0101', 'cterm': s:cterm08, 'cterm256': '09'}
+let s:cdDiffGreenDark = {'gui': '#373D29', 'cterm': s:cterm0B, 'cterm256': '237'}
+let s:cdDiffGreenLight = {'gui': '#4B5632', 'cterm': s:cterm09, 'cterm256': '58'}
+
+let s:cdSearchCurrent = {'gui': '#4B5632', 'cterm': s:cterm09, 'cterm256': '58'} 
+let s:cdSearch = {'gui': '#264F78', 'cterm': s:cterm03, 'cterm256': '24'}
+
+" Syntax colors:
+
+if !exists("g:codedark_conservative")
+    let g:codedark_conservative=0
+endif
+
+let s:cdGray = {'gui': '#808080', 'cterm': s:cterm04, 'cterm256': '08'}
+let s:cdViolet = {'gui': '#646695', 'cterm': s:cterm04, 'cterm256': '60'}
+let s:cdBlue = {'gui': '#569CD6', 'cterm': s:cterm0D, 'cterm256': '75'}
+let s:cdDarkBlue = {'gui': '#223E55', 'cterm': s:cterm0D, 'cterm256': '73'}
+let s:cdLightBlue = {'gui': '#9CDCFE', 'cterm': s:cterm0C, 'cterm256': '117'}
+if g:codedark_conservative | let s:cdLightBlue = s:cdFront | endif
+let s:cdGreen = {'gui': '#6A9955', 'cterm': s:cterm0B, 'cterm256': '65'}
+let s:cdBlueGreen = {'gui': '#4EC9B0', 'cterm': s:cterm0F, 'cterm256': '43'}
+let s:cdLightGreen = {'gui': '#B5CEA8', 'cterm': s:cterm09, 'cterm256': '151'}
+let s:cdRed = {'gui': '#F44747', 'cterm': s:cterm08, 'cterm256': '203'}
+let s:cdOrange = {'gui': '#CE9178', 'cterm': s:cterm0F, 'cterm256': '173'}
+let s:cdLightRed = {'gui': '#D16969', 'cterm': s:cterm08, 'cterm256': '167'}
+if g:codedark_conservative | let s:cdLightRed = s:cdOrange | endif
+let s:cdYellowOrange = {'gui': '#D7BA7D', 'cterm': s:cterm0A, 'cterm256': '179'}
+let s:cdYellow = {'gui': '#DCDCAA', 'cterm': s:cterm0A, 'cterm256': '187'}
+if g:codedark_conservative | let s:cdYellow = s:cdFront | endif
+let s:cdPink = {'gui': '#C586C0', 'cterm': s:cterm0E, 'cterm256': '176'}
+if g:codedark_conservative | let s:cdPink = s:cdBlue | endif
+
+" Vim editor colors
+"    <sid>hi(GROUP, FOREGROUND, BACKGROUND, ATTRIBUTE, SPECIAL)
+call <sid>hi('Normal', s:cdFront, s:cdBack, 'none', {})
+call <sid>hi('ColorColumn', {}, s:cdCursorDarkDark, 'none', {})
+call <sid>hi('Cursor', s:cdCursorDark, s:cdCursorLight, 'none', {})
+call <sid>hi('CursorLine', {}, s:cdCursorDarkDark, 'none', {})
+call <sid>hi('CursorColumn', {}, s:cdCursorDarkDark, 'none', {})
+call <sid>hi('Directory', s:cdBlue, s:cdBack, 'none', {})
+call <sid>hi('DiffAdd', {}, s:cdDiffGreenLight, 'none', {})
+call <sid>hi('DiffChange', {}, s:cdDiffRedDark, 'none', {})
+call <sid>hi('DiffDelete', {}, s:cdDiffRedLight, 'none', {})
+call <sid>hi('DiffText', {}, s:cdDiffRedLight, 'none', {})
+call <sid>hi('EndOfBuffer', s:cdLineNumber, s:cdBack, 'none', {})
+call <sid>hi('ErrorMsg', s:cdRed, s:cdBack, 'none', {})
+call <sid>hi('VertSplit', s:cdSplitDark, s:cdBack, 'none', {})
+call <sid>hi('Folded', s:cdLeftLight, s:cdLeftDark, 'underline', {})
+call <sid>hi('FoldColumn', s:cdLineNumber, s:cdBack, 'none', {})
+call <sid>hi('SignColumn', {}, s:cdBack, 'none', {})
+call <sid>hi('IncSearch', s:cdNone, s:cdSearchCurrent, 'none', {})
+call <sid>hi('LineNr', s:cdLineNumber, s:cdBack, 'none', {})
+call <sid>hi('CursorLineNr', s:cdPopupFront, s:cdBack, 'none', {})
+call <sid>hi('MatchParen', s:cdNone, s:cdCursorDark, 'none', {})
+call <sid>hi('ModeMsg', s:cdFront, s:cdLeftDark, 'none', {})
+call <sid>hi('MoreMsg', s:cdFront, s:cdLeftDark, 'none', {})
+call <sid>hi('NonText', s:cdLineNumber, s:cdBack, 'none', {})
+call <sid>hi('Pmenu', s:cdPopupFront, s:cdPopupBack, 'none', {})
+call <sid>hi('PmenuSel', s:cdPopupFront, s:cdPopupHighlightBlue, 'none', {})
+call <sid>hi('PmenuSbar', {}, s:cdPopupHighlightGray, 'none', {})
+call <sid>hi('PmenuThumb', {}, s:cdPopupFront, 'none', {})
+call <sid>hi('Question', s:cdBlue, s:cdBack, 'none', {})
+call <sid>hi('Search', s:cdNone, s:cdSearch, 'none', {})
+call <sid>hi('SpecialKey', s:cdBlue, s:cdNone, 'none', {})
+call <sid>hi('StatusLine', s:cdFront, s:cdLeftMid, 'none', {})
+call <sid>hi('StatusLineNC', s:cdFront, s:cdLeftDark, 'none', {})
+call <sid>hi('TabLine', s:cdFront, s:cdTabOther, 'none', {})
+call <sid>hi('TabLineFill', s:cdFront, s:cdTabOutside, 'none', {})
+call <sid>hi('TabLineSel', s:cdFront, s:cdTabCurrent, 'none', {})
+call <sid>hi('Title', s:cdNone, s:cdNone, 'bold', {})
+call <sid>hi('Visual', s:cdNone, s:cdSelection, 'none', {})
+call <sid>hi('VisualNOS', s:cdNone, s:cdSelection, 'none', {})
+call <sid>hi('WarningMsg', s:cdOrange, s:cdBack, 'none', {})
+call <sid>hi('WildMenu', s:cdNone, s:cdSelection, 'none', {})
+
+" Legacy groups for official git.vim and diff.vim syntax
+hi! link diffAdded DiffAdd
+hi! link diffChanged DiffChange
+hi! link diffRemoved DiffDelete
+
+call <sid>hi('Comment', s:cdGreen, {}, 'none', {})
+
+call <sid>hi('Constant', s:cdBlue, {}, 'none', {})
+call <sid>hi('String', s:cdOrange, {}, 'none', {})
+call <sid>hi('Character', s:cdOrange, {}, 'none', {})
+call <sid>hi('Number', s:cdLightGreen, {}, 'none', {})
+call <sid>hi('Boolean', s:cdBlue, {}, 'none', {})
+call <sid>hi('Float', s:cdLightGreen, {}, 'none', {})
+
+call <sid>hi('Identifier', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('Function', s:cdYellow, {}, 'none', {})
+
+call <sid>hi('Statement', s:cdPink, {}, 'none', {})
+call <sid>hi('Conditional', s:cdPink, {}, 'none', {})
+call <sid>hi('Repeat', s:cdPink, {}, 'none', {})
+call <sid>hi('Label', s:cdPink, {}, 'none', {})
+call <sid>hi('Operator', s:cdFront, {}, 'none', {})
+call <sid>hi('Keyword', s:cdPink, {}, 'none', {})
+call <sid>hi('Exception', s:cdPink, {}, 'none', {})
+
+call <sid>hi('PreProc', s:cdPink, {}, 'none', {})
+call <sid>hi('Include', s:cdPink, {}, 'none', {})
+call <sid>hi('Define', s:cdPink, {}, 'none', {})
+call <sid>hi('Macro', s:cdPink, {}, 'none', {})
+call <sid>hi('PreCondit', s:cdPink, {}, 'none', {})
+
+call <sid>hi('Type', s:cdBlue, {}, 'none', {})
+call <sid>hi('StorageClass', s:cdBlue, {}, 'none', {})
+call <sid>hi('Structure', s:cdBlue, {}, 'none', {})
+call <sid>hi('Typedef', s:cdBlue, {}, 'none', {})
+
+call <sid>hi('Special', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('SpecialChar', s:cdFront, {}, 'none', {})
+call <sid>hi('Tag', s:cdFront, {}, 'none', {})
+call <sid>hi('Delimiter', s:cdFront, {}, 'none', {})
+call <sid>hi('SpecialComment', s:cdGreen, {}, 'none', {})
+call <sid>hi('Debug', s:cdFront, {}, 'none', {})
+
+call <sid>hi('Underlined', s:cdNone, {}, 'underline', {})
+call <sid>hi("Conceal", s:cdFront, s:cdBack, 'none', {})
+
+call <sid>hi('Ignore', s:cdFront, {}, 'none', {})
+
+call <sid>hi('Error', s:cdRed, s:cdBack, 'undercurl', s:cdRed)
+
+call <sid>hi('Todo', s:cdNone, s:cdLeftMid, 'none', {})
+
+call <sid>hi('SpellBad', s:cdRed, s:cdBack, 'undercurl', s:cdRed)
+call <sid>hi('SpellCap', s:cdRed, s:cdBack, 'undercurl', s:cdRed)
+call <sid>hi('SpellRare', s:cdRed, s:cdBack, 'undercurl', s:cdRed)
+call <sid>hi('SpellLocal', s:cdRed, s:cdBack, 'undercurl', s:cdRed)
+
+
+" Neovim Treesitter:
+call <sid>hi('TSError', s:cdRed, {}, 'none', {})
+call <sid>hi('TSPunctDelimiter', s:cdFront, {}, 'none', {})
+call <sid>hi('TSPunctBracket', s:cdFront, {}, 'none', {})
+call <sid>hi('TSPunctSpecial', s:cdFront, {}, 'none', {})
+" Constant
+call <sid>hi('TSConstant', s:cdYellow, {}, 'none', {})
+call <sid>hi('TSConstBuiltin', s:cdBlue, {}, 'none', {})
+call <sid>hi('TSConstMacro', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('TSStringRegex', s:cdOrange, {}, 'none', {})
+call <sid>hi('TSString', s:cdOrange, {}, 'none', {})
+call <sid>hi('TSStringEscape', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('TSCharacter', s:cdOrange, {}, 'none', {})
+call <sid>hi('TSNumber', s:cdLightGreen, {}, 'none', {})
+call <sid>hi('TSBoolean', s:cdBlue, {}, 'none', {})
+call <sid>hi('TSFloat', s:cdLightGreen, {}, 'none', {})
+call <sid>hi('TSAnnotation', s:cdYellow, {}, 'none', {})
+call <sid>hi('TSAttribute', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('TSNamespace', s:cdBlueGreen, {}, 'none', {})
+" Functions
+call <sid>hi('TSFuncBuiltin', s:cdYellow, {}, 'none', {})
+call <sid>hi('TSFunction', s:cdYellow, {}, 'none', {})
+call <sid>hi('TSFuncMacro', s:cdYellow, {}, 'none', {})
+call <sid>hi('TSParameter', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('TSParameterReference', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('TSMethod', s:cdYellow, {}, 'none', {})
+call <sid>hi('TSField', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('TSProperty', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('TSConstructor', s:cdBlueGreen, {}, 'none', {})
+" Keywords
+call <sid>hi('TSConditional', s:cdPink, {}, 'none', {})
+call <sid>hi('TSRepeat', s:cdPink, {}, 'none', {})
+call <sid>hi('TSLabel', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('TSKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('TSKeywordFunction', s:cdPink, {}, 'none', {})
+call <sid>hi('TSKeywordOperator', s:cdBlue, {}, 'none', {})
+call <sid>hi('TSOperator', s:cdFront, {}, 'none', {})
+call <sid>hi('TSException', s:cdPink, {}, 'none', {})
+call <sid>hi('TSType', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('TSTypeBuiltin', s:cdBlue, {}, 'none', {})
+call <sid>hi('TSStructure', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('TSInclude', s:cdPink, {}, 'none', {})
+" Variable
+call <sid>hi('TSVariable', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('TSVariableBuiltin', s:cdLightBlue, {}, 'none', {})
+" Text
+call <sid>hi('TSText', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('TSStrong', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('TSEmphasis', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('TSUnderline', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('TSTitle', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('TSLiteral', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('TSURI', s:cdYellowOrange, {}, 'none', {})
+" Tags
+call <sid>hi('TSTag', s:cdBlue, {}, 'none', {})
+call <sid>hi('TSTagDelimiter', s:cdGray, {}, 'none', {})
+
+" Markdown:
+call <sid>hi('markdownBold', s:cdBlue, {}, 'bold', {})
+call <sid>hi('markdownCode', s:cdOrange, {}, 'none', {})
+call <sid>hi('markdownRule', s:cdBlue, {}, 'bold', {})
+call <sid>hi('markdownCodeDelimiter', s:cdOrange, {}, 'none', {})
+call <sid>hi('markdownHeadingDelimiter', s:cdBlue, {}, 'none', {})
+call <sid>hi('markdownFootnote', s:cdOrange, {}, 'none', {})
+call <sid>hi('markdownFootnoteDefinition', s:cdOrange, {}, 'none', {})
+call <sid>hi('markdownUrl', s:cdLightBlue, {}, 'underline', {})
+call <sid>hi('markdownLinkText', s:cdOrange, {}, 'none', {})
+call <sid>hi('markdownEscape', s:cdYellowOrange, {}, 'none', {})
+
+" Asciidoc (for default syntax highlighting)
+call <sid>hi("asciidocAttributeEntry", s:cdYellowOrange, {}, 'none', {})
+call <sid>hi("asciidocAttributeList", s:cdPink, {}, 'none', {})
+call <sid>hi("asciidocAttributeRef", s:cdYellowOrange, {}, 'none', {})
+call <sid>hi("asciidocHLabel", s:cdBlue, {}, 'bold', {})
+call <sid>hi("asciidocListingBlock", s:cdOrange, {}, 'none', {})
+call <sid>hi("asciidocMacroAttributes", s:cdYellowOrange, {}, 'none', {})
+call <sid>hi("asciidocOneLineTitle", s:cdBlue, {}, 'bold', {})
+call <sid>hi("asciidocPassthroughBlock", s:cdBlue, {}, 'none', {})
+call <sid>hi("asciidocQuotedMonospaced", s:cdOrange, {}, 'none', {})
+call <sid>hi("asciidocTriplePlusPassthrough", s:cdYellow, {}, 'none', {})
+call <sid>hi("asciidocMacro", s:cdPink, {}, 'none', {})
+call <sid>hi("asciidocAdmonition", s:cdOrange, {}, 'none', {})
+call <sid>hi("asciidocQuotedEmphasized", s:cdBlue, {}, 'italic', {})
+call <sid>hi("asciidocQuotedEmphasized2", s:cdBlue, {}, 'italic', {})
+call <sid>hi("asciidocQuotedEmphasizedItalic", s:cdBlue, {}, 'italic', {})
+hi! link asciidocBackslash Keyword
+hi! link asciidocQuotedBold markdownBold
+hi! link asciidocQuotedMonospaced2 asciidocQuotedMonospaced
+hi! link asciidocQuotedUnconstrainedBold asciidocQuotedBold
+hi! link asciidocQuotedUnconstrainedEmphasized asciidocQuotedEmphasized
+hi! link asciidocURL markdownUrl
+
+" JSON:
+call <sid>hi('jsonKeyword', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsonEscape', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('jsonNull', s:cdBlue, {}, 'none', {})
+call <sid>hi('jsonBoolean', s:cdBlue, {}, 'none', {})
+
+" HTML:
+call <sid>hi('htmlTag', s:cdGray, {}, 'none', {})
+call <sid>hi('htmlEndTag', s:cdGray, {}, 'none', {})
+call <sid>hi('htmlTagName', s:cdBlue, {}, 'none', {})
+call <sid>hi('htmlSpecialTagName', s:cdBlue, {}, 'none', {})
+call <sid>hi('htmlArg', s:cdLightBlue, {}, 'none', {})
+
+" PHP:
+call <sid>hi('phpStaticClasses', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('phpMethod', s:cdYellow, {}, 'none', {})
+call <sid>hi('phpClass', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('phpFunction', s:cdYellow, {}, 'none', {})
+call <sid>hi('phpInclude', s:cdBlue, {}, 'none', {})
+call <sid>hi('phpUseClass', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('phpRegion', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('phpMethodsVar', s:cdLightBlue, {}, 'none', {})
+
+" CSS:
+call <sid>hi('cssBraces', s:cdFront, {}, 'none', {})
+call <sid>hi('cssInclude', s:cdPink, {}, 'none', {})
+call <sid>hi('cssTagName', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('cssClassName', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('cssPseudoClass', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('cssPseudoClassId', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('cssPseudoClassLang', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('cssIdentifier', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('cssProp', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('cssDefinition', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('cssAttr', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssAttrRegion', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssColor', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssFunction', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssFunctionName', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssVendor', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssValueNumber', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssValueLength', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssUnitDecorators', s:cdOrange, {}, 'none', {})
+call <sid>hi('cssStyle', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('cssImportant', s:cdBlue, {}, 'none', {})
+
+" JavaScript:
+call <sid>hi('jsVariableDef', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsFuncArgs', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsFuncBlock', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsRegexpString', s:cdLightRed, {}, 'none', {})
+call <sid>hi('jsThis', s:cdBlue, {}, 'none', {})
+call <sid>hi('jsOperatorKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('jsDestructuringBlock', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsObjectKey', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsGlobalObjects', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('jsModuleKeyword', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsClassDefinition', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('jsClassKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('jsExtendsKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('jsExportDefault', s:cdPink, {}, 'none', {})
+call <sid>hi('jsFuncCall', s:cdYellow, {}, 'none', {})
+call <sid>hi('jsObjectValue', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsParen', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsObjectProp', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsIfElseBlock', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsParenIfElse', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsSpreadOperator', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('jsSpreadExpression', s:cdLightBlue, {}, 'none', {})
+
+" Typescript:
+call <sid>hi('typescriptLabel', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptExceptions', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptBraces', s:cdFront, {}, 'none', {})
+call <sid>hi('typescriptEndColons', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptParens', s:cdFront, {}, 'none', {})
+call <sid>hi('typescriptDocTags', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptDocComment', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptLogicSymbols', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptImport', s:cdPink, {}, 'none', {})
+call <sid>hi('typescriptBOM', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptVariableDeclaration', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptVariable', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptExport', s:cdPink, {}, 'none', {})
+call <sid>hi('typescriptAliasDeclaration', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptAliasKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptClassName', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptAccessibilityModifier', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptOperator', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptArrowFunc', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptMethodAccessor', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptMember', s:cdYellow, {}, 'none', {})
+call <sid>hi('typescriptTypeReference', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptDefault', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptTemplateSB', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('typescriptArrowFuncArg', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptParamImpl', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptFuncComma', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptCastKeyword', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptCall', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptCase', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptReserved', s:cdPink, {}, 'none', {})
+call <sid>hi('typescriptDefault', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptDecorator', s:cdYellow, {}, 'none', {})
+call <sid>hi('typescriptPredefinedType', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptClassHeritage', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptClassExtends', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptClassKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptBlock', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptDOMDocProp', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptTemplateSubstitution', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptClassBlock', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptFuncCallArg', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptIndexExpr', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptConditionalParen', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptArray', s:cdYellow, {}, 'none', {})
+call <sid>hi('typescriptES6SetProp', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptObjectLiteral', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptTypeParameter', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptEnumKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptEnum', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptLoopParen', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptParenExp', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptModule', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('typescriptAmbientDeclaration', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptModule', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptFuncTypeArrow', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptInterfaceHeritage', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptInterfaceName', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptInterfaceKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptInterfaceExtends', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptGlobal', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('typescriptAsyncFuncKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptFuncKeyword', s:cdBlue, {}, 'none', {})
+call <sid>hi('typescriptGlobalMethod', s:cdYellow, {}, 'none', {})
+call <sid>hi('typescriptPromiseMethod', s:cdYellow, {}, 'none', {})
+
+" XML:
+call <sid>hi('xmlTag', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('xmlTagName', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('xmlEndTag', s:cdBlueGreen, {}, 'none', {})
+
+" Ruby:
+call <sid>hi('rubyClassNameTag', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('rubyClassName', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('rubyModuleName', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('rubyConstant', s:cdBlueGreen, {}, 'none', {})
+
+" Golang:
+call <sid>hi('goPackage', s:cdBlue, {}, 'none', {})
+call <sid>hi('goImport', s:cdBlue, {}, 'none', {})
+call <sid>hi('goVar', s:cdBlue, {}, 'none', {})
+call <sid>hi('goConst', s:cdBlue, {}, 'none', {})
+call <sid>hi('goStatement', s:cdPink, {}, 'none', {})
+call <sid>hi('goType', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('goSignedInts', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('goUnsignedInts', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('goFloats', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('goComplexes', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('goBuiltins', s:cdYellow, {}, 'none', {})
+call <sid>hi('goBoolean', s:cdBlue, {}, 'none', {})
+call <sid>hi('goPredefinedIdentifiers', s:cdBlue, {}, 'none', {})
+call <sid>hi('goTodo', s:cdGreen, {}, 'none', {})
+call <sid>hi('goDeclaration', s:cdBlue, {}, 'none', {})
+call <sid>hi('goDeclType', s:cdBlue, {}, 'none', {})
+call <sid>hi('goTypeDecl', s:cdBlue, {}, 'none', {})
+call <sid>hi('goTypeName', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('goVarAssign', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('goVarDefs', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('goReceiver', s:cdFront, {}, 'none', {})
+call <sid>hi('goReceiverType', s:cdFront, {}, 'none', {})
+call <sid>hi('goFunctionCall', s:cdYellow, {}, 'none', {})
+call <sid>hi('goMethodCall', s:cdYellow, {}, 'none', {})
+call <sid>hi('goSingleDecl', s:cdLightBlue, {}, 'none', {})
+
+" Python:
+call <sid>hi('pythonStatement', s:cdBlue, {}, 'none', {})
+call <sid>hi('pythonOperator', s:cdBlue, {}, 'none', {})
+call <sid>hi('pythonException', s:cdPink, {}, 'none', {})
+call <sid>hi('pythonExClass', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('pythonBuiltinObj', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('pythonBuiltinType', s:cdBlueGreen, {}, 'none', {})
+call <sid>hi('pythonBoolean', s:cdBlue, {}, 'none', {})
+call <sid>hi('pythonNone', s:cdBlue, {}, 'none', {})
+call <sid>hi('pythonTodo', s:cdBlue, {}, 'none', {})
+call <sid>hi('pythonClassVar', s:cdBlue, {}, 'none', {})
+call <sid>hi('pythonClassDef', s:cdBlueGreen, {}, 'none', {})
+
+" TeX:
+call <sid>hi('texStatement', s:cdBlue, {}, 'none', {})
+call <sid>hi('texBeginEnd', s:cdYellow, {}, 'none', {})
+call <sid>hi('texBeginEndName', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('texOption', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('texBeginEndModifier', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('texDocType', s:cdPink, {}, 'none', {})
+call <sid>hi('texDocTypeArgs', s:cdLightBlue, {}, 'none', {})
+
+" Git:
+call <sid>hi('gitcommitHeader', s:cdGray, {}, 'none', {})
+call <sid>hi('gitcommitOnBranch', s:cdGray, {}, 'none', {})
+call <sid>hi('gitcommitBranch', s:cdPink, {}, 'none', {})
+call <sid>hi('gitcommitComment', s:cdGray, {}, 'none', {})
+call <sid>hi('gitcommitSelectedType', s:cdGreen, {}, 'none', {})
+call <sid>hi('gitcommitSelectedFile', s:cdGreen, {}, 'none', {})
+call <sid>hi('gitcommitDiscardedType', s:cdRed, {}, 'none', {})
+call <sid>hi('gitcommitDiscardedFile', s:cdRed, {}, 'none', {})
+call <sid>hi('gitcommitOverflow', s:cdRed, {}, 'none', {})
+call <sid>hi('gitcommitSummary', s:cdPink, {}, 'none', {})
+call <sid>hi('gitcommitBlank', s:cdPink, {}, 'none', {})
+
+" Lua:
+call <sid>hi('luaFuncCall', s:cdYellow, {}, 'none', {})
+call <sid>hi('luaFuncArgName', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('luaFuncKeyword', s:cdPink, {}, 'none', {})
+call <sid>hi('luaLocal', s:cdPink, {}, 'none', {})
+call <sid>hi('luaBuiltIn', s:cdBlue, {}, 'none', {})
+
+" SH:
+call <sid>hi('shDeref', s:cdLightBlue, {}, 'none', {})
+call <sid>hi('shVariable', s:cdLightBlue, {}, 'none', {})
+
+" SQL:
+call <sid>hi('sqlKeyword', s:cdPink, {}, 'none', {})
+call <sid>hi('sqlFunction', s:cdYellowOrange, {}, 'none', {})
+call <sid>hi('sqlOperator', s:cdPink, {}, 'none', {})
+
+" YAML:
+call <sid>hi('yamlKey', s:cdBlue, {}, 'none', {})
+call <sid>hi('yamlConstant', s:cdBlue, {}, 'none', {})
+
+" Coc Explorer:
+call <sid>hi('CocExplorerIndentLine', s:cdCursorDark, {}, 'none', {})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/vim-colors/srcery.vim	Fri Dec 10 20:20:30 2021 +0900
@@ -0,0 +1,1301 @@
+" 'srcery.vim' -- Vim color scheme.
+" Maintainer:   Roosta (mail@roosta.sh)
+" Description:  Colorscheme that focus ease of use and clearly defined contrasting colors with a slightly earthy tone.
+" Original Source: https://github.com/morhetz/gruvbox
+
+scriptencoding utf-8
+
+set background=dark
+
+if v:version > 580
+  hi clear
+  if exists('syntax_on')
+    syntax reset
+  endif
+endif
+
+let g:colors_name='srcery'
+
+if !has('gui_running') && &t_Co != 256
+  finish
+endif
+
+" Setup Variables: {{{1
+" Colors {{{2
+
+if !exists('g:srcery_black')
+  let g:srcery_black='#1C1B19'
+endif
+
+if !exists('g:srcery_red')
+  let g:srcery_red='#EF2F27'
+endif
+
+if !exists('g:srcery_green')
+  let g:srcery_green='#519F50'
+endif
+
+if !exists('g:srcery_yellow')
+  let g:srcery_yellow='#FBB829'
+endif
+
+if !exists('g:srcery_blue')
+  let g:srcery_blue='#2C78BF'
+endif
+
+if !exists('g:srcery_magenta')
+  let g:srcery_magenta='#E02C6D'
+endif
+
+if !exists('g:srcery_cyan')
+  let g:srcery_cyan='#0AAEB3'
+endif
+
+if !exists('g:srcery_white')
+  let g:srcery_white='#BAA67F'
+endif
+
+if !exists('g:srcery_bright_black')
+  let g:srcery_bright_black='#918175'
+endif
+
+if !exists('g:srcery_bright_red')
+  let g:srcery_bright_red='#F75341'
+endif
+
+if !exists('g:srcery_bright_green')
+  let g:srcery_bright_green='#98BC37'
+endif
+
+if !exists('g:srcery_bright_yellow')
+  let g:srcery_bright_yellow='#FED06E'
+endif
+
+if !exists('g:srcery_bright_blue')
+  let g:srcery_bright_blue='#68A8E4'
+endif
+
+if !exists('g:srcery_bright_magenta')
+  let g:srcery_bright_magenta='#FF5C8F'
+endif
+
+if !exists('g:srcery_bright_cyan')
+  let g:srcery_bright_cyan='#2BE4D0'
+endif
+
+if !exists('g:srcery_bright_white')
+  let g:srcery_bright_white='#FCE8C3'
+endif
+
+if !exists('g:srcery_orange')
+  let g:srcery_orange='#FF5F00'
+endif
+
+if !exists('g:srcery_bright_orange')
+  let g:srcery_bright_orange='#FF8700'
+endif
+
+if !exists('g:srcery_hard_black')
+  let g:srcery_hard_black='#121212'
+endif
+
+if !exists('g:srcery_xgray1')
+  let g:srcery_xgray1='#262626'
+endif
+
+if !exists('g:srcery_xgray2')
+  let g:srcery_xgray2='#303030'
+endif
+
+if !exists('g:srcery_xgray3')
+  let g:srcery_xgray3='#3A3A3A'
+endif
+
+if !exists('g:srcery_xgray4')
+  let g:srcery_xgray4='#444444'
+endif
+
+if !exists('g:srcery_xgray5')
+  let g:srcery_xgray5='#4E4E4E'
+endif
+
+if !exists('g:srcery_xgray6')
+  let g:srcery_xgray6='#585858'
+endif
+
+" }}}
+" Options {{{2
+
+if !exists('g:srcery_bold')
+  let g:srcery_bold=1
+endif
+
+if !exists('g:srcery_italic')
+  if has('gui_running') || $TERM_ITALICS ==? 'true'
+    let g:srcery_italic=1
+  else
+    let g:srcery_italic=0
+  endif
+endif
+
+if !exists('g:srcery_bg_passthrough')
+  let g:srcery_bg_passthrough=0
+endif
+
+if !exists('g:srcery_undercurl')
+  let g:srcery_undercurl=1
+endif
+
+if !exists('g:srcery_underline')
+  let g:srcery_underline=1
+endif
+
+if !exists('g:srcery_inverse')
+  let g:srcery_inverse=1
+endif
+
+if !exists('g:srcery_inverse_matches')
+  let g:srcery_inverse_matches=0
+endif
+
+if !exists('g:srcery_inverse_match_paren')
+  let g:srcery_inverse_match_paren=0
+endif
+
+if !exists('g:srcery_dim_lisp_paren')
+  let g:srcery_dim_lisp_paren=0
+endif
+
+if !exists('g:srcery_guisp_fallback') || index(['fg', 'bg'], g:srcery_guisp_fallback) == -1
+  let g:srcery_guisp_fallback='NONE'
+endif
+
+if !exists('g:srcery_italic_types')
+  let g:srcery_italic_types=0
+endif
+
+if !exists('g:srcery_hard_black_terminal_bg')
+  let g:srcery_hard_black_terminal_bg=1
+endif
+
+" }}}
+" }}}
+" Palette {{{
+
+let s:none           = ['NONE', 'NONE']
+
+" 16 base colors
+let s:black          = [g:srcery_black, 0]
+let s:red            = [g:srcery_red, 1]
+let s:green          = [g:srcery_green, 2]
+let s:yellow         = [g:srcery_yellow, 3]
+let s:blue           = [g:srcery_blue, 4]
+let s:magenta        = [g:srcery_magenta, 5]
+let s:cyan           = [g:srcery_cyan, 6]
+let s:white          = [g:srcery_white, 7]
+let s:bright_black   = [g:srcery_bright_black, 8]
+let s:bright_red     = [g:srcery_bright_red, 9]
+let s:bright_green   = [g:srcery_bright_green, 10]
+let s:bright_yellow  = [g:srcery_bright_yellow, 11]
+let s:bright_blue    = [g:srcery_bright_blue, 12]
+let s:bright_magenta = [g:srcery_bright_magenta, 13]
+let s:bright_cyan    = [g:srcery_bright_cyan, 14]
+let s:bright_white   = [g:srcery_bright_white, 15]
+
+" xterm colors.
+let s:orange         = [g:srcery_orange, 202]
+let s:bright_orange  = [g:srcery_bright_orange, 208]
+let s:hard_black     = [g:srcery_hard_black, 233]
+let s:xgray1         = [g:srcery_xgray1, 235]
+let s:xgray2         = [g:srcery_xgray2, 236]
+let s:xgray3         = [g:srcery_xgray3, 237]
+let s:xgray4         = [g:srcery_xgray4, 238]
+let s:xgray5         = [g:srcery_xgray5, 239]
+let s:xgray6         = [g:srcery_xgray6, 240]
+
+"}}}
+" Setup Emphasis: {{{
+
+let s:bold = 'bold,'
+if g:srcery_bold == 0
+  let s:bold = ''
+endif
+
+let s:italic = 'italic,'
+if g:srcery_italic == 0
+  let s:italic = ''
+endif
+
+let s:underline = 'underline,'
+if g:srcery_underline == 0
+  let s:underline = ''
+endif
+
+let s:undercurl = 'undercurl,'
+if g:srcery_undercurl == 0
+  let s:undercurl = ''
+endif
+
+let s:inverse = 'inverse,'
+if g:srcery_inverse == 0
+  let s:inverse = ''
+endif
+
+" }}}
+" Highlighting Function: {{{
+
+function! s:HL(group, fg, ...)
+  " Arguments: group, guifg, guibg, gui, guisp
+
+  " foreground
+  let l:fg = a:fg
+
+  " background
+  if a:0 >= 1
+    let l:bg = a:1
+  else
+    let l:bg = s:none
+  endif
+
+  " emphasis
+  if a:0 >= 2 && strlen(a:2)
+    let l:emstr = a:2
+  else
+    let l:emstr = 'NONE,'
+  endif
+
+  " special fallback
+  if a:0 >= 3
+    if g:srcery_guisp_fallback !=# 'NONE'
+      let fg = a:3
+    endif
+
+    " bg fallback mode should invert higlighting
+    if g:srcery_guisp_fallback ==# 'bg'
+      let emstr .= 'inverse,'
+    endif
+  endif
+
+  let l:histring = [ 'hi', a:group,
+        \ 'guifg=' . l:fg[0], 'ctermfg=' . l:fg[1],
+        \ 'guibg=' . l:bg[0], 'ctermbg=' . l:bg[1],
+        \ 'gui=' . l:emstr[:-2], 'cterm=' . l:emstr[:-2]
+        \ ]
+
+  " special
+  if a:0 >= 3
+    call add(l:histring, 'guisp=' . a:3[0])
+  endif
+
+  execute join(l:histring, ' ')
+endfunction
+
+"}}}
+" Srcery Hi Groups: {{{
+
+" memoize common hi groups
+call s:HL('SrceryWhite', s:white)
+call s:HL('SrceryRed', s:red)
+call s:HL('SrceryGreen', s:green)
+call s:HL('SrceryYellow', s:yellow)
+call s:HL('SrceryBlue', s:blue)
+call s:HL('SrceryMagenta', s:magenta)
+call s:HL('SrceryCyan', s:cyan)
+call s:HL('SrceryBlack', s:black)
+
+call s:HL('SrceryRedBold', s:red, s:none, s:bold)
+call s:HL('SrceryGreenBold', s:green, s:none, s:bold)
+call s:HL('SrceryYellowBold', s:yellow, s:none, s:bold)
+call s:HL('SrceryBlueBold', s:blue, s:none, s:bold)
+call s:HL('SrceryMagentaBold', s:magenta, s:none, s:bold)
+call s:HL('SrceryCyanBold', s:cyan, s:none, s:bold)
+
+call s:HL('SrceryBrightRed', s:bright_red, s:none)
+call s:HL('SrceryBrightGreen', s:bright_green, s:none)
+call s:HL('SrceryBrightYellow', s:bright_yellow, s:none)
+call s:HL('SrceryBrightBlue', s:bright_blue, s:none)
+call s:HL('SrceryBrightMagenta', s:bright_magenta, s:none)
+call s:HL('SrceryBrightCyan', s:bright_cyan, s:none)
+call s:HL('SrceryBrightBlack', s:bright_black, s:none)
+call s:HL('SrceryBrightWhite', s:bright_white)
+
+call s:HL('SrceryBrightBlueBold', s:bright_blue, s:none, s:bold)
+call s:HL('SrceryBrightYellowBold', s:bright_yellow, s:none, s:bold)
+
+" special
+call s:HL('SrceryOrange', s:orange)
+call s:HL('SrceryBrightOrange', s:bright_orange)
+call s:HL('SrceryOrangeBold', s:orange, s:none, s:bold)
+call s:HL('SrceryHardBlack', s:hard_black)
+call s:HL('SrceryXgray1', s:xgray1)
+call s:HL('SrceryXgray2', s:xgray2)
+call s:HL('SrceryXgray3', s:xgray3)
+call s:HL('SrceryXgray4', s:xgray4)
+call s:HL('SrceryXgray5', s:xgray5)
+call s:HL('SrceryXgray6', s:xgray6)
+
+" }}}
+" Setup Terminal Colors For Neovim: {{{
+
+if has('nvim')
+  let g:terminal_color_0 = s:black[0]
+  let g:terminal_color_8 = s:bright_black[0]
+
+  let g:terminal_color_1 = s:red[0]
+  let g:terminal_color_9 = s:bright_red[0]
+
+  let g:terminal_color_2 = s:green[0]
+  let g:terminal_color_10 = s:bright_green[0]
+
+  let g:terminal_color_3 = s:yellow[0]
+  let g:terminal_color_11 = s:bright_yellow[0]
+
+  let g:terminal_color_4 = s:blue[0]
+  let g:terminal_color_12 = s:bright_blue[0]
+
+  let g:terminal_color_5 = s:magenta[0]
+  let g:terminal_color_13 = s:bright_magenta[0]
+
+  let g:terminal_color_6 = s:cyan[0]
+  let g:terminal_color_14 = s:bright_cyan[0]
+
+  let g:terminal_color_7 = s:white[0]
+  let g:terminal_color_15 = s:bright_white[0]
+endif
+
+" }}}
+" Setup Terminal Colors For Vim with termguicolors: {{{
+
+if exists('*term_setansicolors')
+  let g:terminal_ansi_colors = repeat([0], 16)
+
+  let g:terminal_ansi_colors[0] = s:black[0]
+  let g:terminal_ansi_colors[8] = s:bright_black[0]
+
+  let g:terminal_ansi_colors[1] = s:red[0]
+  let g:terminal_ansi_colors[9] = s:bright_red[0]
+
+  let g:terminal_ansi_colors[2] = s:green[0]
+  let g:terminal_ansi_colors[10] = s:bright_green[0]
+
+  let g:terminal_ansi_colors[3] = s:yellow[0]
+  let g:terminal_ansi_colors[11] = s:bright_yellow[0]
+
+  let g:terminal_ansi_colors[4] = s:blue[0]
+  let g:terminal_ansi_colors[12] = s:bright_blue[0]
+
+  let g:terminal_ansi_colors[5] = s:magenta[0]
+  let g:terminal_ansi_colors[13] = s:bright_magenta[0]
+
+  let g:terminal_ansi_colors[6] = s:cyan[0]
+  let g:terminal_ansi_colors[14] = s:bright_cyan[0]
+
+  let g:terminal_ansi_colors[7] = s:white[0]
+  let g:terminal_ansi_colors[15] = s:bright_white[0]
+endif
+
+" }}}
+
+" Vanilla colorscheme ---------------------------------------------------------
+" General UI: {{{
+
+" Normal text
+"
+if g:srcery_bg_passthrough == 1 && !has('gui_running')
+  call s:HL('Normal', s:bright_white, s:none)
+ else
+  call s:HL('Normal', s:bright_white, s:black)
+endif
+
+if v:version >= 700
+  " Screen line that the cursor is
+  call s:HL('CursorLine',   s:none, s:xgray2)
+  " Screen column that the cursor is
+  hi! link CursorColumn CursorLine
+
+  call s:HL('TabLineFill', s:bright_black, s:xgray2)
+  call s:HL('TabLineSel', s:bright_white, s:xgray5)
+
+  " Not active tab page label
+  hi! link TabLine TabLineFill
+
+  " Match paired bracket under the cursor
+  "
+  if g:srcery_inverse_match_paren == 1
+    call s:HL('MatchParen', s:bright_magenta, s:none, s:inverse . s:bold)
+  else
+    call s:HL('MatchParen', s:bright_magenta, s:none, s:bold)
+  endif
+endif
+
+if v:version >= 703
+  " Highlighted screen columns
+  call s:HL('ColorColumn',  s:none, s:xgray2)
+
+  " Concealed element: \lambda → λ
+  call s:HL('Conceal', s:blue, s:none)
+
+  " Line number of CursorLine
+  if g:srcery_bg_passthrough == 1 && !has('gui_running')
+    call s:HL('CursorLineNr', s:yellow, s:none)
+  else
+    call s:HL('CursorLineNr', s:yellow, s:black)
+  endif
+
+endif
+
+hi! link NonText SrceryXgray4
+hi! link SpecialKey SrceryBlue
+
+if g:srcery_inverse == 1
+  call s:HL('Visual', s:none, s:none, s:inverse)
+else
+  call s:HL('Visual', s:none, s:xgray2, s:bold)
+endif
+
+hi! link VisualNOS Visual
+
+if g:srcery_inverse == 1 && g:srcery_inverse_matches == 1
+  call s:HL('Search', s:none, s:none, s:inverse)
+  call s:HL('IncSearch', s:none, s:none, s:inverse)
+else
+  call s:HL('Search', s:none, s:xgray5, s:bold)
+  call s:HL('IncSearch', s:none, s:xgray5, s:underline . s:bold)
+endif
+
+call s:HL('Underlined', s:blue, s:none, s:underline)
+
+call s:HL('StatusLine',   s:bright_white, s:xgray2)
+
+if g:srcery_bg_passthrough == 1 && !has('gui_running')
+  call s:HL('StatusLineNC', s:bright_black, s:none, s:underline)
+
+  " The column separating vertically split windows
+  call s:HL('VertSplit', s:bright_white, s:none)
+
+  " Current match in wildmenu completion
+  call s:HL('WildMenu', s:blue, s:none, s:bold)
+else
+  call s:HL('StatusLineNC', s:bright_black, s:black, s:underline)
+  call s:HL('VertSplit', s:bright_white, s:black)
+  call s:HL('WildMenu', s:blue, s:black, s:bold)
+endif
+
+" Directory names, special names in listing
+hi! link Directory SrceryGreenBold
+
+" Titles for output from :set all, :autocmd, etc.
+hi! link Title SrceryGreenBold
+
+" Error messages on the command line
+call s:HL('ErrorMsg', s:bright_white, s:red)
+" More prompt: -- More --
+hi! link MoreMsg SrceryYellowBold
+" Current mode message: -- INSERT --
+hi! link ModeMsg SrceryYellowBold
+" 'Press enter' prompt and yes/no questions
+hi! link Question SrceryOrangeBold
+" Warning messages
+hi! link WarningMsg SrceryRedBold
+
+" }}}
+" Gutter: {{{
+
+" Line number for :number and :# commands
+call s:HL('LineNr', s:bright_black)
+
+if g:srcery_bg_passthrough == 1 && !has('gui_running')
+  " Column where signs are displayed
+  " TODO Possibly need to fix  SignColumn
+  call s:HL('SignColumn', s:none, s:none)
+  " Line used for closed folds
+  call s:HL('Folded', s:bright_black, s:none, s:italic)
+  " Column where folds are displayed
+  call s:HL('FoldColumn', s:bright_black, s:none)
+else
+  call s:HL('SignColumn', s:none, s:black)
+  call s:HL('Folded', s:bright_black, s:black, s:italic)
+  call s:HL('FoldColumn', s:bright_black, s:black)
+endif
+
+" }}}
+" Cursor: {{{
+
+" Character under cursor
+call s:HL('Cursor', s:black, s:yellow)
+" Visual mode cursor, selection
+hi! link vCursor Cursor
+" Input moder cursor
+hi! link iCursor Cursor
+" Language mapping cursor
+hi! link lCursor Cursor
+
+" }}}
+" Syntax Highlighting: {{{
+
+hi! link Special SrceryOrange
+
+call s:HL('Comment', s:bright_black, s:none, s:italic)
+
+if g:srcery_bg_passthrough == 1 && !has('gui_running')
+  call s:HL('Todo', s:bright_white, s:none, s:bold . s:italic)
+else
+  call s:HL('Todo', s:bright_white, s:black, s:bold . s:italic)
+endif
+
+call s:HL('Error', s:bright_white, s:red, s:bold)
+
+" String constant: "this is a string"
+call s:HL('String',  s:bright_green)
+
+" Generic statement
+hi! link Statement SrceryRed
+" if, then, else, endif, swicth, etc.
+hi! link Conditional SrceryRed
+" for, do, while, etc.
+hi! link Repeat SrceryRed
+" case, default, etc.
+hi! link Label SrceryRed
+" try, catch, throw
+hi! link Exception SrceryRed
+" sizeof, "+", "*", etc.
+hi! link Operator Normal
+" Any other keyword
+hi! link Keyword SrceryRed
+
+" Variable name
+hi! link Identifier SrceryCyan
+" Function name
+hi! link Function SrceryYellow
+
+" Generic preprocessor
+hi! link PreProc SrceryCyan
+" Preprocessor #include
+hi! link Include SrceryCyan
+" Preprocessor #define
+hi! link Define SrceryCyan
+" Same as Define
+hi! link Macro SrceryOrange
+" Preprocessor #if, #else, #endif, etc.
+hi! link PreCondit SrceryCyan
+
+" Generic constant
+hi! link Constant SrceryBrightMagenta
+" Character constant: 'c', '/n'
+hi! link Character SrceryBrightMagenta
+" Boolean constant: TRUE, false
+hi! link Boolean SrceryBrightMagenta
+" Number constant: 234, 0xff
+hi! link Number SrceryBrightMagenta
+" Floating point constant: 2.3e10
+hi! link Float SrceryBrightMagenta
+
+" Generic type
+if g:srcery_italic_types == 1 && g:srcery_italic == 1
+  call s:HL('Type', s:bright_blue, s:none, s:italic)
+else
+  hi! link Type SrceryBrightBlue
+end
+" static, register, volatile, etc
+hi! link StorageClass SrceryOrange
+" struct, union, enum, etc.
+hi! link Structure SrceryCyan
+" typedef
+hi! link Typedef SrceryMagenta
+
+if g:srcery_dim_lisp_paren == 1
+  hi! link Delimiter SrceryXgray6
+else
+  hi! link Delimiter SrceryBrightBlack
+endif
+
+" }}}
+" Completion Menu: {{{
+
+if v:version >= 700
+  " Popup menu: normal item
+  call s:HL('Pmenu', s:bright_white, s:xgray2)
+  " Popup menu: selected item
+  call s:HL('PmenuSel', s:bright_white, s:blue, s:bold)
+
+  if g:srcery_bg_passthrough == 1 && !has('gui_running')
+    " Popup menu: scrollbar
+    call s:HL('PmenuSbar', s:none, s:none)
+    " Popup menu: scrollbar thumb
+    call s:HL('PmenuThumb', s:none, s:none)
+  else
+    call s:HL('PmenuSbar', s:none, s:black)
+    call s:HL('PmenuThumb', s:none, s:black)
+  endif
+endif
+
+" }}}
+" Diffs: {{{
+
+if g:srcery_bg_passthrough == 1 && !has('gui_running')
+  call s:HL('DiffDelete', s:red, s:none)
+  call s:HL('DiffAdd',    s:green, s:none)
+  call s:HL('DiffChange', s:cyan, s:none)
+  call s:HL('DiffText',   s:yellow, s:none)
+else
+  call s:HL('DiffDelete', s:red, s:black)
+  call s:HL('DiffAdd',    s:green, s:black)
+  call s:HL('DiffChange', s:cyan, s:black)
+  call s:HL('DiffText',   s:yellow, s:black)
+endif
+
+" }}}
+" Spelling: {{{
+
+if has('spell')
+  " Not capitalised word, or compile warnings
+  call s:HL('SpellCap',   s:green, s:none, s:bold . s:italic)
+  " Not recognized word
+  call s:HL('SpellBad',   s:none, s:none, s:undercurl, s:blue)
+  " Wrong spelling for selected region
+  call s:HL('SpellLocal', s:none, s:none, s:undercurl, s:cyan)
+  " Rare word
+  call s:HL('SpellRare',  s:none, s:none, s:undercurl, s:magenta)
+endif
+
+" }}}
+" Terminal: {{{
+
+if g:srcery_hard_black_terminal_bg == 1 && has('terminal')
+  " Must set an explicit background as NONE won't work
+  " Therefore not useful with transparent background option
+  call s:HL('Terminal', s:bright_white, s:hard_black)
+endif
+
+" }}}
+" Neovim's builtin LSP: {{{
+
+hi! link LspDiagnosticsDefaultError SrceryBrightRed
+hi! link LspDiagnosticsDefaultWarning SrceryBrightYellow
+hi! link LspDiagnosticsDefaultInformation SrceryBrightGreen
+hi! link LspDiagnosticsDefaultHint SrceryBrightCyan
+call s:HL('LspDiagnosticsUnderlineError', s:bright_red, s:none, s:underline)
+call s:HL('LspDiagnosticsUnderlineWarning', s:bright_yellow, s:none, s:underline)
+call s:HL('LspDiagnosticsUnderlineInformation', s:bright_green, s:none, s:underline)
+call s:HL('LspDiagnosticsUnderlineHint', s:bright_cyan, s:none, s:underline)
+
+" }}}
+
+" Plugin specific -------------------------------------------------------------
+" Sneak: {{{
+
+hi! link Sneak Search
+call s:HL('SneakScope', s:none, s:hard_black)
+hi! link SneakLabel Search
+
+" }}}
+" Rainbow Parentheses: {{{
+
+if !exists('g:rbpt_colorpairs')
+  let g:rbpt_colorpairs =
+    \ [
+      \ ['blue',  '#2C78BF'], ['202',  '#FF5F00'],
+      \ ['red',  '#EF2F27'], ['magenta', '#E02C6D']
+    \ ]
+endif
+
+let g:rainbow_guifgs = [ '#E02C6D', '#EF2F27', '#D75F00', '#2C78BF']
+let g:rainbow_ctermfgs = [ 'magenta', 'red', '202', 'blue' ]
+
+if !exists('g:rainbow_conf')
+  let g:rainbow_conf = {}
+endif
+if !has_key(g:rainbow_conf, 'guifgs')
+  let g:rainbow_conf['guifgs'] = g:rainbow_guifgs
+endif
+if !has_key(g:rainbow_conf, 'ctermfgs')
+  let g:rainbow_conf['ctermfgs'] = g:rainbow_ctermfgs
+endif
+
+let g:niji_dark_colours = g:rbpt_colorpairs
+let g:niji_light_colours = g:rbpt_colorpairs
+
+"}}}
+" GitGutter: {{{
+
+hi! link GitGutterAdd SrceryGreen
+hi! link GitGutterChange SrceryYellow
+hi! link GitGutterDelete SrceryRed
+hi! link GitGutterChangeDelete SrceryYellow
+
+" }}}
+" GitCommit: "{{{
+
+hi! link gitcommitSelectedFile SrceryGreen
+hi! link gitcommitDiscardedFile SrceryRed
+
+" }}}
+" Asynchronous Lint Engine: {{{
+
+call s:HL('ALEError', s:none, s:none, s:undercurl, s:red)
+call s:HL('ALEWarning', s:none, s:none, s:undercurl, s:yellow)
+call s:HL('ALEInfo', s:none, s:none, s:undercurl, s:blue)
+
+hi! link ALEErrorSign SrceryRed
+hi! link ALEWarningSign SrceryYellow
+hi! link ALEInfoSign SrceryBlue
+
+" }}}
+" vim-indent-guides: {{{
+
+call s:HL('IndentGuidesEven', s:none, s:xgray3)
+call s:HL('IndentGuidesOdd',  s:none, s:xgray4)
+
+" }}}
+" vim-startify {{{
+
+hi! link StartifyNumber Statement
+hi! link StartifyFile Normal
+hi! link StartifyPath String
+hi! link StartifySlash Normal
+hi! link StartifyBracket Comment
+hi! link StartifyHeader Type
+hi! link StartifyFooter Normal
+hi! link StartifySpecial Comment
+hi! link StartifySection Identifier
+
+" }}}
+" fzf: {{{
+
+call s:HL('fzf1', s:magenta, s:xgray2)
+call s:HL('fzf2', s:bright_green, s:xgray2)
+call s:HL('fzf3', s:bright_white, s:xgray2)
+
+"}}}
+" Netrw: {{{
+
+hi! link netrwDir SrceryBlue
+hi! link netrwClassify SrceryCyan
+hi! link netrwLink SrceryBrightBlack
+hi! link netrwSymLink SrceryCyan
+hi! link netrwExe SrceryYellow
+hi! link netrwComment SrceryBrightBlack
+hi! link netrwList SrceryBrightBlue
+hi! link netrwTreeBar SrceryBrightBlack
+hi! link netrwHelpCmd SrceryCyan
+hi! link netrwVersion SrceryGreen
+hi! link netrwCmdSep SrceryBrightBlack
+
+"}}}
+" coc.nvim: {{{
+
+hi! link CocErrorSign SrceryRed
+hi! link CocWarningSign SrceryBrightOrange
+hi! link CocInfoSign SrceryYellow
+hi! link CocHintSign SrceryBlue
+hi! link CocErrorFloat SrceryRed
+hi! link CocWarningFloat SrceryOrange
+hi! link CocInfoFloat SrceryYellow
+hi! link CocHintFloat SrceryBlue
+hi! link CocDiagnosticsError SrceryRed
+hi! link CocDiagnosticsWarning SrceryOrange
+hi! link CocDiagnosticsInfo SrceryYellow
+hi! link CocDiagnosticsHint SrceryBlue
+
+hi! link CocSelectedText SrceryRed
+hi! link CocCodeLens SrceryWhite
+
+call s:HL('CocErrorHighlight', s:none, s:none, s:undercurl, s:red)
+call s:HL('CocWarningHighlight', s:none, s:none, s:undercurl, s:bright_orange)
+call s:HL('CocInfoHighlight', s:none, s:none, s:undercurl, s:yellow)
+call s:HL('CocHintHighlight', s:none, s:none, s:undercurl, s:blue)
+
+" }}}
+" CtrlP: "{{{
+"
+hi! link CtrlPMatch SrceryMagenta
+hi! link CtrlPLinePre SrceryBrightGreen
+call s:HL('CtrlPMode1', s:bright_white, s:xgray3)
+call s:HL('CtrlPMode2', s:bright_white, s:xgray5)
+call s:HL('CtrlPStats', s:yellow, s:xgray2)
+
+" }}}
+" NERDTree: "{{{
+
+hi! link NERDTreeDir SrceryBlue
+hi! link NERDTreeDirSlash SrceryCyan
+hi! link NERDTreeOpenable SrceryBlue
+hi! link NERDTreeClosable SrceryBlue
+hi! link NERDTreeFile SrceryWhite
+hi! link NERDTreeExecFile SrceryYellow
+hi! link NERDTreeUp SrceryOrange
+hi! link NERDTreeCWD SrceryGreen
+hi! link NERDTreeHelp SrceryCyan
+hi! link NERDTreeFlags SrceryCyan
+hi! link NERDTreeLinkFile SrceryBrightBlack
+hi! link NERDTreeLinkTarget SrceryBrightBlack
+
+" }}}
+" Telescope: "{{{
+
+call s:HL('TelescopeNormal', s:white, s:none)
+call s:HL('TelescopeSelection', s:green, s:none, s:bold)
+call s:HL('TelescopeMatching', s:magenta)
+call s:HL('TelescopeSelectionCaret', s:magenta)
+call s:HL('TelescopePromptPrefix', s:bright_yellow)
+
+" }}}
+" nvim-treesitter {{{
+
+call s:HL('TSStrong', s:none, s:none, s:bold)
+call s:HL('TSEmphasis', s:none, s:none, s:bold)
+call s:HL('TSUnderline', s:none, s:none, s:underline)
+
+highlight! link TSWarning SrceryOrangeBold
+highlight! link TSDanger SrceryRedBold
+highlight! link TSConstBuiltin SrceryCyan
+highlight! link TSField SrceryGreen
+highlight! link TSFuncBuiltin SrceryYellow
+highlight! link TSFuncMacro SrceryOrange
+highlight! link TSFunction SrceryYellow
+call s:HL('TSNamespace', s:white, s:none, s:italic)
+call s:HL('TSParameter', s:cyan, s:none, s:italic)
+highlight! link TSProperty SrceryBrightBlue
+highlight! link TSSymbol SrceryBlue
+highlight! link TSTag SrceryBlue
+highlight! link TSTagAttribute SrceryYellow
+highlight! link TSVariableBuiltin SrceryCyan
+highlight! link TSType SrceryWhite
+highlight! link TSDelimiter SrceryWhite
+highlight! link TSURI SrceryGreen
+highlight! link TSVariable SrceryBrightWhite
+" }}}
+
+
+" Filetype specific -----------------------------------------------------------
+" Diff: {{{
+
+hi! link diffAdded SrceryGreen
+hi! link diffRemoved SrceryRed
+hi! link diffChanged SrceryCyan
+
+hi! link diffFile SrceryOrange
+hi! link diffNewFile SrceryYellow
+
+hi! link diffLine SrceryBlue
+
+" }}}
+" Html: {{{
+
+hi! link htmlTag SrceryBlue
+hi! link htmlEndTag SrceryBlue
+
+hi! link htmlTagName SrceryBlue
+hi! link htmlTag SrceryBrightBlack
+hi! link htmlArg SrceryYellow
+
+hi! link htmlScriptTag SrceryRed
+hi! link htmlTagN SrceryBlue
+hi! link htmlSpecialTagName SrceryBlue
+
+call s:HL('htmlLink', s:bright_white, s:none, s:underline)
+
+hi! link htmlSpecialChar SrceryYellow
+
+if g:srcery_bg_passthrough == 1 && !has('gui_running')
+  call s:HL('htmlBold', s:bright_white, s:none, s:bold)
+  call s:HL('htmlBoldUnderline', s:bright_white, s:none, s:bold . s:underline)
+  call s:HL('htmlBoldItalic', s:bright_white, s:none, s:bold . s:italic)
+  call s:HL('htmlBoldUnderlineItalic', s:bright_white, s:none, s:bold . s:underline . s:italic)
+  call s:HL('htmlUnderline', s:bright_white, s:none, s:underline)
+  call s:HL('htmlUnderlineItalic', s:bright_white, s:none, s:underline . s:italic)
+  call s:HL('htmlItalic', s:bright_white, s:none, s:italic)
+else
+  call s:HL('htmlBold', s:bright_white, s:black, s:bold)
+  call s:HL('htmlBoldUnderline', s:bright_white, s:black, s:bold . s:underline)
+  call s:HL('htmlBoldItalic', s:bright_white, s:black, s:bold . s:italic)
+  call s:HL('htmlBoldUnderlineItalic', s:bright_white, s:black, s:bold . s:underline . s:italic)
+  call s:HL('htmlUnderline', s:bright_white, s:black, s:underline)
+  call s:HL('htmlUnderlineItalic', s:bright_white, s:black, s:underline . s:italic)
+  call s:HL('htmlItalic', s:bright_white, s:black, s:italic)
+endif
+
+" }}}
+" Xml: {{{
+
+hi! link xmlTag SrceryBlue
+hi! link xmlEndTag SrceryBlue
+hi! link xmlTagName SrceryBlue
+hi! link xmlEqual SrceryBlue
+hi! link docbkKeyword SrceryCyanBold
+
+hi! link xmlDocTypeDecl SrceryBrightBlack
+hi! link xmlDocTypeKeyword SrceryMagenta
+hi! link xmlCdataStart SrceryBrightBlack
+hi! link xmlCdataCdata SrceryMagenta
+hi! link dtdFunction SrceryBrightBlack
+hi! link dtdTagName SrceryMagenta
+
+hi! link xmlAttrib SrceryCyan
+hi! link xmlProcessingDelim SrceryBrightBlack
+hi! link dtdParamEntityPunct SrceryBrightBlack
+hi! link dtdParamEntityDPunct SrceryBrightBlack
+hi! link xmlAttribPunct SrceryBrightBlack
+
+hi! link xmlEntity SrceryYellow
+hi! link xmlEntityPunct SrceryYellow
+
+" }}}
+" Vim: {{{
+
+call s:HL('vimCommentTitle', s:bright_white, s:none, s:bold . s:italic)
+
+hi! link vimNotation SrceryYellow
+hi! link vimBracket SrceryYellow
+hi! link vimMapModKey SrceryYellow
+hi! link vimFuncSID SrceryBrightWhite
+hi! link vimSetSep SrceryBrightWhite
+hi! link vimSep SrceryBrightWhite
+hi! link vimContinue SrceryBrightWhite
+
+" }}}
+" Lisp dialects: {{{
+
+if g:srcery_dim_lisp_paren == 1
+  hi! link schemeParentheses SrceryXgray6
+  hi! link clojureParen SrceryXgray6
+else
+  hi! link schemeParentheses SrceryWhite
+  hi! link clojureParen SrceryWhite
+endif
+
+hi! link clojureKeyword SrceryBlue
+hi! link clojureCond SrceryRed
+hi! link clojureSpecial SrceryRed
+hi! link clojureDefine SrceryRed
+
+hi! link clojureFunc SrceryYellow
+hi! link clojureRepeat SrceryYellow
+hi! link clojureCharacter SrceryCyan
+hi! link clojureStringEscape SrceryCyan
+hi! link clojureException SrceryRed
+
+hi! link clojureRegexp SrceryCyan
+hi! link clojureRegexpEscape SrceryCyan
+call s:HL('clojureRegexpCharClass', s:bright_white, s:none, s:bold)
+hi! link clojureRegexpMod clojureRegexpCharClass
+hi! link clojureRegexpQuantifier clojureRegexpCharClass
+
+hi! link clojureAnonArg SrceryYellow
+hi! link clojureVariable SrceryBlue
+hi! link clojureMacro SrceryOrangeBold
+
+hi! link clojureMeta SrceryYellow
+hi! link clojureDeref SrceryYellow
+hi! link clojureQuote SrceryYellow
+hi! link clojureUnquote SrceryYellow
+
+" }}}
+" C: {{{
+
+hi! link cOperator SrceryMagenta
+hi! link cStructure SrceryYellow
+
+" }}}
+" Python: {{{
+
+hi! link pythonBuiltin SrceryYellow
+hi! link pythonBuiltinObj SrceryYellow
+hi! link pythonBuiltinFunc SrceryYellow
+hi! link pythonFunction SrceryCyan
+hi! link pythonDecorator SrceryRed
+hi! link pythonInclude SrceryBlue
+hi! link pythonImport SrceryBlue
+hi! link pythonRun SrceryBlue
+hi! link pythonCoding SrceryBlue
+hi! link pythonOperator SrceryRed
+hi! link pythonExceptions SrceryMagenta
+hi! link pythonBoolean SrceryMagenta
+hi! link pythonDot SrceryBrightWhite
+
+" }}}
+" CSS/SASS: {{{
+
+hi! link cssBraces SrceryBrightWhite
+hi! link cssFunctionName SrceryYellow
+hi! link cssIdentifier SrceryBlue
+hi! link cssClassName SrceryBlue
+hi! link cssClassNameDot SrceryBlue
+hi! link cssColor SrceryBrightMagenta
+hi! link cssSelectorOp SrceryBlue
+hi! link cssSelectorOp2 SrceryBlue
+hi! link cssImportant SrceryGreen
+hi! link cssVendor SrceryBlue
+hi! link cssMediaProp SrceryYellow
+hi! link cssBorderProp SrceryYellow
+hi! link cssAttrComma SrceryBrightWhite
+
+hi! link cssTextProp SrceryYellow
+hi! link cssAnimationProp SrceryYellow
+hi! link cssUIProp SrceryYellow
+hi! link cssTransformProp SrceryYellow
+hi! link cssTransitionProp SrceryYellow
+hi! link cssPrintProp SrceryYellow
+hi! link cssPositioningProp SrceryYellow
+hi! link cssBoxProp SrceryYellow
+hi! link cssFontDescriptorProp SrceryYellow
+hi! link cssFlexibleBoxProp SrceryYellow
+hi! link cssBorderOutlineProp SrceryYellow
+hi! link cssBackgroundProp SrceryYellow
+hi! link cssMarginProp SrceryYellow
+hi! link cssListProp SrceryYellow
+hi! link cssTableProp SrceryYellow
+hi! link cssFontProp SrceryYellow
+hi! link cssPaddingProp SrceryYellow
+hi! link cssDimensionProp SrceryYellow
+hi! link cssRenderProp SrceryYellow
+hi! link cssColorProp SrceryYellow
+hi! link cssGeneratedContentProp SrceryYellow
+hi! link cssTagName SrceryBrightBlue
+
+" SASS
+hi! link sassClass SrceryBlue
+hi! link sassClassChar SrceryBlue
+hi! link sassVariable SrceryCyan
+hi! link sassIdChar SrceryBrightBlue
+hi! link sassId SrceryBrightBlue
+
+" }}}
+" JavaScript: {{{
+
+hi! link javascriptMember SrceryBlue
+hi! link javascriptNull SrceryMagenta
+
+hi! link javascriptParens SrceryWhite
+hi! link javascriptBraces SrceryWhite
+hi! link javascriptReserved SrceryOrange
+hi! link javascriptIdentifier SrceryRed
+
+hi! link javascriptFuncArg Normal
+hi! link javascriptDocComment SrceryGreen
+hi! link javascriptArrayMethod Function
+hi! link javascriptReflectMethod Function
+hi! link javascriptStringMethod Function
+hi! link javascriptObjectMethod Function
+hi! link javascriptObjectStaticMethod Function
+hi! link javascriptObjectLabel SrceryBlue
+hi! link javascriptFunction SrceryRed
+
+hi! link javascriptProp SrceryBlue
+
+hi! link javascriptVariable SrceryBrightBlue
+hi! link javascriptOperator SrceryBrightCyan
+hi! link javascriptFuncKeyword SrceryBrightRed
+hi! link javascriptFunctionMethod SrceryYellow
+hi! link javascriptReturn SrceryBrightRed
+hi! link javascriptEndColons SrceryWhite
+
+" vim-javascript
+hi! link jsFunction SrceryRed
+hi! link jsImport SrceryRed
+hi! link jsObjectSeparator SrceryWhite
+hi! link jsParens SrceryWhite
+hi! link jsFuncParens SrceryWhite
+hi! link jsNoise SrceryWhite
+hi! link jsEnvComment SrceryBrightBlack
+hi! link jsOperator SrceryBrightCyan
+
+" }}}
+" CoffeeScript: {{{
+
+hi! link coffeeExtendedOp SrceryBrightWhite
+hi! link coffeeSpecialOp SrceryBrightWhite
+hi! link coffeeCurly SrceryYellow
+hi! link coffeeParen SrceryBrightWhite
+hi! link coffeeBracket SrceryYellow
+
+" }}}
+" Ruby: {{{
+
+hi! link rubyStringDelimiter SrceryGreen
+hi! link rubyInterpolationDelimiter SrceryCyan
+hi! link rubyDefine Keyword
+
+" }}}
+" ObjectiveC: {{{
+
+hi! link objcTypeModifier SrceryRed
+hi! link objcDirective SrceryBlue
+
+" }}}
+" Go: {{{
+
+hi! link goDirective SrceryCyan
+hi! link goConstants SrceryMagenta
+hi! link goDeclaration SrceryRed
+hi! link goDeclType SrceryBlue
+hi! link goBuiltins SrceryYellow
+
+" }}}
+" Lua: {{{
+
+hi! link luaIn SrceryRed
+hi! link luaFunction SrceryCyan
+hi! link luaTable SrceryYellow
+
+" }}}
+" MoonScript: {{{
+
+hi! link moonSpecialOp SrceryBrightWhite
+hi! link moonExtendedOp SrceryBrightWhite
+hi! link moonFunction SrceryBrightWhite
+hi! link moonObject SrceryYellow
+
+" }}}
+" Java: {{{
+
+hi! link javaAnnotation SrceryBlue
+hi! link javaDocTags SrceryCyan
+hi! link javaCommentTitle vimCommentTitle
+hi! link javaParen SrceryBrightWhite
+hi! link javaParen1 SrceryBrightWhite
+hi! link javaParen2 SrceryBrightWhite
+hi! link javaParen3 SrceryBrightWhite
+hi! link javaParen4 SrceryBrightWhite
+hi! link javaParen5 SrceryBrightWhite
+hi! link javaOperator SrceryYellow
+
+hi! link javaVarArg SrceryGreen
+
+" }}}
+" Elixir: {{{
+
+hi! link elixirDocString Comment
+
+hi! link elixirStringDelimiter SrceryGreen
+hi! link elixirInterpolationDelimiter SrceryCyan
+
+" }}}
+" Scala: {{{
+
+" NB: scala vim syntax file is kinda horrible
+hi! link scalaNameDefinition SrceryBlue
+hi! link scalaCaseFollowing SrceryBlue
+hi! link scalaCapitalWord SrceryBlue
+hi! link scalaTypeExtension SrceryBlue
+
+hi! link scalaKeyword SrceryRed
+hi! link scalaKeywordModifier SrceryRed
+
+hi! link scalaSpecial SrceryCyan
+hi! link scalaOperator SrceryBlue
+
+hi! link scalaTypeDeclaration SrceryYellow
+hi! link scalaTypeTypePostDeclaration SrceryYellow
+
+hi! link scalaInstanceDeclaration SrceryBlue
+hi! link scalaInterpolation SrceryCyan
+
+" }}}
+" Markdown: {{{
+
+call s:HL('markdownItalic', s:bright_white, s:none, s:italic)
+
+hi! link markdownH1 SrceryBrightBlueBold
+hi! link markdownH2 SrceryBrightBlueBold
+hi! link markdownH3 SrceryBrightYellowBold
+hi! link markdownH4 SrceryBrightYellowBold
+hi! link markdownH5 SrceryYellowBold
+hi! link markdownH6 SrceryYellowBold
+
+hi! link markdownCode SrceryWhite
+hi! link markdownCodeBlock SrceryWhite
+hi! link markdownCodeDelimiter SrceryWhite
+
+hi! link markdownBlockquote SrceryBrightBlack
+hi! link markdownListMarker SrceryBrightBlack
+hi! link markdownOrderedListMarker SrceryBrightBlack
+hi! link markdownRule SrceryBrightBlack
+hi! link markdownHeadingRule SrceryBrightBlack
+
+hi! link markdownUrlDelimiter SrceryBrightBlack
+hi! link markdownLinkDelimiter SrceryBrightBlack
+hi! link markdownLinkTextDelimiter SrceryBrightBlack
+
+hi! link markdownHeadingDelimiter SrceryBrightBlack
+hi! link markdownUrl SrceryBrightGreen
+hi! link markdownUrlTitleDelimiter SrceryGreen
+
+call s:HL('markdownLinkText', s:bright_white, s:none, s:underline)
+hi! link markdownIdDeclaration markdownLinkText
+
+" }}}
+" Haskell: {{{
+
+" hi! link haskellType SrceryYellow
+" hi! link haskellOperators SrceryYellow
+" hi! link haskellConditional SrceryCyan
+" hi! link haskellLet SrceryYellow
+
+hi! link haskellType SrceryBlue
+hi! link haskellIdentifier SrceryBlue
+hi! link haskellSeparator SrceryBlue
+hi! link haskellDelimiter SrceryBrightWhite
+hi! link haskellOperators SrceryBlue
+
+hi! link haskellBacktick SrceryYellow
+hi! link haskellStatement SrceryYellow
+hi! link haskellConditional SrceryYellow
+
+hi! link haskellLet SrceryCyan
+hi! link haskellDefault SrceryCyan
+hi! link haskellWhere SrceryCyan
+hi! link haskellBottom SrceryCyan
+hi! link haskellBlockKeywords SrceryCyan
+hi! link haskellImportKeywords SrceryCyan
+hi! link haskellDeclKeyword SrceryCyan
+hi! link haskellDeriving SrceryCyan
+hi! link haskellAssocType SrceryCyan
+
+hi! link haskellNumber SrceryMagenta
+hi! link haskellPragma SrceryMagenta
+
+hi! link haskellString SrceryGreen
+hi! link haskellChar SrceryGreen
+
+" }}}
+" Json: {{{
+
+hi! link jsonKeyword SrceryGreen
+hi! link jsonQuote SrceryGreen
+hi! link jsonBraces SrceryBlue
+hi! link jsonString SrceryBlue
+
+" }}}
+" Rust: {{{
+
+"https://github.com/rust-lang/rust.vim/blob/master/syntax/rust.vim
+hi! link rustCommentLineDoc SrceryGreen
+hi! link rustModPathSep SrceryBrightBlack
+
+" }}}
+" Make: {{{
+
+hi! link makePreCondit SrceryRed
+hi! link makeCommands SrceryBrightWhite
+hi! link makeTarget SrceryYellow
+
+" }}}
+" shell script: {{{
+
+call s:HL('shParenError', s:bright_white, s:bright_red)
+hi! link shCmdSubRegion SrceryWhite
+hi! link shArithRegion SrceryWhite
+hi! link shArithRegion SrceryWhite
+hi! link shQuote SrceryWhite
+hi! link shRedir SrceryMagenta
+hi! link shOption SrceryBrightYellow
+hi! link shCommandSub SrceryBrightRed
+
+" }}}
+" Misc: {{{
+
+call s:HL('ExtraWhitespace', s:none, s:red)
+" }}}
+
+" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker :