# HG changeset patch # User nanaya # Date 1639135230 -32400 # Node ID f280738a90a6576db6fa64b5af9e189aae446c81 # Parent c74dffea6a0a7e170e82aaeffb68705e48edea33 [vim] vendor theme and add some more diff -r c74dffea6a0a -r f280738a90a6 rc/vim-srcery-drk --- 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: diff -r c74dffea6a0a -r f280738a90a6 rc/vimrc --- 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") diff -r c74dffea6a0a -r f280738a90a6 setup --- 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" ;; diff -r c74dffea6a0a -r f280738a90a6 update-vendor --- 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 +) diff -r c74dffea6a0a -r f280738a90a6 vendor/vim-colors/PaperColor.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 +" 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 ', + \ '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 collection of all theme palettes +" +" Require Optionally: +" {g:PaperColor_Theme_[s:theme_name]} user custom theme palette +" g:PaperColor_Theme_Options user options +" +" Expose: +" s:theme_name the name of the selected theme +" s:selected_theme the selected theme object (contains palette, etc.) +" s:selected_variant 'light' or 'dark' +" s:palette the palette of selected theme +" s:options 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 user options +" +" Require Optionally: +" g:PaperColor_Theme_Options user option config in .vimrc +" +" Expose: +" s:langOpt_[LANGUAGE]__[OPTION] 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 [, <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: + 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 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 + 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 diff -r c74dffea6a0a -r f280738a90a6 vendor/vim-colors/codedark.vim --- /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! 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 +" hi(GROUP, FOREGROUND, BACKGROUND, ATTRIBUTE, SPECIAL) +call hi('Normal', s:cdFront, s:cdBack, 'none', {}) +call hi('ColorColumn', {}, s:cdCursorDarkDark, 'none', {}) +call hi('Cursor', s:cdCursorDark, s:cdCursorLight, 'none', {}) +call hi('CursorLine', {}, s:cdCursorDarkDark, 'none', {}) +call hi('CursorColumn', {}, s:cdCursorDarkDark, 'none', {}) +call hi('Directory', s:cdBlue, s:cdBack, 'none', {}) +call hi('DiffAdd', {}, s:cdDiffGreenLight, 'none', {}) +call hi('DiffChange', {}, s:cdDiffRedDark, 'none', {}) +call hi('DiffDelete', {}, s:cdDiffRedLight, 'none', {}) +call hi('DiffText', {}, s:cdDiffRedLight, 'none', {}) +call hi('EndOfBuffer', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('ErrorMsg', s:cdRed, s:cdBack, 'none', {}) +call hi('VertSplit', s:cdSplitDark, s:cdBack, 'none', {}) +call hi('Folded', s:cdLeftLight, s:cdLeftDark, 'underline', {}) +call hi('FoldColumn', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('SignColumn', {}, s:cdBack, 'none', {}) +call hi('IncSearch', s:cdNone, s:cdSearchCurrent, 'none', {}) +call hi('LineNr', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('CursorLineNr', s:cdPopupFront, s:cdBack, 'none', {}) +call hi('MatchParen', s:cdNone, s:cdCursorDark, 'none', {}) +call hi('ModeMsg', s:cdFront, s:cdLeftDark, 'none', {}) +call hi('MoreMsg', s:cdFront, s:cdLeftDark, 'none', {}) +call hi('NonText', s:cdLineNumber, s:cdBack, 'none', {}) +call hi('Pmenu', s:cdPopupFront, s:cdPopupBack, 'none', {}) +call hi('PmenuSel', s:cdPopupFront, s:cdPopupHighlightBlue, 'none', {}) +call hi('PmenuSbar', {}, s:cdPopupHighlightGray, 'none', {}) +call hi('PmenuThumb', {}, s:cdPopupFront, 'none', {}) +call hi('Question', s:cdBlue, s:cdBack, 'none', {}) +call hi('Search', s:cdNone, s:cdSearch, 'none', {}) +call hi('SpecialKey', s:cdBlue, s:cdNone, 'none', {}) +call hi('StatusLine', s:cdFront, s:cdLeftMid, 'none', {}) +call hi('StatusLineNC', s:cdFront, s:cdLeftDark, 'none', {}) +call hi('TabLine', s:cdFront, s:cdTabOther, 'none', {}) +call hi('TabLineFill', s:cdFront, s:cdTabOutside, 'none', {}) +call hi('TabLineSel', s:cdFront, s:cdTabCurrent, 'none', {}) +call hi('Title', s:cdNone, s:cdNone, 'bold', {}) +call hi('Visual', s:cdNone, s:cdSelection, 'none', {}) +call hi('VisualNOS', s:cdNone, s:cdSelection, 'none', {}) +call hi('WarningMsg', s:cdOrange, s:cdBack, 'none', {}) +call 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 hi('Comment', s:cdGreen, {}, 'none', {}) + +call hi('Constant', s:cdBlue, {}, 'none', {}) +call hi('String', s:cdOrange, {}, 'none', {}) +call hi('Character', s:cdOrange, {}, 'none', {}) +call hi('Number', s:cdLightGreen, {}, 'none', {}) +call hi('Boolean', s:cdBlue, {}, 'none', {}) +call hi('Float', s:cdLightGreen, {}, 'none', {}) + +call hi('Identifier', s:cdLightBlue, {}, 'none', {}) +call hi('Function', s:cdYellow, {}, 'none', {}) + +call hi('Statement', s:cdPink, {}, 'none', {}) +call hi('Conditional', s:cdPink, {}, 'none', {}) +call hi('Repeat', s:cdPink, {}, 'none', {}) +call hi('Label', s:cdPink, {}, 'none', {}) +call hi('Operator', s:cdFront, {}, 'none', {}) +call hi('Keyword', s:cdPink, {}, 'none', {}) +call hi('Exception', s:cdPink, {}, 'none', {}) + +call hi('PreProc', s:cdPink, {}, 'none', {}) +call hi('Include', s:cdPink, {}, 'none', {}) +call hi('Define', s:cdPink, {}, 'none', {}) +call hi('Macro', s:cdPink, {}, 'none', {}) +call hi('PreCondit', s:cdPink, {}, 'none', {}) + +call hi('Type', s:cdBlue, {}, 'none', {}) +call hi('StorageClass', s:cdBlue, {}, 'none', {}) +call hi('Structure', s:cdBlue, {}, 'none', {}) +call hi('Typedef', s:cdBlue, {}, 'none', {}) + +call hi('Special', s:cdYellowOrange, {}, 'none', {}) +call hi('SpecialChar', s:cdFront, {}, 'none', {}) +call hi('Tag', s:cdFront, {}, 'none', {}) +call hi('Delimiter', s:cdFront, {}, 'none', {}) +call hi('SpecialComment', s:cdGreen, {}, 'none', {}) +call hi('Debug', s:cdFront, {}, 'none', {}) + +call hi('Underlined', s:cdNone, {}, 'underline', {}) +call hi("Conceal", s:cdFront, s:cdBack, 'none', {}) + +call hi('Ignore', s:cdFront, {}, 'none', {}) + +call hi('Error', s:cdRed, s:cdBack, 'undercurl', s:cdRed) + +call hi('Todo', s:cdNone, s:cdLeftMid, 'none', {}) + +call hi('SpellBad', s:cdRed, s:cdBack, 'undercurl', s:cdRed) +call hi('SpellCap', s:cdRed, s:cdBack, 'undercurl', s:cdRed) +call hi('SpellRare', s:cdRed, s:cdBack, 'undercurl', s:cdRed) +call hi('SpellLocal', s:cdRed, s:cdBack, 'undercurl', s:cdRed) + + +" Neovim Treesitter: +call hi('TSError', s:cdRed, {}, 'none', {}) +call hi('TSPunctDelimiter', s:cdFront, {}, 'none', {}) +call hi('TSPunctBracket', s:cdFront, {}, 'none', {}) +call hi('TSPunctSpecial', s:cdFront, {}, 'none', {}) +" Constant +call hi('TSConstant', s:cdYellow, {}, 'none', {}) +call hi('TSConstBuiltin', s:cdBlue, {}, 'none', {}) +call hi('TSConstMacro', s:cdBlueGreen, {}, 'none', {}) +call hi('TSStringRegex', s:cdOrange, {}, 'none', {}) +call hi('TSString', s:cdOrange, {}, 'none', {}) +call hi('TSStringEscape', s:cdYellowOrange, {}, 'none', {}) +call hi('TSCharacter', s:cdOrange, {}, 'none', {}) +call hi('TSNumber', s:cdLightGreen, {}, 'none', {}) +call hi('TSBoolean', s:cdBlue, {}, 'none', {}) +call hi('TSFloat', s:cdLightGreen, {}, 'none', {}) +call hi('TSAnnotation', s:cdYellow, {}, 'none', {}) +call hi('TSAttribute', s:cdBlueGreen, {}, 'none', {}) +call hi('TSNamespace', s:cdBlueGreen, {}, 'none', {}) +" Functions +call hi('TSFuncBuiltin', s:cdYellow, {}, 'none', {}) +call hi('TSFunction', s:cdYellow, {}, 'none', {}) +call hi('TSFuncMacro', s:cdYellow, {}, 'none', {}) +call hi('TSParameter', s:cdLightBlue, {}, 'none', {}) +call hi('TSParameterReference', s:cdLightBlue, {}, 'none', {}) +call hi('TSMethod', s:cdYellow, {}, 'none', {}) +call hi('TSField', s:cdLightBlue, {}, 'none', {}) +call hi('TSProperty', s:cdLightBlue, {}, 'none', {}) +call hi('TSConstructor', s:cdBlueGreen, {}, 'none', {}) +" Keywords +call hi('TSConditional', s:cdPink, {}, 'none', {}) +call hi('TSRepeat', s:cdPink, {}, 'none', {}) +call hi('TSLabel', s:cdLightBlue, {}, 'none', {}) +call hi('TSKeyword', s:cdBlue, {}, 'none', {}) +call hi('TSKeywordFunction', s:cdPink, {}, 'none', {}) +call hi('TSKeywordOperator', s:cdBlue, {}, 'none', {}) +call hi('TSOperator', s:cdFront, {}, 'none', {}) +call hi('TSException', s:cdPink, {}, 'none', {}) +call hi('TSType', s:cdBlueGreen, {}, 'none', {}) +call hi('TSTypeBuiltin', s:cdBlue, {}, 'none', {}) +call hi('TSStructure', s:cdLightBlue, {}, 'none', {}) +call hi('TSInclude', s:cdPink, {}, 'none', {}) +" Variable +call hi('TSVariable', s:cdLightBlue, {}, 'none', {}) +call hi('TSVariableBuiltin', s:cdLightBlue, {}, 'none', {}) +" Text +call hi('TSText', s:cdYellowOrange, {}, 'none', {}) +call hi('TSStrong', s:cdYellowOrange, {}, 'none', {}) +call hi('TSEmphasis', s:cdYellowOrange, {}, 'none', {}) +call hi('TSUnderline', s:cdYellowOrange, {}, 'none', {}) +call hi('TSTitle', s:cdYellowOrange, {}, 'none', {}) +call hi('TSLiteral', s:cdYellowOrange, {}, 'none', {}) +call hi('TSURI', s:cdYellowOrange, {}, 'none', {}) +" Tags +call hi('TSTag', s:cdBlue, {}, 'none', {}) +call hi('TSTagDelimiter', s:cdGray, {}, 'none', {}) + +" Markdown: +call hi('markdownBold', s:cdBlue, {}, 'bold', {}) +call hi('markdownCode', s:cdOrange, {}, 'none', {}) +call hi('markdownRule', s:cdBlue, {}, 'bold', {}) +call hi('markdownCodeDelimiter', s:cdOrange, {}, 'none', {}) +call hi('markdownHeadingDelimiter', s:cdBlue, {}, 'none', {}) +call hi('markdownFootnote', s:cdOrange, {}, 'none', {}) +call hi('markdownFootnoteDefinition', s:cdOrange, {}, 'none', {}) +call hi('markdownUrl', s:cdLightBlue, {}, 'underline', {}) +call hi('markdownLinkText', s:cdOrange, {}, 'none', {}) +call hi('markdownEscape', s:cdYellowOrange, {}, 'none', {}) + +" Asciidoc (for default syntax highlighting) +call hi("asciidocAttributeEntry", s:cdYellowOrange, {}, 'none', {}) +call hi("asciidocAttributeList", s:cdPink, {}, 'none', {}) +call hi("asciidocAttributeRef", s:cdYellowOrange, {}, 'none', {}) +call hi("asciidocHLabel", s:cdBlue, {}, 'bold', {}) +call hi("asciidocListingBlock", s:cdOrange, {}, 'none', {}) +call hi("asciidocMacroAttributes", s:cdYellowOrange, {}, 'none', {}) +call hi("asciidocOneLineTitle", s:cdBlue, {}, 'bold', {}) +call hi("asciidocPassthroughBlock", s:cdBlue, {}, 'none', {}) +call hi("asciidocQuotedMonospaced", s:cdOrange, {}, 'none', {}) +call hi("asciidocTriplePlusPassthrough", s:cdYellow, {}, 'none', {}) +call hi("asciidocMacro", s:cdPink, {}, 'none', {}) +call hi("asciidocAdmonition", s:cdOrange, {}, 'none', {}) +call hi("asciidocQuotedEmphasized", s:cdBlue, {}, 'italic', {}) +call hi("asciidocQuotedEmphasized2", s:cdBlue, {}, 'italic', {}) +call 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 hi('jsonKeyword', s:cdLightBlue, {}, 'none', {}) +call hi('jsonEscape', s:cdYellowOrange, {}, 'none', {}) +call hi('jsonNull', s:cdBlue, {}, 'none', {}) +call hi('jsonBoolean', s:cdBlue, {}, 'none', {}) + +" HTML: +call hi('htmlTag', s:cdGray, {}, 'none', {}) +call hi('htmlEndTag', s:cdGray, {}, 'none', {}) +call hi('htmlTagName', s:cdBlue, {}, 'none', {}) +call hi('htmlSpecialTagName', s:cdBlue, {}, 'none', {}) +call hi('htmlArg', s:cdLightBlue, {}, 'none', {}) + +" PHP: +call hi('phpStaticClasses', s:cdBlueGreen, {}, 'none', {}) +call hi('phpMethod', s:cdYellow, {}, 'none', {}) +call hi('phpClass', s:cdBlueGreen, {}, 'none', {}) +call hi('phpFunction', s:cdYellow, {}, 'none', {}) +call hi('phpInclude', s:cdBlue, {}, 'none', {}) +call hi('phpUseClass', s:cdBlueGreen, {}, 'none', {}) +call hi('phpRegion', s:cdBlueGreen, {}, 'none', {}) +call hi('phpMethodsVar', s:cdLightBlue, {}, 'none', {}) + +" CSS: +call hi('cssBraces', s:cdFront, {}, 'none', {}) +call hi('cssInclude', s:cdPink, {}, 'none', {}) +call hi('cssTagName', s:cdYellowOrange, {}, 'none', {}) +call hi('cssClassName', s:cdYellowOrange, {}, 'none', {}) +call hi('cssPseudoClass', s:cdYellowOrange, {}, 'none', {}) +call hi('cssPseudoClassId', s:cdYellowOrange, {}, 'none', {}) +call hi('cssPseudoClassLang', s:cdYellowOrange, {}, 'none', {}) +call hi('cssIdentifier', s:cdYellowOrange, {}, 'none', {}) +call hi('cssProp', s:cdLightBlue, {}, 'none', {}) +call hi('cssDefinition', s:cdLightBlue, {}, 'none', {}) +call hi('cssAttr', s:cdOrange, {}, 'none', {}) +call hi('cssAttrRegion', s:cdOrange, {}, 'none', {}) +call hi('cssColor', s:cdOrange, {}, 'none', {}) +call hi('cssFunction', s:cdOrange, {}, 'none', {}) +call hi('cssFunctionName', s:cdOrange, {}, 'none', {}) +call hi('cssVendor', s:cdOrange, {}, 'none', {}) +call hi('cssValueNumber', s:cdOrange, {}, 'none', {}) +call hi('cssValueLength', s:cdOrange, {}, 'none', {}) +call hi('cssUnitDecorators', s:cdOrange, {}, 'none', {}) +call hi('cssStyle', s:cdLightBlue, {}, 'none', {}) +call hi('cssImportant', s:cdBlue, {}, 'none', {}) + +" JavaScript: +call hi('jsVariableDef', s:cdLightBlue, {}, 'none', {}) +call hi('jsFuncArgs', s:cdLightBlue, {}, 'none', {}) +call hi('jsFuncBlock', s:cdLightBlue, {}, 'none', {}) +call hi('jsRegexpString', s:cdLightRed, {}, 'none', {}) +call hi('jsThis', s:cdBlue, {}, 'none', {}) +call hi('jsOperatorKeyword', s:cdBlue, {}, 'none', {}) +call hi('jsDestructuringBlock', s:cdLightBlue, {}, 'none', {}) +call hi('jsObjectKey', s:cdLightBlue, {}, 'none', {}) +call hi('jsGlobalObjects', s:cdBlueGreen, {}, 'none', {}) +call hi('jsModuleKeyword', s:cdLightBlue, {}, 'none', {}) +call hi('jsClassDefinition', s:cdBlueGreen, {}, 'none', {}) +call hi('jsClassKeyword', s:cdBlue, {}, 'none', {}) +call hi('jsExtendsKeyword', s:cdBlue, {}, 'none', {}) +call hi('jsExportDefault', s:cdPink, {}, 'none', {}) +call hi('jsFuncCall', s:cdYellow, {}, 'none', {}) +call hi('jsObjectValue', s:cdLightBlue, {}, 'none', {}) +call hi('jsParen', s:cdLightBlue, {}, 'none', {}) +call hi('jsObjectProp', s:cdLightBlue, {}, 'none', {}) +call hi('jsIfElseBlock', s:cdLightBlue, {}, 'none', {}) +call hi('jsParenIfElse', s:cdLightBlue, {}, 'none', {}) +call hi('jsSpreadOperator', s:cdLightBlue, {}, 'none', {}) +call hi('jsSpreadExpression', s:cdLightBlue, {}, 'none', {}) + +" Typescript: +call hi('typescriptLabel', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptExceptions', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptBraces', s:cdFront, {}, 'none', {}) +call hi('typescriptEndColons', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptParens', s:cdFront, {}, 'none', {}) +call hi('typescriptDocTags', s:cdBlue, {}, 'none', {}) +call hi('typescriptDocComment', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptLogicSymbols', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptImport', s:cdPink, {}, 'none', {}) +call hi('typescriptBOM', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptVariableDeclaration', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptVariable', s:cdBlue, {}, 'none', {}) +call hi('typescriptExport', s:cdPink, {}, 'none', {}) +call hi('typescriptAliasDeclaration', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptAliasKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptClassName', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptAccessibilityModifier', s:cdBlue, {}, 'none', {}) +call hi('typescriptOperator', s:cdBlue, {}, 'none', {}) +call hi('typescriptArrowFunc', s:cdBlue, {}, 'none', {}) +call hi('typescriptMethodAccessor', s:cdBlue, {}, 'none', {}) +call hi('typescriptMember', s:cdYellow, {}, 'none', {}) +call hi('typescriptTypeReference', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptDefault', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptTemplateSB', s:cdYellowOrange, {}, 'none', {}) +call hi('typescriptArrowFuncArg', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptParamImpl', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptFuncComma', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptCastKeyword', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptCall', s:cdBlue, {}, 'none', {}) +call hi('typescriptCase', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptReserved', s:cdPink, {}, 'none', {}) +call hi('typescriptDefault', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptDecorator', s:cdYellow, {}, 'none', {}) +call hi('typescriptPredefinedType', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptClassHeritage', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptClassExtends', s:cdBlue, {}, 'none', {}) +call hi('typescriptClassKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptBlock', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptDOMDocProp', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptTemplateSubstitution', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptClassBlock', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptFuncCallArg', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptIndexExpr', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptConditionalParen', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptArray', s:cdYellow, {}, 'none', {}) +call hi('typescriptES6SetProp', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptObjectLiteral', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptTypeParameter', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptEnumKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptEnum', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptLoopParen', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptParenExp', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptModule', s:cdLightBlue, {}, 'none', {}) +call hi('typescriptAmbientDeclaration', s:cdBlue, {}, 'none', {}) +call hi('typescriptModule', s:cdBlue, {}, 'none', {}) +call hi('typescriptFuncTypeArrow', s:cdBlue, {}, 'none', {}) +call hi('typescriptInterfaceHeritage', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptInterfaceName', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptInterfaceKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptInterfaceExtends', s:cdBlue, {}, 'none', {}) +call hi('typescriptGlobal', s:cdBlueGreen, {}, 'none', {}) +call hi('typescriptAsyncFuncKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptFuncKeyword', s:cdBlue, {}, 'none', {}) +call hi('typescriptGlobalMethod', s:cdYellow, {}, 'none', {}) +call hi('typescriptPromiseMethod', s:cdYellow, {}, 'none', {}) + +" XML: +call hi('xmlTag', s:cdBlueGreen, {}, 'none', {}) +call hi('xmlTagName', s:cdBlueGreen, {}, 'none', {}) +call hi('xmlEndTag', s:cdBlueGreen, {}, 'none', {}) + +" Ruby: +call hi('rubyClassNameTag', s:cdBlueGreen, {}, 'none', {}) +call hi('rubyClassName', s:cdBlueGreen, {}, 'none', {}) +call hi('rubyModuleName', s:cdBlueGreen, {}, 'none', {}) +call hi('rubyConstant', s:cdBlueGreen, {}, 'none', {}) + +" Golang: +call hi('goPackage', s:cdBlue, {}, 'none', {}) +call hi('goImport', s:cdBlue, {}, 'none', {}) +call hi('goVar', s:cdBlue, {}, 'none', {}) +call hi('goConst', s:cdBlue, {}, 'none', {}) +call hi('goStatement', s:cdPink, {}, 'none', {}) +call hi('goType', s:cdBlueGreen, {}, 'none', {}) +call hi('goSignedInts', s:cdBlueGreen, {}, 'none', {}) +call hi('goUnsignedInts', s:cdBlueGreen, {}, 'none', {}) +call hi('goFloats', s:cdBlueGreen, {}, 'none', {}) +call hi('goComplexes', s:cdBlueGreen, {}, 'none', {}) +call hi('goBuiltins', s:cdYellow, {}, 'none', {}) +call hi('goBoolean', s:cdBlue, {}, 'none', {}) +call hi('goPredefinedIdentifiers', s:cdBlue, {}, 'none', {}) +call hi('goTodo', s:cdGreen, {}, 'none', {}) +call hi('goDeclaration', s:cdBlue, {}, 'none', {}) +call hi('goDeclType', s:cdBlue, {}, 'none', {}) +call hi('goTypeDecl', s:cdBlue, {}, 'none', {}) +call hi('goTypeName', s:cdBlueGreen, {}, 'none', {}) +call hi('goVarAssign', s:cdLightBlue, {}, 'none', {}) +call hi('goVarDefs', s:cdLightBlue, {}, 'none', {}) +call hi('goReceiver', s:cdFront, {}, 'none', {}) +call hi('goReceiverType', s:cdFront, {}, 'none', {}) +call hi('goFunctionCall', s:cdYellow, {}, 'none', {}) +call hi('goMethodCall', s:cdYellow, {}, 'none', {}) +call hi('goSingleDecl', s:cdLightBlue, {}, 'none', {}) + +" Python: +call hi('pythonStatement', s:cdBlue, {}, 'none', {}) +call hi('pythonOperator', s:cdBlue, {}, 'none', {}) +call hi('pythonException', s:cdPink, {}, 'none', {}) +call hi('pythonExClass', s:cdBlueGreen, {}, 'none', {}) +call hi('pythonBuiltinObj', s:cdLightBlue, {}, 'none', {}) +call hi('pythonBuiltinType', s:cdBlueGreen, {}, 'none', {}) +call hi('pythonBoolean', s:cdBlue, {}, 'none', {}) +call hi('pythonNone', s:cdBlue, {}, 'none', {}) +call hi('pythonTodo', s:cdBlue, {}, 'none', {}) +call hi('pythonClassVar', s:cdBlue, {}, 'none', {}) +call hi('pythonClassDef', s:cdBlueGreen, {}, 'none', {}) + +" TeX: +call hi('texStatement', s:cdBlue, {}, 'none', {}) +call hi('texBeginEnd', s:cdYellow, {}, 'none', {}) +call hi('texBeginEndName', s:cdLightBlue, {}, 'none', {}) +call hi('texOption', s:cdLightBlue, {}, 'none', {}) +call hi('texBeginEndModifier', s:cdLightBlue, {}, 'none', {}) +call hi('texDocType', s:cdPink, {}, 'none', {}) +call hi('texDocTypeArgs', s:cdLightBlue, {}, 'none', {}) + +" Git: +call hi('gitcommitHeader', s:cdGray, {}, 'none', {}) +call hi('gitcommitOnBranch', s:cdGray, {}, 'none', {}) +call hi('gitcommitBranch', s:cdPink, {}, 'none', {}) +call hi('gitcommitComment', s:cdGray, {}, 'none', {}) +call hi('gitcommitSelectedType', s:cdGreen, {}, 'none', {}) +call hi('gitcommitSelectedFile', s:cdGreen, {}, 'none', {}) +call hi('gitcommitDiscardedType', s:cdRed, {}, 'none', {}) +call hi('gitcommitDiscardedFile', s:cdRed, {}, 'none', {}) +call hi('gitcommitOverflow', s:cdRed, {}, 'none', {}) +call hi('gitcommitSummary', s:cdPink, {}, 'none', {}) +call hi('gitcommitBlank', s:cdPink, {}, 'none', {}) + +" Lua: +call hi('luaFuncCall', s:cdYellow, {}, 'none', {}) +call hi('luaFuncArgName', s:cdLightBlue, {}, 'none', {}) +call hi('luaFuncKeyword', s:cdPink, {}, 'none', {}) +call hi('luaLocal', s:cdPink, {}, 'none', {}) +call hi('luaBuiltIn', s:cdBlue, {}, 'none', {}) + +" SH: +call hi('shDeref', s:cdLightBlue, {}, 'none', {}) +call hi('shVariable', s:cdLightBlue, {}, 'none', {}) + +" SQL: +call hi('sqlKeyword', s:cdPink, {}, 'none', {}) +call hi('sqlFunction', s:cdYellowOrange, {}, 'none', {}) +call hi('sqlOperator', s:cdPink, {}, 'none', {}) + +" YAML: +call hi('yamlKey', s:cdBlue, {}, 'none', {}) +call hi('yamlConstant', s:cdBlue, {}, 'none', {}) + +" Coc Explorer: +call hi('CocExplorerIndentLine', s:cdCursorDark, {}, 'none', {}) diff -r c74dffea6a0a -r f280738a90a6 vendor/vim-colors/srcery.vim --- /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 :