" ------------------- jinx ---------------------- " " Written by Nathaniel Maia, December 2017 " " ----------------------------------------------- " " vim:fdm=marker " ---------- Setup and Checks ----------- " {{{1 if exists('syntax_on') highlight clear syntax reset endif let g:colors_name = 'jinx' " Colors {{{1 " empty color dictionary let s:jinx = {} " NOTE: For those looking to edit the theme " " Color definition is done for both true color " and 256 color. The format is in ['HEX', 256color, 16color] " " let s:jinx.black = ['#000000', 0, 0] " completion menu, wildmenu, and status/tab lines let s:jinx.menu_bgr = ['#4D5057', 238, 8] let s:jinx.menu_fgr = ['#808080', 102, 15] let s:jinx.menusel_bgr = ['#1F2326', 235, 0] let s:jinx.menusel_fgr = ['#E1E1E1', 251, 7] let s:jinx.menualt_fgr = ['#E1E1E1', 251, 7] let s:jinx.menualt_bgr = ['#37383D', 237, 0] let s:jinx.tabsel_bgr = ['#8DBC8D', 108, 2] " terminal colours for :terminal {{{ let g:terminal_ansi_colors = [ \ '#4D545E', '#FF777A', '#8DBC8D', '#FFEB56', '#6699CC', '#CC99CC', '#5DD5FF', '#E1E1E1', \ '#4D545E', '#FF777A', '#8DBC8D', '#FFEB56', '#6699CC', '#CC99CC', '#5DD5FF', '#E1E1E1' \ ] let s:i = 0 for s:color in g:terminal_ansi_colors let g:terminal_color_{s:i} = s:color let s:i += 1 endfor "}}} " background, foreground, line, visual selection, folds, " and comments as well as standard 1-7 colors: red, green, " yellow, blue, purple, cyan, and orange (instead of white) if exists('g:jinx_colors') && g:jinx_colors =~? 'day' "{{{ set background=light let s:jinx.fgr = ['#494949', 238, 0] let s:jinx.bgr = ['#E1E1E1', 254, 7] let s:jinx.line = ['#D0D0D0', 252, 15] let s:jinx.select = ['#D0D0D0', 252, 15] let s:jinx.folded = ['#B2B2B2', 249, 15] let s:jinx.commnt = ['#808080', 244, 15] let s:jinx.red = ['#EF7878', 210, 1] let s:jinx.green = ['#78A078', 108, 2] let s:jinx.yellow = ['#CE9D00', 178, 3] let s:jinx.blue = ['#4E88CF', 32, 4] let s:jinx.purple = ['#AF86C8', 140, 5] let s:jinx.cyan = ['#00AFAF', 37, 6] let s:jinx.orange = ['#E0914C', 166, 9] let g:terminal_color_1 = '#EF7878' let g:terminal_color_2 = '#78A078' let g:terminal_color_3 = '#CE9D00' let g:terminal_color_4 = '#4E88CF' let g:terminal_color_5 = '#AF86C8' let g:terminal_color_6 = '#00AFAF' let g:terminal_color_9 = '#FF777A' let g:terminal_color_10 = '#8DBC8D' let g:terminal_color_11 = '#FFEB56' let g:terminal_color_12 = '#6699CC' let g:terminal_color_13 = '#CC99CC' let g:terminal_color_14 = '#5DD5FF' let g:terminal_ansi_colors = [ \ '#E1E1E1', '#EF7878', '#78A078', '#CE9D00', '#4E88CF', '#AF86C8', '#00AFAF', '#4D545E', \ '#E1E1E1', '#FF777A', '#8DBC8D', '#FFEB56', '#6699CC', '#CC99CC', '#5DD5FF', '#4D545E' \ ] let s:i = 0 for s:color in g:terminal_ansi_colors let g:terminal_color_{s:i} = s:color let s:i += 1 endfor elseif exists('g:jinx_colors') && g:jinx_colors =~? 'midnight' let s:jinx.menu_bgr = ['#2c3135', 237, 0] set background=dark let s:jinx.fgr = ['#E1E1E1', 253, 7] let s:jinx.bgr = ['#40464F', 234, 0] let s:jinx.line = ['#2c3135', 237, 15] let s:jinx.select = ['#2c3135', 237, 15] let s:jinx.folded = ['#414449', 240, 15] let s:jinx.commnt = ['#B9B9B9', 102, 15] let s:jinx.red = ['#FF777A', 210, 1] let s:jinx.green = ['#8DBC8D', 108, 2] let s:jinx.yellow = ['#FFEB56', 220, 3] let s:jinx.blue = ['#6699CC', 32, 4] let s:jinx.purple = ['#CC99CC', 140, 5] let s:jinx.cyan = ['#5DD5FF', 81, 6] let s:jinx.orange = ['#FF9157', 208, 9] else " night set background=dark let s:jinx.fgr = ['#E1E1E1', 254, 7] let s:jinx.bgr = ['#4D545E', 237, 0] let s:jinx.line = ['#5F6772', 243, 8] let s:jinx.select = ['#5F6772', 243, 1] let s:jinx.folded = ['#414449', 239, 8] let s:jinx.commnt = ['#B9B9B9', 250, 8] let s:jinx.red = ['#FF777A', 210, 1] let s:jinx.green = ['#8DBC8D', 108, 2] let s:jinx.yellow = ['#FFEB56', 220, 3] let s:jinx.blue = ['#6699CC', 32, 4] let s:jinx.purple = ['#CC99CC', 140, 5] let s:jinx.cyan = ['#5DD5FF', 81, 6] let s:jinx.orange = ['#FF9157', 208, 9] endif "}}} function! HighLight(GRP, FG, BG, ATT) abort " {{{1 if a:FG !=# '' let l:fg_col = get(s:jinx, a:FG) let l:fg_true = l:fg_col[0] if $TERM =~? 'linux' || &t_Co < 256 let l:fg_term = l:fg_col[2] else let l:fg_term = l:fg_col[1] endif exec 'highlight! '.a:GRP.' guifg='.l:fg_true.' ctermfg='.l:fg_term endif if a:BG !=# '' let l:bg_col = get(s:jinx, a:BG) let l:bg_true = l:bg_col[0] if $TERM =~? 'linux' || &t_Co < 256 let l:bg_term = l:bg_col[2] else let l:bg_term = l:bg_col[1] endif exec 'highlight! '.a:GRP.' guibg='.l:bg_true.' ctermbg='.l:bg_term endif if a:ATT !=# '' && &t_Co >= 256 exec 'highlight! '.a:GRP.' gui='.a:ATT.' cterm='.a:ATT endif endfunction " ---------- Highlight Groups ------------ " {{{1 " Editor {{{2 call HighLight('Title', 'commnt', 'bgr', 'bold') call HighLight('Visual', '', 'select', '') call HighLight('SignColumn', '', 'line', '') call HighLight('CursorLine', '', 'line', 'none') call HighLight('CursorColumn', '', 'line', '') call HighLight('CursorLineNr', 'cyan', 'line', '') call HighLight('LineNr', 'commnt', 'line', '') call HighLight('ColorColumn', 'fgr', 'red', '') call HighLight('Error', 'red', 'bgr', '') call HighLight('ErrorMsg', 'red', 'bgr', '') call HighLight('WarningMsg', 'red', 'bgr', '') call HighLight('MatchParen', 'yellow', 'bgr', 'bold') call HighLight('ModeMsg', 'cyan', 'bgr', '') call HighLight('MoreMsg', 'cyan', 'bgr', '') call HighLight('Directory', 'blue', 'bgr', '') call HighLight('Question', 'green', 'bgr', '') call HighLight('NonText', 'commnt', 'bgr', '') call HighLight('SpecialKey', 'commnt', 'bgr', '') call HighLight('Folded', 'commnt', 'folded', '') call HighLight('Search', 'bgr', 'blue', '') call HighLight('HLNext', 'bgr', 'red', 'bold') call HighLight('Normal', 'fgr', 'bgr', '') call HighLight('VertSplit', 'menu_bgr', 'menu_fgr', '') " Tabline {{{2 call HighLight('TabLine', 'menusel_fgr', 'menu_bgr', 'none') call HighLight('TabLineFill', 'menu_bgr', 'menu_bgr', '') call HighLight('TabLineSel', 'menu_bgr', 'tabsel_bgr', 'bold') call HighLight('WildMenu', 'menusel_fgr', 'menu_bgr', 'bold') call HighLight('Pmenu', 'menusel_fgr', 'menu_bgr', 'bold') call HighLight('PmenuSel', 'menusel_bgr', 'menusel_fgr', 'bold') call HighLight('PmenuSbar', 'menu_fgr', 'menu_bgr', '') call HighLight('PmenuThumb', 'menu_fgr', 'menu_bgr', '') call HighLight('StatusLine', 'menu_bgr', 'menusel_fgr', '') call HighLight('StatusLineNC', 'menu_bgr', 'menu_fgr', '') " Spelling {{{2 call HighLight('SpellBad', '', '', 'underline') call HighLight('SpellLocal', '', '', 'underline') call HighLight('SpellRare', '', '', 'underline') " Ctrl-P {{{2 call HighLight('CtrlPNoEntries', 'red', '', 'bold') call HighLight('CtrlPMatch', 'blue', '', 'bold') call HighLight('CtrlPLinePre', 'blue', 'menu_bgr', 'none') call HighLight('CtrlPPrtBase', 'blue', '', 'none') call HighLight('CtrlPPrtCursor', 'menu_fgr', 'menu_bgr', 'bold') call HighLight('CtrlPMode1', 'menu_fgr', 'menu_bgr', 'bold') call HighLight('CtrlPMode2', 'menu_fgr', 'menu_bgr', 'bold') call HighLight('CtrlPStats', 'menu_fgr', 'menu_bgr', 'bold') " ALE linter {{{2 call HighLight('ALEErrorSign', 'red', 'line', '') call HighLight('ALEWarningSign', 'orange', 'line', '') call HighLight('ALEError', 'red', '', 'underline') call HighLight('ALEWarning', 'red', '', 'underline') call HighLight('ALEStyleError', 'orange', '', 'underline') call HighLight('ALEStyleWarning', 'orange', '', 'underline') " Generic {{{2 call HighLight('Comment', 'commnt', '', '') call HighLight('Todo', 'red', 'bgr', 'bold') call HighLight('Float', 'cyan', '', '') call HighLight('Character', 'cyan', '', '') call HighLight('String', 'cyan', '', '') call HighLight('Number', 'cyan', '', 'bold') call HighLight('Boolean', 'cyan', '', 'bold') call HighLight('Exception', 'blue', '', 'bold') call HighLight('Include', 'blue', '', '') call HighLight('Operator', 'blue', '', 'bold') call HighLight('Label', 'green', '', '') call HighLight('Repeat', 'green', '', '') call HighLight('Statement', 'green', '', '') call HighLight('Conditional', 'green', '', '') call HighLight('Keyword', 'green', '', 'bold') call HighLight('Structure', 'purple', '', 'bold') call HighLight('StorageClass', 'purple', '', 'bold') call HighLight('Type', 'purple', '', 'bold') call HighLight('Tag', 'purple', '', 'bold') call HighLight('Macro', 'purple', '', 'bold') call HighLight('Special', 'purple', '', 'bold') call HighLight('TypeDef', 'purple', '', 'bold') call HighLight('Define', 'yellow', '', 'bold') call HighLight('Constant', 'purple', '', 'bold') call HighLight('PreProc', 'yellow', '', '') call HighLight('Identifier', 'yellow', '', 'bold') call HighLight('PreCondit', 'yellow', '', '') call HighLight('Function', 'orange', '', 'bold') call HighLight('Conceal', 'orange', '', '') " Vim {{{2 call HighLight('vimCommand', 'green', '', 'bold') call HighLight('vimVar', 'yellow', '', 'bold') call HighLight('vimGroup', 'yellow', '', 'bold') call HighLight('vimGroupName', 'yellow', '', 'bold') call HighLight('VimFunction', 'orange', '', 'bold') call HighLight('VimFunctionKey', 'orange', '', 'bold') call HighLight('vimMapModKey', 'purple', '', 'bold') call HighLight('vimBracket', 'purple', '', 'bold') call HighLight('vimOption', 'purple', '', 'bold') call HighLight('vimMapMod', 'purple', '', '') call HighLight('vimNotation', 'purple', '', '') " Shell {{{2 call HighLight('shSet', 'green', '', 'bold') call HighLight('shLoop', 'green', '', 'bold') call HighLight('shTestOpr', 'green', '', 'bold') call HighLight('shConstant', 'yellow', '', 'bold') call HighLight('shFunctionKey', 'orange', '', 'bold') call HighLight('shStatement', 'green', '', 'bold') call HighLight('shKeyword', 'purple', '', 'bold') call HighLight('zshStatement', 'green', '', 'bold') call HighLight('zshOption', 'green', '', 'bold') call HighLight('zshFunction', 'orange', '', 'bold') call HighLight('zshVariableDef', 'yellow', '', '') call HighLight('zshOperator', 'blue', '', 'bold') " C {{{2 call HighLight('cConditional', 'green', '', '') call HighLight('cRepeat', 'purple', '', '') call HighLight('cStorageClass', 'purple', '', '') call HighLight('cType', 'yellow', '', '') " PHP {{{2 call HighLight('phpMemberSelector', 'blue', '', '') call HighLight('phpVarSelector', 'red', '', '') call HighLight('phpConditional', 'green', '', '') call HighLight('phpStatement', 'green', '', 'bold') call HighLight('phpKeyword', 'purple', '', 'bold') call HighLight('phpRepeat', 'purple', '', '') " Ruby {{{2 call HighLight('rubyInclude', 'blue', '', '') call HighLight('rubyAttribute', 'blue', '', '') call HighLight('rubySymbol', 'green', '', '') call HighLight('rubyStringDelimiter', 'green', '', '') call HighLight('rubyRepeat', 'purple', '', '') call HighLight('rubyControl', 'purple', '', '') call HighLight('rubyConditional', 'purple', '', '') call HighLight('rubyException', 'purple', '', '') call HighLight('rubyCurlyBlock', 'orange', '', '') call HighLight('rubyLocalVariableOrMethod', 'orange', '', '') call HighLight('rubyInterpolationDelimiter', 'orange', '', '') call HighLight('rubyAccess', 'yellow', '', '') call HighLight('rubyConstant', 'yellow', '', '') " Python {{{2 call HighLight('pythonRun', 'red', '', '') call HighLight('pythonOperator', 'blue', '', 'bold') call HighLight('pythonClass', 'blue', '', '') call HighLight('pythonClassParameters', 'purple', '', '') call HighLight('pythonParam', 'purple', '', '') call HighLight('pythonDecorator', 'blue', '', 'bold') call HighLight('pythonExClass', 'blue', '', '') call HighLight('pythonException', 'blue', '', 'bold') call HighLight('pythonExceptions', 'blue', '', 'bold') call HighLight('pythonBrackets', 'blue', '', '') call HighLight('pythonEscape', 'blue', '', '') call HighLight('pythonImport', 'green', '', 'bold') call HighLight('pythonRepeat', 'green', '', '') call HighLight('pythonCoding', 'green', '', '') call HighLight('pythonInclude', 'green', '', 'bold') call HighLight('pythonPreCondit', 'green', '', '') call HighLight('pythonStatement', 'green', '', 'bold') call HighLight('pythonConditional', 'green', '', '') call HighLight('pythonDef', 'yellow', '', 'bold') call HighLight('pythonSelf', 'blue', '', 'bold') call HighLight('pythonBuiltinType', 'purple', '', 'bold') call HighLight('pythonBuiltin', 'purple', '', 'bold') call HighLight('pythonBuiltinObj', 'purple', '', 'bold') call HighLight('pythonBuiltinFunc', 'orange', '', 'bold') call HighLight('pythonDot', 'orange', '', 'bold') call HighLight('pythonLambda', 'orange', '', '') call HighLight('pythonLambdaExpr', 'orange', '', '') call HighLight('pythonFunction', 'orange', '', 'bold') call HighLight('pythonDottedName', 'orange', '', '') call HighLight('pythonBuiltinObjs', 'orange', '', '') " LaTeX {{{2 call HighLight('texZone', 'red', '', 'none') call HighLight('texStatement', 'blue', '', 'none') call HighLight('texRefLabel', 'blue', '', 'none') call HighLight('texRefZone', 'green', '', 'none') call HighLight('texMath', 'orange', '', 'none') call HighLight('texMathZoneX', 'orange', '', 'none') call HighLight('texMathZoneA', 'orange', '', 'none') call HighLight('texMathZoneB', 'orange', '', 'none') call HighLight('texMathZoneC', 'orange', '', 'none') call HighLight('texMathZoneD', 'orange', '', 'none') call HighLight('texMathZoneE', 'orange', '', 'none') call HighLight('texMathMatcher', 'orange', '', 'none') call HighLight('texDelimiter', 'purple', '', 'none') call HighLight('texComment', 'commnt', '', 'none') " JavaScript {{{2 call HighLight('javaScriptNumber', 'cyan', '', 'bold') call HighLight('javascriptNull', 'red', '', 'bold') call HighLight('javascriptStatement', 'green', '', '') call HighLight('javaScriptConditional', 'green', '', '') call HighLight('javaScriptRepeat', 'purple', '', '') call HighLight('javaScriptBraces', 'purple', '', 'bold') call HighLight('javascriptGlobal', 'yellow', '', 'bold') call HighLight('javaScriptFunction', 'orange', '', 'bold') call HighLight('javaScriptMember', 'orange', '', 'bold') " HTML {{{2 call HighLight('htmlTag', 'red', '', '') call HighLight('htmlTagName', 'red', '', 'bold') call HighLight('htmlLink', 'blue', '', 'bold') call HighLight('htmlArg', 'green', '', 'bold') call HighLight('htmlScriptTag', 'purple', '', 'bold') call HighLight('htmlTitle', 'blue', '', 'bold') call HighLight('htmlH1', 'blue', '', 'bold') call HighLight('htmlH2', 'cyan', '', '') call HighLight('htmlH3', 'cyan', '', '') call HighLight('htmlH4', 'green', '', '') call HighLight('htmlH5', 'green', '', '') " YAML {{{2 call HighLight('yamlKey', 'red', '', '') call HighLight('yamlAnchor', 'red', '', '') call HighLight('yamlAlias', 'blue', '', '') call HighLight('yamlDocumentHeader', 'green', '', '') " Markdown {{{2 call HighLight('markdownHeadingRule', 'red', '', '') call HighLight('markdownHeadingDelimiter', 'red', '', '') call HighLight('markdownListMarker', 'blue', '', '') call HighLight('markdownOrderedListMarker', 'blue', '', '') call HighLight('markdownCode', 'purple', '', '') call HighLight('markdownCodeBlock', 'purple', '', 'bold') call HighLight('markdownCodeDelimiter', 'orange', '', 'bold') call HighLight('markdownH1', 'blue', '', 'bold') call HighLight('markdownH2', 'blue', '', 'bold') call HighLight('markdownH3', 'cyan', '', '') call HighLight('markdownH4', 'cyan', '', '') call HighLight('markdownH5', 'green', '', '') " ShowMarks {{{2 call HighLight('ShowMarksHLm', 'cyan', '', '') call HighLight('ShowMarksHLl', 'orange', '', '') call HighLight('ShowMarksHLo', 'purple', '', '') call HighLight('ShowMarksHLu', 'yellow', '', '') " Lua {{{2 call HighLight('luaRepeat', 'purple', '', '') call HighLight('luaStatement', 'purple', '', '') call HighLight('luaCond', 'green', '', '') call HighLight('luaCondEnd', 'green', '', '') call HighLight('luaCondStart', 'green', '', '') call HighLight('luaCondElseif', 'green', '', '') " Go {{{2 call HighLight('goDeclType', 'blue', '', '') call HighLight('goLabel', 'purple', '', '') call HighLight('goRepeat', 'purple', '', '') call HighLight('goBuiltins', 'purple', '', '') call HighLight('goStatement', 'purple', '', '') call HighLight('goDirective', 'purple', '', '') call HighLight('goDeclaration', 'purple', '', '') call HighLight('goConditional', 'purple', '', '') call HighLight('goTodo', 'yellow', '', '') call HighLight('goConstants', 'orange', '', '') " Clojure {{{2 call HighLight('clojureException', 'red', '', '') call HighLight('clojureParen', 'cyan', '', '') call HighLight('clojureCond', 'blue', '', '') call HighLight('clojureFunc', 'blue', '', '') call HighLight('clojureMeta', 'blue', '', '') call HighLight('clojureMacro', 'blue', '', '') call HighLight('clojureDeref', 'blue', '', '') call HighLight('clojureQuote', 'blue', '', '') call HighLight('clojureRepeat', 'blue', '', '') call HighLight('clojureRepeat', 'blue', '', '') call HighLight('clojureUnquote', 'blue', '', '') call HighLight('clojureAnonArg', 'blue', '', '') call HighLight('clojureDispatch', 'blue', '', '') call HighLight('clojureString', 'green', '', '') call HighLight('clojureRegexp', 'green', '', '') call HighLight('clojureKeyword', 'green', '', '') call HighLight('clojureDefine', 'purple', '', '') call HighLight('clojureSpecial', 'purple', '', '') call HighLight('clojureVariable', 'yellow', '', '') call HighLight('clojureBoolean', 'orange', '', '') call HighLight('clojureNumber', 'orange', '', '') call HighLight('clojureConstant', 'orange', '', '') call HighLight('clojureCharacter', 'orange', '', '') " Scala {{{2 call HighLight('scalaPackage', 'red', '', '') call HighLight('scalaVar', 'cyan', '', '') call HighLight('scalaDefName', 'blue', '', '') call HighLight('scalaBackTick', 'blue', '', '') call HighLight('scalaMethodCall', 'blue', '', '') call HighLight('scalaXml', 'green', '', '') call HighLight('scalaString', 'green', '', '') call HighLight('scalaBackTick', 'green', '', '') call HighLight('scalaEmptyString', 'green', '', '') call HighLight('scalaStringEscape', 'green', '', '') call HighLight('scalaMultiLineString', 'green', '', '') call HighLight('scalaTypeSpecializer', 'yellow', '', '') call HighLight('scalaDefSpecializer', 'yellow', '', '') call HighLight('scalaType', 'yellow', '', '') call HighLight('scalaCaseType', 'yellow', '', '') call HighLight('scalaAnnotation', 'orange', '', '') call HighLight('scalaSymbol', 'orange', '', '') call HighLight('scalaUnicode', 'orange', '', '') call HighLight('scalaBoolean', 'orange', '', '') call HighLight('scalaNumber', 'orange', '', '') call HighLight('scalaChar', 'orange', '', '') call HighLight('scalaImport', 'purple', '', '') call HighLight('scalaDef', 'purple', '', '') call HighLight('scalaVal', 'purple', '', '') call HighLight('scalaClass', 'purple', '', '') call HighLight('scalaTrait', 'purple', '', '') call HighLight('scalaObject', 'purple', '', '') call HighLight('scalaKeywordModifier', 'purple', '', '') call HighLight('scalaDocComment', 'commnt', '', '') call HighLight('scalaComment', 'commnt', '', '') call HighLight('scalaDocTags', 'commnt', '', '') call HighLight('scalaLineComment', 'commnt', '', '') " Diff {{{2 call HighLight('DiffDelete', 'red', '', '') call HighLight('DiffChange', 'blue', '', '') call HighLight('DiffAdd', 'green', '', '') call HighLight('DiffText', 'line', 'blue', 'bold') " Cleanup {{{2 " Remove the highlight function as it's no longer needed. " Will cause problems reloading the theme if not deleted. delfunction HighLight