<%
    # RNB, A VIM COLORSCHEME TEMPLATE
    # Author:        Romain Lafourcade (https://github.com/romainl)
    # Canonical URL: https://gist.github.com/romainl/5cd2f4ec222805f49eca

    # Step 1: information
    #
    # mAke sure the name of your colorscheme is unique and attractive.
    # The description should fit in a single line with no linefeed.
    # 'background' can be "light" or "dark".
    information = {
        author:      "studiovx",
        email:       "studiovx@studiovx.co.uk",
        name:        "monotonous-dark",
        description: "",
        background:  "dark",
        webpage:     ""
    }

    # Step 2: colors
    #
    # black = [       give each color a distinctive name
    #   "#000000",    hexadecimal color for GVim/MacVim and "true colors" terminals
    #   0,            integer between 0 and 255 for terminals supporting 256 colors
    #   "black"       color name for less capable color terminals, can be "darkred", "red",
    #                 "darkgreen", "green", "darkyellow", "yellow", "darkblue", "blue",
    #                 "darkmagenta", "magenta", "black", "darkgrey", "grey", "white"
    # ]
    #
    # If your colors are defined correctly, the resulting colorscheme is guaranteed
    # to work in GVim (Windows/Linux), MacVim, and any properly set up terminal emulator.

    strongred3  = ["#373030", 237, "darkred"]
    strongred2  = ["#6b5d5d", 52, "darkred"]
    strongred1  = ["#866b6b", 52, "darkred"]
    red3      = ["#967978", 52, "darkred"]
    red2      = ["#a78685", 88, "darkred"]
    red1      = ["#b79392", 88, "red"]
    weakred3 = ["#c4a6a5", 88, "red"]
    weakred2 = ["#cab0af", 124, "red"]
    weakred1 = ["#d1bab9", 124, "red"]

    graygreen0 = ["#303730", 237, "black"]
    green7 = ["#6b866c", 22, "darkgreen"]
    green6 = ["#7a9678", 22, "darkgreen"]
    green5 = ["#85a786", 28, "darkgreen"]
    green4 = ["#95b792", 28, "green"]
    green3 = ["#a5c4a5", 28, "green"]
    green2 = ["#b1caaf", 34, "green"]
    green1 = ["#b9d1bb", 34, "green"]

    grayblue0 = ["#303237", 237, "black"]
    blue7 = ["#5c6191", 17, "darkblue"]
    blue6 = ["#6a6f9b", 18, "darkblue"]
    blue5 = ["#7378b4", 19, "darkblue"]
    blue4 = ["#7e84c6", 19, "blue"]
    blue3 = ["#898fcb", 20, "blue"]
    blue2 = ["#959ad0", 20, "blue"]
    blue1 = ["#a1a5d5", 21, "blue"]

    grayindigo0 = ["#323037", 237, "black"]
    indigo7 = ["#6c6b86", 17, "darkblue"]
    indigo6 = ["#787896", 18, "darkblue"]
    indigo5 = ["#8685a7", 19, "darkblue"]
    indigo4 = ["#9292b7", 19, "blue"]
    indigo3 = ["#a6a5c4", 20, "blue"]
    indigo2 = ["#b0afca", 20, "blue"]
    indigo1 = ["#beb9d1", 21, "blue"]

    # TODO 256 and term colours
    magenta7= ["#625166", 164, "magenta"]
    magenta6= ["#725f77", 164, "magenta"]
    magenta5= ["#826c89", 164, "magenta"]
    magenta4= ["#927a9a", 164, "magenta"]
    magenta3= ["#a287aa", 164, "magenta"]
    magenta2= ["#b294bb", 164, "magenta"]
    magenta1= ["#b99dc1", 164, "magenta"]

    grayyellow0 = ["#373730", 237, "black"]
    yellow7 = ["#90905c", 22, "darkyellow"]
    yellow6 = ["#a2a268", 22, "darkyellow"]
    yellow5 = ["#b4b473", 28, "darkyellow"]
    yellow4 = ["#c3c67e", 28, "yellow"]
    yellow3 = ["#c6c689", 28, "yellow"]
    yellow2 = ["#d0d095", 34, "yellow"]
    yellow1 = ["#d5d5a1", 34, "yellow"]


    bg_cursorline       = ["#f7f7f7", 250, "white"]
    bg_colorcolumn      = bg_cursorline
    bg_cursorcolumn     = ["#f7f7f7", 250, "white"]
    bg                  = ["#ffffff", 234, "black"]
    bg_cursorline_input = ["#e6e6e6", 17, "darkblue"]
    fg_weak1            = ["#cccccc", 247, "darkgray"]
    fg_comment          = ["#c4c4c4", 244, "darkgray"]
    fg_weak2            = ["#afafaf", 238, "gray"]
    fg                  = ["#999999", 243, "gray"]
    fg_strong1          = ["#888888", 240, "gray"]
    fg_strong2          = ["#777777", 238, "gray"]
    fg_strong3          = ["#666666", 232, "gray"]
    fg_strong4          = ["#555555", 232, "gray"]
    fg_special          = ["#111111", 232, "gray"]

    fg_error            = ["#c74444", 196, "red"]
    fg_spellcap         = ["#a67038", 166, "yellow"]
    fg_spellrare        = ["#797532", 247, "darkyellow"]
    fg_spelllocal       = fg_spellrare
    bg_whitespace_error = ["#ccbbbb", 196, "red"]
    fg_todo             = ["#aa0000", 196, "red"]

    color_primary_weak1 = weakred1
    color_primary_weak2 = weakred2
    color_primary_weak3 = weakred3
    color_primary1 = red1
    color_primary2 = red2
    color_primary3 = red3
    color_primary_strong1 = strongred1
    color_primary_strong2 = strongred2
    color_primary_strong3 = strongred3

    color_secondary_weak = green5
    color_secondary = green6
    color_secondary_strong = green7

    color_tertiary_weak = blue3
    color_tertiary = blue4
    color_tertiary_strong = blue7

    ui_bg         = ["#dddddd", 238, "gray"]
    ui_fg_weak1   = ["#999999", 238, "gray"]
    ui_fg_weak2   = ["#8f8f8f", 240, "gray"]
    ui_fg         = ["#828282", 243, "gray"]
    ui_fg_strong1 = ["#707070", 244, "darkgray"]
    ui_fg_strong2 = ["#666666", 247, "darkgray"]
    ui_fg_strong3 = ["#555555", 250, "white"]
    ui_fg_strong4 = ["#444444", 255, "white"]

    ui_cursor_bg = ["#eee4e4", 255, "white"]
    ui_cursor_fg = ["#131313", 0, "black"]

    ui_linenr = fg_weak1
    ui_cursorlinenr = fg_weak2

    ui_search    = ["#b7c3cd", 17, "darkblue"]
    ui_incsearch = ["#5a727c", 17, "darkblue"]

    ui_visual_bg    = ["#ced8e0", 17, "darkblue"]
    ui_visualnos_bg = ["#e0d4ce", 52, "darkred"]

    menu_bg = ui_bg
    menu_fg = ui_fg
    menu_sel = ui_fg_strong3

    diff_delete_bg = ["#ece0e0", 52, "darkred"]
    diff_add_bg    = ["#e0ece0", 22, "darkgreen"]
    diff_change_bg = ["#e0e0ec", 17, "darkblue"]
    diff_change_fg = ["#656a7c", 21, "white"]

    ui_sign_add          = ["#496349", 34, "green"]
    ui_sign_change       = ["#596171", 19, "blue"]
    ui_sign_delete       = ["#725454", 124, "red"]
    ui_sign_changedelete = ["#5c4a5a", 126, "magenta"]

    ui_statusbar_mod        = ["#655757", 124, "red"]
    ui_statusbar_mod_active = ["#916c6c", 124, "red"]
    ui_statusbar_input      = ["#ced8e0", 17, "darkblue"]

    ui_fileinfo = fg_comment

    ui_fg_errormsg   = ["#c74444", 196, "red"]
    ui_fg_warningmsg = ["#a67038", 166, "yellow"]
    ui_fg_question   = ["#797532", 247, "darkgray"]

    ui_fg_warning_weak   = ["#7b6a6a", 88, "darkred"]
    ui_fg_warning        = ["#725454", 124, "red"]
    ui_fg_warning_strong = ["#916c6c", 196, "red"]
    ui_fg_error          = ["#7D3636", 196, "red"]

    ui_fg_linter_dash = fg_weak1
    ui_fg_linter_dash_active = fg_comment
    ui_fg_linter_error = ui_fg
    ui_fg_linter_error_active = ui_fg_errormsg
    ui_fg_linter_warning = ui_fg_weak2
    ui_fg_linter_warning_active = ui_fg_warningmsg
    ui_fg_linter_info = fg_weak1
    ui_fg_linter_info_active = ui_fg_question
    
    # terminal_ansi_colors = [ '#1f2121', fg_comment[0], fg_weak2[0], fg[0], fg_strong1[0], fg_strong2[0], fg_strong3[0], fg_strong4[0], bg_cursorline[0], color_primary_weak3[0], color_primary1[0], color_primary2[0], color_primary3[0], color_primary_strong1[0], color_primary_strong2[0], color_primary_strong3[0] ]
    terminal_ansi_colors = [ '#1f2121', fg_comment[0], fg_weak2[0], fg[0], fg_strong1[0], fg_strong2[0], fg_strong3[0], fg_strong4[0], ui_bg[0], yellow1[0], yellow2[0], yellow3[0], yellow4[0], yellow5[0], yellow6[0], yellow7[0] ]

    # Step 3: highlights
    highlights = [
          [ "Normal", bg, fg, "NONE" ],

          [ "Special", "NONE", color_primary_strong2, "bold" ],
          [ "NonText", "NONE", color_primary_strong3, "NONE" ],
          [ "Tag", color_primary_weak1, "NONE", "NONE" ],

          [ "Identifier", "NONE", color_primary3, "NONE" ],
          [ "Function", "NONE", color_primary_strong1, "bold" ],

          [ "Type", "NONE", color_primary1, "NONE" ],
          [ "StorageClass", "NONE", color_primary_weak3, "bold" ],
          [ "Structure", "StorageClass"],
          [ "TypeDef", "StorageClass"],

          [ "Constant", "NONE", fg_strong4, "italic" ],
          [ "String", "NONE", fg_strong3, "italic" ],
          [ "Character", "String" ],
          [ "Number", "String" ],
          [ "Boolean", "String" ],
          [ "Float", "String" ],

          [ "Folded", "NONE", fg_strong3, "bold" ],

          [ "Statement", "NONE", fg, "NONE" ],
          [ "Conditional", "NONE", fg_strong3, "bold" ],
          [ "Repeat", "NONE", fg_strong2, "bold" ],
          [ "Label", "NONE", fg_strong1, "bold" ],
          [ "Operator", "NONE", fg_comment, "NONE" ],
          [ "Keyword", "NONE", fg_strong1, "bold" ],
          [ "Exception", "NONE", color_primary_weak2, "bold" ],

          [ "PreProc", "NONE", fg_weak1, "bold" ],
          [ "Include", "NONE", fg_weak1, "NONE" ],

          [ "Comment", "NONE", fg_comment, "bold,italic" ],
          [ "SpecialComment", "NONE", fg_strong1, "italic"],
          [ "Todo", "NONE", fg_todo, "bold,italic" ],

          [ "Ignore", "NONE", bg, "NONE" ],
          [ "Conceal", "NONE", "NONE", "NONE" ],

          [ "Error", "NONE", fg_error, "bold" ],

          [ "Underlined", "NONE", "NONE", "underline" ],

          [ "StatusLine", ui_bg, ui_fg_strong3, "italic" ],
          [ "StatusLineNC", ui_bg, ui_fg, "italic" ],
          [ "TabLine", ui_bg, ui_fg, "italic" ],
          [ "TabLineFill", ui_bg, ui_bg, "italic" ],
          [ "TabLineSel", ui_bg, ui_fg_strong3, "italic" ],

          [ "VertSplit", bg, ui_bg, "NONE" ],
          [ "FoldColumn", bg, fg_weak1, "NONE" ],
          [ "ColorColumn", bg_colorcolumn, "NONE", "NONE" ],
          [ "SignColumn", bg, ui_fg_strong3, "NONE" ],
          [ "CursorLine", bg_cursorline, "NONE", "NONE" ],

          [ "Title", "NONE", fg_strong4, "bold,italic" ],

          [ "LineNr", bg, ui_linenr, "NONE" ],
          [ "CursorLineNr", bg, ui_cursorlinenr, "bold" ],

          # [ "helpLeadBlank", "NONE", grayfg, "NONE" ],
          # [ "helpNormal", "NONE", grayfg, "NONE" ],

          [ "Pmenu", menu_bg, menu_fg, "NONE" ],
          [ "PmenuSbar", menu_bg, menu_bg, "NONE" ],
          [ "PmenuSel", menu_bg, menu_sel, "bold" ],
          [ "PmenuThumb", menu_fg, menu_fg, "NONE" ],

          [ "SpecialKey", "NONE", color_primary_strong3, "NONE" ],

          [ "DiffAdd", diff_add_bg, "NONE", "NONE" ],
          [ "DiffChange", diff_change_bg, "NONE", "NONE" ],
          [ "DiffDelete", diff_delete_bg, "NONE", "NONE" ],
          [ "DiffText", diff_change_bg, diff_change_fg, "NONE" ],

          [ "IncSearch", ui_incsearch, bg, "NONE" ],
          [ "Search", ui_search, ui_fg_strong3, "NONE" ],

          [ "Visual", ui_visual_bg, "NONE", "NONE" ],
          [ "VisualNOS", ui_visualnos_bg, "NONE", "NONE" ],

          [ "Directory", "NONE", ui_fg_strong3, "NONE" ],

          [ "MatchParen", "NONE", fg_special, "bold" ],

          [ "SpellBad", "NONE", fg_error, "NONE", fg_error ],
          [ "SpellCap", "NONE", fg_spellcap, "NONE", fg_spellcap ],
          [ "SpellLocal", "NONE", fg_spelllocal, "NONE", fg_spellcap ],
          [ "SpellRare", "NONE", fg_spellrare, "NONE", fg_spellcap ],

          [ "WildMenu", ui_bg, ui_fg_strong4, "bold" ],
          [ "ErrorMsg", "NONE", ui_fg_errormsg, "italic" ],
          [ "ModeMsg", "NONE", ui_fg_strong4, "italic" ],
          [ "MoreMsg", "NONE", ui_fg_strong4, "italic" ],
          [ "Question", "NONE", ui_fg_question, "italic" ],
          [ "WarningMsg", "NONE", ui_fg_warningmsg, "italic" ],

          [ "Cursor", ui_cursor_bg, ui_cursor_fg, "bold" ],
          [ "CursorColumn", bg_cursorcolumn, "NONE", "NONE" ],

          [ "EndOfBuffer", bg, bg, "NONE" ],

          [ "Noise", "NONE", ui_fg_weak2, "NONE"],


          # tabline, statusline

          [ "TabLineNum", ui_bg, ui_fg, "italic"],
          [ "TabLineNumSel", ui_bg, ui_fg_strong1, "italic"],


          [ "StatusLineNoise", ui_bg, ui_fg_weak2, "italic"],
          [ "StatusLineNoiseActive", ui_bg, ui_fg, "italic"],

          [ "StatusLineBufferNr", ui_bg, ui_fg_strong2, "italic"],
          [ "StatusLineBufferNrActive", ui_bg, ui_fg_strong3, "italic"],

          [ "StatusLinePercent", ui_bg, ui_fg, "italic"],
          [ "StatusLinePercentActive", ui_bg, ui_fg_strong2, "italic"],
          [ "StatusLineLinecount", ui_bg, ui_fg, "italic"],
          [ "StatusLineLinecountActive", ui_bg, ui_fg_strong1, "italic"],

          [ "StatusLineDivActive", ui_fg, ui_fg, "NONE"],
          [ "StatusLineDivInput", ui_statusbar_input, ui_statusbar_input, "NONE"],
          [ "StatusLineDivMod", ui_statusbar_mod, ui_statusbar_mod, "NONE"],
          [ "StatusLineDivModActive", ui_statusbar_mod_active, ui_statusbar_mod_active, "NONE"],

          [ "StatusLineFileInfo", "NONE", ui_fileinfo, "italic"],

          [ "StatusLineFile", ui_bg, ui_fg_strong2, "italic"],
          [ "StatusLineFileActive", ui_bg, ui_fg_strong3, "italic"],
          [ "StatusLineDir", ui_bg, ui_fg, "italic"],
          [ "StatusLineDirActive", ui_bg, ui_fg, "italic"],
          [ "StatusLineExt", ui_bg, ui_fg, "italic"],
          [ "StatusLineExtActive", ui_bg, ui_fg_strong1, "italic"],
          [ "StatusLineDot", ui_bg, ui_fg_weak2, "italic"],
          [ "StatusLineDotActive", ui_bg, ui_fg_weak2, "italic"],

          [ "StatusLineFileReadOnly", ui_bg, ui_fg_warning, "italic"],
          [ "StatusLineFileReadOnlyActive", "NONE", ui_fg_warning, "italic"],
          [ "StatusLineWarning", ui_bg, ui_fg_strong1, "italic"],
          [ "StatusLineWarningActive", "NONE", ui_fg_warning, "italic"],

          [ "LinterDash", "NONE", ui_fg_linter_dash, "NONE"],
          [ "LinterDashActive", "NONE", ui_fg_linter_dash_active, "NONE"],

          [ "LinterError", "NONE", ui_fg_linter_error, "bold"],
          [ "LinterErrorActive", "NONE", ui_fg_linter_error_active, "bold"],
          [ "LinterErrorStyle", "NONE", ui_fg_linter_error, "NONE"],
          [ "LinterErrorStyleActive", "NONE", ui_fg_linter_error_active, "NONE"],

          [ "LinterWarning", "NONE", ui_fg_linter_warning, "bold"],
          [ "LinterWarningActive", "NONE", ui_fg_linter_warning_active, "bold"],
          [ "LinterWarningStyle", "NONE", ui_fg_linter_warning, "NONE"],
          [ "LinterWarningStyleActive", "NONE", ui_fg_linter_warning_active, "NONE"],

          [ "LinterInfo", "NONE", ui_fg_linter_info, "NONE"],
          [ "LinterInfoActive", "NONE", ui_fg_linter_info_active, "NONE"],

          [ "GitGutterDelete", "NONE", ui_sign_delete, "bold"],
          [ "GitGutterChange", "NONE", ui_sign_change, "bold"],
          [ "GitGutterAdd", "NONE", ui_sign_add, "bold"],
          [ "GitGutterChangeDelete", "NONE", ui_sign_changedelete, "bold"],

          [ "QuickScopePrimary", "IncSearch" ],
          [ "QuickScopeSecondary", "Pmenu" ],

          # css, scss

          [ "cssIdentifier", "NONE", color_secondary, "bold" ],
          [ "cssClass", "NONE", color_secondary_weak, "NONE" ],
          [ "cssFunction", "NONE", fg_strong1, "bold" ],
          [ "cssProp", "NONE", fg_weak2, "NONE" ],
          [ "scssVariable", "NONE", color_secondary_strong, "bold" ],

          [ "cssAttr", "String"],
          [ "cssIdentifierAttr",    "Noise" ],
          [ "cssClassAttr",        "cssIdentifierAttr" ],
          [ "cssAttrNoise",        "Noise" ],
          [ "atKeyword",           "PreProc" ],
          [ "cssIdentifier",       "cssIdentifier" ],
          [ "cssClassName",        "cssClass" ],
          [ "cssClassNameDot",     "cssClass" ],
          [ "cssTagName",     "htmlTagName" ],
          [ "cssPseudoClassId",    "cssClassName" ],
          [ "cssKeyFrameSelector", "Label" ],
          [ "cssFunctionName",     "cssFunction" ],
          [ "cssBraces",           "Noise" ],
          [ "cssUnitDecorators", "NONE", fg_strong2, "NONE" ],
          [ "scssSelector",        "cssClass" ],
          [ "scssSelectorName",    "scssSelector" ],
          [ "scssSelectorChar",    "cssIdentifier" ],
          [ "scssFunctionName",    "cssFunctionName" ],
          [ "scssMixin",           "keyword" ],
          [ "scssMixinName",       "cssFunction" ],
          [ "scssampersand",       "scssSelectorName" ],
          [ "scssAtRoot",          "atKeyword" ],
          [ "vue_scss",            "cssIdentifier" ],

          #html

          ["htmlTagName", "NONE", color_tertiary_weak, "NONE"],
          ["htmlSpecialTagName", "NONE", color_tertiary, "bold"],
          ["htmlLink", "NONE", fg_strong3, "italic,underline"],

          [ "htmlNormal",          "Normal" ],

          [ "htmlTitle",              "Title" ],
          [ "htmlH1",                 "htmlTitle" ],
          [ "htmlTag",                     "Noise" ],
          [ "htmlEndTag",                  "htmlTag" ],
          [ "htmlArg",                     "PreProc" ],
          [ "htmlValue",                   "String" ],
          [ "htmlSpecialChar",             "Special" ],
          [ "htmlPreStmt",            "PreProc" ],
          [ "htmlPreError",           "Error" ],
          [ "htmlPreProc",            "PreProc" ],
          [ "htmlPreAttr",            "String" ],
          [ "htmlPreProcAttrName",    "PreProc" ],
          [ "htmlPreProcAttrError",   "Error" ],
          [ "htmlSpecial",            "Special" ],
          [ "htmlSpecialChar",        "Special" ],
          [ "htmlString",             "String" ],
          [ "htmlStatement",          "Statement" ],
          [ "htmlComment",            "Comment" ],
          [ "htmlCommentPart",        "Comment" ],
          [ "htmlValue",              "String" ],
          [ "htmlCommentError",       "htmlError" ],
          [ "htmlTagError",           "htmlError" ],
          [ "htmlEvent",              "javaScript" ],
          [ "htmlError",              "Error" ],

          [ "javaScript",             "Special" ],
          [ "javaScriptExpression",   "javaScript" ],
          [ "htmlCssStyleComment",    "Comment" ],
          [ "htmlCssDefinition",      "Special" ],

          [ "htmlImgArg",          "htmlArg" ],
          [ "htmlSrcValue",        "String" ],
          [ "htmlSrcsetValue",    "htmlSrcValue" ],
          [ "htmlAltValue",        "String" ],
          [ "htmlDataArg",        "htmlTagName" ],
          [ "htmlDataValue",      "Constant" ],
          [ "htmlHrefArg",        "htmlArg" ],
          [ "htmlHrefValue",      "htmlSrcValue" ],

          # vue

          [ "vueSpecial", "NONE", indigo7, "bold" ],
          [ "vueTagSpecial", "NONE", indigo5, "bold" ],
          [ "vueTagComponentName", "NONE", indigo3, "bold" ],
          [ "vueDynamicComponent", "NONE", indigo1, "bold" ],
          # [ "vueTag", "NONE", indigo3, "bold" ],
          [ "vueSlotName", "Constant" ],

          [ "vueComponentName", "vueTagComponentName" ],
          [ "vueTransitionComponent", "vueDynamicComponent" ],
          [ "vueTransitionName",  "vueSlotName" ],
          [ "vueTransitionMode",  "String" ],
          [ "vueDirective",       "Identifier" ],
          [ "vueEvent",           "Function" ],
          [ "vueConditional",     "vueSpecial" ],
          [ "vueFor",             "vueConditional" ],
          [ "vueRef",             "vueSpecial" ],
          [ "vueSlot",            "Noise" ],

          [ "vueDirectiveValue",    "Type" ],
          [ "vueEventValue",        "vueDirectiveValue" ],
          [ "vueConditionalValue",  "vueDirectiveValue" ],
          [ "vueForValue",          "vueConditionalValue" ],
          [ "vueRefValue",          "Constant" ],
          [ "vueSlotValue",         "vueSlotName" ],
          [ "vueObjectKey",         "cssClass" ],
          [ "vueObjectValue",       "vueDirectiveValue" ],
          [ "vueDirectiveClass",    "Noise" ],
          [ "vueMustache", "Type" ],

          # javascript
          [ "jsFunctionKey",      "Function" ],
          [ "jsFuncCall", "NONE", red2, "bold" ],
          [ "jsFuncCall",         "Identifier" ],
          [ "jsOperator",         "Operator" ],
          [ "jsVariableDef",      "Identifier" ],
          [ "jsGlobalObjects", "NONE", fg_strong2, "bold" ],
          [ "jsGlobalNodeObjects", "jsGlobalObjects" ],
          [ "jsExceptions",       "jsGlobalObjects" ],
          [ "jsBuiltins",         "jsGlobalObjects" ],
          [ "jsStorageClass",     "Include" ],
          [ "jsObjectKey", "NONE", red3, "NONE"],
          [ "jsObjectProp",       "Type" ],
          [ "jsObjectValue",      "NONE", color_primary_weak3, "NONE" ],
          [ "jsModuleKeyword",    "Type" ],
          [ "jsOperatorKeyword",    "Label" ],
          [ "jsThis",             "jsGlobalObjects" ],
          [ "jsArrowFunction", "Function" ],

          # python

          [ "pythonBuiltin",              "Type" ],
          [ "pythonBuiltinObj",           "Special" ],
          [ "pythonDottedName",           "Identifier" ],
          [ "pythonBrackets",             "Noise" ],
          [ "pythonQuotes",               "Noise" ],
          [ "pythonDot",                  "Noise" ],
          [ "pythonNoise",                "Noise" ],
          [ "pythonExtraOperator",        "Operator" ],
          [ "pythonDocString",        "SpecialComment" ],
          [ "pythonSelf", "NONE", fg_weak1, "bold" ],

          [ "JinjaVarBlock", "Noise" ],
          [ "JinjaTagBlock", "JinjaVarBlock" ],
          [ "jinjaSpecial", "NONE", magenta7, "NONE"],
          [ "jinjaRaw", "NONE", magenta1, "NONE"],
          [ "jinjaStatement", "NONE", magenta2, "NONE"],
          [ "jinjaFilter", "NONE", magenta6, "bold"],
          [ "jinjaBlockName", "NONE", magenta6, "bold"],
          [ "jinjaVariable", "NONE", magenta3, "bold"],
          [ "jinjaString", "String"],
          [ "jinjaNumber", "Number"],
          [ "jinjaOperator", "Noise"],
          [ "jinjaComment", "Comment"],

          # sql

          [ "sqlOperator", "Operator" ],

          # vim

          [ "vimFoldMarker", "NONE", fg_weak1, "NONE"],
          [ "vimMap",                  "Noise" ],
          [ "vimAbb",                  "vimMap" ],
          [ "VimCommand",              "Statement" ],
          [ "VimOption",               "String" ],
          [ "vimFunction",             "Function" ],
          [ "vimFuncKey",              "Special" ],
          [ "vimHighlight",            "Noise" ],
          [ "vimAuGroupKey",           "Noise" ],
          [ "vimGroupName",            "Special" ],
          [ "vimAutoCmd",              "Noise" ],
          [ "vimSynMtchGrp",           "Type" ],
          [ "vimSynContains",          "Type" ],
          [ "vimSynRegOpt",            "Type" ],
          [ "vimHiTerm",               "Include" ],
          [ "vimHiAttrib",             "Number" ],
          [ "VimIsCommand",            "Type" ],
          [ "vimNotation",             "StorageClass" ],
          [ "vimMapLhs",               "Special" ],
          [ "vimMapRhs",               "Label" ],
          [ "vimNotFunc",              "Conditional" ],
          [ "vimSep",                  "Noise" ],
          [ "vimParenSep",             "vimSep" ],
          [ "vimContinue",             "vimSep" ],
          [ "vimBracket",              "vimSep" ],
          [ "vimOperParen",            "Normal" ],
          [ "vimUserFunc",             "Identifier" ],
          [ "vimFoldMarker",             "Noise" ],

          # yaml 

          ["yamlKeyValueDelimiter", "Noise" ],
          ["yamlFowIndicator", "Noise" ],

          # config highlighting

          [ "confComment",              "Comment" ],

          # markdown
          ["markdownDelimiter", "NONE", fg_weak1, "bold"],
          ["markdownHeadingDelimiter", "markdownDelimiter"],
          ["markdownListMarker", "NONE", fg_strong3, "bold"],
          ["markdownCodeDelimiter", "markdownDelimiter"],
          ["markdownCode", "Type"],
          ["markdownItalic", "NONE", fg_strong3, "italic"],
          ["markdownItalicDelimiter", "markdownDelimiter"],
          ["markdownBold", "NONE", fg_strong2, "bold"],
          ["markdownBoldDelimiter", "markdownDelimiter"],
          ["markdownIdDeclaration", "Conditional"],
          ["markdownId", "markdownIdDeclaration"],
          ["markdownLinkText", "NONE", fg_strong2, "underline"],

          # extra whitespace

          [ "ExtraWhitespace", bg_whitespace_error ,"NONE", "NONE" ],

          # php

          [ "phpRegion",          "Normal" ],
          [ "phpComparison",      "Operator" ],
          [ "phpMethod",          "Function" ],
          [ "phpParent",          "Normal" ],
          [ "phpMemberSelector",  "StorageClass" ],
          [ "phpVarSelector",     "StorageClass" ],

          # quickfix

          [ "QuickfixLine", "NONE", ui_fg_strong2, "bold" ],
          [ "qfLineNr", "NONE", ui_fg_weak2, "italic"],
          [ "qfFilename",  "NONE", ui_fg_strong1, "bold" ],
          [ "qfSeparator", "Ignore" ],
          [ "qfError", "ErrorMsg" ],

          # json

          [ "jsonKeyword",        "Identifier" ],
          [ "jsonValue",          "String" ],
          [ "jsonQuote",          "Noise" ],

          # octobercms
          [ "octobercmsSectionDelimiter", "Noise" ],

          # plugins

          [ "CocErrorSign", "ErrorMsg" ],
          [ "CocWarningSign", "WarningMsg" ],
          [ "CocInfoSign", "Question" ],
          [ "CocHintSign", "Question" ],
          [ "CocHighlightText", "IncSearch" ],
          [ "CocUnderline", diff_delete_bg, fg_error, "NONE" ],
          [ "LspErrorText", "ErrorMsg" ],
          [ "LspWarningText", "WarningMsg" ],
          [ "LspInformationText", "Question" ],
          [ "LspHintText", "Question" ],
          [ "ALEError", "CocUnderline" ],
          [ "ALEErrorSign", "ErrorMsg" ],
          [ "ALEErrorSign", "ErrorMsg" ],

          [ "mkdCodeStart", "Comment" ],
          [ "mkdListItem", "Conditional" ],

          # ctrl-p highlighting
          # :h ctrlp-customization

          [ "CtrlPPrtBase", ui_cursor_bg, ui_cursor_fg, "bold" ],
          [ "CtrlPPrtText", ui_cursor_bg, ui_cursor_fg, "bold"],
          [ "CtrlPMatch", "NONE", ui_fg_strong2, "bold"],
          [ "CtrlPMode1", "NONE", ui_fg_strong3, "bold"],
          [ "CtrlPMode2", "NONE", ui_fg_strong1, "NONE"],
          [ "CtrlPNoEntries", "NONE", ui_fg_warning_strong, "bold" ],
          [ "CtrlPBufferNr", "NONE", ui_fg_strong2, "bold" ],
          [ "CtrlPBufferInd", "NONE", ui_fg_strong4, "bold" ],
          [ "CtrlPBufferPath", "NONE", ui_fg_weak2, "NONE" ],
          [ "CtrlPBufferHid", "NONE", ui_fg, "NONE" ],
          [ "CtrlPBufferHidMod", "NONE", ui_fg_warning_weak, "NONE" ],
          [ "CtrlPBufferVis", "Normal" ],
          [ "CtrlPBufferVisMod", "NONE", ui_fg_warning, "NONE" ],
          [ "CtrlPBufferCur", "NONE", ui_fg_strong3, "bold" ],
          [ "CtrlPBufferCurMod", "NONE", ui_fg_warning_strong, "NONE" ],

          [ "CtrlPBufName", "NONE", ui_fg_strong2, "NONE" ],
          [ "CtrlPTagKind", "NONE", ui_fg_strong3, "bold" ],
          [ "CtrlPqfLineCol", "NONE", ui_fg_warning, "bold" ],
          [ "CtrlPUndoT", "NONE", ui_fg_strong1, "NONE" ],
          [ "CtrlPUndoBr", "NONE", ui_fg_weak1, "NONE" ],
          [ "CtrlPUndoNr", "NONE", ui_fg_weak2, "NONE" ],
          [ "CtrlPUndoSv", "NONE", ui_fg_warning, "NONE" ],
          [ "CtrlPUndoPo", "NONE", ui_fg_strong3, "bold" ],

          # netrw
          [ "netrwTreeBar", "Noise" ],
          [ "netrwClassify", "Noise" ],
          [ "netrwExe", "Identifier" ],
          [ "netrwDir", "String" ],
          [ "netrwPlain", "Statement" ],
          [ "netrwHelpCmd", "Type" ],
          [ "netrwCmdNote", "function" ],
          [ "netrwQuickHelp", "netrwCmdNote" ],
          [ "netrwCmdSep", "Noise" ],
          [ "netrwVersion", "StorageClass" ],
          [ "netrwList", "String" ],
          [ "netrwHidePat", "Identifier" ],

          # i3config
          [ "Variable", "Function" ],

          # shell
          [ "shDerefSimple",            "StorageClass" ],
          [ "shHereDoc01",            "Special" ],
          [ "shHereDoc02",            "shHereDoc01" ],
          [ "shHereDoc05",            "shHereDoc01" ],
          [ "shHereDoc",            "Label" ],

          # to be implemented

          # "" vim-fugitive
          # ""{{{
          # "hi! def link gitCommitBranch            mValueDarkItalic
          # "hi! def link gitCommitDiscarded         mNoiseDark
          # "hi! def link gitCommitComment           mNoiseDark
          # "hi! def link gitCommitOnBranch          mNoise
          # "hi! def link gitCommitWarning           mInterfaceError
          # "hi! def link gitCommitDiscardedType     mNoise
          # "hi! def link gitCommitSelectedType      mNoise
          # "hi! def link gitCommitSelectedFile      mValueDarkerItalic
          # "hi! def link gitCommitDiscardedFile     mInterfaceWarning
          # "hi! def link gitCommitUntrackedFile     mStatementBright
          # "hi! def link gitCommitNumber            mInterfaceError
          # "hi! def link gitCommitAhead             gitCommitNumber
          # "hi! def link gitCommitBehind            gitCommitNumber
          # ""}}}

          # "" #tagbar highlighting
          # "" TagbarHighlight defined in vimrc as it gets overridden
          # "" by plugin when defined in here
          # "" hi! def link TagbarFoldIcon          InterfaceNormal
          # 
          # "" hi! def link TagbarHelp              InterfaceHelp
          # "" hi! def link TagbarHelpKey          InterfaceHelpDark
          # "" hi! def link TagbarHelpTitle        InterfaceHelpBright
          # 
          # "" hi! def link TagbarKind              InterfaceH1
          # "" hi! def link TagbarNestedKind        InterfaceH1
          # 
          # "" hi! def link TagbarScope            InterfaceH1
          # "" hi! def link TagbarType              InterfaceH1
          # "" hi! def link TagbarSignature        InterfaceNormal
          # "" hi! def link TagbarPseudoID          InterfaceNormal
          # "" hi! def link TagbarHighlight        InterfaceCurrent
          # 
          # "" hi! def link TagbarAccessPublic      InterfaceH2
          # "" hi! def link TagbarAccessProtected  InterfaceH2
          # "" hi! def link TagbarAccessPrivate    InterfaceH2
          # 
          # "" hi! TagbarHighlight                  ctermfg=255 guifg=#eeeeee ctermbg=240 guibg=#585858


    ]

    # Step 4: generation
    #
    # From a separate shell:
    #
    #     $ erb -T - bar.erb > bar.vim
    #
    # From Vim:
    #
    #     :!erb -T - % > %:r.vim

    # These online resources can help you design your colorscheme:
    #
    #   * http://upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
    #         the xterm palette
    #   * http://whatcolor.herokuapp.com/
    #         play with hexadecimal colors right in the address bar (currently down)
    #   * http://color.hailpixel.com/
    #         similar concept, fuzzier implementation
    #   * http://colourco.de/
    #         similar concept, fancier implementation
    #   * http://www.colr.org/
    #         extract a palette from an image
    #   * http://colores.manugarri.com/
    #         search for 'word', get images and color palettes
    #   * http://www.colourlovers.com/palettes
    #         user-created palettes
    #   * http://www.perbang.dk/color+scheme/
    #         a no-nonsense colorscheme generator
    #   * https://color.adobe.com/
    #         Adobe's fancy colorscheme generator
    #   * http://paletton.com/
    #         The classic 'Color Scheme Designer', rebranded
    #   * http://vrl.cs.brown.edu/color
    #         A very smart palette generator
    #   * https://cmcenroe.me/2018/04/03/colour-scheme.html
    #         "I Made My Own Colour Scheme and You Can Too!"

    # A few general advices:
    #
    #   * The Windows console is limited to the 16 so-called "ANSI" colors but it has
    #     a few of them interverted which makes numbers impractical. Use color names
    #     instead of numbers: :help cterm-colors
    #   * The Windows console (yeah…) doesn't do italics, underlines or bolded text;
    #     it is limited to normal and reverse. Keep that in mind if you want
    #     your colorscheme to be usable in as many environments as possible by as many
    #     people as possible.
    #   * All of the terminal emulators in use these days allow their users to
    #     change the 16 so-called "ANSI" colors. It is also possible on some platforms
    #     to change some or all of the 256 colors in the xterm palette. Don't take
    #     anything for granted.
    #   * When used against a light background, strong colors work better than muted
    #     ones. Light or dark doesn't really matters. Also, it is harder to discriminate
    #     between two similar colors on a light background.
    #   * Both strong and muted colors work well against a dark background. It is also
    #     easier to work with similar colors, but dark colors don't work at all.
    #   * Use as many text samples as possible. String-heavy languages may look completely
    #     different than keyword-heavy ones. This can have an impact on the usability
    #     of your colorscheme.
    #   * Most terminal emulators and terminal multiplexers currently in use on unix-like
    #     systems support 256 colors but they almost always default to a '$TERM' that tells
    #     Vim otherwise. Your users will need to make sure their terminal emulator/multiplexer
    #     is correctly set up if they want to enjoy the best possible experience.

    # Many thanks to Barry Arthur (https://github.com/dahu) for the original idea.

    # You don't need to edit anything beyond this line.
