summaryrefslogtreecommitdiff
path: root/lua/tjk/colorscheme.lua
blob: e4b9c8ebb6626e2574a3da13efb55ad0a416560b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-- use another colorscheme if running as root
if os.getenv "USER" == "root" then
	vim.cmd.colorscheme "koehler"
	return
end

-- use dark gruvbox variant
vim.o.background = "dark"

-- https://github.com/ellisonleao/gruvbox.nvim
require("gruvbox").setup {
	italic = {
		strings = false,
		emphasis = true,
		comments = false,
		operators = false,
		folds = true,
	},
	invert_selection = true, -- swap fg w/ bg on select
	contrast = "hard", -- preferred theme variant
	palette_overrides = {
		light0 = "#ffffff", -- use white instead of the default off-white for text
		light1 = "#ffffff",
		dark2  = "#363636", -- darker whitespace characters
	},
	overrides = {
		CursorLine = { bg = "#282828" }, -- dark0 (non hard)
		Directory = { link = "GruvboxGreenBold" },
		-- treesitter overrides (more similar to builtin python syntax highlighting)
		-- treesitter selectors can be overridden per language using @selector.language
		["@variable"]               = { link = "GruvboxFg0" },
		["@punctuation.bracket"]    = { link = "GruvboxFg0" },
		["@punctuation.delimiter"]  = { link = "GruvboxFg0" },
		["@keyword.import"]         = { link = "GruvboxBlue" },
		["@function"]               = { link = "GruvboxAqua" },
		["@function.method"]        = { link = "GruvboxAqua" },
		["@function.method"]        = { link = "GruvboxAqua" },
		["@attribute.builtin"]      = { link = "GruvboxGreenBold" },
		["@attribute"]              = { link = "GruvboxGreenBold" },
		["@operator"]               = { link = "GruvboxRed" },
		["@variable.member"]        = { link = "GruvboxFg0" },
		["@variable.parameter"]     = { link = "GruvboxFg0" },
		["@function.call"]          = { link = "GruvboxPurple" },
		["@function.method.call"]   = { link = "GruvboxPurple" },
		-- rainbow delimiters colors
		RainbowDelimiterRed     = { fg = "#ff4433" },
		RainbowDelimiterYellow  = { fg = "#ffff22" },
		RainbowDelimiterBlue    = { fg = "#66f3ff" },
		RainbowDelimiterOrange  = { fg = "#ffaa00" },
		RainbowDelimiterGreen   = { fg = "#99ff44" },
		RainbowDelimiterViolet  = { fg = "#aa00ff" },
		RainbowDelimiterCyan    = { fg = "#22ddff" },
		-- TODO italic string start / end
		--["@string_start"] = { italic = true },
		--["@string_end"] = { italic = true },
	},
}

-- set colorscheme
vim.cmd.colorscheme "gruvbox"

-- fix todo comment highlighting (here instead of theme overrides since this replaces the bg w/ default)
vim.api.nvim_set_hl(0, "Todo", { fg = "#ffffff", bold = true })