lua << EOF
--[[ Build using Highlite, a Neovim colorscheme template.
	* Author:     Iron-E (https://github.com/Iron-E)
	* Repository: https://github.com/Iron-E/nvim-highlite

	Rewrite of RNB, a Vim colorsheme template.
	* Author:        Romain Lafourcade (https://github.com/romainl)
	* Canonical URL: https://github.com/romainl/vim-rnb

	Yolokai colorscheme based on monokai/molokai with minor changes
	* Background is completely black. No washed out greyish backgrounds
	* Comment highlight is slightly different
	* Slightly different colors for errors, floating windows, quickfix
	  line selection and such
	* Author: Sanchayan Maity (https://gitlab.com/SanchayanMaity)
]]

vim.g.colors_name = 'yolokai'

local white       = { '#ffffff', 252, 'white'       }
local white2      = { '#d8d8d3', 250, 'white2'      }
local black       = { '#000000', 234, 'black'       }
local lightblack  = { '#2D2E27', 235, 'lightblack'  }
local lightblack2 = { '#383a3e', 236, 'lightblack2' }
local lightblack3 = { '#3f4145', 237, 'lightblack3' }
local darkblack   = { '#211F1C', 233, 'darkblack'   }
local grey        = { '#8F908A', 243, 'grey'        }
local lightgrey   = { '#575b61', 237, 'lightgrey'   }
local darkgrey    = { '#64645e', 239, 'darkgrey'    }
local warmgrey    = { '#A6A185', 59,  'warmgrey'    }

local pink        = { '#F92772', 197, 'pink'      }
local green       = { '#A6E22D', 148, 'green'     }
local darkgreen   = { '#50de60', 83,  'darkgreen' }
local aqua        = { '#66d9ef', 81,  'aqua'      }
local yellow      = { '#E6DB74', 186, 'yellow'    }
local orange      = { '#FD9720', 208, 'orange'    }
local purple      = { '#ae81ff', 141, 'purple'    }
local red         = { '#e73c50', 196, 'red'       }
local purered     = { '#ff0000', 52,  'purered'   }
local darkred     = { '#5f0000', 52,  'darkred'   }

--[[ These are the ones you should edit. ]]
-- This is the only highlight that must be defined separately.
local highlight_group_normal = {bg=black, fg=white}

-- This is where the rest of your highlights should go.
local highlight_groups = {
	--[[ 4.1. Text Analysis ]]
	EndOfBuffer = 'NonText'     ,
	Whitespace  = 'NonText'     ,
	Comment     = { fg=white2   , style='italic' },
	NonText     = { fg=lightgrey                 },

	--[[ 4.1.1. Literals]]
	Constant  = { fg=purple },
	String    = { fg=yellow },
	Character = { fg=yellow },
	Number    = { fg=purple },
	Boolean   = { fg=purple },
	Float     = 'Number'     ,

	--[[ 4.1.2. Identifiers]]
	Identifier = { fg=green     },
	Function   = { fg=darkgreen },

	--[[ 4.1.3. Syntax]]
	Repeat      = 'Keyword',
	Noise       = 'Delimiter',
	Statement   = { fg=pink                        },
	Conditional = { fg=pink,        style='italic' },
	Label       = { fg=pink,        style='italic' },
	Operator    = { fg=pink                        },
	Keyword     = { fg=pink,        style='bold'   },
	Exception   = { fg=red,         style='bold'   },

	--[[ 4.1.4. Metatextual Information]]
	PreProc   = { fg=green                                    },
	Include   = { fg=pink,         style='nocombine'          },
	Define    = { fg=pink,         style='nocombine'          },
	Macro     = { fg=orange,       style={'bold', 'nocombine' }},
	PreCondit = { fg=green,        style='nocombine'          },

	--[[ 4.1.5. Semantics]]
	Type         = { fg=aqua                 },
	StorageClass = { fg=aqua, style='bold'   },
	Structure    = { fg=aqua, style='bold'   },
	Typedef      = { fg=aqua, style='italic' },

	--[[ 4.1.6. Edge Cases]]
	SpecialChar    = 'Character' ,
	SpecialKey     = 'Character' ,
	Tag            = 'Underlined',
	Special        = { fg=purple },
	Delimiter      = { fg=red    },
	-- SpecialComment affects Haskell Language Extension
	SpecialComment = { fg=orange , style={'bold', 'nocombine'}},
	Debug          = 'WarningMsg',

	--[[ 4.1.7. Help Syntax]]
	Ignore            = { fg=gray                               },
	Error             = { bg=black , fg=red                     },
	Underlined        = { fg=green , style='underline'          },
	Todo              = { fg=orange, style={'bold', 'underline' }},
	Hint              = { bg=black , fg=white, style='bold'     },
	Info              = { bg=orange, fg=black, style='bold'     },
	Warning           = { bg=pink  , fg=black, style='bold'     },

	--[[ 4.2... Editor UI  ]]
	--[[ 4.2.1. Status Line]]
	StatusLine       = { bg=black, fg=warmgrey },
	StatusLineNC     = { bg=black, fg=darkgrey },
	StatusLineTerm   = 'StatusLine'  ,
	StatusLineTermNC = 'StatusLineNC',

	--[[ 4.2.2. Separators]]
	WinSeparator= { bg=darkblack,    fg=darkgrey                      },
	TabLine     = { bg=darkblack,    fg=white                         },
	TabLineFill = { fg=white                                          },
	TabLineSel  = { bg=darkgrey,     fg=white,        style='inverse' },
	Title       = { style='bold'                                      },

	--[[ 4.2.3. Conditional Line Highlighting]]
	--Conceal={}
	debugBreakpoint = 'ErrorMsg'   ,
	debugPC         = 'ColorColumn',
	CursorLine      = { bg=lightblack2            },
	CursorLineNr    = { bg=lightblack,  fg=orange },
	LineNr          = { bg=black,       fg=grey   },
	QuickFixLine    = { bg=darkgrey               },
	Visual          = { style='inverse'           },
	VisualNOS       = { bg=darkgrey               },

	--[[ 4.2.4. Popup Menu]]
	Pmenu      = { bg=black,    fg=aqua                      },
	PmenuSbar  = { bg=black                                  },
	PmenuSel   = { bg=warmgrey, fg=white,       style='bold' },
	PmenuThumb = { bg=grey,     fg=lightblack                },
	WildMenu   = {},

	--[[ 4.2.5. Folds]]
	FoldColumn = { bg=darkblack,     style='bold'                 },
	Folded     = { bg=darkblack,     fg=warmgrey,  style='italic' },

	--[[ 4.2.6. Diffs]]
	DiffAdd    = { bg=black,  fg=darkgreen },
	DiffChange = { bg=black,  fg=yellow    },
	DiffDelete = { bg=black,  fg=red       },
	DiffText   = { bg=black                },

	--[[ 4.2.7. Searching]]
	IncSearch  = { style='inverse'                                      },
	Search     = { bg=yellow,fg=black,  style={'underline', color=white }},
	CurSearch  = { bg=pink,  fg=black,  style={'underline', color=white }},
	MatchParen = { fg=orange, style={'bold', 'underline'                }},

	--[[ 4.2.8. Spelling]]
	SpellBad   = { style={'undercurl', color=red    }},
	SpellCap   = { style={'undercurl', color=purple }},
	SpellLocal = { style={'undercurl', color=pink   }},
	SpellRare  = { style={'undercurl', color=aqua   }},

	--[[ 4.2.9. Conditional Column Highlighting]]
	ColorColumn = { bg=lightblack },
	SignColumn  = { bg=black      },

	--[[ 4.2.10. Messages]]
	ErrorMsg   = { bg=black,  fg=red                             },
	HintMsg    = { bg=black,  fg=purple,       style='bold'      },
	InfoMsg    = { bg=black,  fg=orange,       style='bold'      },
	ModeMsg    = { bg=black,  fg=yellow                          },
	WarningMsg = { bg=black,  fg=pink,         style='bold'      },
	Question   = { bg=black,  fg=yellow,       style='underline' },

	--[[ 4.2.11. Diagnostics ]]
	DiagnosticError            = 'ErrorMsg'  ,
	DiagnosticWarn             = 'WarningMsg',
	DiagnosticInfo             = 'InfoMsg'   ,
	DiagnosticHint             = 'HintMsg'   ,

	DiagnosticFloatingError    = 'ErrorMsg'  ,
	DiagnosticFloatingWarn     = 'WarningMsg',
	DiagnosticFloatingInfo     = 'InfoMsg'   ,
	DiagnosticFloatingHint     = 'HintMsg'   ,

	DiagnosticSignError        = 'ErrorMsg'  ,
	DiagnosticSignWarn         = 'WarningMsg',
	DiagnosticSignInfo         = 'InfoMsg'   ,
	DiagnosticSignHint         = 'HintMsg'   ,

	DiagnosticUnderlineError   = {style={'undercurl', color=red    }},
	DiagnosticUnderlineWarn    = {style={'undercurl', color=pink   }},
	DiagnosticUnderlineInfo    = {style={'undercurl', color=orange }},
	DiagnosticUnderlineHint    = {style={'undercurl', color=purple }},

	DiagnosticVirtualTextError = 'ErrorMsg'  ,
	DiagnosticVirtualTextWarn  = 'WarningMsg',
	DiagnosticVirtualTextInfo  = 'InfoMsg'   ,
	DiagnosticVirtualTextHint  = 'HintMsg'   ,

	--[[ 4.2.12. Cursor ]]
	CursorIM     = 'Cursor',
	Cursor       = { bg=white, fg=black, style='inverse' },
	CursorColumn = { bg=lightblack2                      },

	--[[ 4.2.13. Misc ]]
	Terminal      = 'Normal',
	Directory     = { fg=aqua,  style='bold' },
	NormalFloat   = { bg=black,     fg=white },

	--[[ 4.2.14. LSP Highlight ]]
	LspReferenceText  = 'InfoMsg',
	LspReferenceRead  = 'InfoMsg',
	LspReferenceWrite = 'InfoMsg',

	--[[ 4.3. Programming Languages
		Everything in this section is OPTIONAL. Feel free to remove everything
		here if you don't want to define it, or add more if there's something
		missing.
	]]

	--[[ 4.3.1. C ]]
	cConstant    = 'Constant',
	cCustomClass = 'Type'    ,

	--[[ 4.3.2. C++ ]]
	cppSTLexception = 'Exception',
	cppSTLnamespace = 'String'   ,

	--[[ 4.3.3 C# ]]
	csBraces                       = 'Delimiter',
	csClass                        = 'Structure',
	csClassType                    = 'Type',
	csContextualStatement          = 'Conditional',
	csEndColon                     = 'Delimiter',
	csGeneric                      = 'Typedef',
	csInterpolation                = 'Include',
	csInterpolationDelimiter       = 'SpecialChar',
	csLogicSymbols                 = 'Operator',
	csModifier                     = 'Keyword',
	csNew                          = 'Operator',
	csNewType                      = 'Type',
	csParens                       = 'Delimiter',
	csPreCondit                    = 'PreProc',
	csQuote                        = 'Delimiter',
	csRepeat                       = 'Repeat',
	csStorage                      = 'StorageClass',
	csUnspecifiedStatement         = 'Statement',
	csXmlTag                       = 'Define',
	csXmlTagName                   = 'Define',
	razorCode                      = 'PreProc',
	razorcsLHSMemberAccessOperator = 'Noise',
	razorcsRHSMemberAccessOperator = 'razorcsLHSMemberAccessOperator',
	razorcsStringDelimiter         = 'razorhtmlValueDelimiter',
	razorcsTypeNullable            = 'Special',
	razorcsUnaryOperatorKeyword    = 'Operator',
	razorDelimiter                 = 'Delimiter',
	razorEventAttribute            = 'PreCondit',
	razorFor                       = 'razorIf',
	razorhtmlAttribute             = 'htmlArg',
	razorhtmlAttributeOperator     = 'Operator',
	razorhtmlTag                   = 'htmlTag',
	razorhtmlValueDelimiter        = 'Delimiter',
	razorIf                        = 'PreCondit',
	razorImplicitExpression        = 'PreProc',
	razorLine                      = 'Constant',
	razorUsing                     = 'Include',

	--[[ 4.3.4. CSS ]]
	cssAtRule              = 'PreCondit',
	cssAttr                = 'Keyword',
	cssAttrComma           = 'Noise',
	cssAttrRegion          = 'Keyword',
	cssBraces              = 'Delimiter',
	cssClassName           = 'Identifier',
	cssClassNameDot        = 'Noise',
	cssFlexibleBoxAttr     = 'cssAttr',
	cssFunctionComma       = 'Noise',
	cssImportant           = 'Exception',
	cssNoise               = 'Noise',
	cssProp                = 'Label',
	cssPseudoClass         = 'Special',
	cssPseudoClassId       = 'cssSelectorOp',
	cssSelectorOp          = 'Operator',
	cssTagName             = 'Structure',
	cssUnitDecorators      = 'Type',
	scssAmpersand          = 'Special',
	scssAttribute          = 'Noise',
	scssBoolean            = 'Boolean',
	scssDefault            = 'Keyword',
	scssElse               = 'scssIf',
	scssMixinName          = function(self)
		local super    = self.cssClassName
		return {bg     = super.bg, fg=super.fg, style='italic'}
		end,
	scssIf                 = 'PreCondit',
	scssInclude            = 'Include',
	scssSelectorChar       = 'Delimiter',
	scssDefinition         = 'PreProc',
	scssSelectorName       = 'Identifier',
	scssVariable           = 'Define',
	scssVariableAssignment = 'Operator',

	--[[ 4.3.5. Dart ]]
	dartLibrary = 'Statement',

	--[[ 4.3.6. dot ]]
	dotKeyChar = 'Character',
	dotType    = 'Type'     ,

	--[[ 4.3.7. Go ]]
	goBlock                 = 'Delimiter' ,
	goBoolean               = 'Boolean'   ,
	goBuiltins              = 'Operator'  ,
	goField                 = 'Identifier',
	goFloat                 = 'Float'     ,
	goFormatSpecifier       = 'Character' ,
	goFunction              = 'Function'  ,
	goFunctionCall          = 'goFunction',
	goFunctionReturn        = {},
	goMethodCall            = 'goFunctionCall',
	goParamType             = 'goReceiverType',
	goPointerOperator       = 'SpecialChar'   ,
	goPredefinedIdentifiers = 'Constant'      ,
	goReceiver              = 'goBlock'       ,
	goReceiverType          = 'goTypeName'    ,
	goSimpleParams          = 'goBlock'       ,
	goType                  = 'Type'          ,
	goTypeConstructor       = 'goFunction'    ,
	goTypeName              = 'Type'          ,
	goVarAssign             = 'Identifier'    ,
	goVarDefs               = 'goVarAssign'   ,

	--[[ 4.3.8. HTML ]]
	htmlArg            = 'Label',
	htmlBold           = { fg=lightgrey, style='bold' },
	htmlTitle          = 'htmlBold',
	htmlEndTag         = 'htmlTag',
	htmlH1             = 'markdownH1',
	htmlH2             = 'markdownH2',
	htmlH3             = 'markdownH3',
	htmlH4             = 'markdownH4',
	htmlH5             = 'markdownH5',
	htmlH6             = 'markdownH6',
	htmlItalic         = { style='italic' },
	htmlSpecialTagName = 'Keyword',
	htmlTag            = 'Special',
	htmlTagN           = 'Typedef',
	htmlTagName        = 'Type',

	--[[ 4.3.9. Java ]]
	javaClassDecl = 'Structure',

	--[[ 4.3.10. JavaScript ]]
	jsFuncBlock   = 'Function'  ,
	jsObjectKey   = 'Type'      ,
	jsReturn      = 'Keyword'   ,
	jsVariableDef = 'Identifier',

	--[[ 4.3.11. JSON ]]
	jsonBraces        = 'Structure',
	jsonKeywordMatch  = 'Delimiter',
	jsonNull          = 'Constant' ,
	jsonQuote         = 'String'   ,
	jsonString        = 'Normal'   ,
	jsonStringSQError = 'Exception',

	--[[ 4.3.12. Make ]]
	makeCommands   = 'Statment',
	makeSpecTarget = 'Type'    ,

	--[[ 4.3.13. Markdown ]]
	markdownH1          = { fg=green_dark,  style='bold' },
	markdownH2          = { fg=red_light,   style='bold' },
	markdownH3          = { fg=green,       style='bold' },
	markdownH4          = { fg=purple,      style='bold' },
	markdownH5          = { fg=orange,      style='bold' },
	markdownH6          = { fg=yellow,      style='bold' },
	mkdBold             = 'SpecialComment'  ,
	mkdCode             = 'Keyword'         ,
	mkdCodeDelimiter    = 'mkdBold'         ,
	mkdCodeStart        = 'mkdCodeDelimiter',
	mkdCodeEnd          = 'mkdCodeStart'    ,
	mkdHeading          = 'Delimiter'       ,
	mkdItalic           = 'mkdBold'         ,
	mkdListItem         = 'Special'         ,
	mkdRule             = 'Underlined'      ,
	texMathMatcher      = 'Number'          ,
	texMathZoneX        = 'Number'          ,
	texMathZoneY        = 'Number'          ,

	--[[ 4.3.14. Python ]]
	pythonBrackets        = 'Delimiter'       ,
	pythonBuiltinFunc     = 'Operator'        ,
	pythonBuiltinObj      = 'Type'            ,
	pythonBuiltinType     = 'Type'            ,
	pythonClass           = 'Structure'       ,
	pythonClassParameters = 'pythonParameters',
	pythonDecorator       = 'PreProc'         ,
	pythonDottedName      = 'Identifier'      ,
	pythonError           = 'Error'           ,
	pythonException       = 'Exception'       ,
	pythonInclude         = 'Include'         ,
	pythonIndentError     = 'pythonError'     ,
	pythonLambdaExpr      = 'pythonOperator'  ,
	pythonOperator        = 'Operator'        ,
	pythonParam           = 'Identifier'      ,
	pythonParameters      = 'Delimiter'       ,
	pythonSelf            = 'Statement'       ,
	pythonSpaceError      = 'pythonError'     ,
	pythonStatement       = 'Statement'       ,

	--[[ 4.3.15. Ruby ]]
	rubyClass                  = 'Structure',
	rubyDefine                 = 'Define'   ,
	rubyInterpolationDelimiter = 'Delimiter',

	--[[ 4.3.16. Rust ]]
	rustAssert     = 'Debug'      ,
	rustConstraint = 'Operator'   ,
	rustDynKeyword = 'rustStorage',
	rustGeneric    = 'Delimiter'  ,
	rustEscape     = 'SpecialChar',
	rustIdentifier = 'Identifier' ,
	rustKeyword    = 'Keyword'    ,
	rustLifetime   = 'Label'      ,
	rustModPath    = 'Include'    ,
	rustNoise      = 'Delimiter'  ,
	rustPanic      = 'Exception'  ,
	rustRepeat     = 'Repeat'     ,
	rustScopeDecl  = 'Delimiter'  ,
	rustStructure  = 'Structure'  ,
	rustUnused     = 'Special'    ,

	--[[ 4.3.17. Scala ]]
	scalaKeyword        = 'Keyword'   ,
	scalaNameDefinition = 'Identifier',

	--[[ 4.3.18. shell ]]
	shDerefSimple = 'SpecialChar',
	shFunctionKey = 'Function'   ,
	shLoop        = 'Repeat'     ,
	shParen       = 'Delimiter'  ,
	shQuote       = 'Delimiter'  ,
	shSet         = 'Statement'  ,
	shTestOpr     = 'Debug'      ,

	--[[ 4.3.19. Solidity ]]
	solBuiltinType  = 'Type'    ,
	solContract     = 'Typedef' ,
	solContractName = 'Function',

	--[[ 4.3.20. TOML ]]
	tomlComment = 'Comment'     ,
	tomlDate    = 'Special'     ,
	tomlFloat   = 'Float'       ,
	tomlKey     = 'Label'       ,
	tomlTable   = 'StorageClass',

	--[[ 4.3.21. VimScript ]]
	vimFgBgAttrib  = 'Constant'  ,
	vimHiCterm     = 'Label'     ,
	vimHiCtermFgBg = 'vimHiCterm',
	vimHiGroup     = 'Typedef'   ,
	vimHiGui       = 'vimHiCterm',
	vimHiGuiFgBg   = 'vimHiGui'  ,
	vimHiKeyList   = 'Operator'  ,
	vimOption      = 'Keyword'   ,
	vimScriptDelim = 'Ignore'    ,
	vimSet         = 'String'    ,
	vimSetEqual    = 'Operator'  ,
	vimSetSep      = 'Delimiter' ,

	--[[ 4.3.22. XML ]]
	xmlAttrib  = 'Label'    ,
	xmlEndTag  = 'Exception',
	xmlEqual   = 'Operator' ,
	xmlTag     = 'Delimiter',
	xmlTagName = 'Define'   ,

	--[[ 4.3.23 Haskell ]]
	haskellType           = 'Type'      ,
	haskellIdentifier     = 'Identifier',
	haskellOperators      = 'Operator'  ,
	haskellWhere          = 'Keyword'   ,
	haskellDelimiter      = 'Delimiter' ,
	haskellImportKeywords = 'Include'   ,
	haskellStatement      = 'Statement' ,

	--[[ 4.3.24 Lua ]]
	luaBraces               = 'Structure',
	luaBrackets             = 'Delimiter',
	luaBuiltin              = 'Keyword',
	luaComma                = 'Delimiter',
	luaFuncArgName          = 'Identifier',
	luaFuncCall             = 'Function',
	luaFuncId               = 'luaNoise',
	luaFuncKeyword          = 'Type',
	luaFuncName             = 'Function',
	luaFuncParens           = 'Delimiter',
	luaFuncTable            = 'Structure',
	luaIn                   = 'luaRepeat',
	luaLocal                = 'Type',
	luaNoise                = 'Delimiter',
	luaParens               = 'Delimiter',
	luaSpecialTable         = 'Structure',
	luaSpecialValue         = 'Function',
	luaStringLongTag        = function(self)
		local delimiter = self.Delimiter
		return {bg      = delimiter.bg, fg=delimiter.fg, style='italic'}
		end,

	--[[ 4.3.25. SQL ]]
	sqlKeyword   = 'Keyword'  ,
	sqlParen     = 'Delimiter',
	sqlSpecial   = 'Constant' ,
	sqlStatement = 'Statement',
	sqlParenFunc = 'Function' ,

	--[[ 4.3.26. dos INI ]]
	dosiniHeader = 'Title',
	dosiniLabel  = 'Label',

	--[[ 4.3.27. Crontab ]]
	crontabDay  = 'StorageClass',
	crontabDow  = 'String'      ,
	crontabHr   = 'Number'      ,
	crontabMin  = 'Float'       ,
	crontabMnth = 'Structure'   ,

	--[[ 4.3.28. PlantUML ]]
	plantumlArrowLR   = 'Statement',
	plantumlColonLine = {}         ,
	plantumlMindmap   = 'Label'    ,
	plantumlMindmap2  = 'Label'    ,

	--[[ 4.3.33. YAML ]]
	yamlKey             = 'Label',
	yamlBlockMappingKey = { bg=black, fg=red   },
	yamlPlainScalar     = { bg=black, fg=green },

	--[[ 4.3.34. Git ]]
	diffAdded              = 'DiffAdd'              ,
	diffRemoved            = 'DiffDelete'           ,
	gitcommitHeader        = 'SpecialComment'       ,
	gitcommitDiscardedFile = 'gitcommitSelectedFile',
	gitcommitOverFlow      = 'Error'                ,
	gitcommitSelectedFile  = 'Directory'            ,
	gitcommitSummary       = 'Title'                ,
	gitcommitUntrackedFile = 'gitcommitSelectedFile',
	gitconfigAssignment    = 'String'               ,
	gitconfigEscape        = 'SpecialChar'          ,
	gitconfigNone          = 'Operator'             ,
	gitconfigSection       = 'Structure'            ,
	gitconfigVariable      = 'Label'                ,
	gitrebaseBreak         = 'Keyword'              ,
	gitrebaseCommit        = 'Tag'                  ,
	gitrebaseDrop          = 'Exception'            ,
	gitrebaseEdit          = 'Define'               ,
	gitrebaseExec          = 'PreProc'              ,
	gitrebaseFixup         = 'gitrebaseSquash'      ,
	gitrebaseMerge         = 'PreProc'              ,
	gitrebasePick          = 'Include'              ,
	gitrebaseReset         = 'gitrebaseLabel'       ,
	gitrebaseReword        = 'gitrebasePick'        ,
	gitrebaseSquash        = 'Macro'                ,
	gitrebaseSummary       = 'Normal'               ,

	--[[ 4.3.35 Help ]]
	helpHeader        = 'Label'     ,
	helpOption        = 'Keyword'   ,
	helpHeadline      = 'Title'     ,
	helpSectionDelim  = 'Delimiter' ,
	helpHyperTextJump = 'Underlined',

	--[[ 4.4. Plugins
		Everything in this section is OPTIONAL. Feel free to remove everything
		here if you don't want to define it, or add more if there's something
		missing.
	]]
	--[[ 4.4.1. ALE ]]
	ALEErrorSign   = 'ErrorMsg'  ,
	ALEWarningSign = 'WarningMsg',

	--[[ 4.4.2. vim-jumpmotion / vim-easymotion ]]
	EasyMotion = 'IncSearch' ,
	JumpMotion = 'EasyMotion',

	--[[ 4.4.3. vim-markdown ]]
	htmlH1 = 'markdownH1',
	htmlH2 = 'markdownH2',
	htmlH3 = 'markdownH3',
	htmlH4 = 'markdownH4',
	htmlH5 = 'markdownH5',
	htmlH6 = 'markdownH6',

	--[[ 4.4.4. vim-gitgutter / vim-signify ]]
	GitGutterAdd          = { fg=green  },
	GitGutterChange       = { fg=yellow },
	GitGutterDelete       = { fg=red    },
	GitGutterChangeDelete = { fg=orange },

	SignifySignAdd          = 'GitGutterAdd'         ,
	SignifySignChange       = 'GitGutterChange'      ,
	SignifySignDelete       = 'GitGutterDelete'      ,
	SignifySignChangeDelete = 'GitGutterChangeDelete',

	--[[ 4.4.5. vim-indent-guides ]]
	IndentGuidesOdd  = { bg=darkgrey },
	IndentGuidesEven = { bg=grey     },

	--[[ 4.4.7. NERDTree ]]
	NERDTreeCWD        = 'Label'           ,
	NERDTreeUp         = 'Operator'        ,
	NERDTreeDir        = 'Directory'       ,
	NERDTreeDirSlash   = 'Delimiter'       ,
	NERDTreeOpenable   = 'NERDTreeDir'     ,
	NERDTreeClosable   = 'NERDTreeOpenable',
	NERDTreeExecFile   = 'Function'        ,
	NERDTreeLinkTarget = 'Tag'             ,

	--[[ 4.4.8 SearchLight ]]
	SearchLight = { bg=black, fg=orange, style={'bold', 'italic', 'underline' }},

	--[[ 4.4.9 Sneak ]]
	Sneak      = { bg=red,    fg=black,  style='bold'               },
	SneakScope = { bg=black,  fg=orange, style={'bold', 'underline' }},

	--[[ 4.4.10 Which key ]]
	WhichKey          = 'Function' ,
	WhichKeySeperator = {bg=black,  fg=green},
	WhichKeyGroup     = 'Keyword'  ,
	WhichKeyDesc      = {bg=black,  fg=orange},
	WhichKeyFloating  = 'Pmenu'    ,

	--[[ 4.4.11 conflict-marker ]]
	ConflictMarkerBegin               = { bg=black,  fg=purple },
	ConflictMarkerEnd                 = { bg=black,  fg=purple },
	ConflictMarkerOurs                = { bg=black,  fg=green  },
	ConflictMarkerTheirs              = { bg=black,  fg=red    },
	ConflictMarkerCommonAncestorsHunk = { bg=black,  fg=orange },

	--[[ 4.4.12 hlslens ]]
	HlSearchLensCur = 'SearchLight',
	HlSearchLens    = 'IncSearch',
	HlSearchCur     = 'SearchLight',

	--[[ 4.4.13 pandoc ]]
	pandocAtxHeader                  = { bg=black, fg=aqua   },
	pandocAtxStart                   = { bg=black, fg=orange },
	pandocDelimitedCodeBlockStart    = { bg=black, fg=green  },
	pandocDelimitedCodeBlockEnd      = { bg=black, fg=green  },
	pandocDelimitedCodeBlockLanguage = 'Comment',
	pandocListItemBullet             = { bg=black, fg=purple },
	pandocUListItemBullet            = { bg=black, fg=purple },
	pandocReferenceURL               = { bg=black, fg=pink,   style={'underline'      }},
	pandocReferenceDefinition        = { bg=black, fg=aqua,   style={'bold'           }},
	pandocEmphasis                   = { bg=black, fg=purple, style={'italic'         }},
	pandocStrong                     = { bg=black, fg=purple, style={'bold'           }},
	pandocStrongEmphasis             = { bg=black, fg=purple, style={'bold', 'italic' }},
	pandocStrongInEmphasis           = 'pandocStrongEmphasis',
	pandocEmphasisInStrong           = 'pandocStrongEmphasis',

	--[[ 4.4.14 Hop ]]
	HopNextKey   = { bg=red  , fg=black    , style='bold' },
	HopNextKey1  = { bg=black, fg=orange   , style='bold' },
	HopNextKey2  = { bg=black, fg=purple   , style='bold' },
	HopUnmatched = { bg=black, fg=lightgrey, style='bold' },
	HopCursor    = { bg=black, fg=aqua     , style='bold' },
}

-- We do not care about terminals which do not support 256 colors
local terminal_ansi_colors = { }

require('yolokai')(
	highlight_group_normal,
	highlight_groups,
	terminal_ansi_colors
)

EOF
