aboutsummaryrefslogtreecommitdiff
path: root/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
parenta034fdca2a52e31296684d7e10f131a0c3e8e606 (diff)
downloadgruvbox-939a21c94bf1d1efbdf527ac9c0b312d606679cb.tar.gz
gruvbox-939a21c94bf1d1efbdf527ac9c0b312d606679cb.tar.xz
adding more highlight groups
Diffstat (limited to 'lua')
-rw-r--r--lua/lush_template/gruvbox.lua396
-rw-r--r--lua/theme/init.lua910
2 files changed, 910 insertions, 396 deletions
diff --git a/lua/lush_template/gruvbox.lua b/lua/lush_template/gruvbox.lua
deleted file mode 100644
index f303b25..0000000
--- a/lua/lush_template/gruvbox.lua
+++ /dev/null
@@ -1,396 +0,0 @@
-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(bg1)},
- 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(fg0), 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)},
-
- }
-end)
-
-return theme
-
--- vi:nowrap
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