" ------------------- jinx ---------------------- " " Written by Nathaniel Maia, December 2017 " " ----------------------------------------------- " " vim:fdm=marker " ---------- Setup and Checks ----------- " {{{1 if exists('syntax_on') highlight clear syntax reset endif " Colors {{{1 " start with an 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] let g:terminal_ansi_colors = [ \ '#4D545E', '#D9534F', '#80B080', '#FFEB56', '#6699CC', '#CC99CC', '#5DD5FF', '#E1E1E1', \ '#4D545E', '#D9534F', '#80B080', '#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 let s:jinx.red = ['#EE5555', 210, 1] let s:jinx.green = ['#88BB88', 108, 2] let s:jinx.yellow = ['#FFCC66', 220, 3] let s:jinx.blue = ['#4488CC', 32, 4] let s:jinx.purple = ['#AA88CC', 140, 5] let s:jinx.cyan = ['#44CCEE', 81, 6] let s:jinx.orange = ['#FF8844', 172, 9] if exists('g:jinx_theme') && g:jinx_theme =~? '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, 1] let s:jinx.folded = ['#B2B2B2', 249, 15] let s:jinx.commnt = ['#808080', 244, 15] let s:jinx.yellow = ['#EE9911', 178, 3] let s:jinx.cyan = ['#3388AA', 37, 6] elseif exists('g:jinx_theme') && g:jinx_theme =~? 'midnight' set background=dark let s:jinx.fgr = ['#CCCCCC', 251, 15] let s:jinx.bgr = ['#111111', 234, 0] let s:jinx.line = ['#2A2A2F', 237, 8] let s:jinx.select = ['#2A2A2F', 237, 1] let s:jinx.folded = ['#2A2A2F', 237, 8] let s:jinx.commnt = ['#777777', 243, 7] else " night set background=dark let s:jinx.fgr = ['#E1E1E1', 254, 15] let s:jinx.bgr = ['#4D545E', 237, 0] let s:jinx.line = ['#5F6772', 243, 8] let s:jinx.select = ['#5F6772', 243, 8] let s:jinx.folded = ['#5F6772', 243, 8] let s:jinx.commnt = ['#B9B9B9', 250, 7] 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', '') 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', '') 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', '') call HighLight('Normal', 'fgr', 'bgr', '') call HighLight('VertSplit', 'line', 'commnt', '') " Tabline {{{2 call HighLight('TabLine', 'fgr', 'line', '') call HighLight('TabLineFill', 'line', 'line', '') call HighLight('TabLineSel', 'line', 'green', '') call HighLight('WildMenu', 'bgr', 'fgr', '') call HighLight('Pmenu', 'bgr', 'commnt', '') call HighLight('PmenuSel', 'fgr', 'bgr', '') call HighLight('PmenuSbar', 'commnt', 'line', '') call HighLight('PmenuThumb', 'commnt', 'line', '') call HighLight('StatusLine', 'line', 'fgr', '') call HighLight('StatusLineNC', 'fgr', 'line', '') " Spelling {{{2 call HighLight('SpellBad', '', '', 'underline') call HighLight('SpellLocal', '', '', 'underline') call HighLight('SpellRare', '', '', 'underline') " 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', '', '') call HighLight('Exception', 'red', '', '') call HighLight('Float', 'cyan', '', '') call HighLight('Number', 'cyan', '', '') call HighLight('Include', 'cyan', '', '') call HighLight('Character', 'blue', '', '') call HighLight('Operator', 'blue', '', '') call HighLight('String', 'blue', '', '') call HighLight('Label', 'green', '', '') call HighLight('Repeat', 'purple', '', '') call HighLight('Statement', 'green', '', '') call HighLight('Conditional', 'green', '', '') call HighLight('Boolean', 'green', '', '') call HighLight('Keyword', 'green', '', '') call HighLight('Macro', 'purple', '', '') call HighLight('Define', 'purple', '', '') call HighLight('Special', 'purple', '', '') call HighLight('Tag', 'purple', '', '') call HighLight('Type', 'purple', '', '') call HighLight('TypeDef', 'purple', '', '') call HighLight('Structure', 'purple', '', '') call HighLight('StorageClass', 'purple', '', '') call HighLight('PreProc', 'yellow', '', '') call HighLight('Constant', 'yellow', '', '') call HighLight('Identifier', 'yellow', '', '') call HighLight('PreCondit', 'yellow', '', '') call HighLight('Conceal', 'orange', '', '') call HighLight('Function', 'orange', '', '') " Vim {{{2 call HighLight('vimCommand', 'green', '', '') call HighLight('vimVar', 'yellow', '', '') call HighLight('vimGroup', 'yellow', '', '') call HighLight('vimGroupName', 'yellow', '', '') call HighLight('VimFunction', 'orange', '', '') call HighLight('VimFunctionKey', 'orange', '', '') call HighLight('vimMapModKey', 'purple', '', '') call HighLight('vimBracket', 'purple', '', '') call HighLight('vimOption', 'purple', '', '') call HighLight('vimMapMod', 'purple', '', '') call HighLight('vimNotation', 'purple', '', '') " Shell {{{2 call HighLight('shSet', 'green', '', '') call HighLight('shLoop', 'green', '', '') call HighLight('shFor', 'yellow', '', '') call HighLight('shTestOpr', 'blue', '', '') call HighLight('shConstant', 'yellow', '', '') call HighLight('shFunctionKey', 'orange', '', '') call HighLight('shStatement', 'green', '', '') call HighLight('shKeyword', 'purple', '', '') call HighLight('zshStatement', 'green', '', '') call HighLight('zshOption', 'purple', '', '') call HighLight('zshParentheses', 'purple', '', '') call HighLight('zshBrackets', 'purple', '', '') call HighLight('zshRepeat', 'green', '', '') call HighLight('zshRedir', 'fgr', '', '') call HighLight('zshFunction', 'orange', '', '') call HighLight('zshVariableDef', 'yellow', '', '') call HighLight('zshVariable', 'yellow', '', '') call HighLight('zshOperator', 'blue', '', '') call HighLight('zshPreProc', 'commnt', '', '') " 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', '', '') call HighLight('phpKeyword', 'purple', '', '') 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', '', '') call HighLight('pythonClass', 'blue', '', '') call HighLight('pythonClassParameters', 'purple', '', '') call HighLight('pythonParam', 'purple', '', '') call HighLight('pythonDecorator', 'blue', '', '') call HighLight('pythonExClass', 'blue', '', '') call HighLight('pythonException', 'blue', '', '') call HighLight('pythonExceptions', 'blue', '', '') call HighLight('pythonBrackets', 'blue', '', '') call HighLight('pythonEscape', 'blue', '', '') call HighLight('pythonImport', 'green', '', '') call HighLight('pythonRepeat', 'green', '', '') call HighLight('pythonCoding', 'green', '', '') call HighLight('pythonInclude', 'green', '', '') call HighLight('pythonPreCondit', 'green', '', '') call HighLight('pythonStatement', 'green', '', '') call HighLight('pythonConditional', 'green', '', '') call HighLight('pythonDef', 'yellow', '', '') call HighLight('pythonSelf', 'blue', '', '') call HighLight('pythonBuiltinType', 'purple', '', '') call HighLight('pythonBuiltin', 'purple', '', '') call HighLight('pythonBuiltinObj', 'purple', '', '') call HighLight('pythonBuiltinFunc', 'orange', '', '') call HighLight('pythonDot', 'orange', '', '') call HighLight('pythonLambda', 'orange', '', '') call HighLight('pythonLambdaExpr', 'orange', '', '') call HighLight('pythonFunction', 'orange', '', '') 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', '', '') call HighLight('javascriptNull', 'red', '', '') call HighLight('javascriptStatement', 'green', '', '') call HighLight('javaScriptConditional', 'green', '', '') call HighLight('javaScriptRepeat', 'purple', '', '') call HighLight('javaScriptBraces', 'purple', '', '') call HighLight('javascriptGlobal', 'yellow', '', '') call HighLight('javaScriptFunction', 'orange', '', '') call HighLight('javaScriptMember', 'orange', '', '') " HTML {{{2 call HighLight('htmlTag', 'red', '', '') call HighLight('htmlTagName', 'red', '', '') call HighLight('htmlLink', 'blue', '', '') call HighLight('htmlArg', 'green', '', '') call HighLight('htmlScriptTag', 'purple', '', '') call HighLight('htmlTitle', 'blue', '', '') call HighLight('htmlH1', 'blue', '', '') 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', '', '') call HighLight('markdownCodeDelimiter', 'purple', '', '') call HighLight('markdownH1', 'blue', '', '') call HighLight('markdownH2', 'blue', '', '') 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', '') " Cleanup {{{2 " Remove the highlight function as it's no longer needed. " Will cause problems reloading the theme if not deleted. delfunction HighLight let g:colors_name = 'jinx'