287 lines
12 KiB
Lua
287 lines
12 KiB
Lua
local M = {}
|
|
|
|
M.setup = function()
|
|
if vim.g.colors_name then
|
|
vim.cmd 'hi clear'
|
|
end
|
|
|
|
if vim.fn.exists('syntax_on') then
|
|
vim.cmd 'syntax reset'
|
|
end
|
|
|
|
vim.g.colors_name = 'solarized'
|
|
|
|
local colorbuddy = require('colorbuddy')
|
|
local Color = colorbuddy.Color
|
|
local C = colorbuddy.colors
|
|
local Group = colorbuddy.Group
|
|
local G = colorbuddy.groups
|
|
local S = colorbuddy.styles
|
|
|
|
-- Color Definitions
|
|
local color_definitions = require('fs.util').colors(true)
|
|
for name, rgb in pairs(color_definitions) do
|
|
Color.new(name, rgb)
|
|
end
|
|
|
|
Color.new('fg', C.base0)
|
|
Color.new('bg', C.base04)
|
|
|
|
-- Standard Groups
|
|
Group.new('Normal' , C.fg, C.NONE, S.NONE) -- normal text
|
|
Group.new('NormalNC' , G.Normal) -- normal text in non-current windows
|
|
|
|
Group.new('Comment' , C.base01, C.NONE, S.NONE) -- any comment
|
|
|
|
Group.new('Constant' , C.cyan, C.NONE, S.NONE) -- any constant
|
|
Group.new('String' , G.Constant) -- a string constant: "this is a string"
|
|
Group.new('Character' , G.Constant) -- a character constant: 'c', '\n'
|
|
Group.new('Number' , G.Constant) -- a number constant: 234, 0xff
|
|
Group.new('Boolean' , G.Constant) -- a boolean constant: TRUE, false
|
|
Group.new('Float' , G.Constant) -- a floating point constant: 2.3e10
|
|
|
|
Group.new('Identifier' , C.blue, C.NONE, S.NONE)
|
|
Group.new('Function' , G.Identifier)
|
|
|
|
Group.new('Statement' , C.yellow, C.NONE, S.NONE) -- any statement
|
|
Group.new('Conditional' , G.Statement) -- if, then, else, endif, switch, etc.
|
|
Group.new('Repeat' , G.Statement) -- for, do, while, etc.
|
|
Group.new('Label' , G.Statement) -- case, default, etc.
|
|
Group.new('Operator' , G.Statement) -- "sizeof", "+", "*", etc.
|
|
Group.new('Keyword' , G.Statement) -- any other keyword
|
|
Group.new('Exception' , G.Statement) -- try, catch, throw
|
|
|
|
Group.new('PreProc' , C.orange, C.NONE, S.NONE) -- generic Preprocessor
|
|
Group.new('Include' , G.PreProc) -- preprocessor #include
|
|
Group.new('Define' , G.PreProc) -- preprocessor #define
|
|
Group.new('Macro' , G.PreProc) -- same as Define
|
|
Group.new('PreCondit' , G.PreProc) -- preprocessor #if, #else, #endif, etc.
|
|
|
|
Group.new('Type' , C.yellow, C.NONE, S.NONE) -- int, long, char, etc.
|
|
Group.new('StorageClass', G.Statement) -- static, register, volatile, etc.
|
|
Group.new('Structure' , G.Statement) -- struct, union, enum, etc.
|
|
Group.new('Typedef' , G.Statement) -- A typedef
|
|
|
|
Group.new('Special' , C.red , C.NONE , S.NONE) -- any special symbol
|
|
Group.new('SpecialChar' , G.Special) -- special character in a constant
|
|
Group.new('Tag' , G.Special) -- you can use CTRL-] on this
|
|
Group.new('Delimiter' , G.Special) -- character that needs attention
|
|
Group.new('SpecialComment', G.Special) -- special things inside a comment
|
|
Group.new('Debug' , G.Special) -- debugging statements
|
|
|
|
Group.new('Underlined' , C.violet , C.NONE , S.NONE)
|
|
Group.new('Ignore' , C.NONE , C.NONE , S.NONE)
|
|
Group.new('Todo' , C.magenta, C.NONE , S.bold)
|
|
Group.new('Error' , C.red , C.NONE , S.NONE)
|
|
Group.new('Warning' , C.yellow)
|
|
Group.new('Information' , C.blue)
|
|
Group.new('Hint' , C.cyan)
|
|
|
|
-- Additional Groups
|
|
Group.new('StatusLine' , C.base1 , C.base02, S.reverse)
|
|
Group.new('StatusLineNC', C.base00, C.base02, S.reverse)
|
|
Group.new('Visual' , C.base01, C.bg , S.reverse)
|
|
|
|
Group.new('SpecialKey' , C.base00, C.base02, S.bold)
|
|
Group.new('SignColumn' , C.base0 , C.NONE , S.NONE)
|
|
Group.new('Conceal' , C.blue , C.NONE , S.NONE)
|
|
Group.new('Cursor' , C.bg , C.base0, S.NONE)
|
|
Group.new('TermCursorNC', C.bg , C.base01)
|
|
Group.link('lCursor' , G.Cursor)
|
|
Group.link('TermCursor' , G.Cursor)
|
|
|
|
Group.new('LineNr' , C.base01, C.NONE, S.NONE)
|
|
Group.new('CursorLine' , C.NONE, C.base02, S.NONE)
|
|
Group.new('CursorLineNr', C.base2, C.NONE, S.NONE)
|
|
|
|
Group.new('IncSearch' , C.orange , C.NONE , S.standout)
|
|
Group.new('Search' , C.yellow , C.NONE , S.reverse)
|
|
|
|
Group.new('DiffAdd' , C.green , C.NONE, S.NONE)
|
|
Group.new('DiffChange' , C.yellow , C.NONE, S.NONE)
|
|
Group.new('DiffDelete' , C.red , C.NONE, S.NONE)
|
|
Group.new('DiffText' , C.blue , C.NONE, S.NONE)
|
|
Group.link('diffAdded' , G.DiffAdd)
|
|
Group.link('diffRemoved', G.DiffDelete)
|
|
Group.link('diffLine' , G.Identifier)
|
|
|
|
Group.new('SpellBad' , C.orange, C.NONE, S.undercurl)
|
|
Group.new('SpellCap' , C.violet, C.NONE, S.undercurl)
|
|
Group.new('SpellRare' , C.cyan , C.NONE, S.undercurl)
|
|
Group.new('SpellLocal' , C.yellow, C.NONE, S.undercurl)
|
|
|
|
Group.new('ErrorMsg' , G.Error)
|
|
Group.new('MoreMsg' , C.blue , C.NONE , S.NONE)
|
|
Group.new('ModeMsg' , C.blue , C.NONE , S.NONE)
|
|
Group.new('Question' , C.cyan , C.NONE , S.bold)
|
|
Group.new('VertSplit' , C.base00 , C.NONE , S.NONE)
|
|
Group.new('Title' , C.orange , C.NONE , S.bold)
|
|
Group.new('VisualNOS' , C.NONE , C.base02, S.reverse)
|
|
Group.new('WarningMsg' , C.red , C.NONE , S.NONE)
|
|
Group.new('WildMenu' , C.base2 , C.base02, S.NONE)
|
|
Group.new('Folded' , C.blue , C.bg , S.NONE)
|
|
Group.new('FoldColumn' , C.blue , C.bg , S.NONE)
|
|
|
|
Group.new('Directory' , C.blue , C.NONE , S.NONE)
|
|
|
|
Group.new('NonText' , C.base02 , C.NONE , S.NONE) -- subtle EOL symbols
|
|
Group.new('Whitespace' , C.orange , C.NONE , S.NONE) -- listchars
|
|
Group.new('QuickFixLine', C.yellow , C.base02, S.NONE) -- selected quickfix item
|
|
|
|
-- pum (popup menu)
|
|
Group.new('Pmenu', G.Normal, C.base02, S.NONE) -- popup menu normal item
|
|
Group.new('PmenuSel', C.base01, C.base2, S.reverse) -- selected item
|
|
Group.new('PmenuSbar', C.base02, C.NONE, S.reverse)
|
|
Group.new('PmenuThumb', C.base0, C.NONE, S.reverse)
|
|
|
|
Group.new('TabLine' , C.base0 , C.base02 , S.NONE)
|
|
Group.new('TabLineFill', C.base0 , C.base02)
|
|
Group.new('TabLineSel' , C.yellow, C.bg)
|
|
|
|
Group.new('MatchParen', C.red, C.base01, S.bold)
|
|
|
|
-- vim highlighting
|
|
Group.link('vimVar', G.Identifier)
|
|
Group.link('vimFunc', G.Identifier)
|
|
Group.link('vimUserFunc', G.Identifier)
|
|
Group.link('helpSpecial', G.Special)
|
|
Group.link('vimSet', G.Normal)
|
|
Group.link('vimSetEqual', G.Normal)
|
|
Group.new('vimCommentString', C.violet)
|
|
Group.new('vimCommand', C.yellow)
|
|
Group.new('vimCmdSep', C.blue, C.NONE, S.bold)
|
|
Group.new('helpExample', C.base1)
|
|
Group.new('helpOption', C.cyan)
|
|
Group.new('helpNote', C.magenta)
|
|
Group.new('helpVim', C.magenta)
|
|
Group.new('helpHyperTextJump', C.blue, C.NONE, S.underline)
|
|
Group.new('helpHyperTextEntry', C.green)
|
|
Group.new('vimIsCommand', C.base00)
|
|
Group.new('vimSynMtchOpt', C.yellow)
|
|
Group.new('vimSynType', C.cyan)
|
|
Group.new('vimHiLink', C.blue)
|
|
Group.new('vimGroup', C.blue, C.NONE, S.underline + S.bold)
|
|
|
|
-- git highlighting
|
|
Group.new('gitcommitSummary' , C.green)
|
|
Group.link('gitcommitComment' , G.Comment)
|
|
Group.link('gitcommitUntracked' , G.gitcommitComment)
|
|
Group.link('gitcommitDiscarded' , G.gitcommitComment)
|
|
Group.link('gitcommitSelected' , G.gitcommitComment)
|
|
Group.link('gitcommitOnBranch' , G.gitcommitComment)
|
|
|
|
Group.new('gitcommitBranch' , C.blue , C.base02, S.NONE)
|
|
Group.link('gitcommitNoBranch' , G.gitcommitBranch)
|
|
|
|
Group.new('gitcommitHeader' , C.base01)
|
|
Group.new('gitcommitFile' , C.base0)
|
|
|
|
Group.new('gitcommitSelectedType' , C.green)
|
|
Group.link('gitcommitSelectedFile' , G.gitcommitSelectedType)
|
|
Group.link('gitcommitSelectedArrow' , G.gitCommitSelectedFile)
|
|
|
|
Group.new('gitcommitDiscardedType' , C.orange)
|
|
Group.link('gitcommitDiscardedFile' , G.gitcommitDiscardedType)
|
|
Group.link('gitcommitDiscardedArrow', G.gitCommitDiscardedFile)
|
|
|
|
Group.new('gitcommitUntrackedFile' , C.cyan)
|
|
|
|
Group.new('gitcommitUnmerged' , C.yellow, C.NONE, S.NONE)
|
|
Group.new('gitcommitUnmergedFile' , C.red)
|
|
Group.link('gitcommitUnmergedArrow' , G.gitCommitUnmergedFile)
|
|
|
|
Group.new('GitGutterAdd', C.green)
|
|
Group.new('GitGutterChange', C.yellow)
|
|
Group.new('GitGutterDelete', C.red)
|
|
Group.new('GitGutterChangeDelete', C.red)
|
|
|
|
Group.new('GitSignsAddLn', C.green)
|
|
Group.new('GitSignsAddNr', C.green)
|
|
Group.new('GitSignsChangeLn', C.yellow)
|
|
Group.new('GitSignsChangeNr', C.yellow)
|
|
Group.new('GitSignsDeleteLn', C.red)
|
|
Group.new('GitSignsDeleteNr', C.red)
|
|
Group.link('GitSignsCurrentLineBlame', G.Comment)
|
|
|
|
-- Markdown
|
|
Group.new('markdownH1' , C.yellow)
|
|
Group.link('markdownH2' , G.markdownH1)
|
|
Group.link('markdownH3' , G.markdownH1)
|
|
Group.link('markdownH4' , G.markdownH1)
|
|
Group.link('markdownH5' , G.markdownH1)
|
|
Group.link('markdownH6' , G.markdownH1)
|
|
Group.new('markdownHeadingRule' , C.yellow, C.none, S.bold)
|
|
Group.link('markdownHeadingDelimiter' , G.markdownHeadingRule)
|
|
Group.link('markdownH1Delimiter' , G.markdownHeadingDelimiter)
|
|
Group.link('markdownH2Delimiter' , G.markdownHeadingDelimiter)
|
|
Group.link('markdownH3Delimiter' , G.markdownHeadingDelimiter)
|
|
Group.link('markdownH4Delimiter' , G.markdownHeadingDelimiter)
|
|
Group.link('markdownH5Delimiter' , G.markdownHeadingDelimiter)
|
|
Group.link('markdownH6Delimiter' , G.markdownHeadingDelimiter)
|
|
|
|
Group.new('markdownListMarker' , C.base2)
|
|
Group.link('markdownOrderedListMarker' , G.markdownListMarker)
|
|
Group.link('markdownBlockquote' , G.markdownListMarker)
|
|
Group.link('markdownRule' , G.Comment)
|
|
|
|
Group.new('markdownItalic' , C.base1, C.none, S.italic)
|
|
Group.new('markdownBold' , C.base1, C.none, S.bold)
|
|
Group.new('markdownBoldItalic' , C.base1, C.none, S.bold + S.italic)
|
|
Group.new('markdownCode' , C.orange)
|
|
Group.link('markdownCodeBlock' , G.markdownCode)
|
|
Group.link('markdownItalicDelimiter' , G.Comment)
|
|
Group.link('markdownBoldDelimiter' , G.Comment)
|
|
Group.link('markdownBoldItalicDelimiter', G.Comment)
|
|
Group.link('markdownCodeDelimiter' , G.Comment)
|
|
|
|
Group.new('markdownFootnote' , C.cyan)
|
|
Group.link('markdownFootnoteDefinition' , G.markdownFootnote)
|
|
|
|
Group.new('markdownLinkText' , C.blue)
|
|
Group.link('markdownId' , G.Comment)
|
|
Group.link('markdownUrl' , G.Comment)
|
|
Group.new('markdownUrlTitle' , C.cyan)
|
|
|
|
Group.link('markdownLinkTextDelimiter' , G.Comment)
|
|
Group.link('markdownIdDelimiter' , G.Comment)
|
|
Group.link('markdownLinkDelimiter' , G.Comment)
|
|
Group.link('markdownUrlTitleDelimiter' , G.Comment)
|
|
Group.link('markdownIdDeclaration' , G.markdownLinkText)
|
|
|
|
Group.link('markdownEscape' , G.Special)
|
|
Group.link('markdownError' , G.Error)
|
|
|
|
-- Plugin: 'ntpeters/vim-better-whitespace'
|
|
Group.new('ExtraWhitespace', C.orange, C.orange) -- trailing whitespace
|
|
|
|
-- Plugin: 'lukas-reineke/indent-blankline.nvim'
|
|
Group.new('IndentBlanklineChar', C.base02, C.NONE) -- indentation guides
|
|
|
|
-- Plugin: 'lukas-reineke/virt-column.nvim'
|
|
Group.new('VirtColumn' , C.base02, C.NONE, S.NONE) -- virtual column
|
|
Group.new('ColorColumn', C.NONE , C.NONE, S.NONE) -- otherwise this is visible behind VirtColumn
|
|
|
|
-- Plugin: 'kyazdani42/nvim-tree.lua'
|
|
Group.new('NvimTreeSpecialFile' , C.base2 , C.NONE, S.NONE)
|
|
Group.new('NvimTreeIndentMarker', C.base01, C.NONE, S.NONE)
|
|
Group.new('NvimTreeGitStaged' , C.green , C.NONE, S.NONE)
|
|
Group.new('NvimTreeGitRenamed' , C.yellow, C.NONE, S.NONE)
|
|
Group.new('NvimTreeGitNew' , C.yellow, C.NONE, S.NONE)
|
|
Group.new('NvimTreeGitDirty' , C.yellow, C.NONE, S.NONE)
|
|
Group.new('NvimTreeGitDeleted' , C.orange, C.NONE, S.NONE)
|
|
Group.new('NvimTreeGitMerge' , C.red , C.NONE, S.NONE)
|
|
|
|
-- Plugin: 'nvim-telescope/telescope.nvim'
|
|
Group.new('TelescopeBorder' , C.base01, C.NONE, S.NONE)
|
|
Group.new('TelescopePromptBorder' , C.base1 , C.NONE, S.NONE)
|
|
Group.new('TelescopeTitle' , C.base1 , C.NONE, S.NONE)
|
|
Group.new('TelescopePromptPrefix' , C.red , C.NONE, S.NONE)
|
|
Group.new('TelescopePromptCounter' , C.base1 , C.NONE, S.NONE)
|
|
Group.new('TelescopeMatching' , C.red , C.NONE, S.NONE)
|
|
Group.new('TelescopeSelection' , C.base2 , C.NONE, S.NONE)
|
|
Group.new('TelescopeMultiSelection', C.blue , C.NONE, S.NONE)
|
|
Group.new('TelescopeMultiIcon' , C.blue , C.NONE, S.NONE)
|
|
end
|
|
|
|
return M
|
|
|