summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/config
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/config')
-rw-r--r--.config/nvim/lua/config/autocmd.lua83
-rw-r--r--.config/nvim/lua/config/gruvbox.lua1305
-rw-r--r--.config/nvim/lua/config/keymaps.lua108
-rw-r--r--.config/nvim/lua/config/lazy.lua23
-rw-r--r--.config/nvim/lua/config/lsp.lua88
-rw-r--r--.config/nvim/lua/config/options.lua160
-rw-r--r--.config/nvim/lua/config/terminal.lua19
7 files changed, 1786 insertions, 0 deletions
diff --git a/.config/nvim/lua/config/autocmd.lua b/.config/nvim/lua/config/autocmd.lua
new file mode 100644
index 0000000..9cdb78d
--- /dev/null
+++ b/.config/nvim/lua/config/autocmd.lua
@@ -0,0 +1,83 @@
+local au = vim.api.nvim_create_autocmd
+local augroup = vim.api.nvim_create_augroup
+local ag = augroup("default", {})
+local ft = augroup("filetypes", {})
+
+-- shortly highlight yanks
+au("TextYankPost", {
+ group = ag,
+ pattern = "*",
+ callback = function()
+ vim.highlight.on_yank({ higroup = "IncSearch", timeout = 250, on_visual = true })
+ end,
+})
+
+au("WinEnter", {
+ group = ag,
+ pattern = "*",
+ callback = function()
+ vim.opt_local.cursorline = true
+ end,
+})
+au("WinLeave", {
+ group = ag,
+ pattern = "*",
+ callback = function()
+ vim.opt_local.cursorline = false
+ end,
+})
+
+-- highlight extra whitespace
+local hlstmt = [[highlight ExtraWhitespace ctermbg=red guibg=red]]
+vim.cmd(hlstmt)
+au("ColorScheme", {
+ group = ag,
+ pattern = "*",
+ callback = function()
+ vim.cmd(hlstmt)
+ end,
+})
+vim.cmd([[match ExtraWhitespace /\s\+$\| \+\ze\t/]])
+
+-- only show color col in insert mode
+au("InsertEnter", {
+ group = ag,
+ pattern = "*",
+ callback = function()
+ vim.o.colorcolumn = "78"
+ end,
+})
+au("InsertLeave", {
+ group = ag,
+ pattern = "*",
+ callback = function()
+ vim.o.colorcolumn = ""
+ end,
+})
+
+-- resize splits upon window resize
+au("VimResized", {
+ group = ag,
+ pattern = "*",
+ callback = function()
+ vim.cmd([[exe "normal! \<C-w>="]])
+ end,
+})
+
+-- ms word doc reading
+au("BufReadPre", {
+ group = ft,
+ pattern = "*.doc{x,}",
+ callback = function()
+ vim.opt_local.readonly = true
+ end,
+})
+vim.cmd([[au BufReadPost *.doc %!antiword "%"]])
+vim.cmd([[au BufReadPost *.docx %!docx2txt "%" -]])
+
+-- remove whitespace at the end of line
+au({ "BufWritePre" }, {
+ group = ag,
+ pattern = "*",
+ command = [[%s/\s\+$//e]],
+})
diff --git a/.config/nvim/lua/config/gruvbox.lua b/.config/nvim/lua/config/gruvbox.lua
new file mode 100644
index 0000000..3a9b161
--- /dev/null
+++ b/.config/nvim/lua/config/gruvbox.lua
@@ -0,0 +1,1305 @@
+---@class Gruvbox
+---@field config GruvboxConfig
+---@field palette GruvboxPalette
+local Gruvbox = {}
+
+---@alias Contrast "hard" | "soft" | ""
+
+---@class ItalicConfig
+---@field strings boolean
+---@field comments boolean
+---@field operators boolean
+---@field folds boolean
+---@field emphasis boolean
+
+---@class HighlightDefinition
+---@field fg string?
+---@field bg string?
+---@field sp string?
+---@field blend integer?
+---@field bold boolean?
+---@field standout boolean?
+---@field underline boolean?
+---@field undercurl boolean?
+---@field underdouble boolean?
+---@field underdotted boolean?
+---@field strikethrough boolean?
+---@field italic boolean?
+---@field reverse boolean?
+---@field nocombine boolean?
+
+---@class GruvboxConfig
+---@field bold boolean?
+---@field contrast Contrast?
+---@field dim_inactive boolean?
+---@field inverse boolean?
+---@field invert_selection boolean?
+---@field invert_signs boolean?
+---@field invert_tabline boolean?
+---@field italic ItalicConfig?
+---@field overrides table<string, HighlightDefinition>?
+---@field palette_overrides table<string, string>?
+---@field strikethrough boolean?
+---@field terminal_colors boolean?
+---@field transparent_mode boolean?
+---@field undercurl boolean?
+---@field underline boolean?
+local default_config = {
+ terminal_colors = true,
+ undercurl = true,
+ underline = true,
+ bold = true,
+ italic = {
+ strings = true,
+ emphasis = true,
+ comments = true,
+ operators = false,
+ folds = true,
+ },
+ strikethrough = true,
+ invert_selection = false,
+ invert_signs = false,
+ invert_tabline = false,
+ inverse = true,
+ contrast = "hard",
+ palette_overrides = {},
+ overrides = {},
+ dim_inactive = false,
+ transparent_mode = false,
+}
+
+Gruvbox.config = vim.deepcopy(default_config)
+
+-- main gruvbox color palette
+---@class GruvboxPalette
+Gruvbox.palette = {
+ 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",
+ dark_red_hard = "#792329",
+ dark_red = "#722529",
+ dark_red_soft = "#7b2c2f",
+ light_red_hard = "#fc9690",
+ light_red = "#fc9487",
+ light_red_soft = "#f78b7f",
+ dark_green_hard = "#5a633a",
+ dark_green = "#62693e",
+ dark_green_soft = "#686d43",
+ light_green_hard = "#d3d6a5",
+ light_green = "#d5d39b",
+ light_green_soft = "#cecb94",
+ dark_aqua_hard = "#3e4934",
+ dark_aqua = "#49503b",
+ dark_aqua_soft = "#525742",
+ light_aqua_hard = "#e6e9c1",
+ light_aqua = "#e8e5b5",
+ light_aqua_soft = "#e1dbac",
+ gray = "#928374",
+}
+
+-- get a hex list of gruvbox colors based on current bg and constrast config
+local function get_colors()
+ local p = Gruvbox.palette
+ local config = Gruvbox.config
+
+ for color, hex in pairs(config.palette_overrides) do
+ p[color] = hex
+ end
+
+ local bg = vim.o.background
+ local contrast = config.contrast
+
+ local color_groups = {
+ dark = {
+ bg0 = p.dark0,
+ bg1 = p.dark1,
+ bg2 = p.dark2,
+ bg3 = p.dark3,
+ bg4 = p.dark4,
+ fg0 = p.light0,
+ fg1 = p.light1,
+ fg2 = p.light2,
+ fg3 = p.light3,
+ fg4 = p.light4,
+ red = p.bright_red,
+ green = p.bright_green,
+ yellow = p.bright_yellow,
+ blue = p.bright_blue,
+ purple = p.bright_purple,
+ aqua = p.bright_aqua,
+ orange = p.bright_orange,
+ neutral_red = p.neutral_red,
+ neutral_green = p.neutral_green,
+ neutral_yellow = p.neutral_yellow,
+ neutral_blue = p.neutral_blue,
+ neutral_purple = p.neutral_purple,
+ neutral_aqua = p.neutral_aqua,
+ dark_red = p.dark_red,
+ dark_green = p.dark_green,
+ dark_aqua = p.dark_aqua,
+ gray = p.gray,
+ },
+ light = {
+ bg0 = p.light0,
+ bg1 = p.light1,
+ bg2 = p.light2,
+ bg3 = p.light3,
+ bg4 = p.light4,
+ fg0 = p.dark0,
+ fg1 = p.dark1,
+ fg2 = p.dark2,
+ fg3 = p.dark3,
+ fg4 = p.dark4,
+ red = p.faded_red,
+ green = p.faded_green,
+ yellow = p.faded_yellow,
+ blue = p.faded_blue,
+ purple = p.faded_purple,
+ aqua = p.faded_aqua,
+ orange = p.faded_orange,
+ neutral_red = p.neutral_red,
+ neutral_green = p.neutral_green,
+ neutral_yellow = p.neutral_yellow,
+ neutral_blue = p.neutral_blue,
+ neutral_purple = p.neutral_purple,
+ neutral_aqua = p.neutral_aqua,
+ dark_red = p.light_red,
+ dark_green = p.light_green,
+ dark_aqua = p.light_aqua,
+ gray = p.gray,
+ },
+ }
+
+ if contrast ~= nil and contrast ~= "" then
+ color_groups[bg].bg0 = p[bg .. "0_" .. contrast]
+ color_groups[bg].dark_red = p[bg .. "_red_" .. contrast]
+ color_groups[bg].dark_green = p[bg .. "_green_" .. contrast]
+ color_groups[bg].dark_aqua = p[bg .. "_aqua_" .. contrast]
+ end
+
+ return color_groups[bg]
+end
+
+local function get_groups()
+ local colors = get_colors()
+ local config = Gruvbox.config
+
+ if config.terminal_colors then
+ local term_colors = {
+ colors.bg0,
+ colors.neutral_red,
+ colors.neutral_green,
+ colors.neutral_yellow,
+ colors.neutral_blue,
+ colors.neutral_purple,
+ colors.neutral_aqua,
+ colors.fg4,
+ colors.gray,
+ colors.red,
+ colors.green,
+ colors.yellow,
+ colors.blue,
+ colors.purple,
+ colors.aqua,
+ colors.fg1,
+ }
+ for index, value in ipairs(term_colors) do
+ vim.g["terminal_color_" .. index - 1] = value
+ end
+ end
+
+ local groups = {
+ GruvboxFg0 = { fg = colors.fg0 },
+ GruvboxFg1 = { fg = colors.fg1 },
+ GruvboxFg2 = { fg = colors.fg2 },
+ GruvboxFg3 = { fg = colors.fg3 },
+ GruvboxFg4 = { fg = colors.fg4 },
+ GruvboxGray = { fg = colors.gray },
+ GruvboxBg0 = { fg = colors.bg0 },
+ GruvboxBg1 = { fg = colors.bg1 },
+ GruvboxBg2 = { fg = colors.bg2 },
+ GruvboxBg3 = { fg = colors.bg3 },
+ GruvboxBg4 = { fg = colors.bg4 },
+ GruvboxRed = { fg = colors.red },
+ GruvboxRedBold = { fg = colors.red, bold = config.bold },
+ GruvboxGreen = { fg = colors.green },
+ GruvboxGreenBold = { fg = colors.green, bold = config.bold },
+ GruvboxYellow = { fg = colors.yellow },
+ GruvboxYellowBold = { fg = colors.yellow, bold = config.bold },
+ GruvboxBlue = { fg = colors.blue },
+ GruvboxBlueBold = { fg = colors.blue, bold = config.bold },
+ GruvboxPurple = { fg = colors.purple },
+ GruvboxPurpleBold = { fg = colors.purple, bold = config.bold },
+ GruvboxAqua = { fg = colors.aqua },
+ GruvboxAquaBold = { fg = colors.aqua, bold = config.bold },
+ GruvboxOrange = { fg = colors.orange },
+ GruvboxOrangeBold = { fg = colors.orange, bold = config.bold },
+ GruvboxRedSign = config.transparent_mode and { fg = colors.red, reverse = config.invert_signs }
+ or { fg = colors.red, bg = colors.bg1, reverse = config.invert_signs },
+ GruvboxGreenSign = config.transparent_mode and { fg = colors.green, reverse = config.invert_signs }
+ or { fg = colors.green, bg = colors.bg1, reverse = config.invert_signs },
+ GruvboxYellowSign = config.transparent_mode and { fg = colors.yellow, reverse = config.invert_signs }
+ or { fg = colors.yellow, bg = colors.bg1, reverse = config.invert_signs },
+ GruvboxBlueSign = config.transparent_mode and { fg = colors.blue, reverse = config.invert_signs }
+ or { fg = colors.blue, bg = colors.bg1, reverse = config.invert_signs },
+ GruvboxPurpleSign = config.transparent_mode and { fg = colors.purple, reverse = config.invert_signs }
+ or { fg = colors.purple, bg = colors.bg1, reverse = config.invert_signs },
+ GruvboxAquaSign = config.transparent_mode and { fg = colors.aqua, reverse = config.invert_signs }
+ or { fg = colors.aqua, bg = colors.bg1, reverse = config.invert_signs },
+ GruvboxOrangeSign = config.transparent_mode and { fg = colors.orange, reverse = config.invert_signs }
+ or { fg = colors.orange, bg = colors.bg1, reverse = config.invert_signs },
+ GruvboxRedUnderline = { undercurl = config.undercurl, sp = colors.red },
+ GruvboxGreenUnderline = { undercurl = config.undercurl, sp = colors.green },
+ GruvboxYellowUnderline = { undercurl = config.undercurl, sp = colors.yellow },
+ GruvboxBlueUnderline = { undercurl = config.undercurl, sp = colors.blue },
+ GruvboxPurpleUnderline = { undercurl = config.undercurl, sp = colors.purple },
+ GruvboxAquaUnderline = { undercurl = config.undercurl, sp = colors.aqua },
+ GruvboxOrangeUnderline = { undercurl = config.undercurl, sp = colors.orange },
+ Normal = config.transparent_mode and { fg = colors.fg1, bg = nil } or { fg = colors.fg1, bg = colors.bg0 },
+ NormalFloat = config.transparent_mode and { fg = colors.fg1, bg = nil } or { fg = colors.fg1, bg = colors.bg1 },
+ NormalNC = config.dim_inactive and { fg = colors.fg0, bg = colors.bg1 } or { link = "Normal" },
+ CursorLine = { bg = colors.bg1 },
+ CursorColumn = { link = "CursorLine" },
+ TabLineFill = { fg = colors.bg4, bg = colors.bg1, reverse = config.invert_tabline },
+ TabLineSel = { fg = colors.green, bg = colors.bg1, reverse = config.invert_tabline },
+ TabLine = { link = "TabLineFill" },
+ MatchParen = { bg = colors.bg3, bold = config.bold },
+ ColorColumn = { bg = colors.bg1 },
+ Conceal = { fg = colors.blue },
+ CursorLineNr = { fg = colors.yellow, bg = colors.bg1 },
+ NonText = { link = "GruvboxBg2" },
+ SpecialKey = { link = "GruvboxFg4" },
+ Visual = { bg = colors.bg3, reverse = config.invert_selection },
+ VisualNOS = { link = "Visual" },
+ Search = { fg = colors.yellow, bg = colors.bg0, reverse = config.inverse },
+ IncSearch = { fg = colors.orange, bg = colors.bg0, reverse = config.inverse },
+ CurSearch = { link = "IncSearch" },
+ QuickFixLine = { link = "GruvboxPurple" },
+ Underlined = { fg = colors.blue, underline = config.underline },
+ StatusLine = { fg = colors.fg1, bg = colors.bg2 },
+ StatusLineNC = { fg = colors.fg4, bg = colors.bg1 },
+ WinBar = { fg = colors.fg4, bg = colors.bg0 },
+ WinBarNC = { fg = colors.fg3, bg = colors.bg1 },
+ WinSeparator = config.transparent_mode and { fg = colors.bg3, bg = nil } or { fg = colors.bg3, bg = colors.bg0 },
+ WildMenu = { fg = colors.blue, bg = colors.bg2, bold = config.bold },
+ Directory = { link = "GruvboxGreenBold" },
+ Title = { link = "GruvboxGreenBold" },
+ ErrorMsg = { fg = colors.bg0, bg = colors.red, bold = config.bold },
+ MoreMsg = { link = "GruvboxYellowBold" },
+ ModeMsg = { link = "GruvboxYellowBold" },
+ Question = { link = "GruvboxOrangeBold" },
+ WarningMsg = { link = "GruvboxRedBold" },
+ LineNr = { fg = colors.bg4 },
+ SignColumn = config.transparent_mode and { bg = nil } or { bg = colors.bg1 },
+ Folded = { fg = colors.gray, bg = colors.bg1, italic = config.italic.folds },
+ FoldColumn = config.transparent_mode and { fg = colors.gray, bg = nil } or { fg = colors.gray, bg = colors.bg1 },
+ Cursor = { reverse = config.inverse },
+ vCursor = { link = "Cursor" },
+ iCursor = { link = "Cursor" },
+ lCursor = { link = "Cursor" },
+ Special = { link = "GruvboxOrange" },
+ Comment = { fg = colors.gray, italic = config.italic.comments },
+ Todo = { fg = colors.bg0, bg = colors.yellow, bold = config.bold, italic = config.italic.comments },
+ Done = { fg = colors.orange, bold = config.bold, italic = config.italic.comments },
+ Error = { fg = colors.red, bold = config.bold, reverse = config.inverse },
+ Statement = { link = "GruvboxRed" },
+ Conditional = { link = "GruvboxRed" },
+ Repeat = { link = "GruvboxRed" },
+ Label = { link = "GruvboxRed" },
+ Exception = { link = "GruvboxRed" },
+ Operator = { fg = colors.orange, italic = config.italic.operators },
+ Keyword = { link = "GruvboxRed" },
+ Identifier = { link = "GruvboxBlue" },
+ Function = { link = "GruvboxGreenBold" },
+ PreProc = { link = "GruvboxAqua" },
+ Include = { link = "GruvboxAqua" },
+ Define = { link = "GruvboxAqua" },
+ Macro = { link = "GruvboxAqua" },
+ PreCondit = { link = "GruvboxAqua" },
+ Constant = { link = "GruvboxPurple" },
+ Character = { link = "GruvboxPurple" },
+ String = { fg = colors.green, italic = config.italic.strings },
+ Boolean = { link = "GruvboxPurple" },
+ Number = { link = "GruvboxPurple" },
+ Float = { link = "GruvboxPurple" },
+ Type = { link = "GruvboxYellow" },
+ StorageClass = { link = "GruvboxOrange" },
+ Structure = { link = "GruvboxAqua" },
+ Typedef = { link = "GruvboxYellow" },
+ Pmenu = { fg = colors.fg1, bg = colors.bg2 },
+ PmenuSel = { fg = colors.bg2, bg = colors.blue, bold = config.bold },
+ PmenuSbar = { bg = colors.bg2 },
+ PmenuThumb = { bg = colors.bg4 },
+ DiffDelete = { bg = colors.dark_red },
+ DiffAdd = { bg = colors.dark_green },
+ DiffChange = { bg = colors.dark_aqua },
+ DiffText = { bg = colors.yellow, fg = colors.bg0 },
+ SpellCap = { link = "GruvboxBlueUnderline" },
+ SpellBad = { link = "GruvboxRedUnderline" },
+ SpellLocal = { link = "GruvboxAquaUnderline" },
+ SpellRare = { link = "GruvboxPurpleUnderline" },
+ Whitespace = { fg = colors.bg2 },
+ Delimiter = { link = "GruvboxOrange" },
+ EndOfBuffer = { link = "NonText" },
+ DiagnosticError = { link = "GruvboxRed" },
+ DiagnosticWarn = { link = "GruvboxYellow" },
+ DiagnosticInfo = { link = "GruvboxBlue" },
+ DiagnosticDeprecated = { strikethrough = config.strikethrough },
+ DiagnosticHint = { link = "GruvboxAqua" },
+ DiagnosticOk = { link = "GruvboxGreen" },
+ DiagnosticSignError = { link = "GruvboxRedSign" },
+ DiagnosticSignWarn = { link = "GruvboxYellowSign" },
+ DiagnosticSignInfo = { link = "GruvboxBlueSign" },
+ DiagnosticSignHint = { link = "GruvboxAquaSign" },
+ DiagnosticSignOk = { link = "GruvboxGreenSign" },
+ DiagnosticUnderlineError = { link = "GruvboxRedUnderline" },
+ DiagnosticUnderlineWarn = { link = "GruvboxYellowUnderline" },
+ DiagnosticUnderlineInfo = { link = "GruvboxBlueUnderline" },
+ DiagnosticUnderlineHint = { link = "GruvboxAquaUnderline" },
+ DiagnosticUnderlineOk = { link = "GruvboxGreenUnderline" },
+ DiagnosticFloatingError = { link = "GruvboxRed" },
+ DiagnosticFloatingWarn = { link = "GruvboxOrange" },
+ DiagnosticFloatingInfo = { link = "GruvboxBlue" },
+ DiagnosticFloatingHint = { link = "GruvboxAqua" },
+ DiagnosticFloatingOk = { link = "GruvboxGreen" },
+ DiagnosticVirtualTextError = { link = "GruvboxRed" },
+ DiagnosticVirtualTextWarn = { link = "GruvboxYellow" },
+ DiagnosticVirtualTextInfo = { link = "GruvboxBlue" },
+ DiagnosticVirtualTextHint = { link = "GruvboxAqua" },
+ DiagnosticVirtualTextOk = { link = "GruvboxGreen" },
+ LspReferenceRead = { link = "GruvboxYellowBold" },
+ LspReferenceTarget = { link = "Visual" },
+ LspReferenceText = { link = "GruvboxYellowBold" },
+ LspReferenceWrite = { link = "GruvboxOrangeBold" },
+ LspCodeLens = { link = "GruvboxGray" },
+ LspSignatureActiveParameter = { link = "Search" },
+ gitcommitSelectedFile = { link = "GruvboxGreen" },
+ gitcommitDiscardedFile = { link = "GruvboxRed" },
+ GitSignsAdd = { link = "GruvboxGreen" },
+ GitSignsChange = { link = "GruvboxOrange" },
+ GitSignsDelete = { link = "GruvboxRed" },
+ NvimTreeSymlink = { fg = colors.neutral_aqua },
+ NvimTreeRootFolder = { fg = colors.neutral_purple, bold = true },
+ NvimTreeFolderIcon = { fg = colors.neutral_blue, bold = true },
+ NvimTreeFileIcon = { fg = colors.light2 },
+ NvimTreeExecFile = { fg = colors.neutral_green, bold = true },
+ NvimTreeOpenedFile = { fg = colors.bright_red, bold = true },
+ NvimTreeSpecialFile = { fg = colors.neutral_yellow, bold = true, underline = true },
+ NvimTreeImageFile = { fg = colors.neutral_purple },
+ NvimTreeIndentMarker = { fg = colors.dark3 },
+ NvimTreeGitDirty = { fg = colors.neutral_yellow },
+ NvimTreeGitStaged = { fg = colors.neutral_yellow },
+ NvimTreeGitMerge = { fg = colors.neutral_purple },
+ NvimTreeGitRenamed = { fg = colors.neutral_purple },
+ NvimTreeGitNew = { fg = colors.neutral_yellow },
+ NvimTreeGitDeleted = { fg = colors.neutral_red },
+ NvimTreeWindowPicker = { bg = colors.aqua },
+ debugPC = { link = "DiffAdd" },
+ debugBreakpoint = { link = "GruvboxRedSign" },
+ StartifyBracket = { link = "GruvboxFg3" },
+ StartifyFile = { link = "GruvboxFg1" },
+ StartifyNumber = { link = "GruvboxBlue" },
+ StartifyPath = { link = "GruvboxGray" },
+ StartifySlash = { link = "GruvboxGray" },
+ StartifySection = { link = "GruvboxYellow" },
+ StartifySpecial = { link = "GruvboxBg2" },
+ StartifyHeader = { link = "GruvboxOrange" },
+ StartifyFooter = { link = "GruvboxBg2" },
+ StartifyVar = { link = "StartifyPath" },
+ StartifySelect = { link = "Title" },
+ DirvishPathTail = { link = "GruvboxAqua" },
+ DirvishArg = { link = "GruvboxYellow" },
+ netrwDir = { link = "GruvboxAqua" },
+ netrwClassify = { link = "GruvboxAqua" },
+ netrwLink = { link = "GruvboxGray" },
+ netrwSymLink = { link = "GruvboxFg1" },
+ netrwExe = { link = "GruvboxYellow" },
+ netrwComment = { link = "GruvboxGray" },
+ netrwList = { link = "GruvboxBlue" },
+ netrwHelpCmd = { link = "GruvboxAqua" },
+ netrwCmdSep = { link = "GruvboxFg3" },
+ netrwVersion = { link = "GruvboxGreen" },
+ NERDTreeDir = { link = "GruvboxAqua" },
+ NERDTreeDirSlash = { link = "GruvboxAqua" },
+ NERDTreeOpenable = { link = "GruvboxOrange" },
+ NERDTreeClosable = { link = "GruvboxOrange" },
+ NERDTreeFile = { link = "GruvboxFg1" },
+ NERDTreeExecFile = { link = "GruvboxYellow" },
+ NERDTreeUp = { link = "GruvboxGray" },
+ NERDTreeCWD = { link = "GruvboxGreen" },
+ NERDTreeHelp = { link = "GruvboxFg1" },
+ NERDTreeToggleOn = { link = "GruvboxGreen" },
+ NERDTreeToggleOff = { link = "GruvboxRed" },
+ CocErrorSign = { link = "GruvboxRedSign" },
+ CocWarningSign = { link = "GruvboxOrangeSign" },
+ CocInfoSign = { link = "GruvboxBlueSign" },
+ CocHintSign = { link = "GruvboxAquaSign" },
+ CocErrorFloat = { link = "GruvboxRed" },
+ CocWarningFloat = { link = "GruvboxOrange" },
+ CocInfoFloat = { link = "GruvboxBlue" },
+ CocHintFloat = { link = "GruvboxAqua" },
+ CocDiagnosticsError = { link = "GruvboxRed" },
+ CocDiagnosticsWarning = { link = "GruvboxOrange" },
+ CocDiagnosticsInfo = { link = "GruvboxBlue" },
+ CocDiagnosticsHint = { link = "GruvboxAqua" },
+ CocSearch = { link = "GruvboxBlue" },
+ CocSelectedText = { link = "GruvboxRed" },
+ CocMenuSel = { link = "PmenuSel" },
+ CocCodeLens = { link = "GruvboxGray" },
+ CocErrorHighlight = { link = "GruvboxRedUnderline" },
+ CocWarningHighlight = { link = "GruvboxOrangeUnderline" },
+ CocInfoHighlight = { link = "GruvboxBlueUnderline" },
+ CocHintHighlight = { link = "GruvboxAquaUnderline" },
+ SnacksPicker = { link = "GruvboxFg1" },
+ SnacksPickerBorder = { link = "SnacksPicker" },
+ SnacksPickerListCursorLine = { link = "CursorLine" },
+ SnacksPickerMatch = { link = "GruvboxOrange" },
+ SnacksPickerPrompt = { link = "GruvboxRed" },
+ SnacksPickerTitle = { link = "SnacksPicker" },
+ SnacksPickerDir = { link = "GruvboxGray" },
+ SnacksPickerPathHidden = { link = "GruvboxGray" },
+ SnacksPickerGitStatusUntracked = { link = "GruvboxGray" },
+ SnacksPickerPathIgnored = { link = "GruvboxBg3" },
+ TelescopeNormal = { link = "GruvboxFg1" },
+ TelescopeSelection = { link = "CursorLine" },
+ TelescopeSelectionCaret = { link = "GruvboxRed" },
+ TelescopeMultiSelection = { link = "GruvboxGray" },
+ TelescopeBorder = { link = "TelescopeNormal" },
+ TelescopePromptBorder = { link = "TelescopeNormal" },
+ TelescopeResultsBorder = { link = "TelescopeNormal" },
+ TelescopePreviewBorder = { link = "TelescopeNormal" },
+ TelescopeMatching = { link = "GruvboxOrange" },
+ TelescopePromptPrefix = { link = "GruvboxRed" },
+ TelescopePrompt = { link = "TelescopeNormal" },
+ CmpItemAbbr = { link = "GruvboxFg0" },
+ CmpItemAbbrDeprecated = { link = "GruvboxFg1" },
+ CmpItemAbbrMatch = { link = "GruvboxBlueBold" },
+ CmpItemAbbrMatchFuzzy = { link = "GruvboxBlueUnderline" },
+ CmpItemMenu = { link = "GruvboxGray" },
+ CmpItemKindText = { link = "GruvboxOrange" },
+ CmpItemKindVariable = { link = "GruvboxOrange" },
+ CmpItemKindMethod = { link = "GruvboxBlue" },
+ CmpItemKindFunction = { link = "GruvboxBlue" },
+ CmpItemKindConstructor = { link = "GruvboxYellow" },
+ CmpItemKindUnit = { link = "GruvboxBlue" },
+ CmpItemKindField = { link = "GruvboxBlue" },
+ CmpItemKindClass = { link = "GruvboxYellow" },
+ CmpItemKindInterface = { link = "GruvboxYellow" },
+ CmpItemKindModule = { link = "GruvboxBlue" },
+ CmpItemKindProperty = { link = "GruvboxBlue" },
+ CmpItemKindValue = { link = "GruvboxOrange" },
+ CmpItemKindEnum = { link = "GruvboxYellow" },
+ CmpItemKindOperator = { link = "GruvboxYellow" },
+ CmpItemKindKeyword = { link = "GruvboxPurple" },
+ CmpItemKindEvent = { link = "GruvboxPurple" },
+ CmpItemKindReference = { link = "GruvboxPurple" },
+ CmpItemKindColor = { link = "GruvboxPurple" },
+ CmpItemKindSnippet = { link = "GruvboxGreen" },
+ CmpItemKindFile = { link = "GruvboxBlue" },
+ CmpItemKindFolder = { link = "GruvboxBlue" },
+ CmpItemKindEnumMember = { link = "GruvboxAqua" },
+ CmpItemKindConstant = { link = "GruvboxOrange" },
+ CmpItemKindStruct = { link = "GruvboxYellow" },
+ CmpItemKindTypeParameter = { link = "GruvboxYellow" },
+ BlinkCmpLabel = { link = "GruvboxFg0" },
+ BlinkCmpLabelDeprecated = { link = "GruvboxFg1" },
+ BlinkCmpLabelMatch = { link = "GruvboxBlueBold" },
+ BlinkCmpLabelDetail = { link = "GruvboxGray" },
+ BlinkCmpLabelDescription = { link = "GruvboxGray" },
+ BlinkCmpKindText = { link = "GruvboxOrange" },
+ BlinkCmpKindVariable = { link = "GruvboxOrange" },
+ BlinkCmpKindMethod = { link = "GruvboxBlue" },
+ BlinkCmpKindFunction = { link = "GruvboxBlue" },
+ BlinkCmpKindConstructor = { link = "GruvboxYellow" },
+ BlinkCmpKindUnit = { link = "GruvboxBlue" },
+ BlinkCmpKindField = { link = "GruvboxBlue" },
+ BlinkCmpKindClass = { link = "GruvboxYellow" },
+ BlinkCmpKindInterface = { link = "GruvboxYellow" },
+ BlinkCmpKindModule = { link = "GruvboxBlue" },
+ BlinkCmpKindProperty = { link = "GruvboxBlue" },
+ BlinkCmpKindValue = { link = "GruvboxOrange" },
+ BlinkCmpKindEnum = { link = "GruvboxYellow" },
+ BlinkCmpKindOperator = { link = "GruvboxYellow" },
+ BlinkCmpKindKeyword = { link = "GruvboxPurple" },
+ BlinkCmpKindEvent = { link = "GruvboxPurple" },
+ BlinkCmpKindReference = { link = "GruvboxPurple" },
+ BlinkCmpKindColor = { link = "GruvboxPurple" },
+ BlinkCmpKindSnippet = { link = "GruvboxGreen" },
+ BlinkCmpKindFile = { link = "GruvboxBlue" },
+ BlinkCmpKindFolder = { link = "GruvboxBlue" },
+ BlinkCmpKindEnumMember = { link = "GruvboxAqua" },
+ BlinkCmpKindConstant = { link = "GruvboxOrange" },
+ BlinkCmpKindStruct = { link = "GruvboxYellow" },
+ BlinkCmpKindTypeParameter = { link = "GruvboxYellow" },
+ BlinkCmpSource = { link = "GruvboxGray" },
+ BlinkCmpGhostText = { link = "GruvboxBg4" },
+ diffAdded = { link = "DiffAdd" },
+ diffRemoved = { link = "DiffDelete" },
+ diffChanged = { link = "DiffChange" },
+ diffFile = { link = "GruvboxOrange" },
+ diffNewFile = { link = "GruvboxYellow" },
+ diffOldFile = { link = "GruvboxOrange" },
+ diffLine = { link = "GruvboxBlue" },
+ diffIndexLine = { link = "diffChanged" },
+ NavicIconsFile = { link = "GruvboxBlue" },
+ NavicIconsModule = { link = "GruvboxOrange" },
+ NavicIconsNamespace = { link = "GruvboxBlue" },
+ NavicIconsPackage = { link = "GruvboxAqua" },
+ NavicIconsClass = { link = "GruvboxYellow" },
+ NavicIconsMethod = { link = "GruvboxBlue" },
+ NavicIconsProperty = { link = "GruvboxAqua" },
+ NavicIconsField = { link = "GruvboxPurple" },
+ NavicIconsConstructor = { link = "GruvboxBlue" },
+ NavicIconsEnum = { link = "GruvboxPurple" },
+ NavicIconsInterface = { link = "GruvboxGreen" },
+ NavicIconsFunction = { link = "GruvboxBlue" },
+ NavicIconsVariable = { link = "GruvboxPurple" },
+ NavicIconsConstant = { link = "GruvboxOrange" },
+ NavicIconsString = { link = "GruvboxGreen" },
+ NavicIconsNumber = { link = "GruvboxOrange" },
+ NavicIconsBoolean = { link = "GruvboxOrange" },
+ NavicIconsArray = { link = "GruvboxOrange" },
+ NavicIconsObject = { link = "GruvboxOrange" },
+ NavicIconsKey = { link = "GruvboxAqua" },
+ NavicIconsNull = { link = "GruvboxOrange" },
+ NavicIconsEnumMember = { link = "GruvboxYellow" },
+ NavicIconsStruct = { link = "GruvboxPurple" },
+ NavicIconsEvent = { link = "GruvboxYellow" },
+ NavicIconsOperator = { link = "GruvboxRed" },
+ NavicIconsTypeParameter = { link = "GruvboxRed" },
+ NavicText = { link = "GruvboxWhite" },
+ NavicSeparator = { link = "GruvboxWhite" },
+ htmlTag = { link = "GruvboxAquaBold" },
+ htmlEndTag = { link = "GruvboxAquaBold" },
+ htmlTagName = { link = "GruvboxBlue" },
+ htmlArg = { link = "GruvboxOrange" },
+ htmlTagN = { link = "GruvboxFg1" },
+ htmlSpecialTagName = { link = "GruvboxBlue" },
+ htmlLink = { fg = colors.fg4, underline = config.underline },
+ htmlSpecialChar = { link = "GruvboxRed" },
+ htmlBold = { fg = colors.fg0, bg = colors.bg0, bold = config.bold },
+ htmlBoldUnderline = { fg = colors.fg0, bg = colors.bg0, bold = config.bold, underline = config.underline },
+ htmlBoldItalic = { fg = colors.fg0, bg = colors.bg0, bold = config.bold, italic = true },
+ htmlBoldUnderlineItalic = {
+ fg = colors.fg0,
+ bg = colors.bg0,
+ bold = config.bold,
+ italic = true,
+ underline = config.underline,
+ },
+ htmlUnderline = { fg = colors.fg0, bg = colors.bg0, underline = config.underline },
+ htmlUnderlineItalic = {
+ fg = colors.fg0,
+ bg = colors.bg0,
+ italic = true,
+ underline = config.underline,
+ },
+ htmlItalic = { fg = colors.fg0, bg = colors.bg0, italic = true },
+ xmlTag = { link = "GruvboxAquaBold" },
+ xmlEndTag = { link = "GruvboxAquaBold" },
+ xmlTagName = { link = "GruvboxBlue" },
+ xmlEqual = { link = "GruvboxBlue" },
+ docbkKeyword = { link = "GruvboxAquaBold" },
+ xmlDocTypeDecl = { link = "GruvboxGray" },
+ xmlDocTypeKeyword = { link = "GruvboxPurple" },
+ xmlCdataStart = { link = "GruvboxGray" },
+ xmlCdataCdata = { link = "GruvboxPurple" },
+ dtdFunction = { link = "GruvboxGray" },
+ dtdTagName = { link = "GruvboxPurple" },
+ xmlAttrib = { link = "GruvboxOrange" },
+ xmlProcessingDelim = { link = "GruvboxGray" },
+ dtdParamEntityPunct = { link = "GruvboxGray" },
+ dtdParamEntityDPunct = { link = "GruvboxGray" },
+ xmlAttribPunct = { link = "GruvboxGray" },
+ xmlEntity = { link = "GruvboxRed" },
+ xmlEntityPunct = { link = "GruvboxRed" },
+ clojureKeyword = { link = "GruvboxBlue" },
+ clojureCond = { link = "GruvboxOrange" },
+ clojureSpecial = { link = "GruvboxOrange" },
+ clojureDefine = { link = "GruvboxOrange" },
+ clojureFunc = { link = "GruvboxYellow" },
+ clojureRepeat = { link = "GruvboxYellow" },
+ clojureCharacter = { link = "GruvboxAqua" },
+ clojureStringEscape = { link = "GruvboxAqua" },
+ clojureException = { link = "GruvboxRed" },
+ clojureRegexp = { link = "GruvboxAqua" },
+ clojureRegexpEscape = { link = "GruvboxAqua" },
+ clojureRegexpCharClass = { fg = colors.fg3, bold = config.bold },
+ clojureRegexpMod = { link = "clojureRegexpCharClass" },
+ clojureRegexpQuantifier = { link = "clojureRegexpCharClass" },
+ clojureParen = { link = "GruvboxFg3" },
+ clojureAnonArg = { link = "GruvboxYellow" },
+ clojureVariable = { link = "GruvboxBlue" },
+ clojureMacro = { link = "GruvboxOrange" },
+ clojureMeta = { link = "GruvboxYellow" },
+ clojureDeref = { link = "GruvboxYellow" },
+ clojureQuote = { link = "GruvboxYellow" },
+ clojureUnquote = { link = "GruvboxYellow" },
+ cOperator = { link = "GruvboxPurple" },
+ cppOperator = { link = "GruvboxPurple" },
+ cStructure = { link = "GruvboxOrange" },
+ pythonBuiltin = { link = "GruvboxOrange" },
+ pythonBuiltinObj = { link = "GruvboxOrange" },
+ pythonBuiltinFunc = { link = "GruvboxOrange" },
+ pythonFunction = { link = "GruvboxAqua" },
+ pythonDecorator = { link = "GruvboxRed" },
+ pythonInclude = { link = "GruvboxBlue" },
+ pythonImport = { link = "GruvboxBlue" },
+ pythonRun = { link = "GruvboxBlue" },
+ pythonCoding = { link = "GruvboxBlue" },
+ pythonOperator = { link = "GruvboxRed" },
+ pythonException = { link = "GruvboxRed" },
+ pythonExceptions = { link = "GruvboxPurple" },
+ pythonBoolean = { link = "GruvboxPurple" },
+ pythonDot = { link = "GruvboxFg3" },
+ pythonConditional = { link = "GruvboxRed" },
+ pythonRepeat = { link = "GruvboxRed" },
+ pythonDottedName = { link = "GruvboxGreenBold" },
+ cssBraces = { link = "GruvboxBlue" },
+ cssFunctionName = { link = "GruvboxYellow" },
+ cssIdentifier = { link = "GruvboxOrange" },
+ cssClassName = { link = "GruvboxGreen" },
+ cssColor = { link = "GruvboxBlue" },
+ cssSelectorOp = { link = "GruvboxBlue" },
+ cssSelectorOp2 = { link = "GruvboxBlue" },
+ cssImportant = { link = "GruvboxGreen" },
+ cssVendor = { link = "GruvboxFg1" },
+ cssTextProp = { link = "GruvboxAqua" },
+ cssAnimationProp = { link = "GruvboxAqua" },
+ cssUIProp = { link = "GruvboxYellow" },
+ cssTransformProp = { link = "GruvboxAqua" },
+ cssTransitionProp = { link = "GruvboxAqua" },
+ cssPrintProp = { link = "GruvboxAqua" },
+ cssPositioningProp = { link = "GruvboxYellow" },
+ cssBoxProp = { link = "GruvboxAqua" },
+ cssFontDescriptorProp = { link = "GruvboxAqua" },
+ cssFlexibleBoxProp = { link = "GruvboxAqua" },
+ cssBorderOutlineProp = { link = "GruvboxAqua" },
+ cssBackgroundProp = { link = "GruvboxAqua" },
+ cssMarginProp = { link = "GruvboxAqua" },
+ cssListProp = { link = "GruvboxAqua" },
+ cssTableProp = { link = "GruvboxAqua" },
+ cssFontProp = { link = "GruvboxAqua" },
+ cssPaddingProp = { link = "GruvboxAqua" },
+ cssDimensionProp = { link = "GruvboxAqua" },
+ cssRenderProp = { link = "GruvboxAqua" },
+ cssColorProp = { link = "GruvboxAqua" },
+ cssGeneratedContentProp = { link = "GruvboxAqua" },
+ javaScriptBraces = { link = "GruvboxFg1" },
+ javaScriptFunction = { link = "GruvboxAqua" },
+ javaScriptIdentifier = { link = "GruvboxRed" },
+ javaScriptMember = { link = "GruvboxBlue" },
+ javaScriptNumber = { link = "GruvboxPurple" },
+ javaScriptNull = { link = "GruvboxPurple" },
+ javaScriptParens = { link = "GruvboxFg3" },
+ typescriptReserved = { link = "GruvboxAqua" },
+ typescriptLabel = { link = "GruvboxAqua" },
+ typescriptFuncKeyword = { link = "GruvboxAqua" },
+ typescriptIdentifier = { link = "GruvboxOrange" },
+ typescriptBraces = { link = "GruvboxFg1" },
+ typescriptEndColons = { link = "GruvboxFg1" },
+ typescriptDOMObjects = { link = "GruvboxFg1" },
+ typescriptAjaxMethods = { link = "GruvboxFg1" },
+ typescriptLogicSymbols = { link = "GruvboxFg1" },
+ typescriptDocSeeTag = { link = "Comment" },
+ typescriptDocParam = { link = "Comment" },
+ typescriptDocTags = { link = "vimCommentTitle" },
+ typescriptGlobalObjects = { link = "GruvboxFg1" },
+ typescriptParens = { link = "GruvboxFg3" },
+ typescriptOpSymbols = { link = "GruvboxFg3" },
+ typescriptHtmlElemProperties = { link = "GruvboxFg1" },
+ typescriptNull = { link = "GruvboxPurple" },
+ typescriptInterpolationDelimiter = { link = "GruvboxAqua" },
+ purescriptModuleKeyword = { link = "GruvboxAqua" },
+ purescriptModuleName = { link = "GruvboxFg1" },
+ purescriptWhere = { link = "GruvboxAqua" },
+ purescriptDelimiter = { link = "GruvboxFg4" },
+ purescriptType = { link = "GruvboxFg1" },
+ purescriptImportKeyword = { link = "GruvboxAqua" },
+ purescriptHidingKeyword = { link = "GruvboxAqua" },
+ purescriptAsKeyword = { link = "GruvboxAqua" },
+ purescriptStructure = { link = "GruvboxAqua" },
+ purescriptOperator = { link = "GruvboxBlue" },
+ purescriptTypeVar = { link = "GruvboxFg1" },
+ purescriptConstructor = { link = "GruvboxFg1" },
+ purescriptFunction = { link = "GruvboxFg1" },
+ purescriptConditional = { link = "GruvboxOrange" },
+ purescriptBacktick = { link = "GruvboxOrange" },
+ coffeeExtendedOp = { link = "GruvboxFg3" },
+ coffeeSpecialOp = { link = "GruvboxFg3" },
+ coffeeCurly = { link = "GruvboxOrange" },
+ coffeeParen = { link = "GruvboxFg3" },
+ coffeeBracket = { link = "GruvboxOrange" },
+ rubyStringDelimiter = { link = "GruvboxGreen" },
+ rubyInterpolationDelimiter = { link = "GruvboxAqua" },
+ rubyDefinedOperator = { link = "rubyKeyword" },
+ objcTypeModifier = { link = "GruvboxRed" },
+ objcDirective = { link = "GruvboxBlue" },
+ goDirective = { link = "GruvboxAqua" },
+ goConstants = { link = "GruvboxPurple" },
+ goDeclaration = { link = "GruvboxRed" },
+ goDeclType = { link = "GruvboxBlue" },
+ goBuiltins = { link = "GruvboxOrange" },
+ luaIn = { link = "GruvboxRed" },
+ luaFunction = { link = "GruvboxAqua" },
+ luaTable = { link = "GruvboxOrange" },
+ moonSpecialOp = { link = "GruvboxFg3" },
+ moonExtendedOp = { link = "GruvboxFg3" },
+ moonFunction = { link = "GruvboxFg3" },
+ moonObject = { link = "GruvboxYellow" },
+ javaAnnotation = { link = "GruvboxBlue" },
+ javaDocTags = { link = "GruvboxAqua" },
+ javaCommentTitle = { link = "vimCommentTitle" },
+ javaParen = { link = "GruvboxFg3" },
+ javaParen1 = { link = "GruvboxFg3" },
+ javaParen2 = { link = "GruvboxFg3" },
+ javaParen3 = { link = "GruvboxFg3" },
+ javaParen4 = { link = "GruvboxFg3" },
+ javaParen5 = { link = "GruvboxFg3" },
+ javaOperator = { link = "GruvboxOrange" },
+ javaVarArg = { link = "GruvboxGreen" },
+ elixirDocString = { link = "Comment" },
+ elixirStringDelimiter = { link = "GruvboxGreen" },
+ elixirInterpolationDelimiter = { link = "GruvboxAqua" },
+ elixirModuleDeclaration = { link = "GruvboxYellow" },
+ scalaNameDefinition = { link = "GruvboxFg1" },
+ scalaCaseFollowing = { link = "GruvboxFg1" },
+ scalaCapitalWord = { link = "GruvboxFg1" },
+ scalaTypeExtension = { link = "GruvboxFg1" },
+ scalaKeyword = { link = "GruvboxRed" },
+ scalaKeywordModifier = { link = "GruvboxRed" },
+ scalaSpecial = { link = "GruvboxAqua" },
+ scalaOperator = { link = "GruvboxFg1" },
+ scalaTypeDeclaration = { link = "GruvboxYellow" },
+ scalaTypeTypePostDeclaration = { link = "GruvboxYellow" },
+ scalaInstanceDeclaration = { link = "GruvboxFg1" },
+ scalaInterpolation = { link = "GruvboxAqua" },
+ markdownItalic = { fg = colors.fg3, italic = true },
+ markdownBold = { fg = colors.fg3, bold = config.bold },
+ markdownBoldItalic = { fg = colors.fg3, bold = config.bold, italic = true },
+ markdownH1 = { link = "GruvboxGreenBold" },
+ markdownH2 = { link = "GruvboxGreenBold" },
+ markdownH3 = { link = "GruvboxYellowBold" },
+ markdownH4 = { link = "GruvboxYellowBold" },
+ markdownH5 = { link = "GruvboxYellow" },
+ markdownH6 = { link = "GruvboxYellow" },
+ markdownCode = { link = "GruvboxAqua" },
+ markdownCodeBlock = { link = "GruvboxAqua" },
+ markdownCodeDelimiter = { link = "GruvboxAqua" },
+ markdownBlockquote = { link = "GruvboxGray" },
+ markdownListMarker = { link = "GruvboxGray" },
+ markdownOrderedListMarker = { link = "GruvboxGray" },
+ markdownRule = { link = "GruvboxGray" },
+ markdownHeadingRule = { link = "GruvboxGray" },
+ markdownUrlDelimiter = { link = "GruvboxFg3" },
+ markdownLinkDelimiter = { link = "GruvboxFg3" },
+ markdownLinkTextDelimiter = { link = "GruvboxFg3" },
+ markdownHeadingDelimiter = { link = "GruvboxOrange" },
+ markdownUrl = { link = "GruvboxPurple" },
+ markdownUrlTitleDelimiter = { link = "GruvboxGreen" },
+ markdownLinkText = { fg = colors.gray, underline = config.underline },
+ markdownIdDeclaration = { link = "markdownLinkText" },
+ haskellType = { link = "GruvboxBlue" },
+ haskellIdentifier = { link = "GruvboxAqua" },
+ haskellSeparator = { link = "GruvboxFg4" },
+ haskellDelimiter = { link = "GruvboxOrange" },
+ haskellOperators = { link = "GruvboxPurple" },
+ haskellBacktick = { link = "GruvboxOrange" },
+ haskellStatement = { link = "GruvboxPurple" },
+ haskellConditional = { link = "GruvboxPurple" },
+ haskellLet = { link = "GruvboxRed" },
+ haskellDefault = { link = "GruvboxRed" },
+ haskellWhere = { link = "GruvboxRed" },
+ haskellBottom = { link = "GruvboxRedBold" },
+ haskellImportKeywords = { link = "GruvboxPurpleBold" },
+ haskellDeclKeyword = { link = "GruvboxOrange" },
+ haskellDecl = { link = "GruvboxOrange" },
+ haskellDeriving = { link = "GruvboxPurple" },
+ haskellAssocType = { link = "GruvboxAqua" },
+ haskellNumber = { link = "GruvboxAqua" },
+ haskellPragma = { link = "GruvboxRedBold" },
+ haskellTH = { link = "GruvboxAquaBold" },
+ haskellForeignKeywords = { link = "GruvboxGreen" },
+ haskellKeyword = { link = "GruvboxRed" },
+ haskellFloat = { link = "GruvboxAqua" },
+ haskellInfix = { link = "GruvboxPurple" },
+ haskellQuote = { link = "GruvboxGreenBold" },
+ haskellShebang = { link = "GruvboxYellowBold" },
+ haskellLiquid = { link = "GruvboxPurpleBold" },
+ haskellQuasiQuoted = { link = "GruvboxBlueBold" },
+ haskellRecursiveDo = { link = "GruvboxPurple" },
+ haskellQuotedType = { link = "GruvboxRed" },
+ haskellPreProc = { link = "GruvboxFg4" },
+ haskellTypeRoles = { link = "GruvboxRedBold" },
+ haskellTypeForall = { link = "GruvboxRed" },
+ haskellPatternKeyword = { link = "GruvboxBlue" },
+ jsonKeyword = { link = "GruvboxGreen" },
+ jsonQuote = { link = "GruvboxGreen" },
+ jsonBraces = { link = "GruvboxFg1" },
+ jsonString = { link = "GruvboxFg1" },
+ mailQuoted1 = { link = "GruvboxAqua" },
+ mailQuoted2 = { link = "GruvboxPurple" },
+ mailQuoted3 = { link = "GruvboxYellow" },
+ mailQuoted4 = { link = "GruvboxGreen" },
+ mailQuoted5 = { link = "GruvboxRed" },
+ mailQuoted6 = { link = "GruvboxOrange" },
+ mailSignature = { link = "Comment" },
+ csBraces = { link = "GruvboxFg1" },
+ csEndColon = { link = "GruvboxFg1" },
+ csLogicSymbols = { link = "GruvboxFg1" },
+ csParens = { link = "GruvboxFg3" },
+ csOpSymbols = { link = "GruvboxFg3" },
+ csInterpolationDelimiter = { link = "GruvboxFg3" },
+ csInterpolationAlignDel = { link = "GruvboxAquaBold" },
+ csInterpolationFormat = { link = "GruvboxAqua" },
+ csInterpolationFormatDel = { link = "GruvboxAquaBold" },
+ rustSigil = { link = "GruvboxOrange" },
+ rustEscape = { link = "GruvboxAqua" },
+ rustStringContinuation = { link = "GruvboxAqua" },
+ rustEnum = { link = "GruvboxAqua" },
+ rustStructure = { link = "GruvboxAqua" },
+ rustModPathSep = { link = "GruvboxFg2" },
+ rustCommentLineDoc = { link = "Comment" },
+ rustDefault = { link = "GruvboxAqua" },
+ ocamlOperator = { link = "GruvboxFg1" },
+ ocamlKeyChar = { link = "GruvboxOrange" },
+ ocamlArrow = { link = "GruvboxOrange" },
+ ocamlInfixOpKeyword = { link = "GruvboxRed" },
+ ocamlConstructor = { link = "GruvboxOrange" },
+ LspSagaCodeActionTitle = { link = "Title" },
+ LspSagaCodeActionBorder = { link = "GruvboxFg1" },
+ LspSagaCodeActionContent = { fg = colors.green, bold = config.bold },
+ LspSagaLspFinderBorder = { link = "GruvboxFg1" },
+ LspSagaAutoPreview = { link = "GruvboxOrange" },
+ TargetWord = { fg = colors.blue, bold = config.bold },
+ FinderSeparator = { link = "GruvboxAqua" },
+ LspSagaDefPreviewBorder = { link = "GruvboxBlue" },
+ LspSagaHoverBorder = { link = "GruvboxOrange" },
+ LspSagaRenameBorder = { link = "GruvboxBlue" },
+ LspSagaDiagnosticSource = { link = "GruvboxOrange" },
+ LspSagaDiagnosticBorder = { link = "GruvboxPurple" },
+ LspSagaDiagnosticHeader = { link = "GruvboxGreen" },
+ LspSagaSignatureHelpBorder = { link = "GruvboxGreen" },
+ SagaShadow = { link = "GruvboxBg0" },
+ DashboardShortCut = { link = "GruvboxOrange" },
+ DashboardHeader = { link = "GruvboxAqua" },
+ DashboardCenter = { link = "GruvboxYellow" },
+ DashboardFooter = { fg = colors.purple, italic = true },
+ MasonHighlight = { link = "GruvboxAqua" },
+ MasonHighlightBlock = { fg = colors.bg0, bg = colors.blue },
+ MasonHighlightBlockBold = { fg = colors.bg0, bg = colors.blue, bold = true },
+ MasonHighlightSecondary = { fg = colors.yellow },
+ MasonHighlightBlockSecondary = { fg = colors.bg0, bg = colors.yellow },
+ MasonHighlightBlockBoldSecondary = { fg = colors.bg0, bg = colors.yellow, bold = true },
+ MasonHeader = { link = "MasonHighlightBlockBoldSecondary" },
+ MasonHeaderSecondary = { link = "MasonHighlightBlockBold" },
+ MasonMuted = { fg = colors.fg4 },
+ MasonMutedBlock = { fg = colors.bg0, bg = colors.fg4 },
+ MasonMutedBlockBold = { fg = colors.bg0, bg = colors.fg4, bold = true },
+ LspInlayHint = { link = "comment" },
+ CarbonFile = { link = "GruvboxFg1" },
+ CarbonExe = { link = "GruvboxYellow" },
+ CarbonSymlink = { link = "GruvboxAqua" },
+ CarbonBrokenSymlink = { link = "GruvboxRed" },
+ CarbonIndicator = { link = "GruvboxGray" },
+ CarbonDanger = { link = "GruvboxRed" },
+ CarbonPending = { link = "GruvboxYellow" },
+ NoiceCursor = { link = "TermCursor" },
+ NoiceCmdlinePopupBorder = { fg = colors.blue, bg = nil },
+ NoiceCmdlineIcon = { link = "NoiceCmdlinePopupBorder" },
+ NoiceConfirmBorder = { link = "NoiceCmdlinePopupBorder" },
+ NoiceCmdlinePopupBorderSearch = { fg = colors.yellow, bg = nil },
+ NoiceCmdlineIconSearch = { link = "NoiceCmdlinePopupBorderSearch" },
+ NotifyDEBUGBorder = { link = "GruvboxBlue" },
+ NotifyDEBUGIcon = { link = "GruvboxBlue" },
+ NotifyDEBUGTitle = { link = "GruvboxBlue" },
+ NotifyERRORBorder = { link = "GruvboxRed" },
+ NotifyERRORIcon = { link = "GruvboxRed" },
+ NotifyERRORTitle = { link = "GruvboxRed" },
+ NotifyINFOBorder = { link = "GruvboxAqua" },
+ NotifyINFOIcon = { link = "GruvboxAqua" },
+ NotifyINFOTitle = { link = "GruvboxAqua" },
+ NotifyTRACEBorder = { link = "GruvboxGreen" },
+ NotifyTRACEIcon = { link = "GruvboxGreen" },
+ NotifyTRACETitle = { link = "GruvboxGreen" },
+ NotifyWARNBorder = { link = "GruvboxYellow" },
+ NotifyWARNIcon = { link = "GruvboxYellow" },
+ NotifyWARNTitle = { link = "GruvboxYellow" },
+ IlluminatedWordText = { link = "LspReferenceText" },
+ IlluminatedWordRead = { link = "LspReferenceRead" },
+ IlluminatedWordWrite = { link = "LspReferenceWrite" },
+ TSRainbowRed = { fg = colors.red },
+ TSRainbowOrange = { fg = colors.orange },
+ TSRainbowYellow = { fg = colors.yellow },
+ TSRainbowGreen = { fg = colors.green },
+ TSRainbowBlue = { fg = colors.blue },
+ TSRainbowViolet = { fg = colors.purple },
+ TSRainbowCyan = { fg = colors.aqua },
+ RainbowDelimiterRed = { fg = colors.red },
+ RainbowDelimiterOrange = { fg = colors.orange },
+ RainbowDelimiterYellow = { fg = colors.yellow },
+ RainbowDelimiterGreen = { fg = colors.green },
+ RainbowDelimiterBlue = { fg = colors.blue },
+ RainbowDelimiterViolet = { fg = colors.purple },
+ RainbowDelimiterCyan = { fg = colors.aqua },
+ DapBreakpointSymbol = { fg = colors.red, bg = colors.bg1 },
+ DapStoppedSymbol = { fg = colors.green, bg = colors.bg1 },
+ DapUIBreakpointsCurrentLine = { link = "GruvboxYellow" },
+ DapUIBreakpointsDisabledLine = { link = "GruvboxGray" },
+ DapUIBreakpointsInfo = { link = "GruvboxAqua" },
+ DapUIBreakpointsLine = { link = "GruvboxYellow" },
+ DapUIBreakpointsPath = { link = "GruvboxBlue" },
+ DapUICurrentFrameName = { link = "GruvboxPurple" },
+ DapUIDecoration = { link = "GruvboxPurple" },
+ DapUIEndofBuffer = { link = "EndOfBuffer" },
+ DapUIFloatBorder = { link = "GruvboxAqua" },
+ DapUILineNumber = { link = "GruvboxYellow" },
+ DapUIModifiedValue = { link = "GruvboxRed" },
+ DapUIPlayPause = { fg = colors.green, bg = colors.bg1 },
+ DapUIRestart = { fg = colors.green, bg = colors.bg1 },
+ DapUIScope = { link = "GruvboxBlue" },
+ DapUISource = { link = "GruvboxFg1" },
+ DapUIStepBack = { fg = colors.blue, bg = colors.bg1 },
+ DapUIStepInto = { fg = colors.blue, bg = colors.bg1 },
+ DapUIStepOut = { fg = colors.blue, bg = colors.bg1 },
+ DapUIStepOver = { fg = colors.blue, bg = colors.bg1 },
+ DapUIStop = { fg = colors.red, bg = colors.bg1 },
+ DapUIStoppedThread = { link = "GruvboxBlue" },
+ DapUIThread = { link = "GruvboxBlue" },
+ DapUIType = { link = "GruvboxOrange" },
+ DapUIUnavailable = { link = "GruvboxGray" },
+ DapUIWatchesEmpty = { link = "GruvboxGray" },
+ DapUIWatchesError = { link = "GruvboxRed" },
+ DapUIWatchesValue = { link = "GruvboxYellow" },
+ DapUIWinSelect = { link = "GruvboxYellow" },
+ NeogitDiffDelete = { link = "DiffDelete" },
+ NeogitDiffAdd = { link = "DiffAdd" },
+ NeogitHunkHeader = { link = "WinBar" },
+ NeogitHunkHeaderHighlight = { link = "WinBarNC" },
+ DiffviewStatusModified = { link = "GruvboxGreenBold" },
+ DiffviewFilePanelInsertions = { link = "GruvboxGreenBold" },
+ DiffviewFilePanelDeletions = { link = "GruvboxRedBold" },
+ MiniAnimateCursor = { reverse = true, nocombine = true },
+ MiniAnimateNormalFloat = { fg = colors.fg1, bg = colors.bg1 },
+ MiniClueBorder = { link = "FloatBorder" },
+ MiniClueDescGroup = { link = "DiagnosticFloatingWarn" },
+ MiniClueDescSingle = { link = "NormalFloat" },
+ MiniClueNextKey = { link = "DiagnosticFloatingHint" },
+ MiniClueNextKeyWithPostkeys = { link = "DiagnosticFloatingError" },
+ MiniClueSeparator = { link = "DiagnosticFloatingInfo" },
+ MiniClueTitle = { link = "FloatTitle" },
+ MiniCompletionActiveParameter = { underline = true },
+ MiniCursorword = { underline = true },
+ MiniCursorwordCurrent = { underline = true },
+ MiniDepsChangeAdded = { link = "GruvboxGreen" },
+ MiniDepsChangeRemoved = { link = "GruvboxRed" },
+ MiniDepsHint = { link = "DiagnosticHint" },
+ MiniDepsInfo = { link = "DiagnosticInfo" },
+ MiniDepsMsgBreaking = { link = "DiagnosticWarn" },
+ MiniDepsPlaceholder = { link = "Comment" },
+ MiniDepsTitle = { link = "Title" },
+ MiniDepsTitleError = { link = "DiffDelete" },
+ MiniDepsTitleSame = { link = "DiffChange" },
+ MiniDepsTitleUpdate = { link = "DiffAdd" },
+ MiniDiffOverAdd = { link = "DiffAdd" },
+ MiniDiffOverChange = { link = "DiffText" },
+ MiniDiffOverContext = { link = "DiffChange" },
+ MiniDiffOverDelete = { link = "DiffDelete" },
+ MiniDiffSignAdd = { link = "GruvboxGreen" },
+ MiniDiffSignChange = { link = "GruvboxAqua" },
+ MiniDiffSignDelete = { link = "GruvboxRed" },
+ MiniFilesBorder = { link = "FloatBorder" },
+ MiniFilesBorderModified = { link = "DiagnosticFloatingWarn" },
+ MiniFilesCursorLine = { bg = colors.bg2 },
+ MiniFilesDirectory = { link = "Directory" },
+ MiniFilesFile = { link = "GruvboxFg1" },
+ MiniFilesNormal = { link = "NormalFloat" },
+ MiniFilesTitle = { link = "FloatTitle" },
+ MiniFilesTitleFocused = { link = "GruvboxOrangeBold" },
+ MiniHipatternsFixme = { fg = colors.bg0, bg = colors.red, bold = config.bold },
+ MiniHipatternsHack = { fg = colors.bg0, bg = colors.yellow, bold = config.bold },
+ MiniHipatternsNote = { fg = colors.bg0, bg = colors.blue, bold = config.bold },
+ MiniHipatternsTodo = { fg = colors.bg0, bg = colors.aqua, bold = config.bold },
+ MiniIconsAzure = { link = "GruvboxBlue" },
+ MiniIconsBlue = { link = "GruvboxBlue" },
+ MiniIconsCyan = { link = "GruvboxAqua" },
+ MiniIconsGreen = { link = "GruvboxGreen" },
+ MiniIconsGrey = { link = "GruvboxFg0" },
+ MiniIconsOrange = { link = "GruvboxOrange" },
+ MiniIconsPurple = { link = "GruvboxPurple" },
+ MiniIconsRed = { link = "GruvboxRed" },
+ MiniIconsYellow = { link = "GruvboxYellow" },
+ MiniIndentscopeSymbol = { link = "GruvboxGray" },
+ MiniIndentscopeSymbolOff = { link = "GruvboxYellow" },
+ MiniJump = { link = "GruvboxOrangeUnderline" },
+ MiniJump2dDim = { link = "GruvboxGray" },
+ MiniJump2dSpot = { fg = colors.orange, bold = config.bold, nocombine = true },
+ MiniJump2dSpotAhead = { fg = colors.aqua, bg = colors.bg0, nocombine = true },
+ MiniJump2dSpotUnique = { fg = colors.yellow, bold = config.bold, nocombine = true },
+ MiniMapNormal = { link = "NormalFloat" },
+ MiniMapSymbolCount = { link = "Special" },
+ MiniMapSymbolLine = { link = "Title" },
+ MiniMapSymbolView = { link = "Delimiter" },
+ MiniNotifyBorder = { link = "FloatBorder" },
+ MiniNotifyNormal = { link = "NormalFloat" },
+ MiniNotifyTitle = { link = "FloatTitle" },
+ MiniOperatorsExchangeFrom = { link = "IncSearch" },
+ MiniPickBorder = { link = "FloatBorder" },
+ MiniPickBorderBusy = { link = "DiagnosticFloatingWarn" },
+ MiniPickBorderText = { link = "FloatTitle" },
+ MiniPickIconDirectory = { link = "Directory" },
+ MiniPickIconFile = { link = "MiniPickNormal" },
+ MiniPickHeader = { link = "DiagnosticFloatingHint" },
+ MiniPickMatchCurrent = { bg = colors.bg2 },
+ MiniPickMatchMarked = { link = "Visual" },
+ MiniPickMatchRanges = { link = "DiagnosticFloatingHint" },
+ MiniPickNormal = { link = "NormalFloat" },
+ MiniPickPreviewLine = { link = "CursorLine" },
+ MiniPickPreviewRegion = { link = "IncSearch" },
+ MiniPickPrompt = { link = "DiagnosticFloatingInfo" },
+ MiniStarterCurrent = { nocombine = true },
+ MiniStarterFooter = { link = "GruvboxGray" },
+ MiniStarterHeader = { link = "Title" },
+ MiniStarterInactive = { link = "Comment" },
+ MiniStarterItem = { link = "Normal" },
+ MiniStarterItemBullet = { link = "Delimiter" },
+ MiniStarterItemPrefix = { link = "WarningMsg" },
+ MiniStarterSection = { link = "Delimiter" },
+ MiniStarterQuery = { link = "MoreMsg" },
+ MiniStatuslineDevinfo = { link = "StatusLine" },
+ MiniStatuslineFileinfo = { link = "StatusLine" },
+ MiniStatuslineFilename = { link = "StatusLineNC" },
+ MiniStatuslineInactive = { link = "StatusLineNC" },
+ MiniStatuslineModeCommand = { fg = colors.bg0, bg = colors.yellow, bold = config.bold, nocombine = true },
+ MiniStatuslineModeInsert = { fg = colors.bg0, bg = colors.blue, bold = config.bold, nocombine = true },
+ MiniStatuslineModeNormal = { fg = colors.bg0, bg = colors.fg1, bold = config.bold, nocombine = true },
+ MiniStatuslineModeOther = { fg = colors.bg0, bg = colors.aqua, bold = config.bold, nocombine = true },
+ MiniStatuslineModeReplace = { fg = colors.bg0, bg = colors.red, bold = config.bold, nocombine = true },
+ MiniStatuslineModeVisual = { fg = colors.bg0, bg = colors.green, bold = config.bold, nocombine = true },
+ MiniSurround = { link = "IncSearch" },
+ MiniTablineCurrent = { fg = colors.green, bg = colors.bg1, bold = config.bold, reverse = config.invert_tabline },
+ MiniTablineFill = { link = "TabLineFill" },
+ MiniTablineHidden = { fg = colors.bg4, bg = colors.bg1, reverse = config.invert_tabline },
+ MiniTablineModifiedCurrent = {
+ fg = colors.bg1,
+ bg = colors.green,
+ bold = config.bold,
+ reverse = config.invert_tabline,
+ },
+ MiniTablineModifiedHidden = { fg = colors.bg1, bg = colors.bg4, reverse = config.invert_tabline },
+ MiniTablineModifiedVisible = { fg = colors.bg1, bg = colors.fg1, reverse = config.invert_tabline },
+ MiniTablineTabpagesection = { link = "Search" },
+ MiniTablineVisible = { fg = colors.fg1, bg = colors.bg1, reverse = config.invert_tabline },
+ MiniTestEmphasis = { bold = config.bold },
+ MiniTestFail = { link = "GruvboxRedBold" },
+ MiniTestPass = { link = "GruvboxGreenBold" },
+ MiniTrailspace = { bg = colors.red },
+ WhichKeyTitle = { link = "NormalFloat" },
+ NeoTreeFloatBorder = { link = "GruvboxGray" },
+ NeoTreeTitleBar = { fg = colors.fg1, bg = colors.bg2 },
+ NeoTreeDirectoryIcon = { link = "GruvboxGreen" },
+ NeoTreeDirectoryName = { link = "GruvboxGreenBold" },
+ ["@comment"] = { link = "Comment" },
+ ["@none"] = { bg = "NONE", fg = "NONE" },
+ ["@preproc"] = { link = "PreProc" },
+ ["@define"] = { link = "Define" },
+ ["@operator"] = { link = "Operator" },
+ ["@punctuation.delimiter"] = { link = "Delimiter" },
+ ["@punctuation.bracket"] = { link = "Delimiter" },
+ ["@punctuation.special"] = { link = "Delimiter" },
+ ["@string"] = { link = "String" },
+ ["@string.regex"] = { link = "String" },
+ ["@string.regexp"] = { link = "String" },
+ ["@string.escape"] = { link = "SpecialChar" },
+ ["@string.special"] = { link = "SpecialChar" },
+ ["@string.special.path"] = { link = "Underlined" },
+ ["@string.special.symbol"] = { link = "Identifier" },
+ ["@string.special.url"] = { link = "Underlined" },
+ ["@character"] = { link = "Character" },
+ ["@character.special"] = { link = "SpecialChar" },
+ ["@boolean"] = { link = "Boolean" },
+ ["@number"] = { link = "Number" },
+ ["@number.float"] = { link = "Float" },
+ ["@float"] = { link = "Float" },
+ ["@function"] = { link = "Function" },
+ ["@function.builtin"] = { link = "Special" },
+ ["@function.call"] = { link = "Function" },
+ ["@function.macro"] = { link = "Macro" },
+ ["@function.method"] = { link = "Function" },
+ ["@method"] = { link = "Function" },
+ ["@method.call"] = { link = "Function" },
+ ["@constructor"] = { link = "Special" },
+ ["@parameter"] = { link = "Identifier" },
+ ["@keyword"] = { link = "Keyword" },
+ ["@keyword.conditional"] = { link = "Conditional" },
+ ["@keyword.debug"] = { link = "Debug" },
+ ["@keyword.directive"] = { link = "PreProc" },
+ ["@keyword.directive.define"] = { link = "Define" },
+ ["@keyword.exception"] = { link = "Exception" },
+ ["@keyword.function"] = { link = "Keyword" },
+ ["@keyword.import"] = { link = "Include" },
+ ["@keyword.operator"] = { link = "GruvboxRed" },
+ ["@keyword.repeat"] = { link = "Repeat" },
+ ["@keyword.return"] = { link = "Keyword" },
+ ["@keyword.storage"] = { link = "StorageClass" },
+ ["@conditional"] = { link = "Conditional" },
+ ["@repeat"] = { link = "Repeat" },
+ ["@debug"] = { link = "Debug" },
+ ["@label"] = { link = "Label" },
+ ["@include"] = { link = "Include" },
+ ["@exception"] = { link = "Exception" },
+ ["@type"] = { link = "Type" },
+ ["@type.builtin"] = { link = "Type" },
+ ["@type.definition"] = { link = "Typedef" },
+ ["@type.qualifier"] = { link = "Type" },
+ ["@storageclass"] = { link = "StorageClass" },
+ ["@attribute"] = { link = "PreProc" },
+ ["@field"] = { link = "Identifier" },
+ ["@property"] = { link = "Identifier" },
+ ["@variable"] = { link = "GruvboxFg1" },
+ ["@variable.builtin"] = { link = "Special" },
+ ["@variable.member"] = { link = "Identifier" },
+ ["@variable.parameter"] = { link = "Identifier" },
+ ["@constant"] = { link = "Constant" },
+ ["@constant.builtin"] = { link = "Special" },
+ ["@constant.macro"] = { link = "Define" },
+ ["@markup"] = { link = "GruvboxFg1" },
+ ["@markup.strong"] = { bold = config.bold },
+ ["@markup.italic"] = { link = "@text.emphasis" },
+ ["@markup.underline"] = { underline = config.underline },
+ ["@markup.strikethrough"] = { strikethrough = config.strikethrough },
+ ["@markup.heading"] = { link = "Title" },
+ ["@markup.raw"] = { link = "String" },
+ ["@markup.math"] = { link = "Special" },
+ ["@markup.environment"] = { link = "Macro" },
+ ["@markup.environment.name"] = { link = "Type" },
+ ["@markup.link"] = { link = "Underlined" },
+ ["@markup.link.label"] = { link = "SpecialChar" },
+ ["@markup.list"] = { link = "Delimiter" },
+ ["@markup.list.checked"] = { link = "GruvboxGreen" },
+ ["@markup.list.unchecked"] = { link = "GruvboxGray" },
+ ["@comment.todo"] = { link = "Todo" },
+ ["@comment.note"] = { link = "SpecialComment" },
+ ["@comment.warning"] = { link = "WarningMsg" },
+ ["@comment.error"] = { link = "ErrorMsg" },
+ ["@diff.plus"] = { link = "diffAdded" },
+ ["@diff.minus"] = { link = "diffRemoved" },
+ ["@diff.delta"] = { link = "diffChanged" },
+ ["@module"] = { link = "GruvboxFg1" },
+ ["@namespace"] = { link = "GruvboxFg1" },
+ ["@symbol"] = { link = "Identifier" },
+ ["@text"] = { link = "GruvboxFg1" },
+ ["@text.strong"] = { bold = config.bold },
+ ["@text.emphasis"] = { italic = config.italic.emphasis },
+ ["@text.underline"] = { underline = config.underline },
+ ["@text.strike"] = { strikethrough = config.strikethrough },
+ ["@text.title"] = { link = "Title" },
+ ["@text.literal"] = { link = "String" },
+ ["@text.uri"] = { link = "Underlined" },
+ ["@text.math"] = { link = "Special" },
+ ["@text.environment"] = { link = "Macro" },
+ ["@text.environment.name"] = { link = "Type" },
+ ["@text.reference"] = { link = "Constant" },
+ ["@text.todo"] = { link = "Todo" },
+ ["@text.todo.checked"] = { link = "GruvboxGreen" },
+ ["@text.todo.unchecked"] = { link = "GruvboxGray" },
+ ["@text.note"] = { link = "SpecialComment" },
+ ["@text.note.comment"] = { fg = colors.purple, bold = config.bold },
+ ["@text.warning"] = { link = "WarningMsg" },
+ ["@text.danger"] = { link = "ErrorMsg" },
+ ["@text.danger.comment"] = { fg = colors.fg0, bg = colors.red, bold = config.bold },
+ ["@text.diff.add"] = { link = "diffAdded" },
+ ["@text.diff.delete"] = { link = "diffRemoved" },
+ ["@tag"] = { link = "Tag" },
+ ["@tag.attribute"] = { link = "Identifier" },
+ ["@tag.delimiter"] = { link = "Delimiter" },
+ ["@punctuation"] = { link = "Delimiter" },
+ ["@macro"] = { link = "Macro" },
+ ["@structure"] = { link = "Structure" },
+ ["@lsp.type.class"] = { link = "@type" },
+ ["@lsp.type.comment"] = { link = "@comment" },
+ ["@lsp.type.decorator"] = { link = "@macro" },
+ ["@lsp.type.enum"] = { link = "@type" },
+ ["@lsp.type.enumMember"] = { link = "@constant" },
+ ["@lsp.type.function"] = { link = "@function" },
+ ["@lsp.type.interface"] = { link = "@constructor" },
+ ["@lsp.type.macro"] = { link = "@macro" },
+ ["@lsp.type.method"] = { link = "@method" },
+ ["@lsp.type.modifier.java"] = { link = "@keyword.type.java" },
+ ["@lsp.type.namespace"] = { link = "@namespace" },
+ ["@lsp.type.parameter"] = { link = "@parameter" },
+ ["@lsp.type.property"] = { link = "@property" },
+ ["@lsp.type.struct"] = { link = "@type" },
+ ["@lsp.type.type"] = { link = "@type" },
+ ["@lsp.type.typeParameter"] = { link = "@type.definition" },
+ ["@lsp.type.variable"] = { link = "@variable" },
+ }
+
+ for group, hl in pairs(config.overrides) do
+ if groups[group] then
+ -- "link" should not mix with other configs (:h hi-link)
+ groups[group].link = nil
+ end
+
+ groups[group] = vim.tbl_extend("force", groups[group] or {}, hl)
+ end
+
+ return groups
+end
+
+---@param config GruvboxConfig?
+Gruvbox.setup = function(config)
+ Gruvbox.config = vim.deepcopy(default_config)
+ Gruvbox.config = vim.tbl_deep_extend("force", Gruvbox.config, config or {})
+end
+
+--- main load function
+Gruvbox.load = function()
+ -- reset colors
+ if vim.g.colors_name then
+ vim.cmd.hi("clear")
+ end
+ vim.g.colors_name = "gruvbox"
+ vim.o.termguicolors = true
+
+ local groups = get_groups()
+
+ -- add highlights
+ for group, settings in pairs(groups) do
+ vim.api.nvim_set_hl(0, group, settings)
+ end
+end
+
+return Gruvbox
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
new file mode 100644
index 0000000..89a8c79
--- /dev/null
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,108 @@
+local set = vim.keymap.set
+
+local function remapkey(mode, key, action)
+ vim.keymap.set(mode, key, action, { noremap = true, silent = true })
+end
+
+-- dagnostic popup
+set("n", "<leader>e", ":lua vim.diagnostic.open_float()<CR>")
+
+-- ESC insert to normal ctrl jk
+-- set("i", "<C-j><C-k>", "<ESC>")
+
+-- set("v", "t", "!pandoc -f csv -t commonmark_x<CR>")
+set("v", "<m-t>", "!pandoc -f csv -t commonmark_x<CR>")
+
+-- common save shortcuts
+set("i", "<C-s>", "<ESC>:w<cr>a")
+set("n", "<C-s>", ":w<cr>")
+
+-- don't move the cursor
+set("n", "J", "mzJ`z")
+
+-- keep cursor in the middle
+set("n", "<C-d>", "<C-d>zz")
+set("n", "<C-u>", "<C-u>zz")
+set("n", "n", "nzzzv")
+set("n", "N", "Nzzzv")
+
+-- preserve clipboard when pasting
+set("x", "<space>p", '"_dp')
+
+-- sane movement with wrap o n
+remapkey({ "n", "v" }, "j", "gj")
+remapkey({ "n", "v" }, "k", "gk")
+remapkey({ "n", "v" }, "<Down>", "gj")
+remapkey({ "n", "v" }, "<Up>", "gk")
+remapkey("i", "<Down>", "<C-o>gj")
+remapkey("i", "<Up>", "<C-o>gk")
+
+-- terminal shortcuts
+remapkey("i", "<C-t>", "<Esc>:term<CR>A")
+remapkey("n", "<C-t", ":term<CR>A")
+
+-- tab key in visual mode
+set("v", "<Tab>", ">gv")
+set("v", "<S-Tab>", "<gv")
+
+-- visually select the characters that are wanted in the search, then type // to search for the next occurrence of the selected text
+remapkey("v", "//", "y/\\V<C-R>=escape(@\",'/\\')<CR><CR>")
+
+-- no ex mode etc
+remapkey("n", "Q", "<Nop>")
+remapkey("n", "<C-f>", "<Nop>")
+
+-- center current line
+remapkey("n", "cc", ":center<CR>")
+
+-- write to files with root privileges
+set("c", "w!!", ":w !sudo tee % >/dev/null")
+
+-- blamer
+-- set("", "<C-b>", ":BlamerToggle<CR>")
+
+-- delete to void register
+set({ "n", "v" }, "<leader>d", '"_d')
+
+-- quickfix list
+set("n", "<C-x>", "<cmd>cnext<CR>zz")
+set("n", "C-c>", "<cmd>cprev<CR>zz")
+set("n", "<leader>x", "<cmd>lnext<CR>zz")
+set("n", "<leader>c", "<cmd>lprev<CR>zz")
+
+-- typo fix
+set("i", "<F1>", "<Esc>")
+set("n", "q:", ":q<CR>")
+vim.cmd([[
+ ia tongiht tonight
+ ia htese these
+ ia od do
+ ia nothign nothing
+ ia htey they
+ ia htem them
+ ia iwth with
+ ia maxium maximum
+ ia funtcion function
+ ia fucntion function
+ ia funciton function
+ ia dfe def
+ ia edn end
+ ia teh the
+ ia hte the
+ ia htis this
+ ia tihs this
+ ia taht that
+ ia retunr return
+ ia reutrn return
+ ia eariler earlier
+ ia ulness unless
+ ia ahve have
+ ia chatper chapter
+ ia colmun column
+ ia amster master
+ ia orgiin origin
+ ia somehting something
+ ia hting thing
+ ia orgniaztion organization
+ ia orgnization organization
+]])
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
new file mode 100644
index 0000000..a887655
--- /dev/null
+++ b/.config/nvim/lua/config/lazy.lua
@@ -0,0 +1,23 @@
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+end
+vim.opt.rtp:prepend(lazypath)
+
+require("lazy").setup({
+ spec = {
+ { import = "plugins" },
+ },
+ install = { colorscheme = { "gruvbox" } },
+ checker = { enabled = true },
+})
diff --git a/.config/nvim/lua/config/lsp.lua b/.config/nvim/lua/config/lsp.lua
new file mode 100644
index 0000000..07d9d4c
--- /dev/null
+++ b/.config/nvim/lua/config/lsp.lua
@@ -0,0 +1,88 @@
+vim.diagnostic.config({
+ virtual_text = true,
+ current_line = true,
+})
+
+vim.lsp.config('*', {
+ capabilities = {
+ textDocument = {
+ semanticTokens = {
+ multilineTokenSupport = true,
+ }
+ }
+ },
+ root_markers = { '.git' },
+})
+
+vim.lsp.enable({
+ "rust_analyzer",
+ "ruff", -- python
+ "ty", -- python
+ -- "pyright", -- replace with astrals ty
+ -- "delance",
+ -- "cyright",
+ "bashls",
+ "clangd",
+ "lua_ls",
+
+ "gopls",
+ "cssls",
+ "ts_ls",
+ "jsonls",
+})
+
+local capabilities = require('blink.cmp').get_lsp_capabilities()
+
+local disable_semantic_tokens = {
+ lua = true,
+ python = true, -- TODO: fix ty highlight colors later
+}
+
+vim.api.nvim_create_autocmd('LspAttach', {
+ group = vim.api.nvim_create_augroup('lsp', {}),
+ callback = function(args)
+ local bufnr = args.buf
+ local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
+ if client:supports_method('textDocument/implementation') then
+ -- Create a keymap for vim.lsp.buf.implementation ...
+ end
+ -- Enable auto-completion. Note: Use CTRL-Y to select an item. |complete_CTRL-Y|
+ if client:supports_method('textDocument/completion') then
+ -- Optional: trigger autocompletion on EVERY keypress. May be slow!
+ -- local chars = {}; for i = 32, 126 do table.insert(chars, string.char(i)) end
+ -- client.server_capabilities.completionProvider.triggerCharacters = chars
+ vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true })
+ end
+ -- Auto-format ("lint") on save.
+ -- Usually not needed if server supports "textDocument/willSaveWaitUntil".
+ if not client:supports_method('textDocument/willSaveWaitUntil')
+ and client:supports_method('textDocument/formatting') then
+ vim.api.nvim_create_autocmd('BufWritePre', {
+ group = vim.api.nvim_create_augroup('lsp', { clear = false }),
+ buffer = args.buf,
+ callback = function()
+ vim.lsp.buf.format({ bufnr = args.buf, id = client.id, timeout_ms = 1000 })
+ end,
+ })
+ end
+ -- LSP keybindings
+ vim.opt_local.omnifunc = "v:lua.vim.lsp.omnifunc"
+ vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = 0, desc = "Goto definition" })
+ vim.keymap.set("n", "gr", vim.lsp.buf.references, { buffer = 0, desc = "List references" })
+ vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = 0, desc = "Goto declaration" })
+ vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, { buffer = 0, desc = "Goto type definition" })
+ -- vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = 0, desc = "Hover documentation" }) -- hover.nvim
+
+ vim.keymap.set("n", "<space>cr", vim.lsp.buf.rename, { buffer = 0, desc = "Rename all references" })
+ vim.keymap.set("n", "<space>ca", vim.lsp.buf.code_action, { buffer = 0, desc = "Code action" })
+
+ local filetype = vim.bo[bufnr].filetype
+ if disable_semantic_tokens[filetype] then
+ client.server_capabilities.semanticTokensProvider = nil
+ end
+
+ if client.name == "vscode-css-language-server" then
+ capabilities.textDocument.completion.completionItem.snippetSupport = true
+ end
+ end,
+})
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
new file mode 100644
index 0000000..a362fcd
--- /dev/null
+++ b/.config/nvim/lua/config/options.lua
@@ -0,0 +1,160 @@
+local opt = vim.opt
+
+-- vim.api.nvim_set_hl(0, "ColorColumn", { ctermbg = "NONE", bg = "NONE" })
+
+-- colorscheme gruvbox
+opt.termguicolors = true
+opt.background = "dark"
+vim.cmd.colorscheme("gruvbox")
+
+opt.mouse = "" -- disable mouse
+opt.encoding = "utf-8"
+opt.shortmess = "atI" -- disable intro screen
+opt.inccommand = "nosplit" -- shows ex-command change previews
+-- opt.inccommand = "split"
+opt.smartcase = true
+opt.ignorecase = true
+opt.number = true
+opt.relativenumber = true
+opt.splitbelow = true
+opt.splitright = true
+opt.signcolumn = "yes"
+opt.shada = { "'10", "<0", "s10", "h" }
+opt.clipboard = "unnamedplus"
+opt.expandtab = true -- expand tabs to spaces
+opt.smarttab = false -- fuck tabs
+-- opt.formatoptions:remove "o" -- Don't have `o` add a comment, should be in filetype (ftplugin)
+opt.spell = false
+opt.undolevels = 150
+opt.lazyredraw = true -- don't redraw screen during macros
+opt.sc = true -- show incomplete command at bottom right
+opt.swapfile = false
+opt.backupdir = "/tmp"
+opt.backupcopy = "yes"
+opt.directory = "/tmp"
+
+opt.timeoutlen = 500
+opt.ttimeoutlen = 10 -- fix esc in tmux
+opt.showmatch = true
+opt.mat = 5
+
+opt.visualbell = true
+opt.foldenable = false
+opt.foldmethod = "syntax"
+opt.foldlevel = 1
+opt.foldnestmax = 10
+opt.tabstop = 8 -- n-space tab width
+opt.shiftwidth = 2 -- allows the use of < and > for VISUAL indenting
+opt.softtabstop = 2 -- counts n space when DELETE or BACKSPACE is used
+opt.textwidth = 78
+opt.autoindent = true
+opt.smartindent = true
+opt.hlsearch = false
+opt.incsearch = true
+opt.backspace = "indent,eol,start"
+
+opt.history = 1000 -- 1000 lines of command history
+opt.cmdheight = 1 -- command line height
+opt.ruler = true -- ruler display in statusline
+opt.showmode = true -- show mode at bottom of screen
+opt.backup = false -- don't keep backups after close
+opt.writebackup = true -- do keep one while working
+opt.backupdir = "/tmp"
+opt.backupcopy = "yes"
+opt.directory = "/tmp"
+opt.showmatch = true -- show matching brackets (), {}, []
+opt.whichwrap = "h,l,<,>,[,]"
+opt.showcmd = true
+opt.modeline = true
+opt.formatoptions = "tcqjl"
+opt.selection = "inclusive"
+opt.autowrite = true
+opt.cinoptions = "g0,:0,l1,(0,t0"
+opt.shortmess = "at"
+opt.complete = ".,t,i,b,w,k"
+opt.wildchar = ("\t"):byte()
+opt.wildmenu = true
+opt.wildmode = "longest:full,full"
+opt.wildignore = "*/.git/*,*/tmp/*,*.swp,*/node_modules/*"
+opt.previewheight = 5
+opt.joinspaces = true
+opt.magic = true
+opt.suffixes = ".bak,~,.o,.info,.log,.rbx,.swp"
+opt.title = true
+opt.scrolloff = 8 -- start scrolling at 8 lines away from margins
+opt.sidescrolloff = 15
+opt.sidescroll = 1
+opt.cursorline = true
+opt.omnifunc = "syntaxcomplete#Complete"
+opt.laststatus = 3 -- 2
+opt.completeopt = "menu,menuone,noselect"
+
+-- TODO: convert to lua or get lualine plugin
+-- vim.cmd [[
+-- set statusline=
+-- set statusline+=%#PmenuSel#
+-- set statusline+=%#LineNr#
+-- set statusline+=\ %F
+-- set statusline+=%m
+-- set statusline+=%=
+-- set statusline+=%#CursorColumn#
+-- set statusline+=\ %y
+-- set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
+-- set statusline+=\ %{&fileformat}
+-- set statusline+=\ %p%%
+-- set statusline+=\ %l:%c
+-- set statusline+=\
+-- ]]
+
+vim.cmd([[
+ augroup encrypted
+ au!
+ autocmd BufReadPre,FileReadPre *.gpg set viminfo=
+ autocmd BufReadPre,FileReadPre *.gpg set noswapfile noundofile nobackup
+ autocmd BufReadPre,FileReadPre *.gpg set bin
+ autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
+ autocmd BufReadPost,FileReadPost *.gpg '[,']!gpg --decrypt 2> /dev/null
+ autocmd BufReadPost,FileReadPost *.gpg set nobin
+ autocmd BufReadPost,FileReadPost *.gpg let &ch = ch_save|unlet ch_save
+ autocmd BufReadPost,FileReadPost *.gpg execute ":doautocmd BufReadPost " . expand("%:r")
+ autocmd BufWritePre,FileWritePre *.gpg '[,']!gpg --default-recipient-self -ae 2>/dev/null
+ autocmd BufWritePost,FileWritePost *.gpg u
+ augroup END
+]])
+
+-- TODO: move and convert to lua
+-- vimwiki (move to vimwiki.lua config)
+--local hostname = vim.fn.hostname()
+--if hostname == "arcana" then
+-- vim.g.vimwiki_list = { { path = "/home/moxie/wiki" } }
+--elseif hostname == "hideaway" then
+-- vim.g.vimwiki_list = { { path = "/stash/wiki" } }
+--end
+
+-- open vimwiki links in a new vim buffer instead of xdg-open
+-- vim.cmd([[
+-- fun! VimwikiLinkHandler(link)
+-- let link_infos = vimwiki#base#resolve_link(a:link)
+-- try
+-- if link_infos.filename =~ "^http"
+-- exe '!$BROWSER "' . fnameescape(link_infos.filename) . '"'
+-- else
+-- exe "e " . fnameescape(link_infos.filename)
+-- endif
+-- return 1
+-- catch
+-- echo "Failed opening " . a:link
+-- return 0
+-- endtry
+-- endfun
+-- ]])
+
+-- remove docx and xlsx from zip.vim
+vim.g.zipPlugin_ext =
+"*.zip,*.jar,*.xpi,*.ja,*.war,*.ear,*.celzip,*.oxt,*.kmz,*.wsz,*.xap,*.docm,*.dotx,*.dotm,*.potx,*.potm,*.ppsx,*.ppsm,*.pptx,*.pptm,*.ppam,*.sldx,*.thmx,*.xlam,*.xlsm,*.xlsb,*.xltx,*.xltm,*.xlam,*.crtx,*.vdw,*.glox,*.gcsx,*.gqsx"
+
+vim.cmd([[
+ highlight GitGutterAdd guifg=#009900 ctermfg=2
+ highlight GitGutterChange guifg=#bbbb00 ctermfg=3
+ highlight GitGutterDelete guifg=#ff2222 ctermfg=1
+]])
diff --git a/.config/nvim/lua/config/terminal.lua b/.config/nvim/lua/config/terminal.lua
new file mode 100644
index 0000000..ea8f905
--- /dev/null
+++ b/.config/nvim/lua/config/terminal.lua
@@ -0,0 +1,19 @@
+local set = vim.opt_local
+
+vim.api.nvim_create_autocmd("TermOpen", {
+ group = vim.api.nvim_create_augroup("custom-term-open", {}),
+ callback = function()
+ set.number = false
+ set.relativenumber = false
+ set.scrolloff = 0
+ end,
+})
+
+vim.keymap.set("t", "<esc><esc>", "<c-\\><c-n>")
+vim.keymap.set("n", ",st", function()
+ vim.cmd.new()
+ vim.cmd.wincmd "J"
+ vim.api.nvim_win_set_height(0, 12)
+ vim.wo.winfixheight = true
+ vim.cmd.term()
+end)