From eeb2d0c528851b61f9c790f5afe33f4083c9264a Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Tue, 14 Jun 2022 21:08:15 +0200 Subject: vim: juggle around colorscheme implementation --- .vim/lua/color_palette.lua | 32 ---- .vim/lua/color_palette.lua.in | 32 ---- .vim/lua/colors.lua | 350 --------------------------------------- .vim/lua/theme/init.lua | 375 ++++++++++++++++++++++++++++++++++++++++++ .vim/lua/theme/palette.lua | 32 ++++ .vim/lua/theme/palette.lua.in | 32 ++++ 6 files changed, 439 insertions(+), 414 deletions(-) delete mode 100644 .vim/lua/color_palette.lua delete mode 100644 .vim/lua/color_palette.lua.in delete mode 100644 .vim/lua/colors.lua create mode 100644 .vim/lua/theme/init.lua create mode 100644 .vim/lua/theme/palette.lua create mode 100644 .vim/lua/theme/palette.lua.in (limited to '.vim/lua') diff --git a/.vim/lua/color_palette.lua b/.vim/lua/color_palette.lua deleted file mode 100644 index 14cc74e..0000000 --- a/.vim/lua/color_palette.lua +++ /dev/null @@ -1,32 +0,0 @@ -return { - normal = { - black = '#1c1c1c', - red = '#db4d6d', - green = '#5dac81', - yellow = '#fad689', - blue = '#58b2dc', - magenta = '#b28fce', - cyan = '#78c2c4', - white = '#bdc0ba', - }, - bright = { - black = '#0c0c0c', - red = '#cb1b45', - green = '#24936e', - yellow = '#f7d94c', - blue = '#2ea9df', - magenta = '#b481bb', - cyan = '#81c7d4', - white = '#fffffb', - }, - dim = { - black = '#080808', - red = '#9f353a', - green = '#36563c', - yellow = '#d19826', - blue = '#113285', - magenta = '#77428d', - cyan = '#0d5661', - white = '#434343', - }, -} diff --git a/.vim/lua/color_palette.lua.in b/.vim/lua/color_palette.lua.in deleted file mode 100644 index e2b3072..0000000 --- a/.vim/lua/color_palette.lua.in +++ /dev/null @@ -1,32 +0,0 @@ -return { - normal = { - black = '{{ hex .normal_black }}', - red = '{{ hex .normal_red }}', - green = '{{ hex .normal_green }}', - yellow = '{{ hex .normal_yellow }}', - blue = '{{ hex .normal_blue }}', - magenta = '{{ hex .normal_magenta }}', - cyan = '{{ hex .normal_cyan }}', - white = '{{ hex .normal_white }}', - }, - bright = { - black = '{{ hex .bright_black }}', - red = '{{ hex .bright_red }}', - green = '{{ hex .bright_green }}', - yellow = '{{ hex .bright_yellow }}', - blue = '{{ hex .bright_blue }}', - magenta = '{{ hex .bright_magenta }}', - cyan = '{{ hex .bright_cyan }}', - white = '{{ hex .bright_white }}', - }, - dim = { - black = '{{ hex .dim_black }}', - red = '{{ hex .dim_red }}', - green = '{{ hex .dim_green }}', - yellow = '{{ hex .dim_yellow }}', - blue = '{{ hex .dim_blue }}', - magenta = '{{ hex .dim_magenta }}', - cyan = '{{ hex .dim_cyan }}', - white = '{{ hex .dim_white }}', - }, -} diff --git a/.vim/lua/colors.lua b/.vim/lua/colors.lua deleted file mode 100644 index 11abbea..0000000 --- a/.vim/lua/colors.lua +++ /dev/null @@ -1,350 +0,0 @@ ----@diagnostic disable: undefined-global ---- vim: fdm=marker -local lush = require('lush') -local hsl = lush.hsl -local p = require('color_palette') - --- define terminal_color_* for :terminal -vim.g.terminal_color_0 = p.normal.black -vim.g.terminal_color_1 = p.normal.red -vim.g.terminal_color_2 = p.normal.green -vim.g.terminal_color_3 = p.normal.yellow -vim.g.terminal_color_4 = p.normal.blue -vim.g.terminal_color_5 = p.normal.magenta -vim.g.terminal_color_6 = p.normal.cyan -vim.g.terminal_color_7 = p.normal.white -vim.g.terminal_color_8 = p.bright.black -vim.g.terminal_color_9 = p.bright.red -vim.g.terminal_color_10 = p.bright.green -vim.g.terminal_color_11 = p.bright.yellow -vim.g.terminal_color_12 = p.bright.blue -vim.g.terminal_color_13 = p.bright.magenta -vim.g.terminal_color_14 = p.bright.cyan -vim.g.terminal_color_15 = p.bright.white - -return lush(function() - return { - -- Meta {{{ - deEmph { fg = hsl(p.dim.white).darken(5) }, - -- }}} - - -- Base highlights {{{ - Bold { gui = 'bold' }, - Italic { gui = 'italic' }, - None { fg = 'none', bg = 'none', gui = 'none' }, - Reverse { gui = 'reverse' }, - Underlined { gui = 'underline' }, -- (preferred) text that stands out, HTML links - - Conceal { gui = 'none' }, -- placeholder characters substituted for concealed text (see 'conceallevel') - ColorColumn { bg = hsl(p.dim.white).darken(40) }, -- used for the columns set with 'colorcolumn' - CursorColumn { ColorColumn }, -- Screen-column at the cursor, when 'cursorcolumn' is set. - CursorLine { ColorColumn }, -- Screen-line at the cursor, when 'cursorline' is set. Low-priority if foreground (ctermfg OR guifg) is not set. - CursorLineNr { fg = hsl(p.bright.yellow) }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. - DiffAdd { fg = hsl(p.bright.black), bg = hsl(p.normal.green) }, -- diff mode: Added line |diff.txt| - DiffChange { fg = hsl(p.bright.black), bg = hsl(p.normal.cyan) }, -- diff mode: Changed line |diff.txt| - DiffDelete { fg = hsl(p.bright.black), bg = hsl(p.normal.red) }, -- diff mode: Deleted line |diff.txt| - DiffText { DiffChange, gui = 'italic' }, -- diff mode: Changed text within a changed line |diff.txt| - Directory { fg = hsl(p.bright.cyan) }, -- directory names (and other special names in listings) - EndOfBuffer { deEmph }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|. - Folded { fg = hsl(p.bright.magenta) }, -- line used for closed folds - FoldColumn { Folded }, -- 'foldcolumn' - Search { Bold, fg = hsl(p.normal.black), bg = hsl(p.bright.white) }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out. - IncSearch { Search }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c" - LineNr { fg = hsl(p.dim.white) }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set. - ModeMsg { fg = hsl(p.normal.yellow) }, -- 'showmode' message (e.g., "-- INSERT -- ") - MoreMsg { fg = hsl(p.normal.cyan) }, -- |more-prompt| - -- MsgArea { }, -- Area for messages and cmdline - -- MsgSeparator { }, -- Separator for scrolled messages, `msgsep` flag of 'display' - NonText { EndOfBuffer }, -- '@' 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|. - Normal { fg = hsl(p.bright.white), gui = 'nocombine' }, -- normal text - NormalFloat { Normal, bg = hsl(p.dim.white).darken(30) }, -- Normal text in floating windows. - NormalNC { Normal }, -- normal text in non-current windows - Question { fg = hsl(p.bright.green) }, -- |hit-enter| prompt and yes/no questions - -- QuickFixLine { }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there. - SignColumn { gui = 'none' }, -- column where |signs| are displayed - SpecialKey { fg = hsl(p.dim.white) }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' whitespace. |hl-Whitespace| - SpellBad { fg = hsl(p.bright.red), gui = 'undercurl,italic' }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise. - -- SpellCap { }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise. - -- SpellLocal { }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise. - -- SpellRare { }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise. - StatusLine { fg = hsl(p.bright.white), bg = 'none', gui = 'bold' }, -- status line of current window - StatusLineNC { fg = hsl(p.bright.white), bg = hsl(p.dim.white), gui = 'none' }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window. - Substitute { fg = hsl(p.normal.blue) }, -- |:substitute| replacement text highlighting - TabLine { fg = hsl(p.dim.white) }, -- tab pages line, not active tab page label - TabLineFill { StatusLineNC }, -- tab pages line, where there are no labels - TabLineSel { fg = hsl(p.bright.white), gui = 'bold' }, -- tab pages line, active tab page label - Title { fg = hsl(p.bright.blue), gui = 'bold' }, -- titles for output from ":set all", ":autocmd" etc. - Visual { fg = hsl(p.bright.white), bg = hsl(p.normal.magenta) }, -- Visual mode selection - VisualNOS { Visual }, -- Visual mode selection when vim is "Not Owning the Selection". - WarningMsg { fg = hsl(p.normal.yellow) }, -- warning messages - Whitespace { deEmph }, -- "nbsp", "space", "tab" and "trail" in 'listchars' - WildMenu { bg = hsl(p.bright.black) }, -- current match in 'wildmenu' completion - WinSeparator { deEmph }, - VertSplit { WinSeparator }, - FloatBorder { WinSeparator }, - - Cursor { Normal, gui = 'reverse' }, -- character under the cursor - -- CursorIM { Cursor }, -- like Cursor, but used when in IME mode |CursorIM| - -- TermCursor { Cursor }, -- cursor in a focused terminal - -- TermCursorNC { Cursor }, -- cursor in an unfocused terminal - -- lCursor { Cursor }, -- the character under the cursor when |language-mapping| is used (see 'guicursor') - -- vCursor { Visual, gui = 'reverse' }, - MatchParen { Underlined }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt| - - Pmenu { NormalFloat }, -- Popup menu: normal item. - PmenuSel { Visual }, -- Popup menu: selected item. - PmenuSbar { bg = 'none' }, -- Popup menu: scrollbar. - PmenuThumb { PmenuSbar, gui = 'reverse' }, -- Popup menu: Thumb of the scrollbar. - - Boolean { fg = hsl(p.bright.red).lighten(20) }, -- a boolean constant: TRUE, false - String { fg = hsl(p.normal.yellow) }, -- a string constant: "this is a string" - Character { String }, -- a character constant: 'c', '\n' - Number { Boolean }, -- a number constant: 234, 0xff - Float { Number }, -- a floating point constant: 2.3e10 - Comment { Italic, fg = hsl(p.dim.white).lighten(30) }, - Keyword { fg = hsl(p.normal.green), gui = 'italic' }, -- any other keyword - Macro { Keyword }, - Constant { Normal, gui = 'bold' }, -- (preferred) any constant - Special { fg = hsl(p.normal.yellow), gui = 'bold,italic' }, -- (preferred) any special symbol - SpecialComment { Comment, gui = 'bold,italic' }, -- special things inside a comment - Statement { fg = hsl(p.bright.green), gui = 'bold' }, -- (preferred) any statement - Tag { Special, gui = 'underline' }, -- you can use CTRL-] on this - Type { fg = hsl(p.bright.green) }, -- (preferred) int, long, char, etc. - Conditional { Keyword }, -- if, then, else, endif, switch, etc. - Define { Macro }, -- preprocessor #define - Delimiter { Normal }, -- character that needs attention - Exception { Keyword }, -- try, catch, throw - Function { Normal }, -- function name (also: methods for classes) - Identifier { Normal, gui = 'bold' }, -- (preferred) any variable name - Include { Macro }, -- preprocessor #include - Label { Keyword, gui = 'bold' }, -- case, default, etc. - Operator { Normal, gui = 'none' }, -- "sizeof", "+", "*", etc. - PreCondit { Macro }, -- preprocessor #if, #else, #endif, etc. - PreProc { Macro }, -- (preferred) generic Preprocessor - Repeat { Keyword }, -- for, do, while, etc. - SpecialChar { Special }, -- special character in a constant - Typedef { Type }, -- A typedef - StorageClass { Type }, -- static, register, volatile, etc. - Structure { Type }, -- struct, union, enum, etc. - - Debug { Special }, -- debugging statements - Error { Bold, fg = hsl(p.normal.red) }, -- (preferred) any erroneous construct - ErrorMsg { Bold, fg = hsl(p.bright.black), bg = hsl(p.normal.red) }, -- error messages on the command line - Ignore { None }, -- (preferred) left blank, hidden |hl-Ignore| - Todo { Special, gui = 'bold,reverse' }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX - --- }}} - - -- TreeSitter {{{ - TSError { Error }, -- For syntax/parser errors. - TSPunctDelimiter { Delimiter }, -- For delimiters ie: `.` - TSPunctBracket { Delimiter }, -- For brackets and parens. - TSPunctSpecial { Delimiter }, -- For special punctutation that does not fall in the catagories before. - TSConstant { Constant }, -- For constants - TSConstBuiltin { Special, gui = 'bold' }, -- For constant that are built in the language: `nil` in Lua. - TSConstMacro { Macro, gui = 'bold' }, -- For constants that are defined by macros: `NULL` in C. - TSString { String }, -- For strings. - TSStringRegex { String }, -- For regexes. - TSStringEscape { Special }, -- For escape characters within a string. - TSCharacter { Character }, -- For characters. - TSNumber { Number }, -- For integers. - TSBoolean { Boolean }, -- For booleans. - TSFloat { Number }, -- For floats. - TSFunction { Function }, -- For function (calls and definitions). - TSFuncBuiltin { Function, fg = hsl(p.normal.magenta) }, -- For builtin functions: `table.insert` in Lua. - TSFuncMacro { Macro }, -- For macro defined fuctions (calls and definitions): each `macro_rules` in Rust. - -- TSParameter { }, -- For parameters of a function. - -- TSParameterReference { }, -- For references to parameters of a function. - TSMethod { Function }, -- For method calls and definitions. - TSField { Normal }, -- For fields. - TSProperty { TSField }, -- Same as `TSField`. - TSConstructor { Delimiter }, -- For constructor calls and definitions: `{ }` in Lua, and Java constructors. - TSConditional { Conditional }, -- For keywords related to conditionnals. - TSRepeat { Repeat }, -- For keywords related to loops. - TSLabel { Label }, -- For labels: `label:` in C and `:label:` in Lua. - TSOperator { Operator }, -- For any operator: `+`, but also `->` and `*` in C. - TSKeyword { Keyword }, -- For keywords that don't fall in previous categories. - TSKeywordFunction { Keyword }, -- For keywords used to define a fuction. - TSException { Exception }, -- For exception related keywords. - TSType { Type }, -- For types. - TSTypeBuiltin { Type }, -- For builtin types (you guessed it, right ?). - TSNamespace { Normal }, -- For identifiers referring to modules and namespaces. - TSInclude { Include }, -- For includes: `#include` in C, `use` or `extern crate` in Rust, or `require` in Lua. - TSAnnotation { StorageClass }, -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information. - TSText { Normal }, -- For strings considered text in a markup language. - TSStrong { Bold }, -- For text to be represented with strong. - TSEmphasis { Italic }, -- For text to be represented with emphasis. - TSUnderline { Underlined }, -- For text to be represented with an underline. - TSTitle { Title }, -- Text that is part of a title. - TSLiteral { Normal }, -- Literal text. - TSURI { Tag, fg = hsl(p.bright.blue) }, -- Any URI like a link or email. - TSVariable { Normal }, -- Any variable name that does not have another highlight. - TSVariableBuiltin { Special }, -- Variable names that are defined by the languages, like `this` or `self`. - -- }}} - - -- Markdown {{{ - mkdBlockQuote { Comment }, - mkdDelimiter { Delimiter }, - mkdHeading { Title }, - mkdBold { Bold }, - mkdItalic { Italic }, - mkdBoldItalic { gui = "bold,italic" }, - -- mkdCode { markdownCode }, - -- mkdID { Constant }, - mkdLink { TSURI }, - -- mkdLinkTitle { bg = hsl('#ff0000') }, - -- mkdListItem { Number }, - mkdURL { TSURI }, - -- }}} - - -- LSP {{{ - DiagnosticError { Error }, - DiagnosticFloatingError { DiagnosticError }, - DiagnosticVirtualTextError { DiagnosticError, gui = 'reverse' }, - DiagnosticSignError { DiagnosticError, gui = 'reverse' }, - - DiagnosticWarn { WarningMsg }, - DiagnosticFloatingWarn { DiagnosticWarn }, - DiagnosticVirtualTextWarn { DiagnosticWarn, gui = 'reverse' }, - DiagnosticSignWarn { DiagnosticWarn, gui = 'reverse' }, - - DiagnosticInfo { MoreMsg }, - DiagnosticFloatingInfo { DiagnosticInfo }, - DiagnosticVirtualTextInfo { DiagnosticInfo, gui = 'reverse' }, - DiagnosticSignInfo { DiagnosticInfo, gui = 'reverse' }, - - DiagnosticHint { fg = hsl(p.normal.white) }, - DiagnosticFloatingHint { DiagnosticHint }, - DiagnosticVirtualTextHint { DiagnosticHint, gui = 'reverse' }, - DiagnosticSignHint { DiagnosticHint, gui = 'reverse' }, - - -- LspDiagnosticsUnderlineError {}, - -- LspDiagnosticsUnderlineWarning {}, - -- LspDiagnosticsUnderlineInformation {}, - -- LspDiagnosticsUnderlineHint {}, - - -- LspReferenceText { }, -- used for highlighting "text" references - -- LspReferenceRead { }, -- used for highlighting "read" references - -- LspReferenceWrite { }, -- used for highlighting "write" references - -- }}} - - -- Plugin configs {{{ - IndentBlanklineChar { fg = hsl(p.dim.white).darken(30), gui = 'nocombine' }, - IndentBlanklineSpaceChar { Whitespace, gui = 'nocombine' }, - IndentBlanklineSpaceCharBlankline { Whitespace, gui = 'nocombine' }, - IndentBlanklineContextChar { fg = IndentBlanklineChar.fg.lighten(30), gui = 'nocombine' }, - IndentBlanklineContextStart { guisp = IndentBlanklineContextChar.fg, gui = 'underline' }, - - -- git stuff {{{ - GitSignsChangeLn { DiffChange }, - GitSignsAddLn { DiffAdd }, - GitSignsDeleteLn { DiffDelete }, - - GitSignsChangeLnInline { GitSignsChangeLn }, - GitSignsAddLnInline { GitSignsAddLn }, - GitSignsDeleteLnInline { GitSignsDeleteLn }, - - GitSignsChangeVirtLn { GitSignsChangeLn }, - GitSignsAddVirtLn { GitSignsAddLn }, - GitSignsDeleteVirtLn { GitSignsDeleteLn }, - - GitSignsChangeVirtLnInline { GitSignsChangeLn }, - GitSignsAddVirtLnInline { GitSignsAddLn }, - GitSignsDeleteVirtLnInline { GitSignsDeleteLn }, - - GitSignsChange { fg = GitSignsChangeLn.bg }, - GitSignsAdd { fg = GitSignsAddLn.bg }, - GitSignsDelete { fg = GitSignsDeleteLn.bg }, - - GitSignsChangeInline { GitSignsChange, bg = NormalFloat.bg }, - GitSignsAddInline { GitSignsAdd, bg = NormalFloat.bg }, - GitSignsDeleteInline { GitSignsDelete, bg = NormalFloat.bg }, - - gitcommitSummary { Bold }, - gitcommitDiff { Comment }, - diffFile { Special }, - diffSubname { diffFile }, - diffIndexLine { diffFile }, - -- gitcommitHeader { Bold }, - -- gitcommitSelectedType {}, - -- gitcommitSelectedFile {}, - -- gitcommitUntrackedFile {}, - -- gitcommitBranch {}, - -- gitcommitDiscardedType {}, - - DiffAdded { DiffAdd }, - DiffRemoved { DiffDelete }, - -- diffLine {}, - -- diffBDiffer {}, - -- diffNewFile {}, - - gitmessengerPopupNormal { NormalFloat }, - gitmessengerHeader { Special, gui = 'bold' }, - gitmessengerHash { Normal }, - gitmessengerHistory { Normal }, - gitmessengerEmail { Normal }, - -- }}} - - LightBulb { Special, gui = 'bold' }, - LightBulbSign { LightBulb }, - LightBulbVirtualText { LightBulb }, - LightBulbFloatWin { LightBulb }, - - CompeDocumentation { NormalFloat }, - AlphaFortune { Comment }, - - DapBreakpoint { fg = hsl(p.normal.black), bg = MoreMsg.fg }, - DapStopped { fg = hsl(p.normal.black), bg = MoreMsg.fg }, - DapBreakpointLn { DapBreakpoint }, - DapStoppedLn { DapStopped }, - - CmpItemAbbrMatch { fg = hsl(p.normal.magenta) }, - CmpItemAbbrMatchFuzzy { CmpItemAbbrMatch }, - CmpItemKindText { Comment }, - CmpItemKindMethod { TSMethod }, - CmpItemKindFunction { Function }, - CmpItemKindConstructor { Function }, - CmpItemKindField { TSField }, - CmpItemKindVariable { TSVariable }, - CmpItemKindClass { Structure }, - CmpItemKindInterface { Structure }, - CmpItemKindModule { Structure }, - CmpItemKindProperty { TSField }, - CmpItemKindUnit { Boolean }, - CmpItemKindValue { Character }, - CmpItemKindEnum { Structure }, - CmpItemKindKeyword { Operator }, - CmpItemKindSnippet { Special }, - CmpItemKindColor { Constant }, - CmpItemKindFile { String }, - CmpItemKindReference { Character }, - CmpItemKindFolder { String }, - CmpItemKindEnumMember { Type }, - CmpItemKindConstant { Constant }, - CmpItemKindStruct { Structure }, - CmpItemKindEvent { Conditional }, - CmpItemKindOperator { Operator }, - CmpItemKindTypeParameter { Special }, - - WhichKey { CursorLineNr }, - WhichKeyGroup { Keyword }, - WhichKeySeparator { fg = Comment.fg }, - WhichKeyDesc { Identifier }, - WhichKeyFloat { NormalFloat }, - WhichKeyValue { Comment }, - - DirbufHash { deEmph }, - -- Plugin configs END }}} - - -- Config specific - StatusLineIcon { fg = hsl(p.normal.magenta) }, - StatusLineInsert { StatusLine }, - StatusLineCommand { StatusLine }, - StatusLineVisual { Visual }, - StatusLineReplace { fg = hsl(p.bright.white), bg = hsl(p.bright.red) }, - StatusLineJobs { DiagnosticHint }, - StatusLineDiagnostics { StatusLine }, - StatusLineLightbulb { LightBulb }, - StatusLineLsp { fg = hsl(p.normal.black), bg = hsl(p.normal.white) }, - StatusLineNotify { StatusLine, gui = 'none' }, - } -end) diff --git a/.vim/lua/theme/init.lua b/.vim/lua/theme/init.lua new file mode 100644 index 0000000..5e85415 --- /dev/null +++ b/.vim/lua/theme/init.lua @@ -0,0 +1,375 @@ +---@diagnostic disable: undefined-global + +local lush = require('lush') +local hsl = lush.hsl +local p = require('theme.palette') + +local colors = lush(function() + return { + -- Meta {{{ + deEmph { fg = hsl(p.dim.white).darken(5) }, + -- }}} + + -- Base highlights {{{ + Bold { gui = 'bold' }, + Italic { gui = 'italic' }, + None { fg = 'none', bg = 'none', gui = 'none' }, + Reverse { gui = 'reverse' }, + Underlined { gui = 'underline' }, -- (preferred) text that stands out, HTML links + + Conceal { gui = 'none' }, -- placeholder characters substituted for concealed text (see 'conceallevel') + ColorColumn { bg = hsl(p.dim.white).darken(40) }, -- used for the columns set with 'colorcolumn' + CursorColumn { ColorColumn }, -- Screen-column at the cursor, when 'cursorcolumn' is set. + CursorLine { ColorColumn }, -- Screen-line at the cursor, when 'cursorline' is set. Low-priority if foreground (ctermfg OR guifg) is not set. + CursorLineNr { fg = hsl(p.bright.yellow) }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. + DiffAdd { fg = hsl(p.bright.black), bg = hsl(p.normal.green) }, -- diff mode: Added line |diff.txt| + DiffChange { fg = hsl(p.bright.black), bg = hsl(p.normal.cyan) }, -- diff mode: Changed line |diff.txt| + DiffDelete { fg = hsl(p.bright.black), bg = hsl(p.normal.red) }, -- diff mode: Deleted line |diff.txt| + DiffText { DiffChange, gui = 'italic' }, -- diff mode: Changed text within a changed line |diff.txt| + Directory { fg = hsl(p.bright.cyan) }, -- directory names (and other special names in listings) + EndOfBuffer { deEmph }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|. + Folded { fg = hsl(p.bright.magenta) }, -- line used for closed folds + FoldColumn { Folded }, -- 'foldcolumn' + Search { Bold, fg = hsl(p.normal.black), bg = hsl(p.bright.white) }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out. + IncSearch { Search }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c" + LineNr { fg = hsl(p.dim.white) }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set. + ModeMsg { fg = hsl(p.normal.yellow) }, -- 'showmode' message (e.g., "-- INSERT -- ") + MoreMsg { fg = hsl(p.normal.cyan) }, -- |more-prompt| + -- MsgArea { }, -- Area for messages and cmdline + -- MsgSeparator { }, -- Separator for scrolled messages, `msgsep` flag of 'display' + NonText { EndOfBuffer }, -- '@' 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|. + Normal { fg = hsl(p.bright.white), gui = 'nocombine' }, -- normal text + NormalFloat { Normal, bg = hsl(p.dim.white).darken(30) }, -- Normal text in floating windows. + NormalNC { Normal }, -- normal text in non-current windows + Question { fg = hsl(p.bright.green) }, -- |hit-enter| prompt and yes/no questions + -- QuickFixLine { }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there. + SignColumn { gui = 'none' }, -- column where |signs| are displayed + SpecialKey { fg = hsl(p.dim.white) }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' whitespace. |hl-Whitespace| + SpellBad { fg = hsl(p.bright.red), gui = 'undercurl,italic' }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise. + -- SpellCap { }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise. + -- SpellLocal { }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise. + -- SpellRare { }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise. + StatusLine { fg = hsl(p.bright.white), bg = 'none', gui = 'bold' }, -- status line of current window + StatusLineNC { fg = hsl(p.bright.white), bg = hsl(p.dim.white), gui = 'none' }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window. + Substitute { fg = hsl(p.normal.blue) }, -- |:substitute| replacement text highlighting + TabLine { fg = hsl(p.dim.white) }, -- tab pages line, not active tab page label + TabLineFill { StatusLineNC }, -- tab pages line, where there are no labels + TabLineSel { fg = hsl(p.bright.white), gui = 'bold' }, -- tab pages line, active tab page label + Title { fg = hsl(p.bright.blue), gui = 'bold' }, -- titles for output from ":set all", ":autocmd" etc. + Visual { fg = hsl(p.bright.white), bg = hsl(p.normal.magenta) }, -- Visual mode selection + VisualNOS { Visual }, -- Visual mode selection when vim is "Not Owning the Selection". + WarningMsg { fg = hsl(p.normal.yellow) }, -- warning messages + Whitespace { deEmph }, -- "nbsp", "space", "tab" and "trail" in 'listchars' + WildMenu { bg = hsl(p.bright.black) }, -- current match in 'wildmenu' completion + WinBar { ColorColumn, fg = hsl(p.normal.white) }, + WinBarNC { WinBar, fg = WinBar.fg.darken(10), gui = 'italic' }, + WinSeparator { deEmph }, + VertSplit { WinSeparator }, + FloatBorder { WinSeparator }, + + Cursor { Normal, gui = 'reverse' }, -- character under the cursor + -- CursorIM { Cursor }, -- like Cursor, but used when in IME mode |CursorIM| + -- TermCursor { Cursor }, -- cursor in a focused terminal + -- TermCursorNC { Cursor }, -- cursor in an unfocused terminal + -- lCursor { Cursor }, -- the character under the cursor when |language-mapping| is used (see 'guicursor') + -- vCursor { Visual, gui = 'reverse' }, + MatchParen { Underlined }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt| + + Pmenu { NormalFloat }, -- Popup menu: normal item. + PmenuSel { Visual }, -- Popup menu: selected item. + PmenuSbar { bg = 'none' }, -- Popup menu: scrollbar. + PmenuThumb { PmenuSbar, gui = 'reverse' }, -- Popup menu: Thumb of the scrollbar. + + Boolean { fg = hsl(p.bright.red).lighten(20) }, -- a boolean constant: TRUE, false + String { fg = hsl(p.normal.yellow) }, -- a string constant: "this is a string" + Character { String }, -- a character constant: 'c', '\n' + Number { Boolean }, -- a number constant: 234, 0xff + Float { Number }, -- a floating point constant: 2.3e10 + Comment { Italic, fg = hsl(p.dim.white).lighten(30) }, + Keyword { fg = hsl(p.normal.green), gui = 'italic' }, -- any other keyword + Macro { Keyword }, + Constant { Normal, gui = 'bold' }, -- (preferred) any constant + Special { fg = hsl(p.normal.yellow), gui = 'bold,italic' }, -- (preferred) any special symbol + SpecialComment { Comment, gui = 'bold,italic' }, -- special things inside a comment + Statement { fg = hsl(p.bright.green), gui = 'bold' }, -- (preferred) any statement + Tag { Special, gui = 'underline' }, -- you can use CTRL-] on this + Type { fg = hsl(p.bright.green) }, -- (preferred) int, long, char, etc. + Conditional { Keyword }, -- if, then, else, endif, switch, etc. + Define { Macro }, -- preprocessor #define + Delimiter { Normal }, -- character that needs attention + Exception { Keyword }, -- try, catch, throw + Function { Normal }, -- function name (also: methods for classes) + Identifier { Normal, gui = 'bold' }, -- (preferred) any variable name + Include { Macro }, -- preprocessor #include + Label { Keyword, gui = 'bold' }, -- case, default, etc. + Operator { Normal, gui = 'none' }, -- "sizeof", "+", "*", etc. + PreCondit { Macro }, -- preprocessor #if, #else, #endif, etc. + PreProc { Macro }, -- (preferred) generic Preprocessor + Repeat { Keyword }, -- for, do, while, etc. + SpecialChar { Special }, -- special character in a constant + Typedef { Type }, -- A typedef + StorageClass { Type }, -- static, register, volatile, etc. + Structure { Type }, -- struct, union, enum, etc. + + Debug { Special }, -- debugging statements + Error { Bold, fg = hsl(p.normal.red) }, -- (preferred) any erroneous construct + ErrorMsg { Bold, fg = hsl(p.bright.black), bg = hsl(p.normal.red) }, -- error messages on the command line + Ignore { None }, -- (preferred) left blank, hidden |hl-Ignore| + Todo { Special, gui = 'bold,reverse' }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX + --- }}} + + -- TreeSitter {{{ + TSError { Error }, -- For syntax/parser errors. + TSPunctDelimiter { Delimiter }, -- For delimiters ie: `.` + TSPunctBracket { Delimiter }, -- For brackets and parens. + TSPunctSpecial { Delimiter }, -- For special punctutation that does not fall in the catagories before. + TSConstant { Constant }, -- For constants + TSConstBuiltin { Special, gui = 'bold' }, -- For constant that are built in the language: `nil` in Lua. + TSConstMacro { Macro, gui = 'bold' }, -- For constants that are defined by macros: `NULL` in C. + TSString { String }, -- For strings. + TSStringRegex { String }, -- For regexes. + TSStringEscape { Special }, -- For escape characters within a string. + TSCharacter { Character }, -- For characters. + TSNumber { Number }, -- For integers. + TSBoolean { Boolean }, -- For booleans. + TSFloat { Number }, -- For floats. + TSFunction { Function }, -- For function (calls and definitions). + TSFuncBuiltin { Function, fg = hsl(p.normal.magenta) }, -- For builtin functions: `table.insert` in Lua. + TSFuncMacro { Macro }, -- For macro defined fuctions (calls and definitions): each `macro_rules` in Rust. + -- TSParameter { }, -- For parameters of a function. + -- TSParameterReference { }, -- For references to parameters of a function. + TSMethod { Function }, -- For method calls and definitions. + TSField { Normal }, -- For fields. + TSProperty { TSField }, -- Same as `TSField`. + TSConstructor { Delimiter }, -- For constructor calls and definitions: `{ }` in Lua, and Java constructors. + TSConditional { Conditional }, -- For keywords related to conditionnals. + TSRepeat { Repeat }, -- For keywords related to loops. + TSLabel { Label }, -- For labels: `label:` in C and `:label:` in Lua. + TSOperator { Operator }, -- For any operator: `+`, but also `->` and `*` in C. + TSKeyword { Keyword }, -- For keywords that don't fall in previous categories. + TSKeywordFunction { Keyword }, -- For keywords used to define a fuction. + TSException { Exception }, -- For exception related keywords. + TSType { Type }, -- For types. + TSTypeBuiltin { Type }, -- For builtin types (you guessed it, right ?). + TSNamespace { Normal }, -- For identifiers referring to modules and namespaces. + TSInclude { Include }, -- For includes: `#include` in C, `use` or `extern crate` in Rust, or `require` in Lua. + TSAnnotation { StorageClass }, -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information. + TSText { Normal }, -- For strings considered text in a markup language. + TSStrong { Bold }, -- For text to be represented with strong. + TSEmphasis { Italic }, -- For text to be represented with emphasis. + TSUnderline { Underlined }, -- For text to be represented with an underline. + TSTitle { Title }, -- Text that is part of a title. + TSLiteral { Normal }, -- Literal text. + TSURI { Tag, fg = hsl(p.bright.blue) }, -- Any URI like a link or email. + TSVariable { Normal }, -- Any variable name that does not have another highlight. + TSVariableBuiltin { Special }, -- Variable names that are defined by the languages, like `this` or `self`. + -- }}} + + -- Markdown {{{ + mkdBlockQuote { Comment }, + mkdDelimiter { Delimiter }, + mkdHeading { Title }, + mkdBold { Bold }, + mkdItalic { Italic }, + mkdBoldItalic { gui = "bold,italic" }, + -- mkdCode { markdownCode }, + -- mkdID { Constant }, + mkdLink { TSURI }, + -- mkdLinkTitle { bg = hsl('#ff0000') }, + -- mkdListItem { Number }, + mkdURL { TSURI }, + -- }}} + + -- LSP {{{ + DiagnosticError { Error }, + DiagnosticFloatingError { DiagnosticError }, + DiagnosticVirtualTextError { DiagnosticError, gui = 'reverse' }, + DiagnosticSignError { DiagnosticError, gui = 'reverse' }, + + DiagnosticWarn { WarningMsg }, + DiagnosticFloatingWarn { DiagnosticWarn }, + DiagnosticVirtualTextWarn { DiagnosticWarn, gui = 'reverse' }, + DiagnosticSignWarn { DiagnosticWarn, gui = 'reverse' }, + + DiagnosticInfo { MoreMsg }, + DiagnosticFloatingInfo { DiagnosticInfo }, + DiagnosticVirtualTextInfo { DiagnosticInfo, gui = 'reverse' }, + DiagnosticSignInfo { DiagnosticInfo, gui = 'reverse' }, + + DiagnosticHint { fg = hsl(p.normal.white) }, + DiagnosticFloatingHint { DiagnosticHint }, + DiagnosticVirtualTextHint { DiagnosticHint, gui = 'reverse' }, + DiagnosticSignHint { DiagnosticHint, gui = 'reverse' }, + + -- LspDiagnosticsUnderlineError {}, + -- LspDiagnosticsUnderlineWarning {}, + -- LspDiagnosticsUnderlineInformation {}, + -- LspDiagnosticsUnderlineHint {}, + + -- LspReferenceText { }, -- used for highlighting "text" references + -- LspReferenceRead { }, -- used for highlighting "read" references + -- LspReferenceWrite { }, -- used for highlighting "write" references + -- }}} + + -- Plugin configs {{{ + IndentBlanklineChar { fg = hsl(p.dim.white).darken(30), gui = 'nocombine' }, + IndentBlanklineSpaceChar { Whitespace, gui = 'nocombine' }, + IndentBlanklineSpaceCharBlankline { Whitespace, gui = 'nocombine' }, + IndentBlanklineContextChar { fg = IndentBlanklineChar.fg.lighten(30), gui = 'nocombine' }, + IndentBlanklineContextStart { guisp = IndentBlanklineContextChar.fg, gui = 'underline' }, + + -- git stuff {{{ + GitSignsChangeLn { DiffChange }, + GitSignsAddLn { DiffAdd }, + GitSignsDeleteLn { DiffDelete }, + + GitSignsChangeLnInline { GitSignsChangeLn }, + GitSignsAddLnInline { GitSignsAddLn }, + GitSignsDeleteLnInline { GitSignsDeleteLn }, + + GitSignsChangeVirtLn { GitSignsChangeLn }, + GitSignsAddVirtLn { GitSignsAddLn }, + GitSignsDeleteVirtLn { GitSignsDeleteLn }, + + GitSignsChangeVirtLnInline { GitSignsChangeLn }, + GitSignsAddVirtLnInline { GitSignsAddLn }, + GitSignsDeleteVirtLnInline { GitSignsDeleteLn }, + + GitSignsChange { fg = GitSignsChangeLn.bg }, + GitSignsAdd { fg = GitSignsAddLn.bg }, + GitSignsDelete { fg = GitSignsDeleteLn.bg }, + + GitSignsChangeInline { GitSignsChange, bg = NormalFloat.bg }, + GitSignsAddInline { GitSignsAdd, bg = NormalFloat.bg }, + GitSignsDeleteInline { GitSignsDelete, bg = NormalFloat.bg }, + + gitcommitSummary { Bold }, + gitcommitDiff { Comment }, + diffFile { Special }, + diffSubname { diffFile }, + diffIndexLine { diffFile }, + -- gitcommitHeader { Bold }, + -- gitcommitSelectedType {}, + -- gitcommitSelectedFile {}, + -- gitcommitUntrackedFile {}, + -- gitcommitBranch {}, + -- gitcommitDiscardedType {}, + + DiffAdded { DiffAdd }, + DiffRemoved { DiffDelete }, + -- diffLine {}, + -- diffBDiffer {}, + -- diffNewFile {}, + + gitmessengerPopupNormal { NormalFloat }, + gitmessengerHeader { Special, gui = 'bold' }, + gitmessengerHash { Normal }, + gitmessengerHistory { Normal }, + gitmessengerEmail { Normal }, + -- }}} + + LightBulb { Special, gui = 'bold' }, + LightBulbSign { LightBulb }, + LightBulbVirtualText { LightBulb }, + LightBulbFloatWin { LightBulb }, + + CompeDocumentation { NormalFloat }, + AlphaFortune { Comment }, + + DapBreakpoint { fg = hsl(p.normal.black), bg = MoreMsg.fg }, + DapStopped { fg = hsl(p.normal.black), bg = MoreMsg.fg }, + DapBreakpointLn { DapBreakpoint }, + DapStoppedLn { DapStopped }, + + CmpItemAbbrMatch { fg = hsl(p.normal.magenta) }, + CmpItemAbbrMatchFuzzy { CmpItemAbbrMatch }, + CmpItemKindArray { Structure }, + CmpItemKindBoolean { Boolean }, + CmpItemKindClass { TSNamespace }, + CmpItemKindColor { Constant }, + CmpItemKindConstant { Constant }, + CmpItemKindConstructor { Function }, + CmpItemKindEnum { Structure }, + CmpItemKindEnumMember { Type }, + CmpItemKindEvent { Conditional }, + CmpItemKindField { TSField }, + CmpItemKindFile { String }, + CmpItemKindFolder { String }, + CmpItemKindFunction { Function }, + CmpItemKindInterface { Structure }, + CmpItemKindKey { TSField }, + CmpItemKindKeyword { Operator }, + CmpItemKindMethod { TSMethod }, + CmpItemKindModule { Structure }, + CmpItemKindNamespace { TSNamespace }, + CmpItemKindNull { TSVariableBuiltin }, + CmpItemKindObject { Structure }, + CmpItemKindOperator { Operator }, + CmpItemKindPackage { TSNamespace }, + CmpItemKindProperty { TSField }, + CmpItemKindReference { Character }, + CmpItemKindSnippet { Special }, + CmpItemKindStruct { Structure }, + CmpItemKindText { Comment }, + CmpItemKindTypeParameter { Special }, + CmpItemKindUnit { Boolean }, + CmpItemKindValue { Character }, + CmpItemKindVariable { TSVariable }, + + WhichKey { CursorLineNr }, + WhichKeyGroup { Keyword }, + WhichKeySeparator { fg = Comment.fg }, + WhichKeyDesc { Identifier }, + WhichKeyFloat { NormalFloat }, + WhichKeyValue { Comment }, + + DirbufHash { deEmph }, + -- Plugin configs END }}} + + -- Config specific + StatusLineIcon { fg = hsl(p.normal.magenta) }, + StatusLineInsert { StatusLine }, + StatusLineCommand { StatusLine }, + StatusLineVisual { Visual }, + StatusLineReplace { fg = hsl(p.bright.white), bg = hsl(p.bright.red) }, + StatusLineJobs { DiagnosticHint }, + StatusLineDiagnostics { StatusLine }, + StatusLineLightbulb { LightBulb }, + StatusLineLsp { fg = hsl(p.normal.black), bg = hsl(p.normal.white) }, + StatusLineNotify { StatusLine, gui = 'none' }, + } +end) + +local setup = function() + if vim.g.colors_name then + vim.cmd [[hi clear]] + end + + vim.opt.background = 'dark' + vim.opt.termguicolors = true + vim.g.colors_name = 'karafuru' + + -- define terminal_color_* for :terminal + vim.g.terminal_color_0 = p.normal.black + vim.g.terminal_color_1 = p.normal.red + vim.g.terminal_color_2 = p.normal.green + vim.g.terminal_color_3 = p.normal.yellow + vim.g.terminal_color_4 = p.normal.blue + vim.g.terminal_color_5 = p.normal.magenta + vim.g.terminal_color_6 = p.normal.cyan + vim.g.terminal_color_7 = p.normal.white + vim.g.terminal_color_8 = p.bright.black + vim.g.terminal_color_9 = p.bright.red + vim.g.terminal_color_10 = p.bright.green + vim.g.terminal_color_11 = p.bright.yellow + vim.g.terminal_color_12 = p.bright.blue + vim.g.terminal_color_13 = p.bright.magenta + vim.g.terminal_color_14 = p.bright.cyan + vim.g.terminal_color_15 = p.bright.white + + lush(colors) + + vim.cmd [[doautocmd ColorScheme]] +end + +return {setup = setup} diff --git a/.vim/lua/theme/palette.lua b/.vim/lua/theme/palette.lua new file mode 100644 index 0000000..14cc74e --- /dev/null +++ b/.vim/lua/theme/palette.lua @@ -0,0 +1,32 @@ +return { + normal = { + black = '#1c1c1c', + red = '#db4d6d', + green = '#5dac81', + yellow = '#fad689', + blue = '#58b2dc', + magenta = '#b28fce', + cyan = '#78c2c4', + white = '#bdc0ba', + }, + bright = { + black = '#0c0c0c', + red = '#cb1b45', + green = '#24936e', + yellow = '#f7d94c', + blue = '#2ea9df', + magenta = '#b481bb', + cyan = '#81c7d4', + white = '#fffffb', + }, + dim = { + black = '#080808', + red = '#9f353a', + green = '#36563c', + yellow = '#d19826', + blue = '#113285', + magenta = '#77428d', + cyan = '#0d5661', + white = '#434343', + }, +} diff --git a/.vim/lua/theme/palette.lua.in b/.vim/lua/theme/palette.lua.in new file mode 100644 index 0000000..e2b3072 --- /dev/null +++ b/.vim/lua/theme/palette.lua.in @@ -0,0 +1,32 @@ +return { + normal = { + black = '{{ hex .normal_black }}', + red = '{{ hex .normal_red }}', + green = '{{ hex .normal_green }}', + yellow = '{{ hex .normal_yellow }}', + blue = '{{ hex .normal_blue }}', + magenta = '{{ hex .normal_magenta }}', + cyan = '{{ hex .normal_cyan }}', + white = '{{ hex .normal_white }}', + }, + bright = { + black = '{{ hex .bright_black }}', + red = '{{ hex .bright_red }}', + green = '{{ hex .bright_green }}', + yellow = '{{ hex .bright_yellow }}', + blue = '{{ hex .bright_blue }}', + magenta = '{{ hex .bright_magenta }}', + cyan = '{{ hex .bright_cyan }}', + white = '{{ hex .bright_white }}', + }, + dim = { + black = '{{ hex .dim_black }}', + red = '{{ hex .dim_red }}', + green = '{{ hex .dim_green }}', + yellow = '{{ hex .dim_yellow }}', + blue = '{{ hex .dim_blue }}', + magenta = '{{ hex .dim_magenta }}', + cyan = '{{ hex .dim_cyan }}', + white = '{{ hex .dim_white }}', + }, +} -- cgit 1.4.1