|
|
|
@ -0,0 +1,664 @@
|
|
|
|
|
local theme = {}
|
|
|
|
|
|
|
|
|
|
function theme.highlights(c, config)
|
|
|
|
|
local function remove_background(group)
|
|
|
|
|
group['bg'] = c.none
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function load_syntax()
|
|
|
|
|
-- Syntax highlight groups
|
|
|
|
|
|
|
|
|
|
local syntax = {
|
|
|
|
|
-- int, long, char, etc.
|
|
|
|
|
Type = { fg = c.quartz },
|
|
|
|
|
-- static, register, volatile, etc.
|
|
|
|
|
StorageClass = { fg = c.yellow, style = config.styles.storage_class },
|
|
|
|
|
-- struct, union, enum, etc.
|
|
|
|
|
Structure = { fg = c.yellow, style = config.styles.structure },
|
|
|
|
|
-- any constant
|
|
|
|
|
Constant = { fg = c.wisteria1 },
|
|
|
|
|
-- any character constant: 'c', '\n'
|
|
|
|
|
Character = { fg = c.green },
|
|
|
|
|
-- a number constant: 5
|
|
|
|
|
Number = { fg = c.quartz },
|
|
|
|
|
-- a boolean constant: TRUE, false
|
|
|
|
|
Boolean = { fg = c.quartz },
|
|
|
|
|
-- a floating point constant: 2.3e10
|
|
|
|
|
Float = { fg = c.quartz },
|
|
|
|
|
-- any statement
|
|
|
|
|
Statement = { fg = c.yellow },
|
|
|
|
|
-- case, default, etc.
|
|
|
|
|
Label = { fg = c.yellow },
|
|
|
|
|
-- sizeof", "+", "*", etc.
|
|
|
|
|
Operator = { fg = c.yellow },
|
|
|
|
|
-- try, catch, throw
|
|
|
|
|
Exception = { fg = c.yellow },
|
|
|
|
|
-- generic Preprocessor
|
|
|
|
|
PreProc = { fg = c.quartz },
|
|
|
|
|
-- preprocessor #include
|
|
|
|
|
Include = { fg = c.quartz },
|
|
|
|
|
-- preprocessor #define
|
|
|
|
|
Define = { fg = c.quartz },
|
|
|
|
|
-- same as Define
|
|
|
|
|
Macro = { fg = c.quartz },
|
|
|
|
|
-- A typedef
|
|
|
|
|
Typedef = { fg = c.yellow, style = config.styles.keywords },
|
|
|
|
|
-- preprocessor #if, #else, #endif, etc.
|
|
|
|
|
PreCondit = { fg = c.quartz },
|
|
|
|
|
-- any special symbol
|
|
|
|
|
Special = { fg = c.brown },
|
|
|
|
|
-- special character in a constant
|
|
|
|
|
SpecialChar = { fg = c.brown },
|
|
|
|
|
-- you can use CTRL-] on this
|
|
|
|
|
Tag = { fg = c.brown },
|
|
|
|
|
-- character that needs attention like , or .
|
|
|
|
|
Delimiter = { fg = c.brown },
|
|
|
|
|
-- special things inside a comment
|
|
|
|
|
SpecialComment = { fg = c.brown },
|
|
|
|
|
-- debugging statements
|
|
|
|
|
Debug = { fg = c.brown },
|
|
|
|
|
-- text that stands out, HTML links
|
|
|
|
|
Underlined = { style = 'underline' },
|
|
|
|
|
-- left blank, hidden
|
|
|
|
|
Ignore = {},
|
|
|
|
|
-- any erroneous construct
|
|
|
|
|
Error = { fg = c.red, style = 'bold,underline' },
|
|
|
|
|
-- anything that needs extra attention; mostly the keywords TODO FIXME and XXX
|
|
|
|
|
Todo = { fg = c.brown, style = 'bold,italic' },
|
|
|
|
|
Comment = { fg = c.bg3, style = config.styles.comments }, -- normal comments
|
|
|
|
|
-- normal if, then, else, endif, switch, etc.
|
|
|
|
|
Conditional = { fg = c.yellow, style = config.styles.loop_cond },
|
|
|
|
|
-- normal for, do, while, etc.
|
|
|
|
|
Keyword = { fg = c.yellow, style = config.styles.keywords },
|
|
|
|
|
-- normal any other keyword
|
|
|
|
|
Repeat = { fg = c.yellow, style = config.styles.loop_cond },
|
|
|
|
|
-- normal function names
|
|
|
|
|
Function = { fg = c.niagara, style = config.styles.functions },
|
|
|
|
|
-- any variable name
|
|
|
|
|
Identifier = { fg = c.niagara, style = config.styles.variables },
|
|
|
|
|
-- any string
|
|
|
|
|
String = { fg = c.green, config.styles.strings },
|
|
|
|
|
|
|
|
|
|
htmlLink = { fg = c.green, style = 'underline' },
|
|
|
|
|
htmlArg = { fg = c.light_blue },
|
|
|
|
|
htmlTag = { fg = c.bg6 },
|
|
|
|
|
htmlEndTag = { fg = c.bg6 },
|
|
|
|
|
htmlTagN = { fg = c.bg5 },
|
|
|
|
|
htmlTagName = { fg = c.light_blue },
|
|
|
|
|
htmlSpecialTagName = { fg = c.yellow },
|
|
|
|
|
htmlH1 = { fg = c.light_blue, style = 'bold' },
|
|
|
|
|
htmlH2 = { fg = c.wisteria1, style = 'bold' },
|
|
|
|
|
htmlH3 = { fg = c.niagara, style = 'bold' },
|
|
|
|
|
htmlH4 = { fg = c.wisteria, style = 'bold' },
|
|
|
|
|
htmlH5 = { fg = c.quartz, style = 'bold' },
|
|
|
|
|
|
|
|
|
|
cssAttributeSelector = { fg = c.light_blue },
|
|
|
|
|
cssSelectorOp = { fg = c.niagara1 },
|
|
|
|
|
cssTagName = { fg = c.yellow },
|
|
|
|
|
|
|
|
|
|
markdownBlockquote = { fg = c.bg6 },
|
|
|
|
|
markdownBold = { style = 'bold' },
|
|
|
|
|
markdownCode = { fg = c.yellow },
|
|
|
|
|
markdownCodeBlock = { fg = c.yellow },
|
|
|
|
|
markdownCodeDelimiter = { fg = c.green },
|
|
|
|
|
markdownH1 = { fg = c.light_blue, style = 'bold' },
|
|
|
|
|
markdownH2 = { fg = c.wisteria1, style = 'bold' },
|
|
|
|
|
markdownH3 = { fg = c.niagara, style = 'bold' },
|
|
|
|
|
markdownH4 = { fg = c.wisteria },
|
|
|
|
|
markdownH5 = { fg = c.quartz },
|
|
|
|
|
markdownH6 = { fg = c.green },
|
|
|
|
|
markdownH1Delimiter = { fg = c.bg5 },
|
|
|
|
|
markdownH2Delimiter = { fg = c.bg5 },
|
|
|
|
|
markdownH3Delimiter = { fg = c.bg5 },
|
|
|
|
|
markdownH4Delimiter = { fg = c.bg5 },
|
|
|
|
|
markdownH5Delimiter = { fg = c.bg5 },
|
|
|
|
|
markdownH6Delimiter = { fg = c.bg5 },
|
|
|
|
|
markdownId = { fg = c.yellow },
|
|
|
|
|
markdownIdDeclaration = { fg = c.niagara },
|
|
|
|
|
markdownIdDelimiter = { fg = c.light_blue },
|
|
|
|
|
markdownLinkDelimiter = { fg = c.bg5 },
|
|
|
|
|
markdownItalic = { style = 'italic' },
|
|
|
|
|
markdownLinkText = { fg = c.niagara },
|
|
|
|
|
markdownListMarker = { fg = c.red_1 },
|
|
|
|
|
markdownOrderedListMarker = { fg = c.red },
|
|
|
|
|
markdownRule = { fg = c.bg5 },
|
|
|
|
|
markdownUrl = { fg = c.green, style = 'underline' },
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return syntax
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function load_editor()
|
|
|
|
|
-- Editor highlight groups
|
|
|
|
|
|
|
|
|
|
local editor = {
|
|
|
|
|
-- normal text and background color for floating windows
|
|
|
|
|
NormalFloat = { fg = c.fg, bg = c.bg1 },
|
|
|
|
|
-- floating window border
|
|
|
|
|
FloatBorder = { fg = c.yellow },
|
|
|
|
|
-- used for the columns set with 'colorcolumn'
|
|
|
|
|
ColorColumn = { bg = c.bg2 },
|
|
|
|
|
-- placeholder characters substituted for concealed text (see 'conceallevel')
|
|
|
|
|
Conceal = {},
|
|
|
|
|
-- the character under the cursor
|
|
|
|
|
Cursor = { bg = c.none, fg = c.none, style = 'reverse' },
|
|
|
|
|
-- like Cursor, but used when in IME mode
|
|
|
|
|
CursorIM = { fg = c.none, bg = c.none, style = 'reverse' },
|
|
|
|
|
-- directory names (and other special names in listings)
|
|
|
|
|
Directory = { fg = c.light_blue, bg = c.none },
|
|
|
|
|
-- diff mode: Added line
|
|
|
|
|
DiffAdd = { fg = c.none, bg = c.green },
|
|
|
|
|
-- diff mode: Changed line
|
|
|
|
|
DiffChange = { fg = c.none, bg = c.brown },
|
|
|
|
|
-- diff mode: Deleted line
|
|
|
|
|
DiffDelete = { fg = c.none, bg = c.red1 },
|
|
|
|
|
-- diff mode: Changed text within a changed line
|
|
|
|
|
DiffText = { fg = c.none, bg = c.green },
|
|
|
|
|
-- error messages
|
|
|
|
|
ErrorMsg = { fg = c.red_1 },
|
|
|
|
|
-- line used for closed folds
|
|
|
|
|
Folded = { fg = c.brown, bg = c.none, style = 'italic' },
|
|
|
|
|
-- 'foldcolumn'
|
|
|
|
|
FoldColumn = {},
|
|
|
|
|
-- 'incsearch' highlighting; also used for the text replaced with ":s///c"
|
|
|
|
|
IncSearch = { fg = c.yellow, bg = c.bg3, style = 'bold,underline' },
|
|
|
|
|
-- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
|
|
|
|
|
LineNr = { fg = c.bg3 },
|
|
|
|
|
-- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
|
|
|
|
|
CursorLineNr = { fg = c.yellow, style = config.styles.cursorlinenr },
|
|
|
|
|
-- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
|
|
|
|
|
MatchParen = { fg = c.wisteria1, bg = c.none, style = 'bold,underline' },
|
|
|
|
|
-- 'showmode' message (e.g., "-- INSERT -- ")
|
|
|
|
|
ModeMsg = { fg = c.light_blue, style = 'bold' },
|
|
|
|
|
-- |more-prompt|
|
|
|
|
|
MoreMsg = { fg = c.light_blue, style = 'bold' },
|
|
|
|
|
-- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist
|
|
|
|
|
-- in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line).
|
|
|
|
|
-- See also |hl-EndOfBuffer|.
|
|
|
|
|
NonText = { fg = c.bg2 },
|
|
|
|
|
-- normal item |hl-Pmenu|
|
|
|
|
|
Pmenu = { fg = c.fg, bg = c.bg1 },
|
|
|
|
|
-- selected item |hl-PmenuSel|
|
|
|
|
|
PmenuSel = { bg = c.bg2 },
|
|
|
|
|
-- scrollbar |hl-PmenuSbar|
|
|
|
|
|
PmenuSbar = { bg = c.bg },
|
|
|
|
|
-- thumb of the scrollbar |hl-PmenuThumb|
|
|
|
|
|
PmenuThumb = { bg = c.fg },
|
|
|
|
|
-- |hit-enter| prompt and yes/no questions
|
|
|
|
|
Question = { fg = c.green },
|
|
|
|
|
-- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
|
|
|
|
|
QuickFixLine = { bg = c.light_blue, style = 'bold,italic' },
|
|
|
|
|
-- Line numbers for quickfix lists
|
|
|
|
|
qfLineNr = { fg = c.yellow },
|
|
|
|
|
-- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
|
|
|
|
|
Search = { fg = c.fg2, bg = c.bg4, style = 'bold' },
|
|
|
|
|
-- Unprintable characters: text displayed differently from what it really is.
|
|
|
|
|
-- But not 'listchars' whitespace. |hl-Whitespace|
|
|
|
|
|
SpecialKey = { fg = c.bg6 },
|
|
|
|
|
-- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.
|
|
|
|
|
SpellBad = { style = 'italic,undercurl' },
|
|
|
|
|
-- Word that should start with a capital. |spell| Combined with the highlighting used otherwise.
|
|
|
|
|
SpellCap = { fg = c.bg6 },
|
|
|
|
|
-- Word that is recognized by the spellchecker as one that is used in another region.
|
|
|
|
|
-- |spell| Combined with the highlighting used otherwise.
|
|
|
|
|
SpellLocal = { fg = c.brown },
|
|
|
|
|
-- Word that is recognized by the spellchecker as one that is hardly ever used.
|
|
|
|
|
-- |spell| Combined with the highlighting used otherwise.
|
|
|
|
|
SpellRare = { fg = c.brown },
|
|
|
|
|
-- status line of current window
|
|
|
|
|
StatusLine = { fg = c.white, bg = c.bg1 },
|
|
|
|
|
-- status lines of not-current windows Note: if this is equal to "StatusLine"
|
|
|
|
|
-- Vim will use "^^^" in the status line of the current window.
|
|
|
|
|
StatusLineNC = { fg = c.bg5 },
|
|
|
|
|
-- status line of current terminal window
|
|
|
|
|
StatusLineTerm = { fg = c.fg, bg = c.bg1 },
|
|
|
|
|
-- status lines of not-current terminal windows Note: if this is equal to "StatusLine"
|
|
|
|
|
-- Vim will use "^^^" in the status line of the current window.
|
|
|
|
|
StatusLineTermNC = { fg = c.bg5 },
|
|
|
|
|
-- tab pages line, where there are no labels
|
|
|
|
|
TabLineFill = {},
|
|
|
|
|
-- tab pages line, active tab page label
|
|
|
|
|
TablineSel = { fg = c.white },
|
|
|
|
|
Tabline = { fg = c.bg5 },
|
|
|
|
|
-- titles for output from ":set all", ":autocmd" etc.
|
|
|
|
|
Title = { fg = c.green, bg = c.none, style = 'bold' },
|
|
|
|
|
-- Visual mode selection
|
|
|
|
|
Visual = { fg = c.none, bg = c.bg1 },
|
|
|
|
|
-- Visual mode selection when vim is "Not Owning the Selection".
|
|
|
|
|
VisualNOS = { fg = c.none, bg = c.bg1 },
|
|
|
|
|
-- warning messages
|
|
|
|
|
WarningMsg = { fg = c.red_1 },
|
|
|
|
|
-- "nbsp", "space", "tab" and "trail" in 'listchars'
|
|
|
|
|
Whitespace = { fg = c.bg3 },
|
|
|
|
|
-- current match in 'wildmenu' completion
|
|
|
|
|
WildMenu = { fg = c.black, bg = c.niagara, style = 'bold' },
|
|
|
|
|
-- window bar of current window
|
|
|
|
|
WinBar = { fg = c.white, bg = c.bg1 },
|
|
|
|
|
-- window bar of not-current windows
|
|
|
|
|
WinBarNC = { fg = c.bg6, bg = c.bg_1 },
|
|
|
|
|
-- Screen-column at the cursor, when 'cursorcolumn' is set.
|
|
|
|
|
CursorColumn = { fg = c.none, bg = c.bg1 },
|
|
|
|
|
-- Screen-line at the cursor, when 'cursorline' is set. Low-priority if foreground (ctermfg OR guifg) is not set.
|
|
|
|
|
CursorLine = { fg = c.none, bg = c.bg1 },
|
|
|
|
|
-- Normal mode message in the cmdline
|
|
|
|
|
NormalMode = { fg = c.light_blue, bg = c.none, style = 'reverse' },
|
|
|
|
|
-- Insert mode message in the cmdline
|
|
|
|
|
InsertMode = { fg = c.green, bg = c.none, style = 'reverse' },
|
|
|
|
|
-- Replace mode message in the cmdline
|
|
|
|
|
ReplacelMode = { fg = c.red, bg = c.none, style = 'reverse' },
|
|
|
|
|
-- Visual mode message in the cmdline
|
|
|
|
|
VisualMode = { fg = c.wisteria1, bg = c.none, style = 'reverse' },
|
|
|
|
|
-- Command mode message in the cmdline
|
|
|
|
|
CommandMode = { fg = c.yellow, bg = c.none, style = 'reverse' },
|
|
|
|
|
Warnings = { fg = c.red1 },
|
|
|
|
|
|
|
|
|
|
healthError = { fg = c.red },
|
|
|
|
|
healthSuccess = { fg = c.green },
|
|
|
|
|
healthWarning = { fg = c.red_1 },
|
|
|
|
|
|
|
|
|
|
-- Dashboard
|
|
|
|
|
DashboardShortCut = { fg = c.light_blue },
|
|
|
|
|
DashboardHeader = { fg = c.wisteria1 },
|
|
|
|
|
DashboardCenter = { fg = c.niagara },
|
|
|
|
|
DashboardFooter = { fg = c.green, style = 'italic' },
|
|
|
|
|
|
|
|
|
|
-- normal text and background color
|
|
|
|
|
Normal = { fg = c.fg, bg = c.bg },
|
|
|
|
|
NormalNC = { bg = c.bg },
|
|
|
|
|
SignColumn = { fg = c.fg, bg = c.none },
|
|
|
|
|
|
|
|
|
|
-- the column separating vertically split windows
|
|
|
|
|
VertSplit = { fg = c.bg },
|
|
|
|
|
|
|
|
|
|
EndOfBuffer = { fg = c.bg6 },
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-- Options:
|
|
|
|
|
|
|
|
|
|
-- Set non-current background
|
|
|
|
|
if config.fade_nc then
|
|
|
|
|
editor.NormalNC['bg'] = c.gb1
|
|
|
|
|
editor.NormalFloat['bg'] = c.bg
|
|
|
|
|
editor.FloatBorder['bg'] = c.bg
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Set transparent background
|
|
|
|
|
if config.disable.background then
|
|
|
|
|
remove_background(editor.Normal)
|
|
|
|
|
remove_background(editor.NormalNC)
|
|
|
|
|
remove_background(editor.SignColumn)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Set transparent cursorline
|
|
|
|
|
if config.disable.cursorline then
|
|
|
|
|
remove_background(editor.CursorLine)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Set transparent eob lines
|
|
|
|
|
if config.disable.eob_lines then
|
|
|
|
|
editor.EndOfBuffer['fg'] = c.bg
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Inverse highlighting
|
|
|
|
|
if config.inverse.match_paren then
|
|
|
|
|
editor.MatchParen['style'] = 'reverse,bold'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Add window split borders
|
|
|
|
|
if config.borders then
|
|
|
|
|
editor.VertSplit['fg'] = c.niagara_2
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return editor
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function load_treesitter()
|
|
|
|
|
-- TreeSitter highlight groups
|
|
|
|
|
|
|
|
|
|
local treesitter = {
|
|
|
|
|
-- Annotations that can be attached to the code to denote some kind of meta information. e.g. C++/Dart attributes.
|
|
|
|
|
['@attribute'] = { fg = c.yellow },
|
|
|
|
|
-- Boolean literals: `True` and `False` in Python.
|
|
|
|
|
['@boolean'] = { fg = c.quartz },
|
|
|
|
|
-- Character literals: `'a'` in C.
|
|
|
|
|
['@character'] = { fg = c.green },
|
|
|
|
|
-- Line comments and block comments.
|
|
|
|
|
['@comment'] = { fg = c.bg3, style = config.styles.comments },
|
|
|
|
|
-- Keywords related to conditionals: `if`, `when`, `cond`, etc.
|
|
|
|
|
['@conditional'] = { fg = c.yellow, style = config.styles.loop_cond },
|
|
|
|
|
-- Constants identifiers. These might not be semantically constant. E.g. uppercase variables in Python.
|
|
|
|
|
['@constant'] = { fg = c.wisteria1 },
|
|
|
|
|
-- Built-in constant values: `nil` in Lua.
|
|
|
|
|
['@constant.builtin'] = { fg = c.wisteria1 },
|
|
|
|
|
-- Constants defined by macros: `NULL` in C.
|
|
|
|
|
['@constant.macro'] = { fg = c.wisteria1 },
|
|
|
|
|
-- Constructor calls and definitions: `{}` in Lua, and Java constructors.
|
|
|
|
|
['@constructor'] = { fg = c.yellow },
|
|
|
|
|
-- Syntax/parser errors. This might highlight large sections of code while the user is typing
|
|
|
|
|
-- still incomplete code, use a sensible highlight.
|
|
|
|
|
['@error'] = { fg = c.red },
|
|
|
|
|
-- Exception related keywords: `try`, `except`, `finally` in Python.
|
|
|
|
|
['@exception'] = { fg = c.yellow },
|
|
|
|
|
-- Object and struct fields.
|
|
|
|
|
['@field'] = { fg = c.niagara },
|
|
|
|
|
-- Floating-point number literals.
|
|
|
|
|
['@float'] = { fg = c.quartz },
|
|
|
|
|
-- Function calls and definitions.
|
|
|
|
|
['@function'] = { fg = c.fg_1, style = config.styles.functions },
|
|
|
|
|
-- Built-in functions: `print` in Lua.
|
|
|
|
|
['@function.builtin'] = { fg = c.light_blie, style = config.styles.functions },
|
|
|
|
|
-- Macro defined functions (calls and definitions): each `macro_rules` in Rust.
|
|
|
|
|
['@function.macro'] = { fg = c.yellow },
|
|
|
|
|
-- File or module inclusion keywords: `#include` in C, `use` or `extern crate` in Rust.
|
|
|
|
|
['@include'] = { fg = c.quartz },
|
|
|
|
|
-- Keywords that don't fit into other categories.
|
|
|
|
|
['@keyword'] = { fg = c.yellow, style = config.styles.keywords },
|
|
|
|
|
-- Keywords used to define a function: `function` in Lua, `def` and `lambda` in Python.
|
|
|
|
|
['@keyword.function'] = { fg = c.yellow, style = config.styles.keywords },
|
|
|
|
|
-- Unary and binary operators that are English words: `and`, `or` in Python; `sizeof` in C.
|
|
|
|
|
['@keyword.operator'] = { fg = c.yellow },
|
|
|
|
|
-- Keywords like `return` and `yield`.
|
|
|
|
|
['@keyword.return'] = { fg = c.yellow },
|
|
|
|
|
-- GOTO labels: `label:` in C, and `::label::` in Lua.
|
|
|
|
|
['@label'] = { fg = c.yellow },
|
|
|
|
|
-- Method calls and definitions.
|
|
|
|
|
['@method'] = { fg = c.quartz, style = config.styles.functions },
|
|
|
|
|
-- Identifiers referring to modules and namespaces.
|
|
|
|
|
['@namespace'] = { fg = c.niagara },
|
|
|
|
|
-- Numeric literals that don't fit into other categories.
|
|
|
|
|
['@number'] = { fg = c.brown },
|
|
|
|
|
-- Binary or unary operators: `+`, and also `->` and `*` in C.
|
|
|
|
|
['@operator'] = { fg = c.bg6 },
|
|
|
|
|
-- Parameters of a function.
|
|
|
|
|
['@parameter'] = { fg = c.wisteria }, -- TODO: see what it does
|
|
|
|
|
-- References to parameters of a function.
|
|
|
|
|
['@parameter.reference'] = { fg = c.wisteria },
|
|
|
|
|
-- Same as `@field`.
|
|
|
|
|
['@property'] = { fg = c.wisteria1 },
|
|
|
|
|
-- Punctuation delimiters: Periods, commas, semicolons, etc.
|
|
|
|
|
['@punctuation.delimiter'] = { fg = c.niagara },
|
|
|
|
|
-- Brackets, braces, parentheses, etc.
|
|
|
|
|
['@punctuation.bracket'] = { fg = c.niagara_1 },
|
|
|
|
|
-- Special punctuation that doesn't fit into the previous categories.
|
|
|
|
|
['@punctuation.special'] = { fg = c.niagara },
|
|
|
|
|
-- Keywords related to loops: `for`, `while`, etc.
|
|
|
|
|
['@repeat'] = { fg = c.yellow, style = config.styles.loop_cond },
|
|
|
|
|
-- String literals.
|
|
|
|
|
['@string'] = { fg = c.green, style = config.styles.strings },
|
|
|
|
|
-- Regular expression literals.
|
|
|
|
|
['@string.regex'] = { fg = c.brown },
|
|
|
|
|
-- Escape characters within a string: `\n`, `\t`, etc.
|
|
|
|
|
['@string.escape'] = { fg = c.brown },
|
|
|
|
|
-- Identifiers referring to symbols or atoms.
|
|
|
|
|
['@symbol'] = { fg = c.light_blue },
|
|
|
|
|
-- Tags like HTML tag names.
|
|
|
|
|
['@tag'] = { fg = c.yellow },
|
|
|
|
|
-- HTML tag attributes.
|
|
|
|
|
['@tag.attribute'] = { fg = c.bg6 },
|
|
|
|
|
-- Tag delimiters like `<` `>` `/`.
|
|
|
|
|
['@tag.delimiter'] = { fg = c.fg2 },
|
|
|
|
|
-- Non-structured text. Like text in a markup language.
|
|
|
|
|
['@text'] = { fg = c.fg },
|
|
|
|
|
-- Text to be represented in bold.
|
|
|
|
|
['@text.strong'] = { style = 'bold' },
|
|
|
|
|
-- Text to be represented with emphasis.
|
|
|
|
|
['@text.emphasis'] = { style = 'italic' },
|
|
|
|
|
-- Text to be represented with an underline.
|
|
|
|
|
['@text.underline'] = { style = 'underline' },
|
|
|
|
|
-- Text that is part of a title.
|
|
|
|
|
['@text.title'] = { fg = c.wisteria1, style = 'bold' },
|
|
|
|
|
-- Literal or verbatim text.
|
|
|
|
|
['@text.literal'] = { fg = c.green },
|
|
|
|
|
-- added text (for diff files)
|
|
|
|
|
['@text.diff.add'] = { fg = c.green },
|
|
|
|
|
-- deleted text (for diff files)
|
|
|
|
|
['@text.diff.delete'] = { fg = c.red_1 },
|
|
|
|
|
-- URIs like hyperlinks or email addresses.
|
|
|
|
|
['@text.uri'] = { fg = c.green, style = 'underline' },
|
|
|
|
|
-- Math environments like LaTeX's `$ ... $`
|
|
|
|
|
['@text.math'] = { fg = c.fg },
|
|
|
|
|
-- Footnotes, text references, citations, etc.
|
|
|
|
|
['@text.reference'] = { fg = c.brown },
|
|
|
|
|
-- Text environments of markup languages.
|
|
|
|
|
['@text.environment'] = { fg = c.fg },
|
|
|
|
|
-- Text/string indicating the type of text environment. Like the name of a `\begin` block in LaTeX.
|
|
|
|
|
['@text.environment.name'] = { fg = c.fg },
|
|
|
|
|
-- Text TODOS
|
|
|
|
|
['@text.todo'] = { fg = c.brown, style = 'bold' },
|
|
|
|
|
-- Text representation of an informational note.
|
|
|
|
|
['@note'] = { fg = c.yellow, style = 'bold' },
|
|
|
|
|
-- Text representation of a warning note.
|
|
|
|
|
['@warning'] = { fg = c.red_1, style = 'bold' },
|
|
|
|
|
-- Text representation of a danger note.
|
|
|
|
|
['@danger'] = { fg = c.red1, style = 'bold' },
|
|
|
|
|
-- Type (and class) definitions and annotations.
|
|
|
|
|
['@type'] = { fg = c.yellow, style = config.styles.storage_class },
|
|
|
|
|
-- Built-in types: `i32` in Rust.
|
|
|
|
|
['@type.builtin'] = { fg = c.quartz },
|
|
|
|
|
-- Variable names that don't fit into other categories.
|
|
|
|
|
['@variable'] = { fg = c.fg, style = config.styles.variables },
|
|
|
|
|
-- Variable names defined by the language: `this` or `self` in Javascript.
|
|
|
|
|
['@variable.builtin'] = { fg = c.wisteria, style = config.styles.variables },
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return treesitter
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function load_lsp()
|
|
|
|
|
-- Lsp highlight groups
|
|
|
|
|
|
|
|
|
|
local lsp = {
|
|
|
|
|
-- used for "Error" diagnostic virtual text
|
|
|
|
|
LspDiagnosticsDefaultError = { fg = c.red1 },
|
|
|
|
|
-- used for "Error" diagnostic signs in sign column
|
|
|
|
|
LspDiagnosticsSignError = { fg = c.red1 },
|
|
|
|
|
-- used for "Error" diagnostic messages in the diagnostics float
|
|
|
|
|
LspDiagnosticsFloatingError = { fg = c.red1 },
|
|
|
|
|
-- Virtual text "Error"
|
|
|
|
|
LspDiagnosticsVirtualTextError = { fg = c.red1 },
|
|
|
|
|
-- used to underline "Error" diagnostics.
|
|
|
|
|
LspDiagnosticsUnderlineError = { style = config.styles.diagnostics, sp = c.red1 },
|
|
|
|
|
-- used for "Warning" diagnostic signs in sign column
|
|
|
|
|
LspDiagnosticsDefaultWarning = { fg = c.red_1 },
|
|
|
|
|
-- used for "Warning" diagnostic signs in sign column
|
|
|
|
|
LspDiagnosticsSignWarning = { fg = c.red_1 },
|
|
|
|
|
-- used for "Warning" diagnostic messages in the diagnostics float
|
|
|
|
|
LspDiagnosticsFloatingWarning = { fg = c.red_1 },
|
|
|
|
|
-- Virtual text "Warning"
|
|
|
|
|
LspDiagnosticsVirtualTextWarning = { fg = c.red_1 },
|
|
|
|
|
-- used to underline "Warning" diagnostics.
|
|
|
|
|
LspDiagnosticsUnderlineWarning = { style = config.styles.diagnostics, sp = c.red_1 },
|
|
|
|
|
-- used for "Information" diagnostic virtual text
|
|
|
|
|
LspDiagnosticsDefaultInformation = { fg = c.yellow },
|
|
|
|
|
-- used for "Information" diagnostic signs in sign column
|
|
|
|
|
LspDiagnosticsSignInformation = { fg = c.yellow },
|
|
|
|
|
-- used for "Information" diagnostic messages in the diagnostics float
|
|
|
|
|
LspDiagnosticsFloatingInformation = { fg = c.yellow },
|
|
|
|
|
-- Virtual text "Information"
|
|
|
|
|
LspDiagnosticsVirtualTextInformation = { fg = c.yellow },
|
|
|
|
|
-- used to underline "Information" diagnostics.
|
|
|
|
|
LspDiagnosticsUnderlineInformation = { style = config.styles.diagnostics, sp = c.yellow },
|
|
|
|
|
-- used for "Hint" diagnostic virtual text
|
|
|
|
|
LspDiagnosticsDefaultHint = { fg = c.wisteria },
|
|
|
|
|
-- used for "Hint" diagnostic signs in sign column
|
|
|
|
|
LspDiagnosticsSignHint = { fg = c.wisteria },
|
|
|
|
|
-- used for "Hint" diagnostic messages in the diagnostics float
|
|
|
|
|
LspDiagnosticsFloatingHint = { fg = c.wisteria },
|
|
|
|
|
-- Virtual text "Hint"
|
|
|
|
|
LspDiagnosticsVirtualTextHint = { fg = c.wisteria },
|
|
|
|
|
-- used to underline "Hint" diagnostics.
|
|
|
|
|
LspDiagnosticsUnderlineHint = { style = config.styles.diagnostics, sp = c.wisteria },
|
|
|
|
|
-- used for highlighting "text" references
|
|
|
|
|
LspReferenceText = { style = 'underline', sp = c.yellow },
|
|
|
|
|
-- used for highlighting "read" references
|
|
|
|
|
LspReferenceRead = { style = 'underline', sp = c.yellow },
|
|
|
|
|
-- used for highlighting "write" references
|
|
|
|
|
LspReferenceWrite = { style = 'underline', sp = c.yellow },
|
|
|
|
|
|
|
|
|
|
LspSignatureActiveParameter = { fg = c.none, bg = c.bg2, style = 'bold' },
|
|
|
|
|
LspCodeLens = { fg = c.bg5 },
|
|
|
|
|
|
|
|
|
|
DiagnosticError = { link = 'LspDiagnosticsDefaultError' },
|
|
|
|
|
DiagnosticWarn = { link = 'LspDiagnosticsDefaultWarning' },
|
|
|
|
|
DiagnosticInfo = { link = 'LspDiagnosticsDefaultInformation' },
|
|
|
|
|
DiagnosticHint = { link = 'LspDiagnosticsDefaultHint' },
|
|
|
|
|
DiagnosticVirtualTextWarn = { link = 'LspDiagnosticsVirtualTextWarning' },
|
|
|
|
|
DiagnosticUnderlineWarn = { link = 'LspDiagnosticsUnderlineWarning' },
|
|
|
|
|
DiagnosticFloatingWarn = { link = 'LspDiagnosticsFloatingWarning' },
|
|
|
|
|
DiagnosticSignWarn = { link = 'LspDiagnosticsSignWarning' },
|
|
|
|
|
DiagnosticVirtualTextError = { link = 'LspDiagnosticsVirtualTextError' },
|
|
|
|
|
DiagnosticUnderlineError = { link = 'LspDiagnosticsUnderlineError' },
|
|
|
|
|
DiagnosticFloatingError = { link = 'LspDiagnosticsFloatingError' },
|
|
|
|
|
DiagnosticSignError = { link = 'LspDiagnosticsSignError' },
|
|
|
|
|
DiagnosticVirtualTextInfo = { link = 'LspDiagnosticsVirtualTextInformation' },
|
|
|
|
|
DiagnosticUnderlineInfo = { link = 'LspDiagnosticsUnderlineInformation' },
|
|
|
|
|
DiagnosticFloatingInfo = { link = 'LspDiagnosticsFloatingInformation' },
|
|
|
|
|
DiagnosticSignInfo = { link = 'LspDiagnosticsSignInformation' },
|
|
|
|
|
DiagnosticVirtualTextHint = { link = 'LspDiagnosticsVirtualTextHint' },
|
|
|
|
|
DiagnosticUnderlineHint = { link = 'LspDiagnosticsUnderlineHint' },
|
|
|
|
|
DiagnosticFloatingHint = { link = 'LspDiagnosticsFloatingHint' },
|
|
|
|
|
DiagnosticSignHint = { link = 'LspDiagnosticsSignHint' },
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return lsp
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function load_plugins()
|
|
|
|
|
-- Plugins highlight groups
|
|
|
|
|
|
|
|
|
|
local plugins = {
|
|
|
|
|
-- Cmp
|
|
|
|
|
CmpItemAbbr = { fg = c.fg },
|
|
|
|
|
CmpItemAbbrDeprecated = { fg = c.fg },
|
|
|
|
|
CmpItemAbbrMatch = { fg = c.wisteria, style = 'bold' },
|
|
|
|
|
CmpItemAbbrMatchFuzzy = { fg = c.wisteria, underline = true },
|
|
|
|
|
CmpItemMenu = { fg = c.bg5 },
|
|
|
|
|
|
|
|
|
|
CmpItemKindText = { fg = c.brown },
|
|
|
|
|
CmpItemKindMethod = { fg = c.wisteria },
|
|
|
|
|
CmpItemKindFunction = { fg = c.wisteria },
|
|
|
|
|
CmpItemKindConstructor = { fg = c.yellow },
|
|
|
|
|
CmpItemKindField = { fg = c.wisteria },
|
|
|
|
|
CmpItemKindClass = { fg = c.yellow },
|
|
|
|
|
CmpItemKindInterface = { fg = c.yellow },
|
|
|
|
|
CmpItemKindModule = { fg = c.wisteria },
|
|
|
|
|
CmpItemKindProperty = { fg = c.wisteria },
|
|
|
|
|
CmpItemKindValue = { fg = c.brown },
|
|
|
|
|
CmpItemKindEnum = { fg = c.yellow },
|
|
|
|
|
CmpItemKindKeyword = { fg = c.wisteria1 },
|
|
|
|
|
CmpItemKindSnippet = { fg = c.green },
|
|
|
|
|
CmpItemKindFile = { fg = c.wisteria },
|
|
|
|
|
CmpItemKindEnumMember = { fg = c.light_blue },
|
|
|
|
|
CmpItemKindConstant = { fg = c.brown },
|
|
|
|
|
CmpItemKindStruct = { fg = c.yellow },
|
|
|
|
|
CmpItemKindTypeParameter = { fg = c.yellow },
|
|
|
|
|
|
|
|
|
|
-- Notify
|
|
|
|
|
NotifyERRORBorder = { fg = c.red1 },
|
|
|
|
|
NotifyWARNBorder = { fg = c.red_1 },
|
|
|
|
|
NotifyINFOBorder = { fg = c.yellow },
|
|
|
|
|
NotifyDEBUGBorder = { fg = c.bg5 },
|
|
|
|
|
NotifyTRACEBorder = { fg = c.wisteria },
|
|
|
|
|
NotifyERRORIcon = { fg = c.red1 },
|
|
|
|
|
NotifyWARNIcon = { fg = c.red_1 },
|
|
|
|
|
NotifyINFOIcon = { fg = c.yellow },
|
|
|
|
|
NotifyDEBUGIcon = { fg = c.bg5 },
|
|
|
|
|
NotifyTRACEIcon = { fg = c.wisteria },
|
|
|
|
|
NotifyERRORTitle = { fg = c.red1 },
|
|
|
|
|
NotifyWARNTitle = { fg = c.red_1 },
|
|
|
|
|
NotifyINFOTitle = { fg = c.yellow },
|
|
|
|
|
NotifyDEBUGTitle = { fg = c.bg5 },
|
|
|
|
|
NotifyTRACETitle = { fg = c.wisteria },
|
|
|
|
|
|
|
|
|
|
-- Trouble
|
|
|
|
|
TroubleCount = { fg = c.wisteria1 },
|
|
|
|
|
TroubleNormal = { fg = c.fg },
|
|
|
|
|
TroubleText = { fg = c.fg },
|
|
|
|
|
|
|
|
|
|
-- Diff
|
|
|
|
|
diffAdded = { fg = c.green },
|
|
|
|
|
diffRemoved = { fg = c.red_1 },
|
|
|
|
|
diffChanged = { fg = c.yellow },
|
|
|
|
|
diffOldFile = { fg = c.brown },
|
|
|
|
|
diffNewFile = { fg = c.light_blue },
|
|
|
|
|
diffFile = { fg = c.wisteria },
|
|
|
|
|
diffLine = { fg = c.bg5 },
|
|
|
|
|
diffIndexLine = { fg = c.wisteria1 },
|
|
|
|
|
|
|
|
|
|
-- Neogit
|
|
|
|
|
NeogitBranch = { fg = c.wisteria1 },
|
|
|
|
|
NeogitRemote = { fg = c.brown },
|
|
|
|
|
NeogitHunkHeader = { fg = c.fg, bg = c.bg1 },
|
|
|
|
|
NeogitHunkHeaderHighlight = { fg = c.yellow, bg = c.bg1 },
|
|
|
|
|
NeogitDiffContextHighlight = { bg = c.bg1 },
|
|
|
|
|
NeogitDiffDeleteHighlight = { fg = c.red },
|
|
|
|
|
NeogitDiffAddHighlight = { fg = c.green },
|
|
|
|
|
|
|
|
|
|
NeogitNotificationInfo = { fg = c.yellow },
|
|
|
|
|
NeogitNotificationWarning = { fg = c.red_1 },
|
|
|
|
|
NeogitNotificationError = { fg = c.red1 },
|
|
|
|
|
|
|
|
|
|
-- WhichKey
|
|
|
|
|
WhichKey = { fg = c.wisteria1, style = 'bold' },
|
|
|
|
|
WhichKeyGroup = { fg = c.light_blue },
|
|
|
|
|
WhichKeyDesc = { fg = c.wisteria, style = 'italic' },
|
|
|
|
|
WhichKeySeperator = { fg = c.green },
|
|
|
|
|
WhichKeyFloat = { bg = c.bg1 },
|
|
|
|
|
|
|
|
|
|
-- nvim-treesitter-context
|
|
|
|
|
TreesitterContext = { fg = c.none, bg = c.bg1 },
|
|
|
|
|
|
|
|
|
|
-- Indent Blankline
|
|
|
|
|
IndentBlanklineChar = { fg = c.niagara_2, style = 'nocombine' },
|
|
|
|
|
IndentBlanklineSpaceChar = { fg = c.bg5, style = 'nocombine' },
|
|
|
|
|
IndentBlanklineSpaceCharBlankline = { fg = c.bg5, style = 'nocombine' },
|
|
|
|
|
IndentBlanklineContextChar = { fg = c.wisteria1, style = 'nocombine' },
|
|
|
|
|
IndentBlanklineContextStart = { style = 'underline', sp = c.wisteria1 },
|
|
|
|
|
|
|
|
|
|
-- Nvim dap
|
|
|
|
|
DapBreakpoint = { fg = c.red },
|
|
|
|
|
DapStopped = { fg = c.green },
|
|
|
|
|
|
|
|
|
|
-- Hop
|
|
|
|
|
HopNextKey = { fg = c.red1, style = 'bold' },
|
|
|
|
|
HopNextKey1 = { fg = c.light_blue, style = 'bold' },
|
|
|
|
|
HopNextKey2 = { fg = c.wisteria1 },
|
|
|
|
|
HopUnmatched = { fg = c.bg5 },
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return plugins
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function theme.load_terminal()
|
|
|
|
|
-- dark
|
|
|
|
|
vim.g.terminal_color_0 = c.bg1
|
|
|
|
|
vim.g.terminal_color_8 = c.niagara_2
|
|
|
|
|
|
|
|
|
|
-- light
|
|
|
|
|
vim.g.terminal_color_7 = c.fg
|
|
|
|
|
vim.g.terminal_color_15 = c.white
|
|
|
|
|
|
|
|
|
|
-- colors
|
|
|
|
|
vim.g.terminal_color_1 = c.red
|
|
|
|
|
vim.g.terminal_color_9 = c.red1
|
|
|
|
|
|
|
|
|
|
vim.g.terminal_color_2 = c.green
|
|
|
|
|
vim.g.terminal_color_10 = c.green
|
|
|
|
|
|
|
|
|
|
vim.g.terminal_color_3 = c.yellow
|
|
|
|
|
vim.g.terminal_color_11 = c.yellow
|
|
|
|
|
|
|
|
|
|
vim.g.terminal_color_4 = c.wisteria
|
|
|
|
|
vim.g.terminal_color_12 = c.wisteria
|
|
|
|
|
|
|
|
|
|
vim.g.terminal_color_5 = c.wisteria1
|
|
|
|
|
vim.g.terminal_color_13 = c.wisteria1
|
|
|
|
|
|
|
|
|
|
vim.g.terminal_color_6 = c.light_blue
|
|
|
|
|
vim.g.terminal_color_14 = c.light_blue
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return vim.tbl_deep_extend('error', load_syntax(), load_editor(), load_treesitter(), load_lsp(), load_plugins())
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return theme
|