diff options
| author | Muhammad Ahmad 🌌 <mhdahmadx@gmail.com> | 2021-12-13 19:04:50 +0200 |
|---|---|---|
| committer | Muhammad Ahmad 🌌 <mhdahmadx@gmail.com> | 2021-12-13 19:04:50 +0200 |
| commit | b1f7e2241ed2cbcb11317b2cb9b94171083008dc (patch) | |
| tree | f3ffebcc5ab400f00e8bde022fb029b36eee28bf /lua | |
| parent | a91ac484f84811771dded4d2485efa2007e6eb18 (diff) | |
| parent | 077f0a9f0b8c2ad0e5dc05c037c2b361b3fa18b7 (diff) | |
| download | gruvbox-b1f7e2241ed2cbcb11317b2cb9b94171083008dc.tar.gz gruvbox-b1f7e2241ed2cbcb11317b2cb9b94171083008dc.tar.xz | |
Merge branch 'gruvbox-neovim-reforamt'
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/gruvbox/base.lua | 330 | ||||
| -rw-r--r-- | lua/gruvbox/colors.lua | 74 | ||||
| -rw-r--r-- | lua/gruvbox/init.lua | 11 | ||||
| -rw-r--r-- | lua/gruvbox/languages.lua | 660 | ||||
| -rw-r--r-- | lua/gruvbox/plugins/highlights.lua | 581 | ||||
| -rw-r--r-- | lua/gruvbox/plugins/lightline.lua | 126 | ||||
| -rw-r--r-- | lua/gruvbox/utils.lua | 40 |
7 files changed, 734 insertions, 1088 deletions
diff --git a/lua/gruvbox/base.lua b/lua/gruvbox/base.lua index 719e91e..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.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 }), - -- 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 c74ee4e..50a3eb3 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({ 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 }), +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 diff --git a/lua/gruvbox/plugins/lightline.lua b/lua/gruvbox/plugins/lightline.lua index afc782e..7907cd9 100644 --- a/lua/gruvbox/plugins/lightline.lua +++ b/lua/gruvbox/plugins/lightline.lua @@ -1,73 +1,71 @@ -- lightline support local M = {} -M.init = function(theme) - local has_lightline, _ = pcall(vim.fn["lightline#update"]) - if not has_lightline then - return - end +M.start = function(theme) + 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 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 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 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 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 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/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 |
