aboutsummaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorEllison Leão <ellisonleao@gmail.com>2022-01-08 15:32:59 -0300
committerEllison Leão <ellisonleao@gmail.com>2022-01-08 15:32:59 -0300
commitde05c0ff9647afa14a892b2d107d1ad915dbf4c5 (patch)
treec9a7fceb85cf4b764b404e930a3bd697f25cd20c /lua
parentb0a1c4bd71aa58e02809632fbc00fa6dce6d1213 (diff)
parent5ac143369319c61882a9bf23a60aa916aad30e54 (diff)
downloadgruvbox-de05c0ff9647afa14a892b2d107d1ad915dbf4c5.tar.gz
gruvbox-de05c0ff9647afa14a892b2d107d1ad915dbf4c5.tar.xz
Merge branch 'mhdahmad/main'
* mhdahmad/main: fix(lightline): wrong function name chore(gruvbox): sync with upstream chore(gruvbox): format using stylua refactore(gruvbox): update README.md refactore(gruvbox): sync with gruvbox-community refactor(gruvbox): remove lush dependency refactor(gruvbox): remove filetypes highlights for treesitter perf(gruvbox): reduce load time to ~5ms
Diffstat (limited to 'lua')
-rw-r--r--lua/gruvbox/base.lua330
-rw-r--r--lua/gruvbox/colors.lua74
-rw-r--r--lua/gruvbox/init.lua11
-rw-r--r--lua/gruvbox/languages.lua660
-rw-r--r--lua/gruvbox/plugins/highlights.lua583
-rw-r--r--lua/gruvbox/plugins/lightline.lua124
-rw-r--r--lua/gruvbox/utils.lua40
7 files changed, 735 insertions, 1087 deletions
diff --git a/lua/gruvbox/base.lua b/lua/gruvbox/base.lua
index 82db159..6e206fe 100644
--- a/lua/gruvbox/base.lua
+++ b/lua/gruvbox/base.lua
@@ -1,4 +1,3 @@
-local lush = require("lush")
local colors = require("gruvbox.colors")
local styles = require("gruvbox.settings").styles
local utils = require("gruvbox.utils")
@@ -103,177 +102,180 @@ if not utils.tobool(vim.g.gruvbox_improved_strings) then
end
-- neovim terminal mode colors
-vim.g.terminal_color_0 = bg0.hex
-vim.g.terminal_color_8 = gray.hex
-vim.g.terminal_color_1 = colors.neutral_red.hex
-vim.g.terminal_color_9 = red.hex
-vim.g.terminal_color_2 = colors.neutral_green.hex
-vim.g.terminal_color_10 = green.hex
-vim.g.terminal_color_3 = colors.neutral_yellow.hex
-vim.g.terminal_color_11 = yellow.hex
-vim.g.terminal_color_4 = colors.neutral_blue.hex
-vim.g.terminal_color_12 = blue.hex
-vim.g.terminal_color_5 = colors.neutral_purple.hex
-vim.g.terminal_color_13 = purple.hex
-vim.g.terminal_color_6 = colors.neutral_aqua.hex
-vim.g.terminal_color_14 = aqua.hex
-vim.g.terminal_color_7 = fg4.hex
-vim.g.terminal_color_15 = fg1.hex
+vim.g.terminal_color_0 = bg0
+vim.g.terminal_color_8 = gray
+vim.g.terminal_color_1 = colors.neutral_red
+vim.g.terminal_color_9 = red
+vim.g.terminal_color_2 = colors.neutral_green
+vim.g.terminal_color_10 = green
+vim.g.terminal_color_3 = colors.neutral_yellow
+vim.g.terminal_color_11 = yellow
+vim.g.terminal_color_4 = colors.neutral_blue
+vim.g.terminal_color_12 = blue
+vim.g.terminal_color_5 = colors.neutral_purple
+vim.g.terminal_color_13 = purple
+vim.g.terminal_color_6 = colors.neutral_aqua
+vim.g.terminal_color_14 = aqua
+vim.g.terminal_color_7 = fg4
+vim.g.terminal_color_15 = fg1
vim.g.colors_name = "gruvbox"
local table_concat = table.concat
-local base_group = lush(function()
- return {
- -- Base groups
- GruvboxFg0({ fg = fg0 }),
- GruvboxFg1({ fg = fg1 }),
- GruvboxFg2({ fg = fg2 }),
- GruvboxFg3({ fg = fg3 }),
- GruvboxFg4({ fg = fg4 }),
- GruvboxGray({ fg = gray }),
- GruvboxBg0({ fg = bg0 }),
- GruvboxBg1({ fg = bg1 }),
- GruvboxBg2({ fg = bg2 }),
- GruvboxBg3({ fg = bg3 }),
- GruvboxBg4({ fg = bg4 }),
+local base_group = {
+ -- Base groups
+ GruvboxFg0 = { fg = fg0 },
+ GruvboxFg1 = { fg = fg1 },
+ GruvboxFg2 = { fg = fg2 },
+ GruvboxFg3 = { fg = fg3 },
+ GruvboxFg4 = { fg = fg4 },
+ GruvboxGray = { fg = gray },
+ GruvboxBg0 = { fg = bg0 },
+ GruvboxBg1 = { fg = bg1 },
+ GruvboxBg2 = { fg = bg2 },
+ GruvboxBg3 = { fg = bg3 },
+ GruvboxBg4 = { fg = bg4 },
- GruvboxRed({ fg = red }),
- GruvboxRedBold({ fg = red, gui = styles.bold }),
- GruvboxGreen({ fg = green }),
- GruvboxGreenBold({ fg = green, gui = styles.bold }),
- GruvboxYellow({ fg = yellow }),
- GruvboxYellowBold({ fg = yellow, gui = styles.bold }),
- GruvboxBlue({ fg = blue }),
- GruvboxBlueBold({ fg = blue, gui = styles.bold }),
- GruvboxPurple({ fg = purple }),
- GruvboxPurpleBold({ fg = purple, gui = styles.bold }),
- GruvboxAqua({ fg = aqua }),
- GruvboxAquaBold({ fg = aqua, gui = styles.bold }),
- GruvboxOrange({ fg = orange }),
- GruvboxOrangeBold({ fg = orange, gui = styles.bold }),
+ GruvboxRed = { fg = red },
+ GruvboxRedBold = { fg = red, gui = styles.bold },
+ GruvboxGreen = { fg = green },
+ GruvboxGreenBold = { fg = green, gui = styles.bold },
+ GruvboxYellow = { fg = yellow },
+ GruvboxYellowBold = { fg = yellow, gui = styles.bold },
+ GruvboxBlue = { fg = blue },
+ GruvboxBlueBold = { fg = blue, gui = styles.bold },
+ GruvboxPurple = { fg = purple },
+ GruvboxPurpleBold = { fg = purple, gui = styles.bold },
+ GruvboxAqua = { fg = aqua },
+ GruvboxAquaBold = { fg = aqua, gui = styles.bold },
+ GruvboxOrange = { fg = orange },
+ GruvboxOrangeBold = { fg = orange, gui = styles.bold },
- GruvboxRedSign({ fg = red, bg = sign_column, gui = styles.invert_signs }),
- GruvboxGreenSign({ fg = green, bg = sign_column, gui = styles.invert_signs }),
- GruvboxYellowSign({ fg = yellow, bg = sign_column, gui = styles.invert_signs }),
- GruvboxBlueSign({ fg = blue, bg = sign_column, gui = styles.invert_signs }),
- GruvboxPurpleSign({ fg = purple, bg = sign_column, gui = styles.invert_signs }),
- GruvboxAquaSign({ fg = aqua, bg = sign_column, gui = styles.invert_signs }),
- GruvboxOrangeSign({ fg = orange, bg = sign_column, gui = styles.invert_signs }),
+ GruvboxRedSign = { fg = red, bg = sign_column, gui = styles.invert_signs },
+ GruvboxGreenSign = { fg = green, bg = sign_column, gui = styles.invert_signs },
+ GruvboxYellowSign = { fg = yellow, bg = sign_column, gui = styles.invert_signs },
+ GruvboxBlueSign = { fg = blue, bg = sign_column, gui = styles.invert_signs },
+ GruvboxPurpleSign = { fg = purple, bg = sign_column, gui = styles.invert_signs },
+ GruvboxAquaSign = { fg = aqua, bg = sign_column, gui = styles.invert_signs },
+ GruvboxOrangeSign = { fg = orange, bg = sign_column, gui = styles.invert_signs },
- GruvboxRedUnderline({ gui = styles.undercurl, sp = red }),
- GruvboxGreenUnderline({ gui = styles.undercurl, sp = green }),
- GruvboxYellowUnderline({ gui = styles.undercurl, sp = yellow }),
- GruvboxBlueUnderline({ gui = styles.undercurl, sp = blue }),
- GruvboxPurpleUnderline({ gui = styles.undercurl, sp = purple }),
- GruvboxAquaUnderline({ gui = styles.undercurl, sp = aqua }),
- GruvboxOrangeUnderline({ gui = styles.undercurl, sp = orange }),
+ GruvboxRedUnderline = { gui = styles.undercurl, sp = red },
+ GruvboxGreenUnderline = { gui = styles.undercurl, sp = green },
+ GruvboxYellowUnderline = { gui = styles.undercurl, sp = yellow },
+ GruvboxBlueUnderline = { gui = styles.undercurl, sp = blue },
+ GruvboxPurpleUnderline = { gui = styles.undercurl, sp = purple },
+ GruvboxAquaUnderline = { gui = styles.undercurl, sp = aqua },
+ GruvboxOrangeUnderline = { gui = styles.undercurl, sp = orange },
- ColorColumn({ bg = color_column }),
- Conceal({ fg = blue }),
- Cursor({ gui = styles.inverse }),
- lCursor({ Cursor }),
- iCursor({ Cursor }),
- vCursor({ Cursor }),
- CursorIM({ Cursor }),
- CursorLine({ bg = bg1 }),
- CursorColumn({ CursorLine }),
- Directory({ GruvboxGreenBold }),
- DiffAdd({ fg = green, bg = bg0, gui = styles.inverse }),
- DiffChange({ fg = aqua, bg = bg0, gui = styles.inverse }),
- DiffDelete({ fg = red, bg = bg0, gui = styles.inverse }),
- DiffText({ fg = yellow, bg = bg0, gui = styles.inverse }),
- ErrorMsg({ fg = bg0, bg = red, gui = styles.bold }),
- VertSplit({ fg = bg3, bg = vert_split }),
- Folded({ fg = gray, bg = bg1, gui = styles.italic_strings }),
- FoldColumn({ fg = gray, bg = bg1 }),
- SignColumn({ bg = sign_column }),
- IncSearch({ fg = hls_cursor, bg = bg0, gui = styles.inverse }),
- LineNr({ fg = bg4, bg = number_column }),
- CursorLineNr({ fg = yellow, bg = bg1 }),
- MatchParen({ bg = bg3, gui = styles.bold }),
- ModeMsg({ GruvboxYellowBold }),
- MoreMsg({ GruvboxYellowBold }),
- NonText({ GruvboxBg2 }),
- Normal({ fg = fg1, bg = bg0 }),
- Pmenu({ fg = fg1, bg = bg2 }),
- PmenuSel({ fg = bg2, bg = fg4, gui = styles.bold }),
- PmenuSbar({ bg = bg2 }),
- PmenuThumb({ bg = bg4 }),
- Question({ GruvboxOrangeBold }),
- QuickFixLine({ fg = bg0, bg = yellow, gui = styles.bold }),
- Search({ fg = hls_highlight, bg = bg0, gui = styles.inverse }),
- SpecialKey({ GruvboxFg4 }),
- SpellRare({ GruvboxPurpleUnderline }),
- SpellBad({ GruvboxRedUnderline }),
- StatusLine({ fg = bg2, bg = fg1, gui = styles.inverse }),
- StatusLineNC({ fg = bg1, bg = fg4, gui = styles.inverse }),
- TabLineFill({ fg = bg4, bg = bg1, gui = styles.invert_tabline }),
- TabLine({ fg = bg4, bg = bg1, gui = styles.invert_tabline }),
- TabLineSel({ fg = tabline_sel, bg = bg1, gui = styles.invert_tabline }),
- Title({ GruvboxGreenBold }),
- Visual({ bg = bg3, gui = styles.invert_selection }),
- VisualNOS({ Visual }),
- WarningMsg({ GruvboxRedBold }),
- WildMenu({ fg = blue, bg = bg2, gui = styles.bold }),
- Constant({ GruvboxPurple }),
- Special({ fg = special_string_fg, bg = special_string_bg, gui = special_string_gui }),
- String({
- fg = improved_strings_fg,
- bg = improved_strings_bg,
- gui = improved_strings_gui,
- }),
- Character({ GruvboxPurple }),
- Number({ GruvboxPurple }),
- Boolean({ GruvboxPurple }),
- Float({ GruvboxPurple }),
- Identifier({ GruvboxBlue }),
- Function({ GruvboxGreenBold }),
- Statement({ GruvboxRed }),
- Conditional({ GruvboxRed }),
- Repeat({ GruvboxRed }),
- Label({ GruvboxRed }),
- Exception({ GruvboxRed }),
- Keyword({ GruvboxRed }),
- Operator({ GruvboxOrange }),
- PreProc({ GruvboxAqua }),
- Include({ GruvboxAqua }),
- Define({ GruvboxAqua }),
- Macro({ GruvboxAqua }),
- PreCondit({ GruvboxAqua }),
- Type({ GruvboxYellow }),
- StorageClass({ GruvboxOrange }),
- Structure({ GruvboxAqua }),
- Typedef({ GruvboxYellow }),
- SpecialChar({ GruvboxRed }),
- Tag({ GruvboxAquaBold }),
- Delimiter({ GruvboxFg3 }),
- Comment({ fg = gray, gui = styles.italic_comments }),
- Debug({ GruvboxRed }),
- Underlined({ fg = blue, gui = styles.underline }),
- Bold({ gui = styles.bold }),
- Italic({ gui = styles.italic }),
- Ignore({}),
- Error({ GruvboxRed, gui = table_concat({ styles.bold, styles.inverse }, ",") }),
- Todo({ fg = fg0, gui = table_concat({ styles.bold, styles.italic_comments }, ",") }),
- diffAdded({ GruvboxGreen }),
- diffRemoved({ GruvboxRed }),
- diffChanged({ GruvboxAqua }),
- diffFile({ GruvboxOrange }),
- diffNewFile({ GruvboxYellow }),
- diffLine({ GruvboxBlue }),
- -- signature
- SignatureMarkText({ GruvboxBlueSign }),
- SignatureMarkerText({ GruvboxPurpleSign }),
- -- gitcommit
- gitcommitSelectedFile({ GruvboxGreen }),
- gitcommitDiscardedFile({ GruvboxRed }),
- -- checkhealth
- healthError({ fg = bg0, bg = red }),
- healthSuccess({ fg = bg0, bg = green }),
- healthWarning({ fg = bg0, bg = yellow }),
- }
-end)
+ ColorColumn = { bg = color_column },
+ Conceal = { fg = blue },
+ Cursor = { gui = styles.inverse },
+ lCursor = "Cursor",
+ iCursor = "Cursor",
+ vCursor = "Cursor",
+ CursorIM = "Cursor",
+ CursorLine = { bg = bg1 },
+ CursorColumn = "CursorLine",
+ Directory = "GruvboxGreenBold",
+ DiffAdd = { fg = green, bg = bg0, gui = styles.inverse },
+ DiffChange = { fg = aqua, bg = bg0, gui = styles.inverse },
+ DiffDelete = { fg = red, bg = bg0, gui = styles.inverse },
+ DiffText = { fg = yellow, bg = bg0, gui = styles.inverse },
+ ErrorMsg = { fg = bg0, bg = red, gui = styles.bold },
+ VertSplit = { fg = bg3, bg = vert_split },
+ Folded = { fg = gray, bg = bg1, gui = styles.italic },
+ FoldColumn = { fg = gray, bg = bg1 },
+ SignColumn = { bg = sign_column },
+ IncSearch = { fg = hls_cursor, bg = bg0, gui = styles.inverse },
+ LineNr = { fg = bg4, bg = number_column },
+ CursorLineNr = { fg = yellow, bg = bg1 },
+ MatchParen = { bg = bg3, gui = styles.bold },
+ ModeMsg = "GruvboxYellowBold",
+ MoreMsg = "GruvboxYellowBold",
+ NonText = "GruvboxBg2",
+ Normal = { fg = fg1, bg = bg0 },
+ Pmenu = { fg = fg1, bg = bg2 },
+ PmenuSel = { fg = bg2, bg = blue, gui = styles.bold },
+ PmenuSbar = { bg = bg2 },
+ PmenuThumb = { bg = bg4 },
+ Question = "GruvboxOrangeBold",
+ QuickFixLine = { fg = bg0, bg = yellow, gui = styles.bold },
+ Search = { fg = hls_highlight, bg = bg0, gui = styles.inverse },
+ SpecialKey = "GruvboxFg4",
+ SpellRare = "GruvboxPurpleUnderline",
+ SpellBad = "GruvboxRedUnderline",
+ SpellLocal = "GruvboxAquaUnderline",
+ SpellCap = utils.tobool(vim.g.gruvbox_improved_warnings) and {
+ fg = green,
+ gui = table_concat({ styles.bold, styles.italic }, ","),
+ } or "GruvboxBlueUnderline",
+ StatusLine = { fg = bg2, bg = fg1, gui = styles.inverse },
+ StatusLineNC = { fg = bg1, bg = fg4, gui = styles.inverse },
+ TabLineFill = { fg = bg4, bg = bg1, gui = styles.invert_tabline },
+ TabLine = "TabLineFill",
+ TabLineSel = { fg = tabline_sel, bg = bg1, gui = styles.invert_tabline },
+ Title = "GruvboxGreenBold",
+ Visual = { bg = bg3, gui = styles.invert_selection },
+ VisualNOS = "Visual",
+ WarningMsg = "GruvboxRedBold",
+ WildMenu = { fg = blue, bg = bg2, gui = styles.bold },
+ Constant = "GruvboxPurple",
+ Special = { fg = special_string_fg, bg = special_string_bg, gui = special_string_gui },
+ String = {
+ fg = improved_strings_fg,
+ bg = improved_strings_bg,
+ gui = improved_strings_gui,
+ },
+ Character = "GruvboxPurple",
+ Number = "GruvboxPurple",
+ Boolean = "GruvboxPurple",
+ Float = "GruvboxPurple",
+ Identifier = "GruvboxBlue",
+ Function = "GruvboxGreenBold",
+ Statement = "GruvboxRed",
+ Conditional = "GruvboxRed",
+ Repeat = "GruvboxRed",
+ Label = "GruvboxRed",
+ Exception = "GruvboxRed",
+ Keyword = "GruvboxRed",
+ Operator = "GruvboxFg1",
+ PreProc = "GruvboxAqua",
+ Include = "GruvboxAqua",
+ Define = "GruvboxAqua",
+ Macro = "GruvboxAqua",
+ PreCondit = "GruvboxAqua",
+ Type = "GruvboxYellow",
+ StorageClass = "GruvboxOrange",
+ Structure = "GruvboxAqua",
+ Typedef = "GruvboxYellow",
+ SpecialChar = "GruvboxRed",
+ Tag = "GruvboxAquaBold",
+ Delimiter = "GruvboxFg3",
+ Comment = { fg = gray, gui = styles.italic_comments },
+ Debug = "GruvboxRed",
+ Underlined = { fg = blue, gui = styles.underline },
+ Bold = { gui = styles.bold },
+ Italic = { gui = styles.italic },
+ Ignore = {},
+ Error = { fg = red, gui = table_concat({ styles.bold, styles.inverse }, ",") },
+ Todo = { fg = fg0, gui = table_concat({ styles.bold, styles.italic }, ",") },
+ diffAdded = "GruvboxGreen",
+ diffRemoved = "GruvboxRed",
+ diffChanged = "GruvboxAqua",
+ diffFile = "GruvboxOrange",
+ diffNewFile = "GruvboxYellow",
+ diffLine = "GruvboxBlue",
+ -- signature
+ SignatureMarkText = "GruvboxBlueSign",
+ SignatureMarkerText = "GruvboxPurpleSign",
+ -- gitcommit
+ gitcommitSelectedFile = "GruvboxGreen",
+ gitcommitDiscardedFile = "GruvboxRed",
+ -- checkhealth
+ healthError = { fg = bg0, bg = red },
+ healthSuccess = { fg = bg0, bg = green },
+ healthWarning = { fg = bg0, bg = yellow },
+}
return base_group
diff --git a/lua/gruvbox/colors.lua b/lua/gruvbox/colors.lua
index e7f5775..c9c55a2 100644
--- a/lua/gruvbox/colors.lua
+++ b/lua/gruvbox/colors.lua
@@ -1,41 +1,39 @@
-local hsl = require("lush.hsl")
-
-- gruvbox palette
return {
- dark0_hard = hsl("#1d2021"),
- dark0 = hsl("#282828"),
- dark0_soft = hsl("#32302f"),
- dark1 = hsl("#3c3836"),
- dark2 = hsl("#504945"),
- dark3 = hsl("#665c54"),
- dark4 = hsl("#7c6f64"),
- light0_hard = hsl("#f9f5d7"),
- light0 = hsl("#fbf1c7"),
- light0_soft = hsl("#f2e5bc"),
- light1 = hsl("#ebdbb2"),
- light2 = hsl("#d5c4a1"),
- light3 = hsl("#bdae93"),
- light4 = hsl("#a89984"),
- bright_red = hsl("#fb4934"),
- bright_green = hsl("#b8bb26"),
- bright_yellow = hsl("#fabd2f"),
- bright_blue = hsl("#83a598"),
- bright_purple = hsl("#d3869b"),
- bright_aqua = hsl("#8ec07c"),
- bright_orange = hsl("#fe8019"),
- neutral_red = hsl("#cc241d"),
- neutral_green = hsl("#98971a"),
- neutral_yellow = hsl("#d79921"),
- neutral_blue = hsl("#458588"),
- neutral_purple = hsl("#b16286"),
- neutral_aqua = hsl("#689d6a"),
- neutral_orange = hsl("#d65d0e"),
- faded_red = hsl("#9d0006"),
- faded_green = hsl("#79740e"),
- faded_yellow = hsl("#b57614"),
- faded_blue = hsl("#076678"),
- faded_purple = hsl("#8f3f71"),
- faded_aqua = hsl("#427b58"),
- faded_orange = hsl("#af3a03"),
- gray = hsl("#928374"),
+ 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",
}
diff --git a/lua/gruvbox/init.lua b/lua/gruvbox/init.lua
index bbf2170..1d49180 100644
--- a/lua/gruvbox/init.lua
+++ b/lua/gruvbox/init.lua
@@ -1,12 +1,17 @@
-local lush = require("lush")
local base = require("gruvbox.base")
local plugins = require("gruvbox.plugins.highlights")
local languages = require("gruvbox.languages")
+local utils = require("gruvbox.utils")
local specs = { base, languages, plugins }
-local spec = lush.merge(specs)
+local spec = utils.merge(specs)
+
+local M = {}
+M.load = function()
+ utils.highlights(spec)
+end
-- checking if user has lightline and adding support
require("gruvbox.plugins.lightline").init(spec)
-return spec
+return M
diff --git a/lua/gruvbox/languages.lua b/lua/gruvbox/languages.lua
index 635afce..1765c5a 100644
--- a/lua/gruvbox/languages.lua
+++ b/lua/gruvbox/languages.lua
@@ -1,543 +1,149 @@
-- language specific higlights
-local lush = require("lush")
local base = require("gruvbox.base")
local styles = require("gruvbox.settings").styles
-local table_concat = table.concat
-
--- golang
-local golang = lush(function()
- return {
- goDirective({ base.GruvboxAqua }),
- goConstants({ base.GruvboxPurple }),
- goDeclaration({ base.GruvboxRed }),
- goDeclType({ base.GruvboxBlue }),
- goBuiltins({ base.GruvboxOrange }),
- }
-end)
-
--- java
-local java = lush(function()
- return {
- javaAnnotation({ base.GruvboxBlue }),
- javaDocTags({ base.GruvboxAqua }),
- javaCommentTitle({ base.Comment }),
- javaParen({ base.GruvboxFg3 }),
- javaParen1({ base.GruvboxFg3 }),
- javaParen2({ base.GruvboxFg3 }),
- javaParen3({ base.GruvboxFg3 }),
- javaParen4({ base.GruvboxFg3 }),
- javaParen5({ base.GruvboxFg3 }),
- javaOperator({ base.GruvboxOrange }),
- }
-end)
+local utils = require("gruvbox.utils")
-- xml
-local xml = lush(function()
- return {
- xmlTag({ base.GruvboxAquaBold }),
- xmlEndTag({ base.GruvboxAquaBold }),
- xmlTagName({ base.GruvboxBlue }),
- xmlEqual({ base.GruvboxBlue }),
- docbkKeyword({ base.GruvboxAquaBold }),
- xmlDocTypeDecl({ base.GruvboxGray }),
- xmlDocTypeKeyword({ base.GruvboxPurple }),
- xmlCdataStart({ base.GruvboxGray }),
- xmlCdataCdata({ base.GruvboxPurple }),
- dtdFunction({ base.GruvboxGray }),
- dtdTagName({ base.GruvboxPurple }),
- xmlAttrib({ base.GruvboxOrange }),
- xmlProcessingDelim({ base.GruvboxGray }),
- dtdParamEntityPunct({ base.GruvboxGray }),
- dtdParamEntityDPunct({ base.GruvboxGray }),
- xmlAttribPunct({ base.GruvboxGray }),
- xmlEntity({ base.GruvboxRed }),
- xmlEntityPunct({ base.GruvboxRed }),
- }
-end)
-
-local viml = lush(function()
- return {
- vimNotation({ base.GruvboxOrange }),
- vimBracket({ base.GruvboxOrange }),
- vimMapModKey({ base.GruvboxOrange }),
- vimFuncSID({ base.GruvboxFg3 }),
- vimSetSep({ base.GruvboxFg3 }),
- vimSep({ base.GruvboxFg3 }),
- vimContinue({ base.GruvboxFg3 }),
- }
-end)
-
-local c = lush(function()
- return {
- cOperator({ base.GruvboxPurple }),
- cppOperator({ base.GruvboxPurple }),
- cStructure({ base.GruvboxOrange }),
- }
-end)
-
-local python = lush(function()
- return {
- pythonBuiltin({ base.GruvboxOrange }),
- pythonBuiltinObj({ base.GruvboxOrange }),
- pythonBuiltinFunc({ base.GruvboxOrange }),
- pythonFunction({ base.GruvboxAqua }),
- pythonDecorator({ base.GruvboxRed }),
- pythonInclude({ base.GruvboxBlue }),
- pythonImport({ base.GruvboxBlue }),
- pythonRun({ base.GruvboxBlue }),
- pythonCoding({ base.GruvboxBlue }),
- pythonOperator({ base.GruvboxRed }),
- pythonException({ base.GruvboxRed }),
- pythonExceptions({ base.GruvboxPurple }),
- pythonBoolean({ base.GruvboxPurple }),
- pythonDot({ base.GruvboxFg3 }),
- pythonConditional({ base.GruvboxRed }),
- pythonRepeat({ base.GruvboxRed }),
- pythonDottedName({ base.GruvboxGreenBold }),
- }
-end)
-
-local clojure = lush(function()
- return {
- clojureKeyword({ base.GruvboxBlue }),
- clojureCond({ base.GruvboxOrange }),
- clojureSpecial({ base.GruvboxOrange }),
- clojureDefine({ base.GruvboxOrange }),
- clojureFunc({ base.GruvboxYellow }),
- clojureRepeat({ base.GruvboxYellow }),
- clojureCharacter({ base.GruvboxAqua }),
- clojureStringEscape({ base.GruvboxAqua }),
- clojureException({ base.GruvboxRed }),
- clojureRegexp({ base.GruvboxAqua }),
- clojureRegexpEscape({ base.GruvboxAqua }),
- clojureParen({ base.GruvboxFg3 }),
- clojureAnonArg({ base.GruvboxYellow }),
- clojureVariable({ base.GruvboxBlue }),
- clojureMacro({ base.GruvboxOrange }),
- clojureMeta({ base.GruvboxYellow }),
- clojureDeref({ base.GruvboxYellow }),
- clojureQuote({ base.GruvboxYellow }),
- clojureUnquote({ base.GruvboxYellow }),
- clojureRegexpCharClass({ fg = base.GruvboxFg3.fg.hex, gui = styles.bold }),
- clojureRegexpMod({ clojureRegexpCharClass }),
- clojureRegexpQuantifier({ clojureRegexpCharClass }),
- }
-end)
-
-local html = lush(function()
- return {
- htmlTag({ base.GruvboxAquaBold }),
- htmlEndTag({ base.GruvboxAquaBold }),
- htmlTagName({ base.GruvboxBlue }),
- htmlArg({ base.GruvboxOrange }),
- htmlScriptTag({ base.GruvboxPurple }),
- htmlTagN({ base.GruvboxFg1 }),
- htmlSpecialTagName({ base.GruvboxBlue }),
- htmlSpecialChar({ base.GruvboxRed }),
- htmlLink({ fg = base.GruvboxFg4.fg.hex, gui = styles.underline }),
- htmlBold({ fg = base.GruvboxFg1.fg.hex, gui = styles.bold }),
- htmlBoldUnderline({
- fg = base.GruvboxFg1.fg.hex,
- gui = table_concat({ styles.bold, styles.underline }, ","),
- }),
- htmlBoldItalic({
- fg = base.GruvboxFg1.fg.hex,
- gui = table_concat({ styles.bold, styles.italic_strings }, ","),
- }),
- htmlBoldUnderlineItalic({
- fg = base.GruvboxFg1.fg.hex,
- gui = table_concat({ styles.bold, styles.italic_strings }, ","),
- }),
- htmlItalic({ fg = base.GruvboxFg1.fg.hex, gui = styles.italic_strings }),
- }
-end)
-
-local css = lush(function()
- return {
- cssBraces({ base.GruvboxBlue }),
- cssFunctionName({ base.GruvboxYellow }),
- cssIdentifier({ base.GruvboxOrange }),
- cssClassName({ base.GruvboxGreen }),
- cssColor({ base.GruvboxBlue }),
- cssSelectorOp({ base.GruvboxBlue }),
- cssSelectorOp2({ base.GruvboxBlue }),
- cssImportant({ base.GruvboxGreen }),
- cssVendor({ base.GruvboxFg1 }),
- cssTextProp({ base.GruvboxAqua }),
- cssAnimationProp({ base.GruvboxAqua }),
- cssUIProp({ base.GruvboxYellow }),
- cssTransformProp({ base.GruvboxAqua }),
- cssTransitionProp({ base.GruvboxAqua }),
- cssPrintProp({ base.GruvboxAqua }),
- cssPositioningProp({ base.GruvboxYellow }),
- cssBoxProp({ base.GruvboxAqua }),
- cssFontDescriptorProp({ base.GruvboxAqua }),
- cssFlexibleBoxProp({ base.GruvboxAqua }),
- cssBorderOutlineProp({ base.GruvboxAqua }),
- cssBackgroundProp({ base.GruvboxAqua }),
- cssMarginProp({ base.GruvboxAqua }),
- cssListProp({ base.GruvboxAqua }),
- cssTableProp({ base.GruvboxAqua }),
- cssFontProp({ base.GruvboxAqua }),
- cssPaddingProp({ base.GruvboxAqua }),
- cssDimensionProp({ base.GruvboxAqua }),
- cssRenderProp({ base.GruvboxAqua }),
- cssColorProp({ base.GruvboxAqua }),
- cssGeneratedContentProp({ base.GruvboxAqua }),
- }
-end)
-
-local js = lush(function()
- return {
- javaScriptBraces({ base.GruvboxFg1 }),
- javaScriptFunction({ base.GruvboxAqua }),
- javaScriptIdentifier({ base.GruvboxRed }),
- javaScriptMember({ base.GruvboxBlue }),
- javaScriptNumber({ base.GruvboxPurple }),
- javaScriptNull({ base.GruvboxPurple }),
- javaScriptParens({ base.GruvboxFg3 }),
- javascriptImport({ base.GruvboxAqua }),
- javascriptExport({ base.GruvboxAqua }),
- javascriptClassKeyword({ base.GruvboxAqua }),
- javascriptClassExtends({ base.GruvboxAqua }),
- javascriptDefault({ base.GruvboxAqua }),
- javascriptClassName({ base.GruvboxYellow }),
- javascriptClassSuperName({ base.GruvboxYellow }),
- javascriptGlobal({ base.GruvboxYellow }),
- javascriptEndColons({ base.GruvboxFg1 }),
- javascriptFuncArg({ base.GruvboxFg1 }),
- javascriptGlobalMethod({ base.GruvboxFg1 }),
- javascriptNodeGlobal({ base.GruvboxFg1 }),
- javascriptBOMWindowProp({ base.GruvboxFg1 }),
- javascriptArrayMethod({ base.GruvboxFg1 }),
- javascriptArrayStaticMethod({ base.GruvboxFg1 }),
- javascriptCacheMethod({ base.GruvboxFg1 }),
- javascriptDateMethod({ base.GruvboxFg1 }),
- javascriptMathStaticMethod({ base.GruvboxFg1 }),
- javascriptProp({ base.GruvboxFg1 }),
- javascriptURLUtilsProp({ base.GruvboxFg1 }),
- javascriptBOMNavigatorProp({ base.GruvboxFg1 }),
- javascriptDOMDocMethod({ base.GruvboxFg1 }),
- javascriptDOMDocProp({ base.GruvboxFg1 }),
- javascriptBOMLocationMethod({ base.GruvboxFg1 }),
- javascriptBOMWindowMethod({ base.GruvboxFg1 }),
- javascriptStringMethod({ base.GruvboxFg1 }),
- javascriptVariable({ base.GruvboxOrange }),
- javascriptClassSuper({ base.GruvboxOrange }),
- javascriptFuncKeyword({ base.GruvboxAqua }),
- javascriptAsyncFunc({ base.GruvboxAqua }),
- javascriptClassStatic({ base.GruvboxOrange }),
- javascriptOperator({ base.GruvboxRed }),
- javascriptForOperator({ base.GruvboxRed }),
- javascriptYield({ base.GruvboxRed }),
- javascriptExceptions({ base.GruvboxRed }),
- javascriptMessage({ base.GruvboxRed }),
- javascriptTemplateSB({ base.GruvboxAqua }),
- javascriptTemplateSubstitution({ base.GruvboxFg1 }),
- javascriptLabel({ base.GruvboxFg1 }),
- javascriptObjectLabel({ base.GruvboxFg1 }),
- javascriptPropertyName({ base.GruvboxFg1 }),
- javascriptLogicSymbols({ base.GruvboxFg1 }),
- javascriptArrowFunc({ base.GruvboxYellow }),
- javascriptDocParamName({ base.GruvboxFg4 }),
- javascriptDocTags({ base.GruvboxFg4 }),
- javascriptDocNotation({ base.GruvboxFg4 }),
- javascriptDocParamType({ base.GruvboxFg4 }),
- javascriptDocNamedParamType({ base.GruvboxFg4 }),
- javascriptBrackets({ base.GruvboxFg1 }),
- javascriptDOMElemAttrs({ base.GruvboxFg1 }),
- javascriptDOMEventMethod({ base.GruvboxFg1 }),
- javascriptDOMNodeMethod({ base.GruvboxFg1 }),
- javascriptDOMStorageMethod({ base.GruvboxFg1 }),
- javascriptHeadersMethod({ base.GruvboxFg1 }),
- javascriptAsyncFuncKeyword({ base.GruvboxRed }),
- javascriptAwaitFuncKeyword({ base.GruvboxRed }),
- jsClassKeyword({ base.GruvboxAqua }),
- jsExtendsKeyword({ base.GruvboxAqua }),
- jsExportDefault({ base.GruvboxAqua }),
- jsTemplateBraces({ base.GruvboxAqua }),
- jsGlobalNodeObjects({ base.GruvboxBlue }),
- jsGlobalObjects({ base.GruvboxBlue }),
- jsObjectKey({ base.GruvboxGreenBold }),
- jsFunction({ base.GruvboxAqua }),
- jsFuncCall({ base.GruvboxBlue }),
- jsFuncParens({ base.GruvboxFg3 }),
- jsParens({ base.GruvboxFg3 }),
- jsNull({ base.GruvboxPurple }),
- jsUndefined({ base.GruvboxPurple }),
- jsClassDefinition({ base.GruvboxYellow }),
- jsOperatorKeyword({ base.GruvboxRed }),
- }
-end)
-
-local typescript = lush(function()
- return {
- typescriptReserved({ base.GruvboxAqua }),
- typescriptLabel({ base.GruvboxAqua }),
- typescriptFuncKeyword({ base.GruvboxAqua }),
- typescriptIdentifier({ base.GruvboxOrange }),
- typescriptBraces({ base.GruvboxOrange }),
- typescriptEndColons({ base.GruvboxFg1 }),
- typescriptDOMObjects({ base.GruvboxFg1 }),
- typescriptAjaxMethods({ base.GruvboxFg1 }),
- typescriptLogicSymbols({ base.GruvboxOrange }),
- typescriptDocSeeTag({ base.Comment }),
- typescriptDocParam({ base.Comment }),
- typescriptDocTags({ base.Comment }),
- typescriptGlobalObjects({ base.GruvboxFg1 }),
- typescriptParens({ base.GruvboxOrange }),
- typescriptOpSymbols({ base.GruvboxOrange }),
- typescriptHtmlElemProperties({ base.GruvboxFg1 }),
- typescriptNull({ base.GruvboxPurple }),
- typescriptInterpolationDelimiter({ base.GruvboxAqua }),
- typescriptArrowFunc({ base.GruvboxFg1 }),
- typescriptCharacter({ base.GruvboxOrange }),
- typescriptUnion({ base.GruvboxOrange }),
- typescriptDotNotation({ base.GruvboxOrange }),
- typescriptGlobalObjectDot({ typescriptDotNotation }),
- }
-end)
-
-local jsx = lush(function()
- return {
- jsxTagName({ base.GruvboxAqua }),
- jsxComponentName({ base.GruvboxGreen }),
- jsxCloseString({ base.GruvboxFg4 }),
- jsxAttrib({ base.GruvboxYellow }),
- jsxEqual({ base.GruvboxAqua }),
- }
-end)
-
-local purescript = lush(function()
- return {
- purescriptModuleKeyword({ base.GruvboxAqua }),
- purescriptModuleName({ base.GruvboxFg1 }),
- purescriptWhere({ base.GruvboxAqua }),
- purescriptDelimiter({ base.GruvboxFg4 }),
- purescriptType({ base.GruvboxFg1 }),
- purescriptImportKeyword({ base.GruvboxAqua }),
- purescriptHidingKeyword({ base.GruvboxAqua }),
- purescriptAsKeyword({ base.GruvboxAqua }),
- purescriptStructure({ base.GruvboxAqua }),
- purescriptOperator({ base.GruvboxBlue }),
- purescriptTypeVar({ base.GruvboxFg1 }),
- purescriptConstructor({ base.GruvboxFg1 }),
- purescriptFunction({ base.GruvboxFg1 }),
- purescriptConditional({ base.GruvboxOrange }),
- purescriptBacktick({ base.GruvboxOrange }),
- }
-end)
-
-local coffeescript = lush(function()
- return {
- coffeeExtendedOp({ base.GruvboxFg3 }),
- coffeeSpecialOp({ base.GruvboxFg3 }),
- coffeeCurly({ base.GruvboxOrange }),
- coffeeParen({ base.GruvboxFg3 }),
- coffeeBracket({ base.GruvboxOrange }),
- }
-end)
-
-local ruby = lush(function()
- return {
- rubyStringDelimiter({ base.GruvboxGreen }),
- rubyInterpolationDelimiter({ base.GruvboxAqua }),
- }
-end)
-
-local objc = lush(function()
- return { objcTypeModifier({ base.GruvboxRed }), objcDirective({ base.GruvboxBlue }) }
-end)
-
-local moonscript = lush(function()
- return {
- moonSpecialOp({ base.GruvboxFg3 }),
- moonExtendedOp({ base.GruvboxFg3 }),
- moonFunction({ base.GruvboxFg3 }),
- moonObject({ base.GruvboxYellow }),
- }
-end)
-
-local elixir = lush(function()
- return {
- elixirDocString({ base.Comment }),
- elixirStringDelimiter({ base.GruvboxGreen }),
- elixirInterpolationDelimiter({ base.GruvboxAqua }),
- elixirModuleDeclaration({ base.GruvboxYellow }),
- }
-end)
-
-local scala = lush(function()
- return {
- scalaNameDefinition({ base.GruvboxFg1 }),
- scalaCaseFollowing({ base.GruvboxFg1 }),
- scalaCapitalWord({ base.GruvboxFg1 }),
- scalaTypeExtension({ base.GruvboxFg1 }),
- scalaKeyword({ base.GruvboxRed }),
- scalaKeywordModifier({ base.GruvboxRed }),
- scalaSpecial({ base.GruvboxAqua }),
- scalaOperator({ base.GruvboxFg1 }),
- scalaTypeDeclaration({ base.GruvboxYellow }),
- scalaTypeTypePostDeclaration({ base.GruvboxYellow }),
- scalaInstanceDeclaration({ base.GruvboxFg1 }),
- scalaInterpolation({ base.GruvboxAqua }),
- }
-end)
-
-local markdown = lush(function()
- return {
- markdownItalic({ fg = base.GruvboxFg3.fg.hex, gui = styles.italic }),
- markdownBold({ fg = base.GruvboxFg3.fg.hex, gui = styles.bold }),
- markdownBoldItalic({
- fg = base.GruvboxFg3.fg.hex,
- gui = table_concat({ styles.bold, styles.italic }, ","),
- }),
- markdownH1({ base.GruvboxGreenBold }),
- markdownH2({ markdownH1 }),
- markdownH3({ base.GruvboxYellowBold }),
- markdownH4({ markdownH3 }),
- markdownH5({ base.GruvboxYellow }),
- markdownH6({ markdownH5 }),
- markdownCode({ base.GruvboxAqua }),
- markdownCodeBlock({ base.GruvboxAqua }),
- markdownCodeDelimiter({ base.GruvboxAqua }),
- markdownBlockquote({ base.GruvboxGray }),
- markdownListMarker({ base.GruvboxGray }),
- markdownOrderedListMarker({ base.GruvboxGray }),
- markdownRule({ base.GruvboxGray }),
- markdownHeadingRule({ base.GruvboxGray }),
- markdownUrlDelimiter({ base.GruvboxFg3 }),
- markdownLinkDelimiter({ base.GruvboxFg3 }),
- markdownLinkTextDelimiter({ base.GruvboxFg3 }),
- markdownHeadingDelimiter({ base.GruvboxOrange }),
- markdownUrl({ base.GruvboxPurple }),
- markdownUrlTitleDelimiter({ base.GruvboxGreen }),
- markdownLinkText({ fg = base.GruvboxGray.fg.hex, gui = styles.underline }),
- markdownIdDeclaration({ markdownLinkText }),
- }
-end)
-
-local haskell = lush(function()
- return {
- haskellType({ base.GruvboxBlue }),
- haskellIdentifier({ base.GruvboxAqua }),
- haskellSeparator({ base.GruvboxFg4 }),
- haskellDelimiter({ base.GruvboxOrange }),
- haskellOperators({ base.GruvboxPurple }),
- haskellBacktick({ base.GruvboxOrange }),
- haskellStatement({ base.GruvboxPurple }),
- haskellConditional({ base.GruvboxPurple }),
- haskellLet({ base.GruvboxRed }),
- haskellDefault({ base.GruvboxRed }),
- haskellWhere({ base.GruvboxRed }),
- haskellBottom({ base.GruvboxRedBold }),
- haskellImportKeywords({ base.GruvboxPurpleBold }),
- haskellDeclKeyword({ base.GruvboxOrange }),
- haskellDecl({ base.GruvboxOrange }),
- haskellDeriving({ base.GruvboxPurple }),
- haskellAssocType({ base.GruvboxAqua }),
- haskellNumber({ base.GruvboxAqua }),
- haskellPragma({ base.GruvboxRedBold }),
- haskellTH({ base.GruvboxAquaBold }),
- haskellForeignKeywords({ base.GruvboxGreen }),
- haskellKeyword({ base.GruvboxRed }),
- haskellFloat({ base.GruvboxAqua }),
- haskellInfix({ base.GruvboxPurple }),
- haskellQuote({ base.GruvboxGreenBold }),
- haskellShebang({ base.GruvboxYellowBold }),
- haskellLiquid({ base.GruvboxPurpleBold }),
- haskellQuasiQuoted({ base.GruvboxBlueBold }),
- haskellRecursiveDo({ base.GruvboxPurple }),
- haskellQuotedType({ base.GruvboxRed }),
- haskellPreProc({ base.GruvboxFg4 }),
- haskellTypeRoles({ base.GruvboxRedBold }),
- haskellTypeForall({ base.GruvboxRed }),
- haskellPatternKeyword({ base.GruvboxBlue }),
- }
-end)
-
-local json = lush(function()
- return {
- jsonKeyword({ base.GruvboxGreen }),
- jsonQuote({ base.GruvboxGreen }),
- jsonBraces({ base.GruvboxFg1 }),
- jsonString({ base.GruvboxFg1 }),
- }
-end)
-
-local csharp = lush(function()
- return {
- csBraces({ base.GruvboxFg1 }),
- csEndColon({ base.GruvboxFg1 }),
- csLogicSymbols({ base.GruvboxFg1 }),
- csParens({ base.GruvboxFg3 }),
- csOpSymbols({ base.GruvboxFg3 }),
- csInterpolationDelimiter({ base.GruvboxFg3 }),
- csInterpolationAlignDel({ base.GruvboxAquaBold }),
- csInterpolationFormat({ base.GruvboxAqua }),
- csInterpolationFormatDel({ base.GruvboxAquaBold }),
- }
-end)
-
-local rust = lush(function()
- return {
- rustSigil({ base.GruvboxOrange }),
- rustEscape({ base.GruvboxAqua }),
- rustStringContinuation({ base.GruvboxAqua }),
- rustEnum({ base.GruvboxAqua }),
- rustStructure({ base.GruvboxAqua }),
- rustModPathSep({ base.GruvboxFg2 }),
- rustCommentLineDoc({ base.GruvboxOrange }),
- rustCommentBlockDoc({ base.GruvboxOrange }),
- rustDefault({ base.GruvboxAqua }),
- }
-end)
-
-local ocaml = lush(function()
- return {
- ocamlOperator({ base.GruvboxFg1 }),
- ocamlKeyChar({ base.GruvboxOrange }),
- ocamlArrow({ base.GruvboxOrange }),
- ocamlInfixOpKeyword({ base.GruvboxRed }),
- ocamlConstructor({ base.GruvboxOrange }),
- }
-end)
-
-local lua = lush(function()
- return {
- luaIn({ base.GruvboxRed }),
- luaFunction({ base.GruvboxAqua }),
- luaTable({ base.GruvboxOrange }),
- }
-end)
-
-local langs = lush.merge({
- golang,
- java,
+local xml = {
+ xmlTag = base.GruvboxAquaBold,
+ xmlEndTag = base.GruvboxAquaBold,
+ xmlTagName = base.GruvboxBlue,
+ xmlEqual = base.GruvboxBlue,
+ docbkKeyword = base.GruvboxAquaBold,
+ xmlDocTypeDecl = base.GruvboxGray,
+ xmlDocTypeKeyword = base.GruvboxPurple,
+ xmlCdataStart = base.GruvboxGray,
+ xmlCdataCdata = base.GruvboxPurple,
+ dtdFunction = base.GruvboxGray,
+ dtdTagName = base.GruvboxPurple,
+ xmlAttrib = base.GruvboxOrange,
+ xmlProcessingDelim = base.GruvboxGray,
+ dtdParamEntityPunct = base.GruvboxGray,
+ dtdParamEntityDPunct = base.GruvboxGray,
+ xmlAttribPunct = base.GruvboxGray,
+ xmlEntity = base.GruvboxRed,
+ xmlEntityPunct = base.GruvboxRed,
+}
+
+local purescript = {
+ purescriptModuleKeyword = base.GruvboxAqua,
+ purescriptModuleName = base.GruvboxFg1,
+ purescriptWhere = base.GruvboxAqua,
+ purescriptDelimiter = base.GruvboxFg4,
+ purescriptType = base.GruvboxFg1,
+ purescriptImportKeyword = base.GruvboxAqua,
+ purescriptHidingKeyword = base.GruvboxAqua,
+ purescriptAsKeyword = base.GruvboxAqua,
+ purescriptStructure = base.GruvboxAqua,
+ purescriptOperator = base.GruvboxBlue,
+ purescriptTypeVar = base.GruvboxFg1,
+ purescriptConstructor = base.GruvboxFg1,
+ purescriptFunction = base.GruvboxFg1,
+ purescriptConditional = base.GruvboxOrange,
+ purescriptBacktick = base.GruvboxOrange,
+}
+
+local coffeescript = {
+ coffeeExtendedOp = base.GruvboxFg3,
+ coffeeSpecialOp = base.GruvboxFg3,
+ coffeeCurly = base.GruvboxOrange,
+ coffeeParen = base.GruvboxFg3,
+ coffeeBracket = base.GruvboxOrange,
+}
+
+local objc = { objcTypeModifier = base.GruvboxRed, objcDirective = base.GruvboxBlue }
+
+local moonscript = {
+ moonSpecialOp = base.GruvboxFg3,
+ moonExtendedOp = base.GruvboxFg3,
+ moonFunction = base.GruvboxFg3,
+ moonObject = base.GruvboxYellow,
+}
+
+local elixir = {
+ elixirDocString = base.Comment,
+ elixirStringDelimiter = base.GruvboxGreen,
+ elixirInterpolationDelimiter = base.GruvboxAqua,
+ elixirModuleDeclaration = base.GruvboxYellow,
+}
+
+local markdown = {
+ markdownItalic = { fg = base.GruvboxFg3.fg, gui = styles.italic },
+ markdownBold = { fg = base.GruvboxFg3.fg, gui = styles.bold },
+ markdownBoldItalic = {
+ fg = base.GruvboxFg3.fg,
+ gui = table.concat({ styles.bold, styles.italic }, ","),
+ },
+ markdownH1 = base.GruvboxGreenBold,
+ markdownH2 = "markdownH1",
+ markdownH3 = base.GruvboxYellowBold,
+ markdownH4 = "markdownH3",
+ markdownH5 = base.GruvboxYellow,
+ markdownH6 = "markdownH5",
+ markdownCode = base.GruvboxAqua,
+ markdownCodeBlock = base.GruvboxAqua,
+ markdownCodeDelimiter = base.GruvboxAqua,
+ markdownBlockquote = base.GruvboxGray,
+ markdownListMarker = base.GruvboxGray,
+ markdownOrderedListMarker = base.GruvboxGray,
+ markdownRule = base.GruvboxGray,
+ markdownHeadingRule = base.GruvboxGray,
+ markdownUrlDelimiter = base.GruvboxFg3,
+ markdownLinkDelimiter = base.GruvboxFg3,
+ markdownLinkTextDelimiter = base.GruvboxFg3,
+ markdownHeadingDelimiter = base.GruvboxOrange,
+ markdownUrl = base.GruvboxPurple,
+ markdownUrlTitleDelimiter = base.GruvboxGreen,
+ markdownLinkText = { fg = base.GruvboxGray.fg, gui = styles.underline },
+ markdownIdDeclaration = "markdownLinkText",
+}
+
+local haskell = {
+ haskellType = base.GruvboxBlue,
+ haskellIdentifier = base.GruvboxAqua,
+ haskellSeparator = base.GruvboxFg4,
+ haskellDelimiter = base.GruvboxOrange,
+ haskellOperators = base.GruvboxPurple,
+ haskellBacktick = base.GruvboxOrange,
+ haskellStatement = base.GruvboxPurple,
+ haskellConditional = base.GruvboxPurple,
+ haskellLet = base.GruvboxRed,
+ haskellDefault = base.GruvboxRed,
+ haskellWhere = base.GruvboxRed,
+ haskellBottom = base.GruvboxRedBold,
+ haskellImportKeywords = base.GruvboxPurpleBold,
+ haskellDeclKeyword = base.GruvboxOrange,
+ haskellDecl = base.GruvboxOrange,
+ haskellDeriving = base.GruvboxPurple,
+ haskellAssocType = base.GruvboxAqua,
+ haskellNumber = base.GruvboxAqua,
+ haskellPragma = base.GruvboxRedBold,
+ haskellTH = base.GruvboxAquaBold,
+ haskellForeignKeywords = base.GruvboxGreen,
+ haskellKeyword = base.GruvboxRed,
+ haskellFloat = base.GruvboxAqua,
+ haskellInfix = base.GruvboxPurple,
+ haskellQuote = base.GruvboxGreenBold,
+ haskellShebang = base.GruvboxYellowBold,
+ haskellLiquid = base.GruvboxPurpleBold,
+ haskellQuasiQuoted = base.GruvboxBlueBold,
+ haskellRecursiveDo = base.GruvboxPurple,
+ haskellQuotedType = base.GruvboxRed,
+ haskellPreProc = base.GruvboxFg4,
+ haskellTypeRoles = base.GruvboxRedBold,
+ haskellTypeForall = base.GruvboxRed,
+ haskellPatternKeyword = base.GruvboxBlue,
+}
+
+local langs = utils.merge({
xml,
- viml,
- c,
- python,
- clojure,
- html,
- css,
- js,
- typescript,
- jsx,
purescript,
coffeescript,
- ruby,
objc,
moonscript,
elixir,
- scala,
markdown,
haskell,
- json,
- csharp,
- rust,
- ocaml,
- lua,
})
return langs
diff --git a/lua/gruvbox/plugins/highlights.lua b/lua/gruvbox/plugins/highlights.lua
index e4db7d5..dfb0f1d 100644
--- a/lua/gruvbox/plugins/highlights.lua
+++ b/lua/gruvbox/plugins/highlights.lua
@@ -1,299 +1,296 @@
-- 3rd party plugins highlights
-local lush = require("lush")
local base = require("gruvbox.base")
local styles = require("gruvbox.settings").styles
+local colors = require("gruvbox.colors")
-local plugins = lush(function()
- return {
- -- netrw
- netrwDir({ base.GruvboxAqua }),
- netrwClassify({ base.GruvboxAqua }),
- netrwLink({ base.GruvboxGray }),
- netrwSymLink({ base.GruvboxFg1 }),
- netrwExe({ base.GruvboxYellow }),
- netrwComment({ base.GruvboxGray }),
- netrwList({ base.GruvboxBlue }),
- netrwHelpCmd({ base.GruvboxAqua }),
- netrwCmdSep({ base.GruvboxFg3 }),
- netrwVersion({ base.GruvboxGreen }),
- -- nvim-treesitter
- TSNone({}),
- TSError({ }),
- TSTitle({ base.Title }),
- TSLiteral({ base.String }),
- TSURI({ base.Underlined }),
- TSVariable({ base.GruvboxFg1 }),
- TSPunctDelimiter({ base.Delimiter }),
- TSPunctBracket({ base.Delimiter }),
- TSPunctSpecial({ base.Delimiter }),
- TSConstant({ base.Constant }),
- TSConstBuiltin({ base.Special }),
- TSConstMacro({ base.Define }),
- TSString({ base.String }),
- TSStringRegex({ base.String }),
- TSStringEscape({ base.SpecialChar }),
- TSCharacter({ base.Character }),
- TSNumber({ base.Number }),
- TSBoolean({ base.Boolean }),
- TSFloat({ base.Float }),
- TSFunction({ base.Function }),
- TSFuncBuiltin({ base.Special }),
- TSFuncMacro({ base.Macro }),
- TSParameter({ base.Identifier }),
- TSParameterReference({ TSParameter }),
- TSMethod({ base.Function }),
- TSField({ base.Identifier }),
- TSProperty({ base.Identifier }),
- TSConstructor({ base.Special }),
- TSAnnotation({ base.PreProc }),
- TSAttribute({ base.PreProc }),
- TSNamespace({ base.Include }),
- TSConditional({ base.Conditional }),
- TSRepeat({ base.Repeat }),
- TSLabel({ base.Label }),
- TSOperator({ base.Operator }),
- TSKeyword({ base.Keyword }),
- TSKeywordFunction({ base.Keyword }),
- TSKeywordOperator({ TSOperator }),
- TSException({ base.Exception }),
- TSType({ base.Type }),
- TSTypeBuiltin({ base.Type }),
- TSInclude({ base.Include }),
- TSVariableBuiltin({ base.Special }),
- TSText({ TSNone }),
- TSStrong({ gui = styles.bold }),
- TSEmphasis({ gui = styles.italic_strings }),
- TSUnderline({ gui = styles.underline }),
- TSComment({ base.Comment }),
- TSStructure({ base.GruvboxOrange }),
- TSTag({ base.GruvboxOrange }),
- TSTagDelimiter({ base.GruvboxGreen }),
+local plugins = {
+ -- netrw
+ netrwDir = base.GruvboxAqua,
+ netrwClassify = base.GruvboxAqua,
+ netrwLink = base.GruvboxGray,
+ netrwSymLink = base.GruvboxFg1,
+ netrwExe = base.GruvboxYellow,
+ netrwComment = base.GruvboxGray,
+ netrwList = base.GruvboxBlue,
+ netrwHelpCmd = base.GruvboxAqua,
+ netrwCmdSep = base.GruvboxFg3,
+ netrwVersion = base.GruvboxGreen,
+ -- nvim-treesitter
+ TSNone = {},
+ TSError = base.Error,
+ TSTitle = base.Title,
+ TSLiteral = base.String,
+ TSURI = base.Underlined,
+ TSVariable = base.GruvboxFg1,
+ TSPunctDelimiter = base.Delimiter,
+ TSPunctBracket = base.Delimiter,
+ TSPunctSpecial = base.Delimiter,
+ TSConstant = base.Constant,
+ TSConstBuiltin = base.Special,
+ TSConstMacro = base.Define,
+ TSString = base.String,
+ TSStringRegex = base.String,
+ TSStringEscape = base.SpecialChar,
+ TSCharacter = base.Character,
+ TSNumber = base.Number,
+ TSBoolean = base.Boolean,
+ TSFloat = base.Float,
+ TSFunction = base.Function,
+ TSFuncBuiltin = base.Special,
+ TSFuncMacro = base.Macro,
+ TSParameter = base.Identifier,
+ TSParameterReference = "TSParameter",
+ TSMethod = base.Function,
+ TSField = base.Identifier,
+ TSProperty = base.Identifier,
+ TSConstructor = base.Special,
+ TSAnnotation = base.PreProc,
+ TSAttribute = base.PreProc,
+ TSNamespace = base.Include,
+ TSConditional = base.Conditional,
+ TSRepeat = base.Repeat,
+ TSLabel = base.Label,
+ TSOperator = base.Operator,
+ TSKeyword = base.Keyword,
+ TSKeywordFunction = base.Keyword,
+ TSKeywordOperator = "TSOperator",
+ TSException = base.Exception,
+ TSType = base.Type,
+ TSTypeBuiltin = base.Type,
+ TSInclude = base.Include,
+ TSVariableBuiltin = base.Special,
+ TSText = "TSNone",
+ TSStrong = { gui = styles.bold },
+ TSEmphasis = { gui = styles.italic_strings },
+ TSUnderline = { gui = styles.underline },
+ TSComment = base.Comment,
+ TSStructure = base.GruvboxOrange,
+ TSTag = base.GruvboxOrange,
+ TSTagDelimiter = base.GruvboxGreen,
- -- telescope.nvim
- TelescopeSelection({ base.GruvboxOrangeBold }),
- TelescopeSlectionCaret({ base.GruvboxRed }),
- TelescopeMultiSelection({ base.GruvboxGray }),
- TelescopeNormal({ base.GruvboxFg1 }),
- TelescopeBorder({ TelescopeNormal }),
- TelescopePromptBorder({ TelescopeNormal }),
- TelescopeResultsBorder({ TelescopeNormal }),
- TelescopePreviewBorder({ TelescopeNormal }),
- TelescopeMatching({ base.GruvboxBlue }),
- TelescopePromptPrefix({ base.GruvboxRed }),
- TelescopePrompt({ TelescopeNormal }),
- -- lspsaga.nvim
- LspSagaDiagnosticBorder({ base.NormalNC }),
- LspSagaDiagnosticHeader({ base.GruvboxRed }),
- LspSagaDiagnosticTruncateLine({ base.NormalNC }),
- LspFloatWinBorder({ base.NormalNC }),
- LspSagaBorderTitle({ base.Title }),
- TargetWord({ base.Error }),
- ReferencesCount({ base.Title }),
- ReferencesIcon({ base.Special }),
- DefinitionCount({ base.Title }),
- TargetFileName({ base.Comment }),
- DefinitionIcon({ base.Special }),
- ProviderTruncateLine({ base.NormalNC }),
- SagaShadow({ base.GruvboxBg0 }),
- LspSagaFinderSelection({ base.Search }),
- DiagnosticTruncateLine({ base.NormalNC }),
- DiagnosticWarning({ base.DiagnosticWarn }),
- DiagnosticInformation({ base.DiagnosticInfo }),
- DefinitionPreviewTitle({ base.Title }),
- LspSagaShTruncateLine({ base.NormalNC }),
- LspSagaDocTruncateLine({ base.NormalNC }),
- LineDiagTuncateLine({ base.NormalNC }),
- LspSagaCodeActionTitle({ base.Title }),
- LspSagaCodeActionTruncateLine({ base.NormalNC }),
- LspSagaCodeActionContent({ base.Normal }),
- LspSagaRenamePromptPrefix({ base.GruvboxFg2 }),
- LspSagaRenameBorder({ gui = styles.bold }),
- LspSagaHoverBorder({ gui = styles.bold }),
- LspSagaSignatureHelpBorder({ gui = styles.bold }),
- LspSagaCodeActionBorder({ gui = styles.bold }),
- LspSagaAutoPreview({}),
- LspSagaDefPreviewBorder({ gui = styles.bold }),
- LspLinesDiagBorder({ gui = styles.bold }),
- -- vim-startify
- StartifyBracket({ base.Delimiter }),
- StartifyFile({ base.Identifier }),
- StartifyNumber({ base.Number }),
- StartifyPath({ base.Directory }),
- StartifySlash({ base.Delimiter }),
- StartifySection({ base.Statement }),
- StartifySpecial({ base.Comment }),
- StartifyHeader({ base.Title }),
- StartifyFooter({ base.Title }),
- StartifyVar({ StartifyPath }),
- StartifySelect({ base.Title }),
- -- vim-signify
- SignifySignAdd({ base.GruvboxGreenSign }),
- SignifySignChange({ base.GruvboxAquaSign }),
- SignifySignDelete({ base.GruvboxRedSign }),
- -- syntastic
- SyntasticError({ base.GruvboxRedUnderline }),
- SyntasticWarning({ base.GruvboxYellowUnderline }),
- SyntasticErrorSign({ base.GruvboxRedSign }),
- SyntasticWarningSign({ base.GruvboxYellowSign }),
- -- termdebug
- debugPC({ bg = colors.faded_blue }),
- debugBreakpoint({ base.GruvboxRedSign }),
- -- vim-dirvish
- DirvishPathTail({ base.GruvboxAqua }),
- DirvishArg({ base.GruvboxYellow }),
- -- nerdtree
- NERDTreeDir({ base.GruvboxAqua }),
- NERDTreeDirSlash({ base.GruvboxAqua }),
- NERDTreeOpenable({ base.GruvboxOrange }),
- NERDTreeClosable({ base.GruvboxOrange }),
- NERDTreeFile({ base.GruvboxFg1 }),
- NERDTreeExecFile({ base.GruvboxYellow }),
- NERDTreeUp({ base.GruvboxGray }),
- NERDTreeCWD({ base.GruvboxGreen }),
- NERDTreeHelp({ base.GruvboxFg1 }),
- NERDTreeToggleOn({ base.GruvboxGreen }),
- NERDTreeToggleOff({ base.GruvboxRed }),
- -- coc.nvim
- CocErrorSign({ base.GruvboxRedSign }),
- CocWarningSign({ base.GruvboxOrangeSign }),
- CocInfoSign({ base.GruvboxBlueSign }),
- CocHintSign({ base.GruvboxAquaSign }),
- CocErrorFloat({ base.GruvboxRed }),
- CocWarningFloat({ base.GruvboxOrange }),
- CocInfoFloat({ base.GruvboxBlue }),
- CocHintFloat({ base.GruvboxAqua }),
- CocDiagnosticsError({ base.GruvboxRed }),
- CocDiagnosticsWarning({ base.GruvboxOrange }),
- CocDiagnosticsInfo({ base.GruvboxBlue }),
- CocDiagnosticsHint({ base.GruvboxAqua }),
- CocSelectedText({ base.GruvboxRed }),
- CocCodeLens({ base.GruvboxGray }),
- CocErrorHighlight({ base.GruvboxRedUnderline }),
- CocWarningHighlight({ base.GruvboxOrangeUnderline }),
- CocInfoHighlight({ base.GruvboxBlueUnderline }),
- CocHintHighlight({ base.GruvboxAquaUnderline }),
- -- ale.vim
- ALEError({ base.GruvboxRedUnderline }),
- ALEWarning({ base.GruvboxYellowUnderline }),
- ALEInfo({ base.GruvboxBlueUnderline }),
- ALEErrorSign({ base.GruvboxRedSign }),
- ALEWarningSign({ base.GruvboxYellowSign }),
- ALEInfoSign({ base.GruvboxBlueSign }),
- ALEVirtualTextError({ base.GruvboxRed }),
- ALEVirtualTextWarning({ base.GruvboxYellow }),
- ALEVirtualTextInfo({ base.GruvboxBlue }),
- -- vim-buftabline
- BufTabLineCurrent({ base.TabLineSel }),
- BufTabLineActive({ base.PmenuSel }),
- BufTabLineHidden({ base.TabLine }),
- BufTabLineFill({ base.TabLineFill }),
- BufTabLineModifiedCurrent({ BufTabLineCurrent }),
- BufTabLineModifiedActive({ BufTabLineActive }),
- BufTabLineModifiedHidden({ BufTabLineHidden }),
- -- ctrlP
- CtrlPMatch({ base.Identifier }),
- CtrlPNoEntries({ base.Error }),
- CtrlPPrtBase({ base.Comment }),
- CtrlPPrtCursor({ base.Constant }),
- CtrlPLinePre({ fg = base.GruvboxBg2.fg.hex }),
- CtrlPMode1({ base.Character }),
- CtrlPMode2({ base.LineNr }),
- CtrlPStats({ base.Function }),
- -- fzf.vim
- Fzf1({ fg = base.GruvboxBlue.fg.hex, bg = base.GruvboxBg1.fg.hex }),
- Fzf2({ fg = base.GruvboxOrange.fg.hex, bg = base.GruvboxBg1.fg.hex }),
- Fzf3({ fg = base.GruvboxFg4.fg.hex, bg = base.GruvboxBg1.fg.hex }),
- ShowMarksHLl({ base.GruvboxBlueSign }),
- ShowMarksHLu({ base.GruvboxBlueSign }),
- ShowMarksHLo({ base.GruvboxBlueSign }),
- ShowMarksHLm({ base.GruvboxBlueSign }),
- -- git-gutter
- GitGutterAdd({ base.GruvboxGreenSign }),
- GitGutterChange({ base.GruvboxAquaSign }),
- GitGutterDelete({ base.GruvboxRedSign }),
- GitGutterChangeDelete({ base.GruvboxAquaSign }),
- -- gitsigns.nvim
- GitSignsAdd({ base.GruvboxGreenSign }),
- GitSignsChange({ base.GruvboxAquaSign }),
- GitSignsDelete({ base.GruvboxRedSign }),
- GitSignsCurrentLineBlame({ base.NonText }),
- -- nvim-cmp
- CmpItemAbbr({ base.GruvboxFg0 }),
- CmpItemAbbrDeprecated({ base.GruvboxFg0 }),
- CmpItemAbbrMatch({ base.GruvboxBlue }),
- CmpItemAbbrMatchFuzzy({ base.GruvboxAqua }),
- CmpItemAbbrMatchFuzzy({ gui = styles.underline, fg = base.GruvboxBlue.fg.hex }),
- CmpItemKind({ base.GruvboxOrange }),
- CmpItemKindClass({ base.GruvboxGreen }),
- CmpItemKindConstructor({ base.GruvboxGreen }),
- CmpItemKindField({ base.GruvboxAqua }),
- CmpItemKindFile({ base.GruvboxOrange }),
- CmpItemKindFolder({ base.GruvboxOrange }),
- CmpItemKindFunction({ base.GruvboxPurple }),
- CmpItemKindInterface({ base.GruvboxGreen }),
- CmpItemKindKeyword({ base.Keyword }),
- CmpItemKindMethod({ base.GruvboxPurple }),
- CmpItemKindSnippet({ base.GruvboxYellow }),
- CmpItemKindText({ base.GruvboxFg0 }),
- CmpItemKindValue({ base.GruvboxOrange }),
- CmpItemKindVariable({ base.GruvboxBlue }),
- CmpItemMenu({ base.GruvboxGray }),
- -- LSP
- LspCodeLens({ base.GruvboxGray }),
- LspReferenceRead({ bg = base.GruvboxBg2.fg.hex, gui = styles.underline }),
- LspReferenceText({ bg = base.GruvboxBg2.fg.hex, gui = styles.underline }),
- LspReferenceWrite({ bg = base.GruvboxBg2.fg.hex, gui = styles.underline }),
- -- NOTE: Deprecated settings (see https://github.com/neovim/neovim/pull/15585)
- LspDiagnosticsDefaultError({ base.GruvboxRed }),
- LspDiagnosticsSignError({ base.GruvboxRedSign }),
- LspDiagnosticsUnderlineError({ base.GruvboxRedUnderline }),
- LspDiagnosticsDefaultWarning({ base.GruvboxYellow }),
- LspDiagnosticsSignWarning({ base.GruvboxYellowSign }),
- LspDiagnosticsUnderlineWarning({ base.GruvboxYellowUnderline }),
- LspDiagnosticsDefaultInformation({ base.GruvboxBlue }),
- LspDiagnosticsSignInformation({ base.GruvboxBlueSign }),
- LspDiagnosticsUnderlineInformation({ base.GruvboxBlueUnderline }),
- LspDiagnosticsDefaultHint({ base.GruvboxAqua }),
- LspDiagnosticsSignHint({ base.GruvboxAquaSign }),
- LspDiagnosticsUnderlineHint({ base.GruvboxAquaUnderline }),
- LspDiagnosticsFloatingError({ base.GruvboxRed }),
- LspDiagnosticsFloatingWarning({ base.GruvboxOrange }),
- LspDiagnosticsFloatingInformation({ base.GruvboxBlue }),
- LspDiagnosticsFloatingHint({ base.GruvboxAqua }),
- LspDiagnosticsVirtualTextError({ base.GruvboxRed }),
- LspDiagnosticsVirtualTextWarning({ base.GruvboxYellow }),
- LspDiagnosticsVirtualTextInformation({ base.GruvboxBlue }),
- LspDiagnosticsVirtualTextHint({ base.GruvboxAqua }),
- -- Diagnostic
- DiagnosticError({ base.GruvboxRed }),
- DiagnosticSignError({ base.GruvboxRedSign }),
- DiagnosticUnderlineError({ base.GruvboxRedUnderline }),
- DiagnosticWarn({ base.GruvboxYellow }),
- DiagnosticSignWarn({ base.GruvboxYellowSign }),
- DiagnosticUnderlineWarn({ base.GruvboxYellowUnderline }),
- DiagnosticInfo({ base.GruvboxBlue }),
- DiagnosticSignInfo({ base.GruvboxBlueSign }),
- DiagnosticUnderlineInfo({ base.GruvboxBlueUnderline }),
- DiagnosticHint({ base.GruvboxAqua }),
- DiagnosticSignHint({ base.GruvboxAquaSign }),
- DiagnosticUnderlineHint({ base.GruvboxAquaUnderline }),
- DiagnosticFloatingError({ base.GruvboxRed }),
- DiagnosticFloatingWarn({ base.GruvboxOrange }),
- DiagnosticFloatingInfo({ base.GruvboxBlue }),
- DiagnosticFloatingHint({ base.GruvboxAqua }),
- DiagnosticVirtualTextError({ base.GruvboxRed }),
- DiagnosticVirtualTextWarn({ base.GruvboxYellow }),
- DiagnosticVirtualTextInfo({ base.GruvboxBlue }),
- DiagnosticVirtualTextHint({ base.GruvboxAqua }),
- -- mail.vim
- mailQuoted1({ base.GruvboxAqua }),
- mailQuoted2({ base.GruvboxPurple }),
- mailQuoted3({ base.GruvboxYellow }),
- mailQuoted4({ base.GruvboxGreen }),
- mailQuoted5({ base.GruvboxRed }),
- mailQuoted6({ base.GruvboxOrange }),
- mailSignature({ base.Comment }),
- }
-end)
+ -- telescope.nvim
+ TelescopeSelection = base.GruvboxOrangeBold,
+ TelescopeSlectionCaret = base.GruvboxRed,
+ TelescopeMultiSelection = base.GruvboxGray,
+ TelescopeNormal = base.GruvboxFg1,
+ TelescopeBorder = "TelescopeNormal",
+ TelescopePromptBorder = "TelescopeNormal",
+ TelescopeResultsBorder = "TelescopeNormal",
+ TelescopePreviewBorder = "TelescopeNormal",
+ TelescopeMatching = base.GruvboxBlue,
+ TelescopePromptPrefix = base.GruvboxRed,
+ TelescopePrompt = "TelescopeNormal",
+ -- lspsaga.nvim
+ LspSagaDiagnosticBorder = base.NormalNC,
+ LspSagaDiagnosticHeader = base.GruvboxRed,
+ LspSagaDiagnosticTruncateLine = base.NormalNC,
+ LspFloatWinBorder = base.NormalNC,
+ LspSagaBorderTitle = base.Title,
+ TargetWord = base.Error,
+ ReferencesCount = base.Title,
+ ReferencesIcon = base.Special,
+ DefinitionCount = base.Title,
+ TargetFileName = base.Comment,
+ DefinitionIcon = base.Special,
+ ProviderTruncateLine = base.NormalNC,
+ SagaShadow = base.GruvboxBg0,
+ LspSagaFinderSelection = base.Search,
+ DiagnosticTruncateLine = base.NormalNC,
+ DiagnosticWarning = base.DiagnosticWarn,
+ DiagnosticInformation = base.DiagnosticInfo,
+ DefinitionPreviewTitle = base.Title,
+ LspSagaShTruncateLine = base.NormalNC,
+ LspSagaDocTruncateLine = base.NormalNC,
+ LineDiagTuncateLine = base.NormalNC,
+ LspSagaCodeActionTitle = base.Title,
+ LspSagaCodeActionTruncateLine = base.NormalNC,
+ LspSagaCodeActionContent = base.Normal,
+ LspSagaRenamePromptPrefix = base.GruvboxFg2,
+ LspSagaRenameBorder = { gui = styles.bold },
+ LspSagaHoverBorder = { gui = styles.bold },
+ LspSagaSignatureHelpBorder = { gui = styles.bold },
+ LspSagaCodeActionBorder = { gui = styles.bold },
+ LspSagaAutoPreview = {},
+ LspSagaDefPreviewBorder = { gui = styles.bold },
+ LspLinesDiagBorder = { gui = styles.bold },
+ -- vim-startify
+ StartifyBracket = base.Delimiter,
+ StartifyFile = base.Identifier,
+ StartifyNumber = base.Number,
+ StartifyPath = base.Directory,
+ StartifySlash = base.Delimiter,
+ StartifySection = base.Statement,
+ StartifySpecial = base.Comment,
+ StartifyHeader = base.Title,
+ StartifyFooter = base.Title,
+ StartifyVar = "StartifyPath",
+ StartifySelect = base.Title,
+ -- vim-signify
+ SignifySignAdd = base.GruvboxGreenSign,
+ SignifySignChange = base.GruvboxAquaSign,
+ SignifySignDelete = base.GruvboxRedSign,
+ -- syntastic
+ SyntasticError = base.GruvboxRedUnderline,
+ SyntasticWarning = base.GruvboxYellowUnderline,
+ SyntasticErrorSign = base.GruvboxRedSign,
+ SyntasticWarningSign = base.GruvboxYellowSign,
+ -- termdebug
+ debugPC = { bg = colors.faded_blue },
+ debugBreakpoint = base.GruvboxRedSign,
+ -- vim-dirvish
+ DirvishPathTail = base.GruvboxAqua,
+ DirvishArg = base.GruvboxYellow,
+ -- nerdtree
+ NERDTreeDir = base.GruvboxAqua,
+ NERDTreeDirSlash = base.GruvboxAqua,
+ NERDTreeOpenable = base.GruvboxOrange,
+ NERDTreeClosable = base.GruvboxOrange,
+ NERDTreeFile = base.GruvboxFg1,
+ NERDTreeExecFile = base.GruvboxYellow,
+ NERDTreeUp = base.GruvboxGray,
+ NERDTreeCWD = base.GruvboxGreen,
+ NERDTreeHelp = base.GruvboxFg1,
+ NERDTreeToggleOn = base.GruvboxGreen,
+ NERDTreeToggleOff = base.GruvboxRed,
+ -- coc.nvim
+ CocErrorSign = base.GruvboxRedSign,
+ CocWarningSign = base.GruvboxOrangeSign,
+ CocInfoSign = base.GruvboxBlueSign,
+ CocHintSign = base.GruvboxAquaSign,
+ CocErrorFloat = base.GruvboxRed,
+ CocWarningFloat = base.GruvboxOrange,
+ CocInfoFloat = base.GruvboxBlue,
+ CocHintFloat = base.GruvboxAqua,
+ CocDiagnosticsError = base.GruvboxRed,
+ CocDiagnosticsWarning = base.GruvboxOrange,
+ CocDiagnosticsInfo = base.GruvboxBlue,
+ CocDiagnosticsHint = base.GruvboxAqua,
+ CocSelectedText = base.GruvboxRed,
+ CocCodeLens = base.GruvboxGray,
+ CocErrorHighlight = base.GruvboxRedUnderline,
+ CocWarningHighlight = base.GruvboxOrangeUnderline,
+ CocInfoHighlight = base.GruvboxBlueUnderline,
+ CocHintHighlight = base.GruvboxAquaUnderline,
+ -- ale.vim
+ ALEError = base.GruvboxRedUnderline,
+ ALEWarning = base.GruvboxYellowUnderline,
+ ALEInfo = base.GruvboxBlueUnderline,
+ ALEErrorSign = base.GruvboxRedSign,
+ ALEWarningSign = base.GruvboxYellowSign,
+ ALEInfoSign = base.GruvboxBlueSign,
+ ALEVirtualTextError = base.GruvboxRed,
+ ALEVirtualTextWarning = base.GruvboxYellow,
+ ALEVirtualTextInfo = base.GruvboxBlue,
+ -- vim-buftabline
+ BufTabLineCurrent = base.TabLineSel,
+ BufTabLineActive = base.PmenuSel,
+ BufTabLineHidden = base.TabLine,
+ BufTabLineFill = base.TabLineFill,
+ BufTabLineModifiedCurrent = "BufTabLineCurrent",
+ BufTabLineModifiedActive = "BufTabLineActive",
+ BufTabLineModifiedHidden = "BufTabLineHidden",
+ -- ctrlP
+ CtrlPMatch = base.Identifier,
+ CtrlPNoEntries = base.Error,
+ CtrlPPrtBase = base.Comment,
+ CtrlPPrtCursor = base.Constant,
+ CtrlPLinePre = { fg = base.GruvboxBg2.fg },
+ CtrlPMode1 = base.Character,
+ CtrlPMode2 = base.LineNr,
+ CtrlPStats = base.Function,
+ -- fzf.vim
+ Fzf1 = { fg = base.GruvboxBlue.fg, bg = base.GruvboxBg1.fg },
+ Fzf2 = { fg = base.GruvboxOrange.fg, bg = base.GruvboxBg1.fg },
+ Fzf3 = { fg = base.GruvboxFg4.fg, bg = base.GruvboxBg1.fg },
+ ShowMarksHLl = base.GruvboxBlueSign,
+ ShowMarksHLu = base.GruvboxBlueSign,
+ ShowMarksHLo = base.GruvboxBlueSign,
+ ShowMarksHLm = base.GruvboxBlueSign,
+ -- git-gutter
+ GitGutterAdd = base.GruvboxGreenSign,
+ GitGutterChange = base.GruvboxAquaSign,
+ GitGutterDelete = base.GruvboxRedSign,
+ GitGutterChangeDelete = base.GruvboxAquaSign,
+ -- gitsigns.nvim
+ GitSignsAdd = base.GruvboxGreenSign,
+ GitSignsChange = base.GruvboxAquaSign,
+ GitSignsDelete = base.GruvboxRedSign,
+ GitSignsCurrentLineBlame = base.NonText,
+ -- nvim-cmp
+ CmpItemAbbr = base.GruvboxFg0,
+ CmpItemAbbrDeprecated = base.GruvboxFg0,
+ CmpItemAbbrMatch = base.GruvboxBlue,
+ CmpItemAbbrMatchFuzzy = { gui = styles.underline, fg = base.GruvboxAqua.fg },
+ CmpItemKind = base.GruvboxOrange,
+ CmpItemKindClass = base.GruvboxGreen,
+ CmpItemKindConstructor = base.GruvboxGreen,
+ CmpItemKindField = base.GruvboxAqua,
+ CmpItemKindFile = base.GruvboxOrange,
+ CmpItemKindFolder = base.GruvboxOrange,
+ CmpItemKindFunction = base.GruvboxPurple,
+ CmpItemKindInterface = base.GruvboxGreen,
+ CmpItemKindKeyword = base.Keyword,
+ CmpItemKindMethod = base.GruvboxPurple,
+ CmpItemKindSnippet = base.GruvboxYellow,
+ CmpItemKindText = base.GruvboxFg0,
+ CmpItemKindValue = base.GruvboxOrange,
+ CmpItemKindVariable = base.GruvboxBlue,
+ CmpItemMenu = base.GruvboxGray,
+ -- LSP
+ LspCodeLens = base.GruvboxGray,
+ LspReferenceRead = { bg = base.GruvboxBg2.fg, gui = styles.underline },
+ LspReferenceText = { bg = base.GruvboxBg2.fg, gui = styles.underline },
+ LspReferenceWrite = { bg = base.GruvboxBg2.fg, gui = styles.underline },
+ -- NOTE: Deprecated settings (see https://github.com/neovim/neovim/pull/15585)
+ LspDiagnosticsDefaultError = base.GruvboxRed,
+ LspDiagnosticsSignError = base.GruvboxRedSign,
+ LspDiagnosticsUnderlineError = base.GruvboxRedUnderline,
+ LspDiagnosticsDefaultWarning = base.GruvboxYellow,
+ LspDiagnosticsSignWarning = base.GruvboxYellowSign,
+ LspDiagnosticsUnderlineWarning = base.GruvboxYellowUnderline,
+ LspDiagnosticsDefaultInformation = base.GruvboxBlue,
+ LspDiagnosticsSignInformation = base.GruvboxBlueSign,
+ LspDiagnosticsUnderlineInformation = base.GruvboxBlueUnderline,
+ LspDiagnosticsDefaultHint = base.GruvboxAqua,
+ LspDiagnosticsSignHint = base.GruvboxAquaSign,
+ LspDiagnosticsUnderlineHint = base.GruvboxAquaUnderline,
+ LspDiagnosticsFloatingError = base.GruvboxRed,
+ LspDiagnosticsFloatingWarning = base.GruvboxOrange,
+ LspDiagnosticsFloatingInformation = base.GruvboxBlue,
+ LspDiagnosticsFloatingHint = base.GruvboxAqua,
+ LspDiagnosticsVirtualTextError = base.GruvboxRed,
+ LspDiagnosticsVirtualTextWarning = base.GruvboxYellow,
+ LspDiagnosticsVirtualTextInformation = base.GruvboxBlue,
+ LspDiagnosticsVirtualTextHint = base.GruvboxAqua,
+ -- Diagnostic
+ DiagnosticError = base.GruvboxRed,
+ DiagnosticSignError = base.GruvboxRedSign,
+ DiagnosticUnderlineError = base.GruvboxRedUnderline,
+ DiagnosticWarn = base.GruvboxYellow,
+ DiagnosticSignWarn = base.GruvboxYellowSign,
+ DiagnosticUnderlineWarn = base.GruvboxYellowUnderline,
+ DiagnosticInfo = base.GruvboxBlue,
+ DiagnosticSignInfo = base.GruvboxBlueSign,
+ DiagnosticUnderlineInfo = base.GruvboxBlueUnderline,
+ DiagnosticHint = base.GruvboxAqua,
+ DiagnosticSignHint = base.GruvboxAquaSign,
+ DiagnosticUnderlineHint = base.GruvboxAquaUnderline,
+ DiagnosticFloatingError = base.GruvboxRed,
+ DiagnosticFloatingWarn = base.GruvboxOrange,
+ DiagnosticFloatingInfo = base.GruvboxBlue,
+ DiagnosticFloatingHint = base.GruvboxAqua,
+ DiagnosticVirtualTextError = base.GruvboxRed,
+ DiagnosticVirtualTextWarn = base.GruvboxYellow,
+ DiagnosticVirtualTextInfo = base.GruvboxBlue,
+ DiagnosticVirtualTextHint = base.GruvboxAqua,
+ -- mail.vim
+ mailQuoted1 = base.GruvboxAqua,
+ mailQuoted2 = base.GruvboxPurple,
+ mailQuoted3 = base.GruvboxYellow,
+ mailQuoted4 = base.GruvboxGreen,
+ mailQuoted5 = base.GruvboxRed,
+ mailQuoted6 = base.GruvboxOrange,
+ mailSignature = base.Comment,
+}
-return plugins
+return plugins
diff --git a/lua/gruvbox/plugins/lightline.lua b/lua/gruvbox/plugins/lightline.lua
index afc782e..53e9180 100644
--- a/lua/gruvbox/plugins/lightline.lua
+++ b/lua/gruvbox/plugins/lightline.lua
@@ -2,72 +2,72 @@
local M = {}
M.init = function(theme)
- local has_lightline, _ = pcall(vim.fn["lightline#update"])
- if not has_lightline then
- return
- end
+ local has_lightline, _ = pcall(vim.fn["lightline#update"])
+ if not has_lightline then
+ return
+ end
- local bg0 = theme.GruvboxBg0.fg.hex
- local bg1 = theme.GruvboxBg1.fg.hex
- local bg2 = theme.GruvboxBg2.fg.hex
- local bg4 = theme.GruvboxBg4.fg.hex
- local fg1 = theme.GruvboxFg1.fg.hex
- local fg4 = theme.GruvboxFg4.fg.hex
+ local bg0 = theme.GruvboxBg0.fg
+ local bg1 = theme.GruvboxBg1.fg
+ local bg2 = theme.GruvboxBg2.fg
+ local bg4 = theme.GruvboxBg4.fg
+ local fg1 = theme.GruvboxFg1.fg
+ local fg4 = theme.GruvboxFg4.fg
- local yellow = theme.GruvboxYellow.fg.hex
- local blue = theme.GruvboxBlue.fg.hex
- local aqua = theme.GruvboxAqua.fg.hex
- local orange = theme.GruvboxOrange.fg.hex
- local red = theme.GruvboxRed.fg.hex
- local green = theme.GruvboxGreen.fg.hex
+ local yellow = theme.GruvboxYellow.fg
+ local blue = theme.GruvboxBlue.fg
+ local aqua = theme.GruvboxAqua.fg
+ local orange = theme.GruvboxOrange.fg
+ local red = theme.GruvboxRed.fg
+ local green = theme.GruvboxGreen.fg
- local lightline_theme = {
- normal = {
- left = { { bg0, fg4, "bold" }, { fg4, bg2 } },
- middle = { { fg4, bg1 } },
- right = { { bg0, fg4 }, { fg4, bg2 } },
- error = { { bg0, red } },
- warning = { { bg0, yellow } },
- },
- insert = {
- left = { { bg0, blue, "bold" }, { fg1, bg2 } },
- middle = { { fg4, bg1 } },
- right = { { bg0, blue }, { fg1, bg2 } },
- },
- inactive = {
- left = { { bg4, bg1 } },
- middle = { { bg4, bg1 } },
- right = { { bg4, bg1 }, { bg4, bg1 } },
- },
- terminal = {
- left = { { bg0, green, "bold" }, { fg1, bg2 } },
- middle = { { fg4, bg1 } },
- right = { { bg0, green }, { fg1, bg2 } },
- },
- replace = {
- left = { { bg0, aqua, "bold" }, { fg1, bg2 } },
- middle = { { fg4, bg1 } },
- right = { { bg0, aqua }, { fg1, bg2 } },
- },
- visual = {
- left = { { bg0, orange, "bold" }, { bg0, bg4 } },
- middle = { { fg4, bg1 } },
- right = { { bg0, orange }, { bg0, bg4 } },
- },
- tabline = {
- left = { { fg4, bg2 } },
- middle = { { bg0, bg4 } },
- right = { { bg0, orange } },
- tabsel = { { bg0, fg4 } },
- },
- }
+ local lightline_theme = {
+ normal = {
+ left = { { bg0, fg4, "bold" }, { fg4, bg2 } },
+ middle = { { fg4, bg1 } },
+ right = { { bg0, fg4 }, { fg4, bg2 } },
+ error = { { bg0, red } },
+ warning = { { bg0, yellow } },
+ },
+ insert = {
+ left = { { bg0, blue, "bold" }, { fg1, bg2 } },
+ middle = { { fg4, bg1 } },
+ right = { { bg0, blue }, { fg1, bg2 } },
+ },
+ inactive = {
+ left = { { bg4, bg1 } },
+ middle = { { bg4, bg1 } },
+ right = { { bg4, bg1 }, { bg4, bg1 } },
+ },
+ terminal = {
+ left = { { bg0, green, "bold" }, { fg1, bg2 } },
+ middle = { { fg4, bg1 } },
+ right = { { bg0, green }, { fg1, bg2 } },
+ },
+ replace = {
+ left = { { bg0, aqua, "bold" }, { fg1, bg2 } },
+ middle = { { fg4, bg1 } },
+ right = { { bg0, aqua }, { fg1, bg2 } },
+ },
+ visual = {
+ left = { { bg0, orange, "bold" }, { bg0, bg4 } },
+ middle = { { fg4, bg1 } },
+ right = { { bg0, orange }, { bg0, bg4 } },
+ },
+ tabline = {
+ left = { { fg4, bg2 } },
+ middle = { { bg0, bg4 } },
+ right = { { bg0, orange } },
+ tabsel = { { bg0, fg4 } },
+ },
+ }
- local ll_filled = vim.fn["lightline#colorscheme#fill"](lightline_theme)
- vim.g["lightline#colorscheme#gruvbox#palette"] = ll_filled
- vim.schedule(function()
- vim.fn["lightline#disable"]()
- vim.fn["lightline#enable"]()
- end)
+ local ll_filled = vim.fn["lightline#colorscheme#fill"](lightline_theme)
+ vim.g["lightline#colorscheme#gruvbox#palette"] = ll_filled
+ vim.schedule(function()
+ vim.fn["lightline#disable"]()
+ vim.fn["lightline#enable"]()
+ end)
end
return M
diff --git a/lua/gruvbox/utils.lua b/lua/gruvbox/utils.lua
index 4957da3..c6e3f11 100644
--- a/lua/gruvbox/utils.lua
+++ b/lua/gruvbox/utils.lua
@@ -23,4 +23,44 @@ M.get_color_from_var = function(color, default, colors)
return c
end
+M.merge = function(tbls)
+ local source = {}
+ for _, group in pairs(tbls) do
+ for groupName, opts in pairs(group) do
+ source[groupName] = opts
+ end
+ end
+
+ return source
+end
+
+M.highlights = function(hls)
+ for k, v in pairs(hls) do
+ if type(v) == "table" then
+ -- no blank strings allowed for guifg, guibg, guisp and gui
+ local opt = {}
+ for kk, vv in pairs(v) do
+ if vv == "" then
+ vv = nil
+ end
+
+ opt[kk] = vv
+ end
+
+ vim.cmd(
+ string.format(
+ "hi %s guifg=%s guibg=%s guisp=%s gui=%s",
+ k,
+ opt.fg or "NONE",
+ opt.bg or "NONE",
+ opt.sp or "NONE",
+ opt.gui or "NONE"
+ )
+ )
+ else
+ vim.cmd(string.format("hi! link %s %s", k, v))
+ end
+ end
+end
+
return M