-%>
" <%= information[:name] %>.vim -- Vim color scheme.
" Author:      <%= information[:author] %> (<%= information[:email] %>)
" Webpage:     <%= information[:webpage] %>
" Description: <%= information[:description] %>

hi clear

if exists("syntax_on")
  syntax reset
endif

let colors_name = "<%= information[:name] %>"

if ($TERM =~ '256' || &t_Co >= 256) || has("gui_running")
<% for highlight in highlights -%>
<% if highlight.length == 2 -%>
    hi link <%= highlight[0] %> <%= highlight[1] %>
<% elsif highlight.length == 4 -%>
    hi <%= highlight[0] %> ctermbg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][1] %> ctermfg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][1] %> cterm=<%= highlight[3] %> guibg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][0] %> guifg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][0] %> gui=<%= highlight[3] %>
<% if highlight[0] == "Normal" -%>
    set background=<%= information[:background] %>
<% end -%>
<% else -%>
    hi <%= highlight[0] %> ctermbg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][1] %> ctermfg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][1] %> cterm=<%= highlight[3] %> guibg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][0] %> guifg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][0] %> gui=<%= highlight[3] %> guisp=<%= highlight[4].kind_of?(String) ? highlight[4] : highlight[4][0] %>
<% end -%>
<% end -%>
elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16
    set t_Co=16
<% for highlight in highlights -%>
<% if highlight.length == 2 -%>
    hi link <%= highlight[0] %> <%= highlight[1] %>
<% else -%>
    hi <%= highlight[0] %> ctermbg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][2] %> ctermfg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][2] %> cterm=<%= highlight[3] %>
<% if highlight[0] == "Normal" -%>
    set background=<%= information[:background] %>
<% end -%>
<% end -%>
<% end -%>
endif

let g:terminal_ansi_colors = <%= terminal_ansi_colors %>

augroup cursorlinebg
  au!
  au InsertEnter * hi CursorLine ctermbg=<%= bg_cursorline_input[1] %> ctermfg=NONE cterm=NONE guibg=<%= bg_cursorline_input[0] %> guifg=NONE
  au InsertLeave * hi CursorLine ctermbg=<%= bg_cursorline[1] %> ctermfg=NONE cterm=NONE guibg=<%= bg_cursorline[0] %> guifg=NONE
augroup END