aboutsummaryrefslogtreecommitdiff
path: root/lua/theme/init.lua
diff options
context:
space:
mode:
authorEllison Leão <ellisonleao@gmail.com>2021-02-23 11:42:55 -0300
committerEllison Leão <ellisonleao@gmail.com>2021-02-23 11:42:55 -0300
commit939a21c94bf1d1efbdf527ac9c0b312d606679cb (patch)
treed8ce8be80436bf2f26a50fe5179bc60d42248bf9 /lua/theme/init.lua
parenta034fdca2a52e31296684d7e10f131a0c3e8e606 (diff)
downloadgruvbox-939a21c94bf1d1efbdf527ac9c0b312d606679cb.tar.gz
gruvbox-939a21c94bf1d1efbdf527ac9c0b312d606679cb.tar.xz
adding more highlight groups
Diffstat (limited to 'lua/theme/init.lua')
-rw-r--r--lua/theme/init.lua910
1 files changed, 910 insertions, 0 deletions
diff --git a/lua/theme/init.lua b/lua/theme/init.lua
new file mode 100644
index 0000000..b14e022
--- /dev/null
+++ b/lua/theme/init.lua
@@ -0,0 +1,910 @@
+local lush = require("lush")
+local hsl = lush.hsl
+-- gruvbox palette
+local colors = {
+ dark0_hard = "#1d2021",
+ dark0 = "#282828",
+ dark0_soft = "#32302f",
+ dark1 = "#3c3836",
+ dark2 = "#504945",
+ dark3 = "#665c54",
+ dark4 = "#7c6f64",
+ light0_hard = "#f9f5d7",
+ light0 = "#fbf1c7",
+ light0_soft = "#f2e5bc",
+ light1 = "#ebdbb2",
+ light2 = "#d5c4a1",
+ light3 = "#bdae93",
+ light4 = "#a89984",
+ bright_red = "#fb4934",
+ bright_green = "#b8bb26",
+ bright_yellow = "#fabd2f",
+ bright_blue = "#83a598",
+ bright_purple = "#d3869b",
+ bright_aqua = "#8ec07c",
+ bright_orange = "#fe8019",
+ neutral_red = "#cc241d",
+ neutral_green = "#98971a",
+ neutral_yellow = "#d79921",
+ neutral_blue = "#458588",
+ neutral_purple = "#b16286",
+ neutral_aqua = "#689d6a",
+ neutral_orange = "#d65d0e",
+ faded_red = "#9d0006",
+ faded_green = "#79740e",
+ faded_yellow = "#b57614",
+ faded_blue = "#076678",
+ faded_purple = "#8f3f71",
+ faded_aqua = "#427b58",
+ faded_orange = "#af3a03",
+ gray = "#928374",
+}
+-- options (dark mode by default)
+local bg0 = colors.dark0
+local bg1 = colors.dark1
+local bg2 = colors.dark2
+local bg3 = colors.dark3
+local bg4 = colors.dark4
+
+local fg0 = colors.light0
+local fg1 = colors.light1
+local fg2 = colors.light2
+local fg3 = colors.light3
+local fg4 = colors.light4
+
+local red = colors.bright_red
+local green = colors.bright_green
+local yellow = colors.bright_yellow
+local blue = colors.bright_blue
+local purple = colors.bright_purple
+local aqua = colors.bright_aqua
+local orange = colors.bright_orange
+local sign_column = bg1
+local gray = colors.gray
+
+-- global settings
+local settings = {
+ contrast_dark = "medium",
+ contrart_light = "medium",
+ bold = true,
+ italic = true,
+ undercurl = true,
+ underline = true,
+ improved_strings = false,
+ improved_warnings = false,
+ invert_signs = false,
+ invert_selection = true,
+ invert_tabline = false,
+ italicize_comments = true,
+ italicize_strings = false,
+}
+
+local styles = {
+ italic = "italic",
+ inverse = "inverse",
+ bold = "bold",
+ undercurl = "undercurl",
+ underline = "underline",
+}
+
+-- setting default values
+for k, val in pairs(settings) do
+ local key = "gruvbox_" .. k
+ if vim.g[key] == nil then
+ vim.g[key] = val
+ end
+end
+
+-- handle light/dark contrast settings
+local bg = vim.o.background
+local contrast = vim.g["gruvbox_contrast_" .. bg]
+if contrast == "hard" then
+ bg0 = colors[bg .. "0_hard"]
+elseif contrast == "soft" then
+ bg0 = colors[bg .. "0_soft"]
+end
+
+-- swap colors if light mode
+if bg == "light" then
+ bg0 = colors.light0
+ bg1 = colors.light1
+ bg2 = colors.light2
+ bg3 = colors.light3
+ bg4 = colors.light4
+ fg0 = colors.dark0
+ fg1 = colors.dark1
+ fg2 = colors.dark2
+ fg3 = colors.dark3
+ fg4 = colors.dark4
+ red = colors.faded_red
+ green = colors.faded_green
+ yellow = colors.faded_yellow
+ blue = colors.faded_blue
+ purple = colors.faded_purple
+ aqua = colors.faded_aqua
+ orange = colors.faded_orange
+end
+
+local hls_cursor = orange
+if vim.g.gruvbox_hls_cursor ~= nil then
+ hls_cursor = colors[vim.g.gruvbox_hls_cursor]
+end
+
+local hls_highlight = yellow
+if vim.g.gruvbox_hls_cursor ~= nil then
+ hls_cursor = colors[vim.g.gruvbox_hls_highlight]
+end
+
+local number_column
+if vim.g.gruvbox_number_column ~= nil then
+ number_column = hsl(colors[vim.g.gruvbox_number_column])
+end
+
+local color_column = bg1
+if vim.g.gruvbox_color_column ~= nil then
+ color_column = colors[vim.g.gruvbox_color_column]
+end
+
+local vert_split = bg0
+if vim.g.gruvbox_vert_split ~= nil then
+ vert_split = colors[vim.g.gruvbox_vert_split]
+end
+
+local invert_signs
+if vim.g.gruvbox_invert_signs then
+ invert_signs = styles.inverse
+end
+
+local invert_selection = styles.inverse
+if not vim.g.gruvbox_invert_selection then
+ invert_selection = nil
+end
+
+local invert_tabline
+if vim.g.gruvbox_invert_tabline then
+ invert_tabline = styles.inverse
+end
+
+local tabline_sel = green
+if vim.g.gruvbox_tabline_sel then
+ tabline_sel = colors[vim.g.gruvbox_tabline_sel]
+end
+
+local italic_comments = settings.italic
+if not vim.g.gruvbox_italicize_comments then
+ italic_comments = nil
+end
+
+local italic_strings
+if vim.g.gruvbox_italicize_strings then
+ italic_strings = styles.italic
+end
+
+local special = {fg = hsl(orange), bg = hsl(bg1), gui = italic_strings}
+local special_string = {fg = hsl(fg1), bg = hsl(bg1), italic_strings}
+if not vim.g.gruvbox_improved_strings then
+ special = {fg = hsl(orange)}
+ special_string = {fg = hsl(green), gui = italic_strings}
+end
+
+local theme = lush(function()
+ return {
+ -- EndOfBuffer { },
+ -- TermCursor { },
+ -- TermCursorNC { },
+ -- Substitute { },
+ -- MsgArea { },
+ -- MsgSeparator { },
+ -- Whitespace { },
+ -- Base groups
+ ColorColumn {bg = hsl(color_column)},
+ Conceal {bg = hsl(blue)},
+ Cursor {gui = styles.inverse},
+ lCursor {Cursor},
+ CursorIM {Cursor},
+ CursorColumn {bg = bg1},
+ CursorLine {CursorColumn},
+ Directory {fg = hsl(green), gui = styles.bold},
+ DiffAdd {fg = hsl(green), bg = hsl(bg1), gui = invert_signs},
+ DiffChange {fg = hsl(aqua), bg = hsl(bg1), gui = invert_signs},
+ DiffDelete {fg = hsl(red), bg = hsl(bg1), gui = invert_signs},
+ DiffText {fg = hsl(yellow), bg = hsl(bg1), gui = invert_signs},
+ ErrorMsg {fg = hsl(bg0), bg = hsl(red), gui = styles.bold},
+ VertSplit {fg = hsl(bg3), bgb = hsl(vert_split)},
+ Folded {fg = hsl(gray), bg = hsl(bg1), gui = styles.italic},
+ FoldColumn {fg = hsl(gray), bg = hsl(bg1)},
+ SignColumn {bg = hsl(sign_column)},
+ IncSearch {fg = hsl(hls_cursor), bg = hsl(bg0), gui = styles.inverse},
+ LineNr {fg = hsl(bg4), bg = number_column},
+ CursorLineNr {fg = hsl(yellow), bg = hsl(bg1)},
+ MatchParen {bg = hsl(bg3), gui = styles.bold},
+ ModeMsg {fg = hsl(yellow), gui = styles.bold},
+ MoreMsg {fg = hsl(yellow), gui = styles.bold},
+ NonText {fg = hsl(bg2)},
+ Normal {fg = hsl(fg1), bg = hsl(bg0)},
+ NormalFloat {Normal},
+ NormalNC {Normal},
+ Pmenu {fg = hsl(fg1), bg = hsl(bg2)},
+ PmenuSel {fg = hsl(bg2), bg = hsl(blue), gui = styles.bold},
+ PmenuSbar {bg = hsl(bg2)},
+ PmenuThumb {bg = hsl(bg4)},
+ Question {fg = hsl(orange), gui = styles.bold},
+ QuickFixLine {fg = hsl(fg0), bg = hsl(yellow), gui = styles.bold},
+ Search {fg = hsl(hls_highlight), bg = hsl(bg0), gui = styles.inverse},
+ SpecialKey {fg = hsl(fg4)},
+ SpellRare {gui = styles.undercurl, sep = hsl(purple)},
+ SpellBad {fg = hsl(red), gui = styles.underline},
+ StatusLine {fg = hsl(bg2), bg = hsl(fg1), gui = styles.inverse},
+ StatusLineNC {fg = hsl(bg1), bg = hsl(fg4), gui = styles.inverse},
+ TabLine {fg = hsl(bg4), bg = hsl(bg1), gui = invert_tabline},
+ TabLineFill {fg = hsl(bg4), bg = hsl(bg1), gui = invert_tabline},
+ TabLineSel {fg = hsl(tabline_sel), bg = hsl(bg1), gui = invert_tabline},
+ Title {fg = hsl(green), gui = styles.bold},
+ Visual {bg = hsl(bg3), gui = invert_selection},
+ VisualNOS {bg = hsl(bg3), gui = invert_selection},
+ WarningMsg {fg = hsl(red), gui = styles.bold},
+ WildMenu {fg = hsl(blue), bg = hsl(bg2), gui = styles.bold},
+ Constant {fg = hsl(purple)},
+ String {unpack(special_string)},
+ Character {fg = hsl(purple)},
+ Number {Character},
+ Boolean {Character},
+ Float {Character},
+ Identifier {fg = hsl(blue)},
+ Function {fg = hsl(green), gui = styles.bold},
+ Statement {fg = hsl(red)},
+ Conditional {fg = hsl(red)},
+ Repeat {fg = hsl(red)},
+ Label {fg = hsl(red)},
+ Keyword {fg = hsl(red)},
+ Exception {fg = hsl(red)},
+ Operator {fg = hsl(fg1)},
+ PreProc {fg = hsl(aqua)},
+ Include {fg = hsl(aqua)},
+ Define {fg = hsl(aqua)},
+ Macro {fg = hsl(aqua)},
+ PreCondit {fg = hsl(aqua)},
+ Type {fg = hsl(yellow)},
+ StorageClass {fg = hsl(orange)},
+ Structure {fg = hsl(aqua)},
+ Typedef {fg = hsl(yellow)},
+ Special {unpack(special)},
+ SpecialChar {fg = hsl(red)},
+ Tag {fg = hsl(aqua), gui = styles.bold},
+ Delimiter {fg = hsl(fg0)},
+ SpecialComment {fg = hsl(gray), gui = styles.italic},
+ Debug {fg = hsl(red)},
+ Underlined {gui = styles.underline},
+ Bold {gui = styles.bold},
+ Italic {gui = styles.italic},
+ Ignore {},
+ Error {fg = hsl(red), gui = styles.bold .. "," .. styles.underline}, -- TODO: check if we have some abstraction to merge two styles
+ Todo {fg = hsl(fg0), gui = styles.bold .. "," .. styles.italic},
+
+ -- LSP
+ LspDiagnosticsError {Error},
+ LspDiagnosticsErrorSign {fg = hsl(red), bg = hsl(sign_column), gui = invert_signs},
+ LspDiagnosticsErrorFloating {LspDiagnosticsError},
+ LspDiagnosticsWarning {fg = hsl(yellow)},
+ LspDiagnosticsWarningSign {
+ LspDiagnosticsWarning,
+ bg = hsl(sign_column),
+ gui = styles.undercurl,
+ sp = hsl(yellow),
+ },
+ LspDiagnosticsWarningFloating {LspDiagnosticsWarning},
+ LspDiagnosticsInformation {fg = hsl(blue)},
+ LspDiagnosticsInformationSign {
+ LspDiagnosticsInformation,
+ bg = hsl(sign_column),
+ gui = invert_signs,
+ },
+ LspDiagnosticsInformationFloating {LspDiagnosticsInformation},
+ LspDiagnosticsHint {fg = hsl(aqua)},
+ LspDiagnosticsHintSign {
+ LspDiagnosticsHint,
+ bg = hsl(sign_column),
+ gui = invert_signs,
+ },
+ LspDiagnosticsHintFloating {LspDiagnosticsHint},
+
+ -- Treesitter
+ TSNone {},
+ TSError {Error},
+ TSPunctDelimiter {Delimiter},
+ TSPunctBracket {Delimiter},
+ TSPunctSpecial {Delimiter},
+ TSConstant {Constant},
+ TSConstBuiltin {Special},
+ TSConstMacro {Define},
+ TSString {String},
+ TSStringRegex {String},
+ TSStringEscape {SpecialChar},
+ TSCharacter {Character},
+ TSNumber {Number},
+ TSBoolean {Boolean},
+ TSFloat {Float},
+ TSFunction {Function},
+ TSFuncBuiltin {Special},
+ TSFuncMacro {Macro},
+ TSParameter {Identifier},
+ TSParameterReference {TSParameter},
+ TSMethod {Function},
+ TSField {Identifier},
+ TSProperty {Identifier},
+ TSConstructor {Special},
+ TSConditional {Conditional},
+ TSRepeat {Repeat},
+ TSLabel {Label},
+ TSOperator {Operator},
+ TSKeyword {Keyword},
+ TSKeywordFunction {Keyword},
+ TSException {Exception},
+ TSType {Type},
+ TSTypeBuiltin {Type},
+ TSNamespace {Include},
+ TSInclude {Include},
+ TSAnnotation {PreProc},
+ TSText {TSNone},
+ TSStrong {gui = styles.bold},
+ TSEmphasis {gui = styles.italic},
+ TSUnderline {gui = styles.underline},
+ TSTitle {Title},
+ TSLiteral {String},
+ TSURI {Underlined},
+ TSVariable {Special},
+ TSVariableBuiltin {Special},
+
+ -- netrw
+ netrwDir {fg = hsl(aqua)},
+ netrwClassify {netrwDir},
+ netrwLink {fg = hsl(gray)},
+ netrwSymLink {fg = hsl(fg1)},
+ netrwExe {fg = hsl(yellow)},
+ netrwComment {netrwLink},
+ netrwList {fg = hsl(blue)},
+ netrwHelpCmd {netrwDir},
+ netrwCmdSep {fg = hsl(fg3)},
+ netrwVersion {fg = hsl(green)},
+
+ -- vim-startify
+ StartifyBracket {fg = hsl(fg3)},
+ StartifyFile {fg = hsl(fg1)},
+ StartifyNumber {fg = hsl(blue)},
+ StartifyPath {fg = hsl(gray)},
+ StartifySlash {StartifyPath},
+ StartifySection {fg = hsl(yellow)},
+ StartifySpecial {fg = hsl(bg2)},
+ StartifyHeader {fg = hsl(orange)},
+ StartifyFooter {fg = hsl(bg2)},
+
+ -- vim-signify
+ SignifySignAdd {fg = hsl(green), bg = hsl(sign_column), gui = invert_signs},
+ SignifySignChange {fg = hsl(aqua), bg = hsl(sign_column), gui = invert_signs},
+ SignifySignDelete {fg = hsl(red), bg = hsl(sign_column), gui = invert_signs},
+
+ -- lua
+ luaIn {fg = hsl(red)},
+ luaFunction {fg = hsl(aqua)},
+ luaTable {fg = hsl(orange)},
+
+ -- golang
+ goDirective {fg = hsl(aqua)},
+ goConstants {fg = hsl(purple)},
+ goDeclaration {fg = hsl(red)},
+ goDeclType {fg = hsl(blue)},
+ goBuiltins {fg = hsl(orange)},
+
+ -- java
+ javaAnnotation {fg = hsl(blue)},
+ javaDocTags {fg = hsl(aqua)},
+ javaCommentTitle {SpecialComment},
+ javaParen {fg = hsl(fg3)},
+ javaParen1 {fg = hsl(fg3)},
+ javaParen2 {fg = hsl(fg3)},
+ javaParen3 {fg = hsl(fg3)},
+ javaParen4 {fg = hsl(fg3)},
+ javaParen5 {fg = hsl(fg3)},
+ javaOperator {fg = hsl(orange)},
+
+ -- xml
+ xmlTag {fg = hsl(aqua), gui = styles.bold},
+ xmlEndTag {fg = hsl(aqua), gui = styles.bold},
+ xmlTagName {fg = hsl(blue)},
+ xmlEqual {fg = hsl(blue)},
+ docbkKeyword {fg = hsl(aqua), gui = styles.bold},
+ xmlDocTypeDecl {fg = hsl(gray)},
+ xmlDocTypeKeyword {fg = hsl(purple)},
+ xmlCdataStart {fg = hsl(gray)},
+ xmlCdataCdata {fg = hsl(purple)},
+ dtdFunction {fg = hsl(gray)},
+ dtdTagName {fg = hsl(purple)},
+ xmlAttrib {fg = hsl(orange)},
+ xmlProcessingDelim {fg = hsl(gray)},
+ dtdParamEntityPunct {fg = hsl(gray)},
+ dtdParamEntityDPunct {fg = hsl(gray)},
+ xmlAttribPunct {fg = hsl(gray)},
+ xmlEntity {fg = hsl(red)},
+ xmlEntityPunct {fg = hsl(red)},
+
+ -- viml
+ vimNotation {fg = hsl(orange)},
+ vimBracket {fg = hsl(orange)},
+ vimMapModKey {fg = hsl(orange)},
+ vimFuncSID {fg = hsl(fg3)},
+ vimSetSep {fg = hsl(fg3)},
+ vimSep {fg = hsl(fg3)},
+ vimContinue {fg = hsl(fg3)},
+
+ -- c
+ cOperator {fg = hsl(purple)},
+ cppOperator {fg = hsl(purple)},
+ cStructure {fg = hsl(orange)},
+
+ -- python
+ pythonBuiltin {fg = hsl(orange)},
+ pythonBuiltinObj {fg = hsl(orange)},
+ pythonBuiltinFunc {fg = hsl(orange)},
+ pythonFunction {fg = hsl(aqua)},
+ pythonDecorator {fg = hsl(red)},
+ pythonInclude {fg = hsl(blue)},
+ pythonImport {fg = hsl(blue)},
+ pythonRun {fg = hsl(blue)},
+ pythonCoding {fg = hsl(blue)},
+ pythonOperator {fg = hsl(red)},
+ pythonException {fg = hsl(red)},
+ pythonExceptions {fg = hsl(purple)},
+ pythonBoolean {fg = hsl(purple)},
+ pythonDot {fg = hsl(fg3)},
+ pythonConditional {fg = hsl(red)},
+ pythonRepeat {fg = hsl(red)},
+ pythonDottedName {fg = hsl(green), gui = styles.bold},
+
+ -- clojure
+ clojureRegexpCharClass {fg = hsl(fg3), gui = styles.bold},
+ clojureKeyword {fg = hsl(blue)},
+ clojureCond {fg = hsl(orange)},
+ clojureSpecial {fg = hsl(orange)},
+ clojureDefine {fg = hsl(orange)},
+
+ clojureFunc {fg = hsl(yellow)},
+ clojureRepeat {fg = hsl(yellow)},
+ clojureCharacter {fg = hsl(aqua)},
+ clojureStringEscape {fg = hsl(aqua)},
+ clojureException {fg = hsl(red)},
+
+ clojureRegexp {fg = hsl(aqua)},
+ clojureRegexpEscape {fg = hsl(aqua)},
+ clojureRegexpMod {clojureRegexpCharClass},
+ clojureRegexpQuantifier {clojureRegexpCharClass},
+
+ clojureParen {fg = hsl(fg3)},
+ clojureAnonArg {fg = hsl(yellow)},
+ clojureVariable {fg = hsl(blue)},
+ clojureMacro {fg = hsl(orange)},
+
+ clojureMeta {fg = hsl(yellow)},
+ clojureDeref {fg = hsl(yellow)},
+ clojureQuote {fg = hsl(yellow)},
+ clojureUnquote {fg = hsl(yellow)},
+
+ -- html
+ htmlTag {fg = hsl(aqua), gui = styles.bold},
+ htmlEndTag {fg = hsl(aqua), gui = styles.bold},
+ htmlTagName {fg = hsl(blue)},
+ htmlArg {fg = hsl(orange)},
+ htmlScriptTag {fg = hsl(purple)},
+ htmlTagN {fg = hsl(fg1)},
+ htmlSpecialTagName {fg = hsl(blue)},
+ htmlSpecialChar {fg = hsl(red)},
+ htmlLink {fg = hsl(fg4), gui = styles.underline},
+ htmlBold {fg = hsl(fg1), gui = styles.bold},
+ htmlBoldUnderline {fg = hsl(fg1), gui = styles.bold .. "," .. styles.underline},
+ htmlBoldItalic {fg = hsl(fg1), gui = styles.bold .. "," .. styles.italic},
+ htmlBoldUnderlineItalic {
+ fg = hsl(fg1),
+ gui = styles.bold .. "," .. styles.underline .. "," .. styles.italic,
+ },
+ htmlItalic {fg = hsl(fg1), gui = styles.italic},
+
+ -- special diffs
+ diffAdded {fg = hsl(green)},
+ diffRemoved {fg = hsl(red)},
+ diffChanged {fg = hsl(aqua)},
+ diffFile {fg = hsl(orange)},
+ diffNewFile {fg = hsl(yellow)},
+ diffLine {fg = hsl(blue)},
+
+ -- css
+ cssBraces {fg = hsl(blue)},
+ cssFunctionName {fg = hsl(yellow)},
+ cssIdentifier {fg = hsl(orange)},
+ cssClassName {fg = hsl(green)},
+ cssColor {fg = hsl(blue)},
+ cssSelectorOp {fg = hsl(blue)},
+ cssSelectorOp2 {fg = hsl(blue)},
+ cssImportant {fg = hsl(green)},
+ cssVendor {fg = hsl(fg1)},
+ cssTextProp {fg = hsl(aqua)},
+ cssAnimationProp {fg = hsl(aqua)},
+ cssUIProp {fg = hsl(yellow)},
+ cssTransformProp {fg = hsl(aqua)},
+ cssTransitionProp {fg = hsl(aqua)},
+ cssPrintProp {fg = hsl(aqua)},
+ cssPositioningProp {fg = hsl(yellow)},
+ cssBoxProp {fg = hsl(aqua)},
+ cssFontDescriptorProp {fg = hsl(aqua)},
+ cssFlexibleBoxProp {fg = hsl(aqua)},
+ cssBorderOutlineProp {fg = hsl(aqua)},
+ cssBackgroundProp {fg = hsl(aqua)},
+ cssMarginProp {fg = hsl(aqua)},
+ cssListProp {fg = hsl(aqua)},
+ cssTableProp {fg = hsl(aqua)},
+ cssFontProp {fg = hsl(aqua)},
+ cssPaddingProp {fg = hsl(aqua)},
+ cssDimensionProp {fg = hsl(aqua)},
+ cssRenderProp {fg = hsl(aqua)},
+ cssColorProp {fg = hsl(aqua)},
+ cssGeneratedContentProp {fg = hsl(aqua)},
+
+ -- js
+ javaScriptBraces {fg = hsl(fg1)},
+ javaScriptFunction {fg = hsl(aqua)},
+ javaScriptIdentifier {fg = hsl(red)},
+ javaScriptMember {fg = hsl(blue)},
+ javaScriptNumber {fg = hsl(purple)},
+ javaScriptNull {fg = hsl(purple)},
+ javaScriptParens {fg = hsl(fg3)},
+ javascriptImport {fg = hsl(aqua)},
+ javascriptExport {fg = hsl(aqua)},
+ javascriptClassKeyword {fg = hsl(aqua)},
+ javascriptClassExtends {fg = hsl(aqua)},
+ javascriptDefault {fg = hsl(aqua)},
+ javascriptClassName {fg = hsl(yellow)},
+ javascriptClassSuperName {fg = hsl(yellow)},
+ javascriptGlobal {fg = hsl(yellow)},
+ javascriptEndColons {fg = hsl(fg1)},
+ javascriptFuncArg {fg = hsl(fg1)},
+ javascriptGlobalMethod {fg = hsl(fg1)},
+ javascriptNodeGlobal {fg = hsl(fg1)},
+ javascriptBOMWindowProp {fg = hsl(fg1)},
+ javascriptArrayMethod {fg = hsl(fg1)},
+ javascriptArrayStaticMethod {fg = hsl(fg1)},
+ javascriptCacheMethod {fg = hsl(fg1)},
+ javascriptDateMethod {fg = hsl(fg1)},
+ javascriptMathStaticMethod {fg = hsl(fg1)},
+ javascriptProp {fg = hsl(fg1)},
+ javascriptURLUtilsProp {fg = hsl(fg1)},
+ javascriptBOMNavigatorProp {fg = hsl(fg1)},
+ javascriptDOMDocMethod {fg = hsl(fg1)},
+ javascriptDOMDocProp {fg = hsl(fg1)},
+ javascriptBOMLocationMethod {fg = hsl(fg1)},
+ javascriptBOMWindowMethod {fg = hsl(fg1)},
+ javascriptStringMethod {fg = hsl(fg1)},
+ javascriptVariable {fg = hsl(orange)},
+ javascriptClassSuper {fg = hsl(orange)},
+ javascriptFuncKeyword {fg = hsl(aqua)},
+ javascriptAsyncFunc {fg = hsl(aqua)},
+ javascriptClassStatic {fg = hsl(orange)},
+ javascriptOperator {fg = hsl(red)},
+ javascriptForOperator {fg = hsl(red)},
+ javascriptYield {fg = hsl(red)},
+ javascriptExceptions {fg = hsl(red)},
+ javascriptMessage {fg = hsl(red)},
+ javascriptTemplateSB {fg = hsl(aqua)},
+ javascriptTemplateSubstitution {fg = hsl(fg1)},
+ javascriptLabel {fg = hsl(fg1)},
+ javascriptObjectLabel {fg = hsl(fg1)},
+ javascriptPropertyName {fg = hsl(fg1)},
+ javascriptLogicSymbols {fg = hsl(fg1)},
+ javascriptArrowFunc {fg = hsl(yellow)},
+ javascriptDocParamName {fg = hsl(fg4)},
+ javascriptDocTags {fg = hsl(fg4)},
+ javascriptDocNotation {fg = hsl(fg4)},
+ javascriptDocParamType {fg = hsl(fg4)},
+ javascriptDocNamedParamType {fg = hsl(fg4)},
+ javascriptBrackets {fg = hsl(fg1)},
+ javascriptDOMElemAttrs {fg = hsl(fg1)},
+ javascriptDOMEventMethod {fg = hsl(fg1)},
+ javascriptDOMNodeMethod {fg = hsl(fg1)},
+ javascriptDOMStorageMethod {fg = hsl(fg1)},
+ javascriptHeadersMethod {fg = hsl(fg1)},
+ javascriptAsyncFuncKeyword {fg = hsl(red)},
+ javascriptAwaitFuncKeyword {fg = hsl(red)},
+ jsClassKeyword {fg = hsl(aqua)},
+ jsExtendsKeyword {fg = hsl(aqua)},
+ jsExportDefault {fg = hsl(aqua)},
+ jsTemplateBraces {fg = hsl(aqua)},
+ jsGlobalNodeObjects {fg = hsl(blue)},
+ jsGlobalObjects {fg = hsl(blue)},
+ jsObjectKey {fg = hsl(green), gui = styles.bold},
+ jsFunction {fg = hsl(aqua)},
+ jsFuncCall {fg = hsl(blue)},
+ jsFuncParens {fg = hsl(fg3)},
+ jsParens {fg = hsl(fg3)},
+ jsNull {fg = hsl(purple)},
+ jsUndefined {fg = hsl(purple)},
+ jsClassDefinition {fg = hsl(yellow)},
+ jsOperatorKeyword {fg = hsl(red)},
+
+ -- typescript
+ typescriptReserved {fg = hsl(aqua)},
+ typescriptLabel {fg = hsl(aqua)},
+ typescriptFuncKeyword {fg = hsl(aqua)},
+ typescriptIdentifier {fg = hsl(orange)},
+ typescriptBraces {fg = hsl(fg1)},
+ typescriptEndColons {fg = hsl(fg1)},
+ typescriptDOMObjects {fg = hsl(fg1)},
+ typescriptAjaxMethods {fg = hsl(fg1)},
+ typescriptLogicSymbols {fg = hsl(fg1)},
+ typescriptDocSeeTag {SpecialComment},
+ typescriptDocParam {SpecialComment},
+ typescriptDocTags {SpecialComment},
+ typescriptGlobalObjects {fg = hsl(fg1)},
+ typescriptParens {fg = hsl(fg3)},
+ typescriptOpSymbols {fg = hsl(fg3)},
+ typescriptHtmlElemProperties {fg = hsl(fg1)},
+ typescriptNull {fg = hsl(purple)},
+ typescriptInterpolationDelimiter {fg = hsl(aqua)},
+
+ -- jsx
+ jsxTagName {fg = hsl(aqua)},
+ jsxComponentName {fg = hsl(green)},
+ jsxCloseString {fg = hsl(fg4)},
+ jsxAttrib {fg = hsl(yellow)},
+ jsxEqual {fg = hsl(aqua)},
+
+ -- purescript
+ purescriptModuleKeyword {fg = hsl(aqua)},
+ purescriptModuleName {fg = hsl(fg1)},
+ purescriptWhere {fg = hsl(aqua)},
+ purescriptDelimiter {fg = hsl(fg4)},
+ purescriptType {fg = hsl(fg1)},
+ purescriptImportKeyword {fg = hsl(aqua)},
+ purescriptHidingKeyword {fg = hsl(aqua)},
+ purescriptAsKeyword {fg = hsl(aqua)},
+ purescriptStructure {fg = hsl(aqua)},
+ purescriptOperator {fg = hsl(blue)},
+ purescriptTypeVar {fg = hsl(fg1)},
+ purescriptConstructor {fg = hsl(fg1)},
+ purescriptFunction {fg = hsl(fg1)},
+ purescriptConditional {fg = hsl(orange)},
+ purescriptBacktick {fg = hsl(orange)},
+
+ -- coffeescript
+ coffeeExtendedOp {fg = hsl(fg3)},
+ coffeeSpecialOp {fg = hsl(fg3)},
+ coffeeCurly {fg = hsl(orange)},
+ coffeeParen {fg = hsl(fg3)},
+ coffeeBracket {fg = hsl(orange)},
+
+ -- ruby
+ rubyStringDelimiter {fg = hsl(green)},
+ rubyInterpolationDelimiter {fg = hsl(aqua)},
+
+ -- obj-c
+ objcTypeModifier {fg = hsl(red)},
+ objcDirective {fg = hsl(blue)},
+
+ -- moonscript
+ moonSpecialOp {fg = hsl(fg3)},
+ moonExtendedOp {fg = hsl(fg3)},
+ moonFunction {fg = hsl(fg3)},
+ moonObject {fg = hsl(yellow)},
+
+ -- elixir
+ elixirDocString {SpecialComment},
+ elixirStringDelimiter {fg = hsl(green)},
+ elixirInterpolationDelimiter {fg = hsl(aqua)},
+ elixirModuleDeclaration {fg = hsl(yellow)},
+
+ -- scala
+ scalaNameDefinition {fg = hsl(fg1)},
+ scalaCaseFollowing {fg = hsl(fg1)},
+ scalaCapitalWord {fg = hsl(fg1)},
+ scalaTypeExtension {fg = hsl(fg1)},
+ scalaKeyword {fg = hsl(red)},
+ scalaKeywordModifier {fg = hsl(red)},
+ scalaSpecial {fg = hsl(aqua)},
+ scalaOperator {fg = hsl(fg1)},
+ scalaTypeDeclaration {fg = hsl(yellow)},
+ scalaTypeTypePostDeclaration {fg = hsl(yellow)},
+ scalaInstanceDeclaration {fg = hsl(fg1)},
+ scalaInterpolation {fg = hsl(aqua)},
+
+ -- markdown
+ markdownItalic {fg = hsl(fg3), gui = styles.italic},
+ markdownH1 {fg = hsl(green), gui = styles.bold},
+ markdownH2 {markdownH1},
+ markdownH3 {fg = hsl(yellow), gui = styles.bold},
+ markdownH4 {markdownH3},
+ markdownH5 {fg = hsl(yellow)},
+ markdownH6 {markdownH5},
+ markdownCode {fg = hsl(aqua)},
+ markdownCodeBlock {fg = hsl(aqua)},
+ markdownCodeDelimiter {fg = hsl(aqua)},
+ markdownBlockquote {fg = hsl(gray)},
+ markdownListMarker {fg = hsl(gray)},
+ markdownOrderedListMarker {fg = hsl(gray)},
+ markdownRule {fg = hsl(gray)},
+ markdownHeadingRule {fg = hsl(gray)},
+ markdownUrlDelimiter {fg = hsl(fg3)},
+ markdownLinkDelimiter {fg = hsl(fg3)},
+ markdownLinkTextDelimiter {fg = hsl(fg3)},
+ markdownHeadingDelimiter {fg = hsl(orange)},
+ markdownUrl {fg = hsl(purple)},
+ markdownUrlTitleDelimiter {fg = hsl(green)},
+ markdownLinkText {fg = hsl(gray), gui = styles.underline},
+ markdownIdDeclaration {markdownLinkText},
+
+ -- haskell
+ haskellType {fg = hsl(blue)},
+ haskellIdentifier {fg = hsl(aqua)},
+ haskellSeparator {fg = hsl(fg4)},
+ haskellDelimiter {fg = hsl(orange)},
+ haskellOperators {fg = hsl(purple)},
+ haskellBacktick {fg = hsl(orange)},
+ haskellStatement {fg = hsl(purple)},
+ haskellConditional {fg = hsl(purple)},
+ haskellLet {fg = hsl(red)},
+ haskellDefault {fg = hsl(red)},
+ haskellWhere {fg = hsl(red)},
+ haskellBottom {fg = hsl(red), gui = styles.bold},
+ haskellImportKeywords {fg = hsl(purple), gui = styles.bold},
+ haskellDeclKeyword {fg = hsl(orange)},
+ haskellDecl {fg = hsl(orange)},
+ haskellDeriving {fg = hsl(purple)},
+ haskellAssocType {fg = hsl(aqua)},
+ haskellNumber {fg = hsl(aqua)},
+ haskellPragma {fg = hsl(red), gui = styles.bold},
+ haskellTH {fg = hsl(aqua), gui = styles.bold},
+ haskellForeignKeywords {fg = hsl(green)},
+ haskellKeyword {fg = hsl(red)},
+ haskellFloat {fg = hsl(aqua)},
+ haskellInfix {fg = hsl(purple)},
+ haskellQuote {fg = hsl(green), gui = styles.bold},
+ haskellShebang {fg = hsl(yellow), gui = styles.bold},
+ haskellLiquid {fg = hsl(purple), gui = styles.bold},
+ haskellQuasiQuoted {fg = hsl(blue), gui = styles.bold},
+ haskellRecursiveDo {fg = hsl(purple)},
+ haskellQuotedType {fg = hsl(red)},
+ haskellPreProc {fg = hsl(fg4)},
+ haskellTypeRoles {fg = hsl(red), gui = styles.bold},
+ haskellTypeForall {fg = hsl(red)},
+ haskellPatternKeyword {fg = hsl(blue)},
+
+ -- json
+ jsonKeyword {fg = hsl(green)},
+ jsonQuote {fg = hsl(green)},
+ jsonBraces {fg = hsl(fg1)},
+ jsonString {fg = hsl(fg1)},
+
+ -- mail.vim
+ mailQuoted1 {fg = hsl(aqua)},
+ mailQuoted2 {fg = hsl(purple)},
+ mailQuoted3 {fg = hsl(yellow)},
+ mailQuoted4 {fg = hsl(green)},
+ mailQuoted5 {fg = hsl(red)},
+ mailQuoted6 {fg = hsl(orange)},
+ mailSignature {SpecialComment},
+
+ -- csharp
+ csBraces {fg = hsl(fg1)},
+ csEndColon {fg = hsl(fg1)},
+ csLogicSymbols {fg = hsl(fg1)},
+ csParens {fg = hsl(fg3)},
+ csOpSymbols {fg = hsl(fg3)},
+ csInterpolationDelimiter {fg = hsl(fg3)},
+ csInterpolationAlignDel {fg = hsl(aqua), gui = styles.bold},
+ csInterpolationFormat {fg = hsl(aqua)},
+ csInterpolationFormatDel {fg = hsl(aqua), gui = styles.bold},
+
+ -- rust
+ rustSigil {fg = hsl(orange)},
+ rustEscape {fg = hsl(aqua)},
+ rustStringContinuation {fg = hsl(aqua)},
+ rustEnum {fg = hsl(aqua)},
+ rustStructure {fg = hsl(aqua)},
+ rustModPathSep {fg = hsl(fg2)},
+ rustCommentLineDoc {SpecialComment},
+ rustDefault {fg = hsl(aqua)},
+
+ -- ocaml
+ ocamlOperator {fg = hsl(fg1)},
+ ocamlKeyChar {fg = hsl(orange)},
+ ocamlArrow {fg = hsl(orange)},
+ ocamlInfixOpKeyword {fg = hsl(red)},
+ ocamlConstructor {fg = hsl(orange)},
+
+ -- coc.nvim
+ CocErrorSign {fg = hsl(red), bg = hsl(sign_column)},
+ CocWarningSign {fg = hsl(orange), bg = hsl(sign_column)},
+ CocInfoSign {fg = hsl(blue), bg = hsl(sign_column)},
+ CocHintSign {fg = hsl(aqua), bg = hsl(sign_column)},
+ CocErrorFloat {fg = hsl(red)},
+ CocWarningFloat {fg = hsl(orange)},
+ CocInfoFloat {fg = hsl(blue)},
+ CocHintFloat {fg = hsl(aqua)},
+ CocDiagnosticsError {fg = hsl(red)},
+ CocDiagnosticsWarning {fg = hsl(orange)},
+ CocDiagnosticsInfo {fg = hsl(blue)},
+ CocDiagnosticsHint {fg = hsl(aqua)},
+ CocSelectedText {fg = hsl(red)},
+ CocCodeLens {fg = hsl(gray)},
+ CocErrorHighlight {fg = hsl(red), gui = styles.underline},
+ CocWarningHighlight {fg = hsl(orange), gui = styles.underline},
+ CocInfoHighlight {fg = hsl(blue), gui = styles.underline},
+ CocHintHighlight {fg = hsl(aqua), gui = styles.underline},
+
+ -- nerdtree
+ NERDTreeDir {fg = hsl(aqua)},
+ NERDTreeDirSlash {fg = hsl(aqua)},
+ NERDTreeOpenable {fg = hsl(orange)},
+ NERDTreeClosable {fg = hsl(orange)},
+ NERDTreeFile {fg = hsl(fg1)},
+ NERDTreeExecFile {fg = hsl(yellow)},
+ NERDTreeUp {fg = hsl(gray)},
+ NERDTreeCWD {fg = hsl(green)},
+ NERDTreeHelp {fg = hsl(fg1)},
+ NERDTreeToggleOn {fg = hsl(green)},
+ NERDTreeToggleOff {fg = hsl(red)},
+
+ -- vim dirvish
+ DirvishPathTail {fg = hsl(aqua)},
+ DirvishArg {fg = hsl(yellow)},
+
+ -- ale.vim
+ ALEError {fg = hsl(red), gui = styles.underline},
+ ALEWarning {fg = hsl(yellow), gui = styles.underline},
+ ALEInfo {fg = hsl(blue), gui = styles.underline},
+ ALEErrorSign {fg = hsl(red), bg = hsl(sign_column)},
+ ALEWarningSign {fg = hsl(yellow), bg = hsl(sign_column)},
+ ALEInfoSign {fg = hsl(blue), bg = hsl(sign_column)},
+ ALEVirtualTextError {fg = hsl(red)},
+ ALEVirtualTextWarning {fg = hsl(yellow)},
+ ALEVirtualTextInfo {fg = hsl(blue)},
+
+ -- BufTabLine
+ BufTabLineCurrent {fg = hsl(bg0), bg = hsl(fg4)},
+ BufTabLineActive {fg = hsl(fg4), bg = hsl(bg2)},
+ BufTabLineHidden {fg = hsl(bg4), bg = hsl(bg1)},
+ BufTabLineFill {fg = hsl(bg0), bg = hsl(bg0)},
+
+ -- fzf
+ Fzf1 {fg = hsl(blue), bg = hsl(bg1)},
+ Fzf2 {fg = hsl(orange), bg = hsl(bg1)},
+ Fzf3 {fg = hsl(fg4), bg = hsl(bg1)},
+
+ -- ctrlP
+ CtrlPMatch {fg = hsl(yellow)},
+ CtrlPNoEntries {fg = hsl(red)},
+ CtrlPPrtBase {fg = hsl(bg2)},
+ CtrlPPrtCursor {fg = hsl(blue)},
+ CtrlPLinePre {fg = hsl(bg2)},
+ CtrlPMode1 {fg = hsl(blue), bg = hsl(bg2), gui = styles.bold},
+ CtrlPMode2 {fg = hsl(bg0), bg = hsl(blue), gui = styles.bold},
+ CtrlPStats {fg = hsl(fg4), bg = hsl(bg2), gui = styles.bold},
+
+ -- showmarks
+ ShowMarksHLl {fg = hsl(blue), bg = hsl(sign_column)},
+ ShowMarksHLu {fg = hsl(blue), bg = hsl(sign_column)},
+ ShowMarksHLo {fg = hsl(blue), bg = hsl(sign_column)},
+ ShowMarksHLm {fg = hsl(blue), bg = hsl(sign_column)},
+
+ -- signature
+ SignatureMarkText {fg = hsl(blue), bg = hsl(sign_column)},
+ SignatureMarkerText {fg = hsl(purple), bg = hsl(sign_column)},
+
+ -- gitgutter
+ GitGutterAdd {fg = hsl(green), bg = hsl(sign_column)},
+ GitGutterChange {fg = hsl(aqua), bg = hsl(sign_column)},
+ GitGutterDelete {fg = hsl(red), bg = hsl(sign_column)},
+ GitGutterChangeDelete {fg = hsl(aqua), bg = hsl(sign_column)},
+
+ -- gitcommit
+ gitcommitSelectedFile {fg = hsl(green)},
+ gitcommitDiscardedFile {fg = hsl(red)},
+ }
+end)
+
+return theme