aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuhammad Ahmad 🌌 <mhdahmadx@gmail.com>2021-12-07 11:06:14 +0200
committerMuhammad Ahmad 🌌 <mhdahmadx@gmail.com>2021-12-07 11:06:14 +0200
commit6a0ccb52a4bb1256b50399bcd977920f63fefeec (patch)
tree9c20acb97cc4e5cfbd5bd68926d0c1ee2f975587
parent8efd28ff057c24b8179e0ace9e12f57141a7f6b0 (diff)
downloadgruvbox-6a0ccb52a4bb1256b50399bcd977920f63fefeec.tar.gz
gruvbox-6a0ccb52a4bb1256b50399bcd977920f63fefeec.tar.xz
refactor(gruvbox): remove lush dependency
refactor(gruvbox): remove filetypes highlights for treesitter perf(gruvbox): reduce load time to ~5ms
-rw-r--r--colors/gruvbox.vim2
-rw-r--r--lua/gruvbox/base.lua374
-rw-r--r--lua/gruvbox/colors.lua74
-rw-r--r--lua/gruvbox/init.lua19
-rw-r--r--lua/gruvbox/languages.lua672
-rw-r--r--lua/gruvbox/plugins/highlights.lua539
-rw-r--r--lua/gruvbox/plugins/lightline.lua122
-rw-r--r--lua/gruvbox/settings.lua82
-rw-r--r--lua/gruvbox/utils.lua68
9 files changed, 797 insertions, 1155 deletions
diff --git a/colors/gruvbox.vim b/colors/gruvbox.vim
index fc6fed7..c7e747f 100644
--- a/colors/gruvbox.vim
+++ b/colors/gruvbox.vim
@@ -3,4 +3,4 @@ lua package.loaded["gruvbox"] = nil
lua package.loaded["gruvbox.base"] = nil
lua package.loaded["gruvbox.plugins.highlights"] = nil
lua package.loaded["gruvbox.languages"] = nil
-lua require("lush")(require("gruvbox"))
+lua require("gruvbox").load()
diff --git a/lua/gruvbox/base.lua b/lua/gruvbox/base.lua
index cc4e0f8..599f394 100644
--- a/lua/gruvbox/base.lua
+++ b/lua/gruvbox/base.lua
@@ -1,7 +1,6 @@
-local lush = require("lush")
-local colors = require("gruvbox.colors")
+local colors = require "gruvbox.colors"
local styles = require("gruvbox.settings").styles
-local utils = require("gruvbox.utils")
+local utils = require "gruvbox.utils"
-- options (dark mode by default)
local bg0 = colors.dark0
@@ -27,37 +26,37 @@ local gray = colors.gray
local bg = vim.o.background
if bg == nil then
- bg = "dark"
- vim.o.background = bg
+ bg = "dark"
+ vim.o.background = bg
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
+ 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
-- handle light/dark contrast settings
local contrast = vim.g["gruvbox_contrast_" .. bg]
if contrast == "hard" then
- bg0 = colors[bg .. "0_hard"]
+ bg0 = colors[bg .. "0_hard"]
elseif contrast == "soft" then
- bg0 = colors[bg .. "0_soft"]
+ bg0 = colors[bg .. "0_soft"]
end
-- extending colors table with basic names for easy customization in g:gruvbox_* options
@@ -80,8 +79,7 @@ colors.aqua = aqua
colors.orange = orange
local hls_cursor = utils.get_color_from_var(vim.g.gruvbox_hls_cursor, orange, colors)
-local hls_highlight = utils.get_color_from_var(vim.g.gruvbox_hls_highlight, yellow,
- colors)
+local hls_highlight = utils.get_color_from_var(vim.g.gruvbox_hls_highlight, yellow, colors)
local number_column = utils.get_color_from_var(vim.g.gruvbox_number_column, nil, colors)
local color_column = utils.get_color_from_var(vim.g.gruvbox_color_column, bg1, colors)
local vert_split = utils.get_color_from_var(vim.g.gruvbox_vert_split, bg0, colors)
@@ -97,184 +95,184 @@ local special_string_bg = bg1
local special_string_gui = styles.italic_strings
if not utils.tobool(vim.g.gruvbox_improved_strings) then
- improved_strings_fg = green
- improved_strings_bg = nil
- special_string_bg = nil
- special_string_gui = nil
+ improved_strings_fg = green
+ improved_strings_bg = nil
+ special_string_bg = nil
+ special_string_gui = nil
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 {
+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},
+ 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,
+ 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",
+ SpellLocal = "GruvboxAquaUnderline",
+ SpellCap = { fg = green, gui = table_concat({ styles.bold, styles.italic }, ",") },
+ 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.underline}, ",")},
- Todo {fg = fg0, gui = table_concat({styles.bold, styles.italic_comments}, ",")},
- diffAdded {GruvboxGreen},
- diffRemoved {GruvboxRed},
- diffChanged {GruvboxAqua},
- diffFile {GruvboxOrange},
- diffNewFile {GruvboxYellow},
- diffLine {GruvboxBlue},
+ 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 = { fg = red, gui = table_concat({ styles.bold, styles.underline }, ",") },
+ 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},
+ SignatureMarkText = "GruvboxBlueSign",
+ SignatureMarkerText = "GruvboxPurpleSign",
-- gitcommit
- gitcommitSelectedFile {GruvboxGreen},
- gitcommitDiscardedFile {GruvboxRed},
+ gitcommitSelectedFile = "GruvboxGreen",
+ gitcommitDiscardedFile = "GruvboxRed",
-- checkhealth
- healthError {fg = bg0, bg = red},
- healthSuccess {fg = bg0, bg = green},
- healthWarning {fg = bg0, bg = yellow},
- }
-end)
+ 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 cb65fbf..e85cd3c 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 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 specs = { base, languages, plugins }
+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").start(spec)
-return spec
+return M
diff --git a/lua/gruvbox/languages.lua b/lua/gruvbox/languages.lua
index d1b90b7..20486b0 100644
--- a/lua/gruvbox/languages.lua
+++ b/lua/gruvbox/languages.lua
@@ -1,540 +1,144 @@
-- language specific higlights
-local lush = require("lush")
-local base = require("gruvbox.base")
+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_strings},
- 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,
- xml,
- viml,
- c,
- python,
- clojure,
- html,
- css,
- js,
- typescript,
- jsx,
- purescript,
- coffeescript,
- ruby,
- objc,
- moonscript,
- elixir,
- scala,
- markdown,
- haskell,
- json,
- csharp,
- rust,
- ocaml,
- lua,
-})
+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_strings },
+ 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,
+ purescript,
+ coffeescript,
+ objc,
+ moonscript,
+ elixir,
+ markdown,
+ haskell,
+}
return langs
diff --git a/lua/gruvbox/plugins/highlights.lua b/lua/gruvbox/plugins/highlights.lua
index 0d82d29..7a0fa6c 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 base = require "gruvbox.base"
local styles = require("gruvbox.settings").styles
+local colors = require "gruvbox.colors"
-local plugins = lush(function()
- return {
+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},
+ 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},
+ 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},
+ 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},
+ 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},
+ 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},
+ SignifySignAdd = base.GruvboxGreenSign,
+ SignifySignChange = base.GruvboxAquaSign,
+ SignifySignDelete = base.GruvboxRedSign,
-- syntastic
- SyntasticError {base.GruvboxRedUnderline},
- SyntasticWarning {base.GruvboxYellowUnderline},
- SyntasticErrorSign {base.GruvboxRedSign},
- SyntasticWarningSign {base.GruvboxYellowSign},
+ SyntasticError = base.GruvboxRedUnderline,
+ SyntasticWarning = base.GruvboxYellowUnderline,
+ SyntasticErrorSign = base.GruvboxRedSign,
+ SyntasticWarningSign = base.GruvboxYellowSign,
-- termdebug
- debugPC {bg = colors.faded_blue},
- debugBreakpoint {base.GruvboxRedSign},
+ debugPC = { bg = colors.faded_blue },
+ debugBreakpoint = base.GruvboxRedSign,
-- vim-dirvish
- DirvishPathTail {base.GruvboxAqua},
- DirvishArg {base.GruvboxYellow},
+ 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},
+ 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},
+ 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},
+ 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},
+ 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},
+ 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.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},
+ 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},
+ 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},
+ 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},
+ 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.hex, gui = styles.underline},
- LspReferenceText {bg = base.GruvboxBg2.fg.hex, gui = styles.underline},
- LspReferenceWrite {bg = base.GruvboxBg2.fg.hex, gui = styles.underline},
+ 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},
+ 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},
+ 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)
+ mailQuoted1 = base.GruvboxAqua,
+ mailQuoted2 = base.GruvboxPurple,
+ mailQuoted3 = base.GruvboxYellow,
+ mailQuoted4 = base.GruvboxGreen,
+ mailQuoted5 = base.GruvboxRed,
+ mailQuoted6 = base.GruvboxOrange,
+ mailSignature = base.Comment,
+}
return plugins
diff --git a/lua/gruvbox/plugins/lightline.lua b/lua/gruvbox/plugins/lightline.lua
index 5ac631f..a46dc6e 100644
--- a/lua/gruvbox/plugins/lightline.lua
+++ b/lua/gruvbox/plugins/lightline.lua
@@ -2,70 +2,70 @@
local M = {}
M.start = function(theme)
- 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 has_lightline, _ = pcall(vim.fn["lightline#update"])
- if has_lightline then
- 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
+ local has_lightline, _ = pcall(vim.fn["lightline#update"])
+ if has_lightline then
+ 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
end
return M
diff --git a/lua/gruvbox/settings.lua b/lua/gruvbox/settings.lua
index 84b3c06..08f839f 100644
--- a/lua/gruvbox/settings.lua
+++ b/lua/gruvbox/settings.lua
@@ -1,84 +1,84 @@
-- gruvbox settings handler
-local utils = require("gruvbox.utils")
+local utils = require "gruvbox.utils"
local settings = {
- contrast_dark = "medium",
- contrast_light = "medium",
- bold = true,
- italic = true,
- undercurl = true,
- underline = true,
- inverse = true,
- improved_strings = false,
- improved_warnings = false,
- invert_signs = false,
- invert_selection = true,
- invert_tabline = false,
- italicize_comments = true,
- italicize_strings = false,
- invert_intend_guides = false,
+ contrast_dark = "medium",
+ contrast_light = "medium",
+ bold = true,
+ italic = true,
+ undercurl = true,
+ underline = true,
+ inverse = true,
+ improved_strings = false,
+ improved_warnings = false,
+ invert_signs = false,
+ invert_selection = true,
+ invert_tabline = false,
+ italicize_comments = true,
+ italicize_strings = false,
+ invert_intend_guides = false,
}
local styles = {
- italic = "italic",
- bold = "bold",
- underline = "underline",
- inverse = "inverse",
- undercurl = "undercurl",
- invert_signs = "",
- invert_selection = "inverse",
- invert_tabline = "",
- italic_comments = "italic",
- italic_strings = "NONE",
+ italic = "italic",
+ bold = "bold",
+ underline = "underline",
+ inverse = "inverse",
+ undercurl = "undercurl",
+ invert_signs = "",
+ invert_selection = "inverse",
+ invert_tabline = "",
+ italic_comments = "italic",
+ italic_strings = "NONE",
}
-- 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
+ local key = "gruvbox_" .. k
+ if vim.g[key] == nil then
+ vim.g[key] = val
+ end
end
-- styles check
if not utils.tobool(vim.g.gruvbox_bold) then
- styles.bold = "NONE"
+ styles.bold = "NONE"
end
if not utils.tobool(vim.g.gruvbox_underline) then
- styles.underline = "NONE"
+ styles.underline = "NONE"
end
if not utils.tobool(vim.g.gruvbox_italic) then
- styles.italic = "NONE"
+ styles.italic = "NONE"
end
if not utils.tobool(vim.g.gruvbox_inverse) then
- styles.inverse = "NONE"
+ styles.inverse = "NONE"
end
if not utils.tobool(vim.g.gruvbox_undercurl) then
- styles.undercurl = "NONE"
+ styles.undercurl = "NONE"
end
if utils.tobool(vim.g.gruvbox_invert_signs) then
- styles.invert_signs = "inverse"
+ styles.invert_signs = "inverse"
end
if not utils.tobool(vim.g.gruvbox_invert_selection) then
- styles.invert_selection = "NONE"
+ styles.invert_selection = "NONE"
end
if utils.tobool(vim.g.gruvbox_invert_tabline) then
- styles.invert_tabline = "inverse"
+ styles.invert_tabline = "inverse"
end
if not utils.tobool(vim.g.gruvbox_italicize_comments) then
- styles.italic_comments = "NONE"
+ styles.italic_comments = "NONE"
end
if utils.tobool(vim.g.gruvbox_italicize_strings) then
- styles.italic_strings = "italic"
+ styles.italic_strings = "italic"
end
-return {settings = settings, styles = styles}
+return { settings = settings, styles = styles }
diff --git a/lua/gruvbox/utils.lua b/lua/gruvbox/utils.lua
index c548f5c..1d3edec 100644
--- a/lua/gruvbox/utils.lua
+++ b/lua/gruvbox/utils.lua
@@ -2,25 +2,65 @@
local M = {}
M.tobool = function(val)
- if val == 0 or not val then
- return false
- end
- return true
+ if val == 0 or not val then
+ return false
+ end
+ return true
end
-- check if vim.g.gruvbox_* color exists in current palette, return default color
-- otherwise
M.get_color_from_var = function(color, default, colors)
- if color == nil then
- return default
- end
-
- local c = colors[color]
- if c == nil then
- print(string.format("%s color could not be found, using default", color))
- return default
- end
- return c
+ if color == nil then
+ return default
+ end
+
+ local c = colors[color]
+ if c == nil then
+ print(string.format("%s color could not be found, using default", color))
+ return default
+ end
+ 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