diff --git a/README.md b/README.md index 93ce6cc..de2309d 100644 --- a/README.md +++ b/README.md @@ -86,10 +86,17 @@ transparent_background = false, term_colors = false, styles = { comments = "italic", - functions = "italic", - keywords = "italic", + conditionals = "italic", + loops = "NONE", + functions = "NONE", + keywords = "NONE", strings = "NONE", - variables = "italic", + variables = "NONE", + numbers = "NONE", + booleans = "NONE", + properties = "NONE", + types = "NONE", + operators = "NONE", }, integrations = { treesitter = true, @@ -145,7 +152,7 @@ integrations = { } ``` -The way you setup the settings on your configuration varies on whether you are using vimL for this or Lua. +The way you setup the settings on your configuration varies based on whether you are using vimL for this or Lua.
For init.lua @@ -181,14 +188,20 @@ After setting things up, you can load catppuccin like so: ```vim " Vim Script +let g:catppuccin_flavour = "dusk" " latte, frappe, macchiato, mocha colorscheme catppuccin ``` ```lua -- Lua +vim.g.catppuccin_flavour = "frappe" -- latte, frappe, macchiato, mocha vim.cmd[[colorscheme catppuccin]] ``` +Remember that if you want to switch your Catppuccin flavour "on the fly" you may use the `:Catppuccin ` command. + +> Note: the command has autocompletion enabled, so you can just press tab to cycle through the flavours + ### Configuration Although settings already have self-explanatory names, here is where you can find info about each one of them and their classifications! @@ -218,7 +231,7 @@ If you'd like to know which highlight groups are being affected by catppuccin, c ##### Special Integrations -- **Feline.nvim**: Catppuccin provides this integration as a component that you can select on your Feline config: +- **Feline.nvim**: First make sure that the [kyazdani42/nvim-web-devicons](https://github.com/kyazdani42/nvim-web-devicons/) plugin is installed. Then update your Feline config to use the Catppuccin components: ```lua require("feline").setup({ diff --git a/lua/catppuccin/api/colors.lua b/lua/catppuccin/api/colors.lua index 4dc14bb..7231428 100644 --- a/lua/catppuccin/api/colors.lua +++ b/lua/catppuccin/api/colors.lua @@ -1,7 +1,7 @@ local M = {} function M.get_colors() - return require("catppuccin.core.color_palette") + return require("catppuccin.core.palettes.init").get_palette() end return M diff --git a/lua/catppuccin/config.lua b/lua/catppuccin/config.lua index 306a043..db44af1 100644 --- a/lua/catppuccin/config.lua +++ b/lua/catppuccin/config.lua @@ -6,10 +6,17 @@ config.options = { term_colors = false, styles = { comments = "italic", - functions = "italic", - keywords = "italic", + conditionals = "italic", + loops = "NONE", + functions = "NONE", + keywords = "NONE", strings = "NONE", - variables = "italic", + variables = "NONE", + numbers = "NONE", + booleans = "NONE", + properties = "NONE", + types = "NONE", + operators = "NONE", }, integrations = { treesitter = true, diff --git a/lua/catppuccin/core/color_palette.lua b/lua/catppuccin/core/color_palette.lua deleted file mode 100644 index 02dcedb..0000000 --- a/lua/catppuccin/core/color_palette.lua +++ /dev/null @@ -1,26 +0,0 @@ -local color_palette = { - rosewater = "#F5E0DC", -- Rosewater - flamingo = "#F2CDCD", -- Flamingo - mauve = "#DDB6F2", -- Mauve - pink = "#F5C2E7", -- Pink - red = "#F28FAD", -- Red - maroon = "#E8A2AF", -- Maroon - peach = "#F8BD96", -- Peach - yellow = "#FAE3B0", -- Yellow - green = "#ABE9B3", -- Green - blue = "#96CDFB", -- Blue - sky = "#89DCEB", -- Sky - teal = "#B5E8E0", -- Teal - lavender = "#C9CBFF", -- Lavender - white = "#D9E0EE", -- White - gray2 = "#C3BAC6", -- Gray2 - gray1 = "#988BA2", -- Gray1 - gray0 = "#6E6C7E", -- Gray0 - black4 = "#575268", -- Black4 - black3 = "#302D41", -- Black3 - black2 = "#1E1E2E", -- Black2 - black1 = "#1A1826", -- Black1 - black0 = "#161320", -- Black0 -} - -return color_palette diff --git a/lua/catppuccin/core/integrations/barbar.lua b/lua/catppuccin/core/integrations/barbar.lua index 3304ad1..1996a46 100644 --- a/lua/catppuccin/core/integrations/barbar.lua +++ b/lua/catppuccin/core/integrations/barbar.lua @@ -2,23 +2,23 @@ local M = {} function M.get(cp) return { - BufferCurrent = { bg = cp.black4, fg = cp.white }, - BufferCurrentIndex = { bg = cp.black4, fg = cp.blue }, - BufferCurrentMod = { bg = cp.black4, fg = cp.yellow }, - BufferCurrentSign = { bg = cp.black4, fg = cp.blue }, - BufferCurrentTarget = { bg = cp.black4, fg = cp.red }, - BufferVisible = { bg = cp.black1, fg = cp.white }, - BufferVisibleIndex = { bg = cp.black1, fg = cp.blue }, - BufferVisibleMod = { bg = cp.black1, fg = cp.yellow }, - BufferVisibleSign = { bg = cp.black1, fg = cp.blue }, - BufferVisibleTarget = { bg = cp.black1, fg = cp.red }, - BufferInactive = { bg = cp.black1, fg = cp.gray0 }, - BufferInactiveIndex = { bg = cp.black1, fg = cp.gray0 }, - BufferInactiveMod = { bg = cp.black1, fg = cp.yellow }, - BufferInactiveSign = { bg = cp.black1, fg = cp.blue }, - BufferInactiveTarget = { bg = cp.black1, fg = cp.red }, - BufferTabpages = { bg = cp.black1, fg = cp.none }, - BufferTabpage = { bg = cp.black1, fg = cp.blue }, + BufferCurrent = { bg = cp.surface1, fg = cp.text }, + BufferCurrentIndex = { bg = cp.surface1, fg = cp.blue }, + BufferCurrentMod = { bg = cp.surface1, fg = cp.yellow }, + BufferCurrentSign = { bg = cp.surface1, fg = cp.blue }, + BufferCurrentTarget = { bg = cp.surface1, fg = cp.red }, + BufferVisible = { bg = cp.mantle, fg = cp.text }, + BufferVisibleIndex = { bg = cp.mantle, fg = cp.blue }, + BufferVisibleMod = { bg = cp.mantle, fg = cp.yellow }, + BufferVisibleSign = { bg = cp.mantle, fg = cp.blue }, + BufferVisibleTarget = { bg = cp.mantle, fg = cp.red }, + BufferInactive = { bg = cp.mantle, fg = cp.overlay0 }, + BufferInactiveIndex = { bg = cp.mantle, fg = cp.overlay0 }, + BufferInactiveMod = { bg = cp.mantle, fg = cp.yellow }, + BufferInactiveSign = { bg = cp.mantle, fg = cp.blue }, + BufferInactiveTarget = { bg = cp.mantle, fg = cp.red }, + BufferTabpages = { bg = cp.mantle, fg = cp.none }, + BufferTabpage = { bg = cp.mantle, fg = cp.blue }, } end diff --git a/lua/catppuccin/core/integrations/bufferline.lua b/lua/catppuccin/core/integrations/bufferline.lua index ce86eb2..5819ca1 100644 --- a/lua/catppuccin/core/integrations/bufferline.lua +++ b/lua/catppuccin/core/integrations/bufferline.lua @@ -2,25 +2,25 @@ local M = {} function M.get(cp) - local inactive_bg = cp.black1 + local inactive_bg = cp.mantle return { - BufferLineFill = { bg = cp.black0 }, - BufferLineBackground = { fg = cp.white, bg = inactive_bg }, -- others - BufferLineBufferVisible = { fg = cp.black4, bg = inactive_bg }, - BufferLineBufferSelected = { fg = cp.white, bg = cp.black2, style = "bold,italic" }, -- current - BufferLineTab = { fg = cp.black4, bg = cp.black2 }, + BufferLineFill = { bg = cp.crust }, + BufferLineBackcrust = { fg = cp.text, bg = inactive_bg }, -- others + BufferLineBufferVisible = { fg = cp.surface1, bg = inactive_bg }, + BufferLineBufferSelected = { fg = cp.text, bg = cp.base, style = "bold,italic" }, -- current + BufferLineTab = { fg = cp.surface1, bg = cp.base }, BufferLineTabSelected = { fg = cp.red, bg = cp.blue }, BufferLineTabClose = { fg = cp.red, bg = inactive_bg }, - BufferLineIndicatorSelected = { fg = cp.peach, bg = cp.black2 }, + BufferLineIndicatorSelected = { fg = cp.peach, bg = cp.base }, -- separators BufferLineSeparator = { fg = inactive_bg, bg = inactive_bg }, BufferLineSeparatorVisible = { fg = inactive_bg, bg = inactive_bg }, BufferLineSeparatorSelected = { fg = inactive_bg, bg = inactive_bg }, -- close buttons - BufferLineCloseButton = { fg = cp.black4, bg = inactive_bg }, - BufferLineCloseButtonVisible = { fg = cp.black4, bg = inactive_bg }, - BufferLineCloseButtonSelected = { fg = cp.red, bg = cp.black2 }, + BufferLineCloseButton = { fg = cp.surface1, bg = inactive_bg }, + BufferLineCloseButtonVisible = { fg = cp.surface1, bg = inactive_bg }, + BufferLineCloseButtonSelected = { fg = cp.red, bg = cp.base }, } end diff --git a/lua/catppuccin/core/integrations/cmp.lua b/lua/catppuccin/core/integrations/cmp.lua index ebc8d9a..57b0afb 100644 --- a/lua/catppuccin/core/integrations/cmp.lua +++ b/lua/catppuccin/core/integrations/cmp.lua @@ -2,12 +2,12 @@ local M = {} function M.get(cp) return { - CmpItemAbbr = { fg = cp.gray2 }, - CmpItemAbbrDeprecated = { fg = cp.gray0, style = "strikethrough" }, + CmpItemAbbr = { fg = cp.overlay2 }, + CmpItemAbbrDeprecated = { fg = cp.overlay0, style = "strikethrough" }, CmpItemKind = { fg = cp.blue }, - CmpItemMenu = { fg = cp.white }, - CmpItemAbbrMatch = { fg = cp.white, style = "bold" }, - CmpItemAbbrMatchFuzzy = { fg = cp.white, style = "bold" }, + CmpItemMenu = { fg = cp.text }, + CmpItemAbbrMatch = { fg = cp.text, style = "bold" }, + CmpItemAbbrMatchFuzzy = { fg = cp.text, style = "bold" }, -- kind support CmpItemKindSnippet = { fg = cp.mauve }, diff --git a/lua/catppuccin/core/integrations/feline.lua b/lua/catppuccin/core/integrations/feline.lua index 0455a19..6558387 100644 --- a/lua/catppuccin/core/integrations/feline.lua +++ b/lua/catppuccin/core/integrations/feline.lua @@ -30,9 +30,9 @@ local clrs = require("catppuccin.core.color_palette") -- settings local sett = { - bkg = clrs.black3, + bkg = clrs.surface0, diffs = clrs.mauve, - extras = clrs.gray1, + extras = clrs.overlay1, curr_file = clrs.maroon, curr_dir = clrs.flamingo, } diff --git a/lua/catppuccin/core/integrations/gitsigns.lua b/lua/catppuccin/core/integrations/gitsigns.lua index 8c6fc20..19b0130 100644 --- a/lua/catppuccin/core/integrations/gitsigns.lua +++ b/lua/catppuccin/core/integrations/gitsigns.lua @@ -2,9 +2,9 @@ local M = {} function M.get(cp) return { - GitSignsAdd = { fg = cp.green, bg = cnf.transparent_background and cp.none or cp.black2 }, -- diff mode: Added line |diff.txt| - GitSignsChange = { fg = cp.yellow, bg = cnf.transparent_background and cp.none or cp.black2 }, -- diff mode: Changed line |diff.txt| - GitSignsDelete = { fg = cp.red, bg = cnf.transparent_background and cp.none or cp.black2 }, -- diff mode: Deleted line |diff.txt| + GitSignsAdd = { fg = cp.green, bg = cnf.transparent_background and cp.none or cp.base }, -- diff mode: Added line |diff.txt| + GitSignsChange = { fg = cp.yellow, bg = cnf.transparent_background and cp.none or cp.base }, -- diff mode: Changed line |diff.txt| + GitSignsDelete = { fg = cp.red, bg = cnf.transparent_background and cp.none or cp.base }, -- diff mode: Deleted line |diff.txt| } end diff --git a/lua/catppuccin/core/integrations/hop.lua b/lua/catppuccin/core/integrations/hop.lua index 102050c..72cd3cf 100644 --- a/lua/catppuccin/core/integrations/hop.lua +++ b/lua/catppuccin/core/integrations/hop.lua @@ -2,10 +2,10 @@ local M = {} function M.get(cp) return { - HopNextKey = { bg = cp.black2, fg = cp.peach, style = "bold,underline" }, - HopNextKey1 = { bg = cp.black2, fg = cp.blue, style = "bold" }, - HopNextKey2 = { bg = cp.black2, fg = cp.teal, style = "bold,italic" }, - HopUnmatched = { bg = cp.black2, fg = cp.gray0 }, + HopNextKey = { bg = cp.base, fg = cp.peach, style = "bold,underline" }, + HopNextKey1 = { bg = cp.base, fg = cp.blue, style = "bold" }, + HopNextKey2 = { bg = cp.base, fg = cp.teal, style = "bold,italic" }, + HopUnmatched = { bg = cp.base, fg = cp.overlay0 }, } end diff --git a/lua/catppuccin/core/integrations/indent_blankline.lua b/lua/catppuccin/core/integrations/indent_blankline.lua index df43707..3fe3bde 100644 --- a/lua/catppuccin/core/integrations/indent_blankline.lua +++ b/lua/catppuccin/core/integrations/indent_blankline.lua @@ -3,8 +3,8 @@ local M = {} function M.get(cp) local hi = { - IndentBlanklineChar = { fg = cp.black3 }, - IndentBlanklineContextChar = { fg = cp.white }, + IndentBlanklineChar = { fg = cp.surface0 }, + IndentBlanklineContextChar = { fg = cp.text }, } if cnf.integrations.indent_blankline.colored_indent_levels then diff --git a/lua/catppuccin/core/integrations/lightspeed.lua b/lua/catppuccin/core/integrations/lightspeed.lua index 0565df4..757482c 100644 --- a/lua/catppuccin/core/integrations/lightspeed.lua +++ b/lua/catppuccin/core/integrations/lightspeed.lua @@ -28,20 +28,20 @@ function M.get(cp) end return { - LightspeedLabel = {bg = cp.black4, fg = cp.white}, - LightspeedOverlapped = {bg = cp.black4, fg = cp.white}, - LightspeedLabelDistant = {bg = cp.mauve, fg = cp.white}, - LightspeedLabelDistantOverlapped = {bg = cp.mauve, fg = cp.white}, - LightspeedShortcut = {bg = cp.black2, fg = cp.peach, style = "italic"}, - LightspeedShortcutOverlapped = {bg = cp.black2, fg = cp.peach, style = "bold"}, - LightspeedMaskedChar = {bg = cp.black2, fg = cp.red, style = "undercurl"}, - LightspeedGreyWash = {bg = cp.black2, fg = cp.gray0}, - LightspeedUnlabeledMatch = {bg = cp.black2, fg = cp.red, style = "underline"}, - LightspeedOneCharMatch = {bg = cp.black2, fg = cp.red, style = "underline"}, - LightspeedUniqueChar = {bg = cp.black2, fg = cp.green, style = "strikethrough"}, - LightspeedPendingOpArea = {bg = cp.black2, fg = cp.green, style = "strikethrough"}, - LightspeedPendingChangeOpArea = {bg = cp.black2, fg = cp.green, style = "strikethrough"}, - LightspeedCursor = {fg = cp.black2, bg = cp.white}, + LightspeedLabel = {bg = cp.surface1, fg = cp.text}, + LightspeedOverlapped = {bg = cp.surface1, fg = cp.text}, + LightspeedLabelDistant = {bg = cp.mauve, fg = cp.text}, + LightspeedLabelDistantOverlapped = {bg = cp.mauve, fg = cp.text}, + LightspeedShortcut = {bg = cp.base, fg = cp.peach, style = "italic"}, + LightspeedShortcutOverlapped = {bg = cp.base, fg = cp.peach, style = "bold"}, + LightspeedMaskedChar = {bg = cp.base, fg = cp.red, style = "undercurl"}, + LightspeedGreyWash = {bg = cp.base, fg = cp.overlay0}, + LightspeedUnlabeledMatch = {bg = cp.base, fg = cp.red, style = "underline"}, + LightspeedOneCharMatch = {bg = cp.base, fg = cp.red, style = "underline"}, + LightspeedUniqueChar = {bg = cp.base, fg = cp.green, style = "strikethrough"}, + LightspeedPendingOpArea = {bg = cp.base, fg = cp.green, style = "strikethrough"}, + LightspeedPendingChangeOpArea = {bg = cp.base, fg = cp.green, style = "strikethrough"}, + LightspeedCursor = {fg = cp.base, bg = cp.text}, } end diff --git a/lua/catppuccin/core/integrations/lsp_saga.lua b/lua/catppuccin/core/integrations/lsp_saga.lua index b32cf43..246a26d 100644 --- a/lua/catppuccin/core/integrations/lsp_saga.lua +++ b/lua/catppuccin/core/integrations/lsp_saga.lua @@ -6,14 +6,14 @@ function M.get(cp) DiagnosticWarning = { fg = cp.yellow }, DiagnosticInformation = { fg = cp.blue }, DiagnosticHint = { fg = cp.hint }, - LspFloatWinNormal = { bg = cp.black0 }, + LspFloatWinNormal = { bg = cp.crust }, LspFloatWinBorder = { fg = cp.blue }, LspSagaBorderTitle = { fg = cp.flamingo }, LspSagaHoverBorder = { fg = cp.blue }, LspSagaRenameBorder = { fg = cp.teal }, LspSagaDefPreviewBorder = { fg = cp.teal }, LspSagaCodeActionBorder = { fg = cp.blue }, - LspSagaFinderSelection = { fg = cp.black4 }, + LspSagaFinderSelection = { fg = cp.surface1 }, LspSagaCodeActionTitle = { fg = cp.blue1 }, LspSagaCodeActionContent = { fg = cp.purple }, LspSagaSignatureHelpBorder = { fg = cp.red }, diff --git a/lua/catppuccin/core/integrations/lsp_trouble.lua b/lua/catppuccin/core/integrations/lsp_trouble.lua index 3f3e4c5..62b5a74 100644 --- a/lua/catppuccin/core/integrations/lsp_trouble.lua +++ b/lua/catppuccin/core/integrations/lsp_trouble.lua @@ -3,8 +3,8 @@ local M = {} function M.get(cp) return { LspTroubleText = { fg = cp.green }, - LspTroubleCount = { fg = cp.pink, bg = cp.black4 }, - LspTroubleNormal = { fg = cp.white, bg = cp.black0 }, + LspTroubleCount = { fg = cp.pink, bg = cp.surface1 }, + LspTroubleNormal = { fg = cp.text, bg = cp.crust }, } end diff --git a/lua/catppuccin/core/integrations/native_lsp.lua b/lua/catppuccin/core/integrations/native_lsp.lua index 983756d..0a59c19 100644 --- a/lua/catppuccin/core/integrations/native_lsp.lua +++ b/lua/catppuccin/core/integrations/native_lsp.lua @@ -1,4 +1,5 @@ local M = {} +local util = require("catppuccin.utils.util") function M.get(cp) @@ -8,20 +9,22 @@ function M.get(cp) local error = cp.red local warning = cp.yellow local info = cp.sky - local hint = cp.rosewater + local hint = cp.teal + local darkening_percentage = 0.095 return { -- These groups are for the native LSP cliencp. Some other LSP clients may -- use these groups, or use their own. Consult your LSP client's -- documentation. - LspReferenceText = { bg = cp.black4 }, -- used for highlighting "text" references - LspReferenceRead = { bg = cp.black4 }, -- used for highlighting "read" references - LspReferenceWrite = { bg = cp.black4 }, -- used for highlighting "write" references + LspReferenceText = { bg = cp.surface1 }, -- used for highlighting "text" references + LspReferenceRead = { bg = cp.surface1 }, -- used for highlighting "read" references + LspReferenceWrite = { bg = cp.surface1 }, -- used for highlighting "write" references -- hightlight diagnostics in numberline - DiagnosticError = { fg = error, style = virtual_text.errors }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default - DiagnosticWarn = { fg = warning, style = virtual_text.warnings }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default - DiagnosticInfo = { fg = info, style = virtual_text.information }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default - DiagnosticHint = { fg = hint, style = virtual_text.hints }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default + DiagnosticError = { bg = util.darken(error, darkening_percentage, cp.base), fg = error, style = virtual_text.errors }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default + DiagnosticWarn = { bg = util.darken(warning, darkening_percentage, cp.base), fg = warning, style = virtual_text.warnings }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default + DiagnosticInfo = { bg = util.darken(info, darkening_percentage, cp.base), fg = info, style = virtual_text.information }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default + DiagnosticHint = { bg = util.darken(hint, darkening_percentage, cp.base), fg = hint, style = virtual_text.hints }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default + -- util. -- for nvim nightly DiagnosticUnderlineError = { style = underlines.errors, sp = error }, @@ -29,10 +32,10 @@ function M.get(cp) DiagnosticUnderlineInfo = { style = underlines.information, sp = info }, DiagnosticUnderlineHint = { style = underlines.hints, sp = hint }, - LspDiagnosticsDefaultError = { fg = error }, -- Used as the base highlight group. Other LspDiagnostic highlights link to this by default (except Underline) - LspDiagnosticsDefaultWarning = { fg = warning }, -- Used as the base highlight group. Other LspDiagnostic highlights link to this by default (except Underline) - LspDiagnosticsDefaultInformation = { fg = info }, -- Used as the base highlight group. Other LspDiagnostic highlights link to this by default (except Underline) - LspDiagnosticsDefaultHint = { fg = hint }, -- Used as the base highlight group. Other LspDiagnostic highlights link to this by default (except Underline) + LspDiagnosticsDefaultError = { fg = error }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline) + LspDiagnosticsDefaultWarning = { fg = warning }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline) + LspDiagnosticsDefaultInformation = { fg = info }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline) + LspDiagnosticsDefaultHint = { fg = hint }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline) LspSignatureActiveParameter = { fg = cp.peach }, -- LspDiagnosticsFloatingError = { }, -- Used to color "Error" diagnostic messages in diagnostics float -- LspDiagnosticsFloatingWarning = { }, -- Used to color "Warning" diagnostic messages in diagnostics float @@ -51,7 +54,7 @@ function M.get(cp) LspDiagnosticsUnderlineWarning = { style = underlines.warnings, sp = warning }, -- Used to underline "Warning" diagnostics LspDiagnosticsUnderlineInformation = { style = underlines.information, sp = info }, -- Used to underline "Information" diagnostics LspDiagnosticsUnderlineHint = { style = underlines.hints, sp = hint }, -- Used to underline "Hint" diagnostics - LspCodeLens = { fg = cp.gray0 }, -- virtual text of the codelens + LspCodeLens = { fg = cp.overlay0 }, -- virtual text of the codelens } end diff --git a/lua/catppuccin/core/integrations/neogit.lua b/lua/catppuccin/core/integrations/neogit.lua index 5da1fc7..e368b60 100644 --- a/lua/catppuccin/core/integrations/neogit.lua +++ b/lua/catppuccin/core/integrations/neogit.lua @@ -4,11 +4,11 @@ function M.get(cp) return { NeogitBranch = { fg = cp.pink }, NeogitRemote = { fg = cp.pink }, - NeogitHunkHeader = { bg = cp.blue, fg = cp.white }, - NeogitHunkHeaderHighlight = { bg = cp.black2, fg = cp.blue }, - NeogitDiffContextHighlight = { bg = cp.black1, fg = cp.gray2 }, - NeogitDiffDeleteHighlight = { bg = cp.black1, fg = cp.red }, - NeogitDiffAddHighlight = { bg = cp.black1, fg = cp.green }, + NeogitHunkHeader = { bg = cp.blue, fg = cp.text }, + NeogitHunkHeaderHighlight = { bg = cp.base, fg = cp.blue }, + NeogitDiffContextHighlight = { bg = cp.mantle, fg = cp.overlay2 }, + NeogitDiffDeleteHighlight = { bg = cp.mantle, fg = cp.red }, + NeogitDiffAddHighlight = { bg = cp.mantle, fg = cp.green }, } end diff --git a/lua/catppuccin/core/integrations/neotree.lua b/lua/catppuccin/core/integrations/neotree.lua index 3dadc0a..2bc12a6 100644 --- a/lua/catppuccin/core/integrations/neotree.lua +++ b/lua/catppuccin/core/integrations/neotree.lua @@ -13,8 +13,8 @@ function M.get(cp) return { NeoTreeDirectoryName = { fg = cp.blue }, NeoTreeDirectoryIcon = { fg = cp.blue }, - NeoTreeNormal = { fg = cp.white, bg = neotree.transparent_panel and "NONE" or cp.black1 }, - NeoTreeIndentMarker = { fg = cp.gray0 }, + NeoTreeNormal = { fg = cp.text, bg = neotree.transparent_panel and "NONE" or cp.mantle }, + NeoTreeIndentMarker = { fg = cp.overlay0 }, NeoTreeRootName = { fg = root_dir_color, style = "bold" }, NeoTreeSymbolicLinkTarget = { fg = cp.pink }, NeoTreeGitModified = { fg = cp.yellow }, diff --git a/lua/catppuccin/core/integrations/nvimtree.lua b/lua/catppuccin/core/integrations/nvimtree.lua index ec81bba..3e83973 100644 --- a/lua/catppuccin/core/integrations/nvimtree.lua +++ b/lua/catppuccin/core/integrations/nvimtree.lua @@ -4,9 +4,8 @@ function M.get(cp) local config = require("catppuccin.config").options local nvimtree = config.integrations.nvimtree - local root_dir_color = cp.pink - - if nvimtree.show_root then + local root_dir_color = cp.mantle + if nvimtree.show_root == true then root_dir_color = cp.blue end @@ -14,19 +13,19 @@ function M.get(cp) return { NvimTreeFolderName = { fg = cp.blue }, NvimTreeFolderIcon = { fg = cp.blue }, - NvimTreeNormal = { fg = cp.white, bg = nvimtree.transparent_panel and "NONE" or cp.black1 }, + NvimTreeNormal = { fg = cp.text, bg = nvimtree.transparent_panel and "NONE" or cp.mantle }, NvimTreeOpenedFolderName = { fg = cp.blue }, NvimTreeEmptyFolderName = { fg = cp.blue }, - NvimTreeIndentMarker = { fg = cp.gray0 }, - NvimTreeVertSplit = { fg = cp.black2, bg = cp.black2 }, + NvimTreeIndentMarker = { fg = cp.overlay0 }, + NvimTreeVertSplit = { fg = cp.base, bg = cp.base }, NvimTreeRootFolder = { fg = root_dir_color, style = "bold" }, NvimTreeSymlink = { fg = cp.pink }, - NvimTreeStatuslineNc = { fg = cp.black1, bg = cp.black1 }, + NvimTreeStatuslineNc = { fg = cp.mantle, bg = cp.mantle }, NvimTreeGitDirty = { fg = cp.yellow }, NvimTreeGitNew = { fg = cp.blue }, NvimTreeGitDeleted = { fg = cp.red }, NvimTreeSpecialFile = { fg = cp.flamingo }, - NvimTreeImageFile = { fg = cp.white }, + NvimTreeImageFile = { fg = cp.text }, NvimTreeOpenedFile = { fg = cp.pink }, } end diff --git a/lua/catppuccin/core/integrations/symbols_outline.lua b/lua/catppuccin/core/integrations/symbols_outline.lua index a660d43..5b9e53f 100644 --- a/lua/catppuccin/core/integrations/symbols_outline.lua +++ b/lua/catppuccin/core/integrations/symbols_outline.lua @@ -2,7 +2,7 @@ local M = {} function M.get(cp) return { - FocusedSymbol = { fg = cp.yellow, bg = cp.black2 }, + FocusedSymbol = { fg = cp.yellow, bg = cp.base }, } end diff --git a/lua/catppuccin/core/integrations/telescope.lua b/lua/catppuccin/core/integrations/telescope.lua index 1072dde..d32a76a 100644 --- a/lua/catppuccin/core/integrations/telescope.lua +++ b/lua/catppuccin/core/integrations/telescope.lua @@ -4,7 +4,7 @@ function M.get(cp) return { TelescopeBorder = { fg = cp.blue }, TelescopeSelectionCaret = { fg = cp.flamingo }, - TelescopeSelection = { fg = cp.white, bg = cp.black3, style = "bold" }, + TelescopeSelection = { fg = cp.text, bg = cp.surface0, style = "bold" }, TelescopeMatching = { fg = cp.blue }, } end diff --git a/lua/catppuccin/core/integrations/treesitter.lua b/lua/catppuccin/core/integrations/treesitter.lua index 7ff2aaa..011ac2b 100644 --- a/lua/catppuccin/core/integrations/treesitter.lua +++ b/lua/catppuccin/core/integrations/treesitter.lua @@ -1,10 +1,10 @@ local M = {} function M.get(cp) - local delimeters = cp.gray1 + -- local delimeters = cp.overlay2 local operators = cp.sky local cl = cp.mauve -- conditionals, loops - local keywords = cp.red + local keywords = cp.mauve local math_logic = cp.peach return { @@ -13,62 +13,65 @@ function M.get(cp) -- By default, most of these groups link to an appropriate Vim group, -- TSError -> Error for example, so you do not have to define these unless -- you explicitly want to support Treesitter's improved syntax awareness. - TSField = { fg = cp.rosewater }, -- For fields. - TSProperty = { fg = cp.yellow, style = "italic" }, -- Same as TSField. - TSInclude = { fg = cp.teal, style = "italic" }, -- For includes: #include in C, use or extern crate in Rust, or require in Lua. - TSOperator = { fg = operators, style = "bold" }, -- For any operator: +, but also -> and * in cp. - TSKeywordOperator = { fg = operators, style = "bold" }, -- For new keyword operator - TSPunctSpecial = { fg = cp.maroon, style = "bold" }, -- For special punctutation that does not fall in the catagories before. - - TSFloat = { fg = math_logic, style = "bold,italic" }, -- For floats. - TSNumber = { fg = math_logic, style = "bold,italic" }, -- For all numbers - TSBoolean = { fg = math_logic, style = "bold,italic" }, -- For booleans. - - TSConstructor = { fg = cp.lavender }, -- For constructor calls and definitions: = { } in Lua, and Java constructors. + TSField = { fg = cp.teal }, -- For fields. + TSProperty = { fg = cp.teal, style = cnf.styles.properties or "NONE" }, -- Same as TSField. + + TSInclude = { fg = cp.mauve, style = cnf.styles.keywords or "NONE" }, -- For includes: #include in C, use or extern crate in Rust, or require in Lua. + TSOperator = { fg = operators, style = cnf.styles.operators or "NONE" }, -- For any operator: +, but also -> and * in cp. + TSKeywordOperator = { fg = cp.mauve, style = cnf.styles.operators or "NONE" }, -- For new keyword operator + TSPunctSpecial = { fg = cp.sky, style = cnf.styles.operators or "NONE" }, -- For special punctutation that does not fall in the catagories before. + + TSFloat = { fg = math_logic, style = cnf.styles.numbers or "NONE" }, -- For floats. + TSNumber = { fg = math_logic, style = cnf.styles.numbers or "NONE" }, -- For all numbers + TSBoolean = { fg = math_logic, style = cnf.styles.booleans or "NONE" }, -- For booleans. + + TSConstructor = { fg = cp.sapphire }, -- For constructor calls and definitions: = { } in Lua, and Java constructors. TSConstant = { fg = cp.peach }, -- For constants - TSConditional = { fg = cl, style = "bold" }, -- For keywords related to conditionnals. - TSRepeat = { fg = cl, style = "bold" }, -- For keywords related to loops. - TSException = { fg = cp.peach, style = cnf.styles.keywords }, -- For exception related keywords. + TSConditional = { fg = cl, style = cnf.styles.conditionals or "NONE" }, -- For keywords related to conditionnals. + TSRepeat = { fg = cl, style = cnf.styles.loops or "NONE" }, -- For keywords related to loops. + TSException = { fg = cp.mauve, style = cnf.styles.keywords or "NONE" }, -- For exception related keywords. -- builtin - TSConstBuiltin = { fg = cp.lavender, style = cnf.styles.keywords }, -- For constant that are built in the language: nil in Lua. - TSFuncBuiltin = { fg = cp.peach, style = "italic" }, -- For builtin functions: table.insert in Lua. - TSTypeBuiltin = { fg = cp.yellow, style = "italic" }, -- For builtin types. - TSVariableBuiltin = { fg = cp.teal, style = "italic" }, -- Variable names that are defined by the languages, like this or self. - - TSFunction = { fg = cp.blue, style = cnf.styles.functions }, -- For function (calls and definitions). - TSFuncMacro = { fg = cp.red }, -- For macro defined functions (calls and definitions): each macro_rules in Ruscp. - TSParameter = { fg = cp.rosewater, style = "italic" }, -- For parameters of a function. - TSKeywordFunction = { fg = cp.maroon, style = cnf.styles.keywords }, -- For keywords used to define a fuction. - TSKeyword = { fg = keywords, style = cnf.styles.keywords }, -- For keywords that don't fall in previous categories. - TSKeywordReturn = { fg = cp.pink }, + TSConstBuiltin = { fg = cp.peach, style = cnf.styles.keywords or "NONE" }, -- For constant that are built in the language: nil in Lua. + TSFuncBuiltin = { fg = cp.peach, style = cnf.styles.functions or "NONE" }, -- For builtin functions: table.insert in Lua. + + TSNamespace = { fg = cp.blue, style = "italic" }, -- For identifiers referring to modules and namespaces. + TSType = { fg = cp.yellow, style = cnf.styles.types or "NONE" }, -- For types. + TSTypeBuiltin = { fg = cp.yellow, style = cnf.styles.properties or "italic" }, -- For builtin types. + TSVariableBuiltin = { fg = cp.red }, -- Variable names that are defined by the languages, like this or self. + + TSFunction = { fg = cp.blue, style = cnf.styles.functions or "NONE" }, -- For function (calls and definitions). + TSFuncMacro = { fg = cp.teal, style = cnf.styles.functions or "NONE" }, -- For macro defined functions (calls and definitions): each macro_rules in Ruscp. + TSParameter = { fg = cp.maroon, style = "italic" }, -- For parameters of a function. + TSKeywordFunction = { fg = cp.mauve, style = cnf.styles.keywords or "NONE" }, -- For keywords used to define a fuction. + TSKeyword = { fg = keywords, style = cnf.styles.keywords or "NONE" }, -- For keywords that don't fall in previous categories. + TSKeywordReturn = { fg = cp.mauve, style = cnf.styles.keywords or "NONE" }, -- TSAnnotation = { }; -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information. -- TSAttribute = { }; -- (unstable) TODO: docs -- TSCharacter = { }; -- For characters. - -- TSgray0 = { }; -- For gray0 blocks. - TSNote = { fg = cp.black2, bg = cp.blue }, - TSWarning = { fg = cp.black2, bg = cp.yellow }, - TSDanger = { fg = cp.black2, bg = cp.red }, - -- TSConstMacro = { }; -- For constants that are defined by macros: NULL in cp. + -- TSoverlay0 = { }; -- For overlay0 blocks. + TSNote = { fg = cp.base, bg = cp.blue }, + TSWarning = { fg = cp.base, bg = cp.yellow }, + TSDanger = { fg = cp.base, bg = cp.red }, + TSConstMacro = { fg = cp.mauve }; -- For constants that are defined by macros: NULL in cp. -- TSError = { fg = cp.red }, -- For syntax/parser errors. - -- rustTSField = { fg = cp.black4 }, -- For fields. - TSLabel = { fg = cp.blue }, -- For labels: label: in C and :label: in Lua. - TSMethod = { fg = cp.blue, style = "italic" }, -- For method calls and definitions. - TSNamespace = { fg = cp.rosewater, style = "italic" }, -- For identifiers referring to modules and namespaces. + -- rustTSField = { fg = cp.surface1 }, -- For fields. + TSLabel = { fg = cp.sapphire }, -- For labels: label: in C and :label: in Lua. + TSMethod = { fg = cp.blue, style = cnf.styles.functions or "NONE" }, -- For method calls and definitions. -- TSNone = { }; -- TODO: docs -- TSParameterReference= { }; -- For references to parameters of a function. tomlTSProperty = { fg = cp.blue }, -- Differentiates between string and properties - TSPunctDelimiter = { fg = cp.teal }, -- For delimiters ie: . - TSPunctBracket = { fg = delimeters }, -- For brackets and parenthesis. - TSString = { fg = cp.green }, -- For strings. - TSStringRegex = { fg = cp.peach, style = cnf.styles.strings }, -- For regexes. + TSPunctDelimiter = { fg = cp.overlay2 }, -- For delimiters ie: . + -- TSPunctBracket = { fg = delimeters }, -- For brackets and parenthesis. + TSPunctBracket = { fg = cp.overlay2 }, -- For brackets and parenthesis. + TSString = { fg = cp.green, style = cnf.styles.strings or "NONE" }, -- For strings. + TSStringRegex = { fg = cp.peach, style = cnf.styles.strings or "NONE" }, -- For regexes. -- TSSymbol = { }; -- For identifiers referring to symbols or atoms. - TSType = { fg = cp.yellow }, -- For types. - TSVariable = { fg = cp.white, style = cnf.styles.variables }, -- Any variable name that does not have another highlighcp. - TSTagAttribute = { fg = cp.mauve, style = "italic" }, -- Tags like html tag names. - TSTag = { fg = cp.peach }, -- Tags like html tag names. - TSTagDelimiter = { fg = cp.maroon }, -- Tag delimiter like < > / - TSText = { fg = cp.white }, -- For strings considerated text in a markup language. + TSVariable = { fg = cp.text, style = cnf.styles.variables or "NONE" }, -- Any variable name that does not have another highlighcp. + TSTagAttribute = { fg = cp.teal, style = "italic" }, -- Tags like html tag names. + TSTag = { fg = cp.mauve }, -- Tags like html tag names. + TSTagDelimiter = { fg = cp.sky }, -- Tag delimiter like < > / + TSText = { fg = cp.text }, -- For strings considerated text in a markup language. -- TSEmphasis = { }; -- For text to be represented with emphasis. -- TSUnderline = { }; -- For text to be represented with an underline. -- TSStrike = { }; -- For strikethrough texcp. @@ -86,25 +89,27 @@ function M.get(cp) TSStringEscape = { fg = cp.pink, style = cnf.styles.strings }, -- For escape characters within a string. -- bash - bashTSFuncBuiltin = { fg = cp.red, style = "italic" }, - bashTSParameter = { fg = cp.yellow, style = "italic" }, + -- bashTSFuncBuiltin = { fg = cp.red, style = "italic" }, + -- bashTSParameter = { fg = cp.yellow, style = "italic" }, - -- lua - luaTSField = { fg = cp.lavender }, - luaTSConstructor = { fg = cp.flamingo }, -- For constructor calls and definitions: = { } in Lua, and Java constructors. + -- json + jsonTSLabel = { fg = cp.blue }, -- For labels: label: in C and :label: in Lua. - -- java - javaTSConstant = { fg = cp.teal }, + -- lua + luaTSConstructor = { fg = cp.lavender }, -- For constructor calls and definitions: = { } in Lua, and Java constructors. - -- typescript - typescriptTSProperty = { fg = cp.lavender, style = "italic" }, -- Same as TSField. + -- typescript + typescriptTSConstructor = { fg = cp.lavender }, - -- css - cssTSType = { fg = cp.lavender }, - cssTSProperty = { fg = cp.yellow, style = "italic" }, -- Same as TSField. + -- TSX (Typescript React) + tsxTSConstructor = { fg = cp.lavender }, + tsxTSTagAttribute = { fg = cp.mauve }, -- cpp - cppTSProperty = { fg = cp.white }, + cppTSProperty = { fg = cp.text }, + + -- yaml + yamlTSField = { fg = cp.blue }, -- For fields. } end diff --git a/lua/catppuccin/core/integrations/ts_rainbow.lua b/lua/catppuccin/core/integrations/ts_rainbow.lua index 1e4b74a..1197c36 100644 --- a/lua/catppuccin/core/integrations/ts_rainbow.lua +++ b/lua/catppuccin/core/integrations/ts_rainbow.lua @@ -2,7 +2,7 @@ local M = {} function M.get(cp) local transparent_background = require("catppuccin.config").options.transparent_background - local bg_highlight = transparent_background and "NONE" or cp.black2 + local bg_highlight = transparent_background and "NONE" or cp.base return { rainbowcol1 = {bg = bg_highlight, fg = cp.red}, rainbowcol2 = {bg = bg_highlight, fg = cp.teal}, diff --git a/lua/catppuccin/core/integrations/vim_sneak.lua b/lua/catppuccin/core/integrations/vim_sneak.lua index 9dd5ec4..4c8f9cb 100644 --- a/lua/catppuccin/core/integrations/vim_sneak.lua +++ b/lua/catppuccin/core/integrations/vim_sneak.lua @@ -2,8 +2,8 @@ local M = {} function M.get(cp) return { - Sneak = { fg = cp.gray2, bg = cp.pink }, - SneakScope = { bg = cp.white }, + Sneak = { fg = cp.overlay2, bg = cp.pink }, + SneakScope = { bg = cp.text }, } end diff --git a/lua/catppuccin/core/integrations/which_key.lua b/lua/catppuccin/core/integrations/which_key.lua index d14136c..fd80ee8 100644 --- a/lua/catppuccin/core/integrations/which_key.lua +++ b/lua/catppuccin/core/integrations/which_key.lua @@ -5,10 +5,10 @@ function M.get(cp) WhichKey = { fg = cp.flamingo }, WhichKeyGroup = { fg = cp.blue }, WhichKeyDesc = { fg = cp.pink }, - WhichKeySeperator = { fg = cp.gray0 }, - WhichKeySeparator = { fg = cp.gray0 }, - WhichKeyFloat = { bg = cp.black0 }, - WhichKeyValue = { fg = cp.gray0 }, + WhichKeySeperator = { fg = cp.overlay0 }, + WhichKeySeparator = { fg = cp.overlay0 }, + WhichKeyFloat = { bg = cp.crust }, + WhichKeyValue = { fg = cp.overlay0 }, } end diff --git a/lua/catppuccin/core/mapper.lua b/lua/catppuccin/core/mapper.lua index 90131e4..10d2571 100644 --- a/lua/catppuccin/core/mapper.lua +++ b/lua/catppuccin/core/mapper.lua @@ -1,5 +1,6 @@ local colors_util = require("catppuccin.utils.colors") -local color_palette = require("catppuccin.core.color_palette") +local util = require("catppuccin.utils.util") +local cp local M = {} @@ -9,7 +10,7 @@ local function get_properties() background = "dark", } - if colors_util.assert_brightness(color_palette.black2) then + if colors_util.assert_brightness(cp.base) then props["background"] = "light" end @@ -17,69 +18,68 @@ local function get_properties() end local function get_base() - local cp = color_palette cp.none = "NONE" return { - Comment = { fg = cp.gray0, style = cnf.styles.comments }, -- just comments - ColorColumn = { bg = cp.black3 }, -- used for the columns set with 'colorcolumn' - Conceal = { fg = cp.gray1 }, -- placeholder characters substituted for concealed text (see 'conceallevel') - Cursor = { fg = cp.black2, bg = cp.white }, -- character under the cursor - lCursor = { fg = cp.black2, bg = cp.white }, -- the character under the cursor when |language-mapping| is used (see 'guicursor') - CursorIM = { fg = cp.black2, bg = cp.white }, -- like Cursor, but used when in IME mode |CursorIM| - CursorColumn = { bg = cp.black1 }, -- Screen-column at the cursor, when 'cursorcolumn' is secp. - CursorLine = { bg = cp.black3 }, -- Screen-line at the cursor, when 'cursorline' is secp. Low-priority if foreground (ctermfg OR guifg) is not secp. + Comment = { fg = cp.surface2, style = cnf.styles.comments }, -- just comments + ColorColumn = { bg = cp.surface0 }, -- used for the columns set with 'colorcolumn' + Conceal = { fg = cp.overlay1 }, -- placeholder characters substituted for concealed text (see 'conceallevel') + Cursor = { fg = cp.base, bg = cp.text }, -- character under the cursor + lCursor = { fg = cp.base, bg = cp.text }, -- the character under the cursor when |language-mapping| is used (see 'guicursor') + CursorIM = { fg = cp.base, bg = cp.text }, -- like Cursor, but used when in IME mode |CursorIM| + CursorColumn = { bg = cp.mantle }, -- Screen-column at the cursor, when 'cursorcolumn' is secp. + CursorLine = { bg = colors_util.vary_color({latte = util.lighten(cp.mantle, 0.70, cp.base)}, util.darken(cp.surface0, 0.64, cp.base)) }, -- Screen-line at the cursor, when 'cursorline' is secp. Low-priority if forecrust (ctermfg OR guifg) is not secp. Directory = { fg = cp.blue }, -- directory names (and other special names in listings) - EndOfBuffer = { fg = cp.black2 }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|. + EndOfBuffer = { fg = cp.base }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|. ErrorMsg = { fg = cp.red, style = "bold,italic" }, -- error messages on the command line - VertSplit = { fg = cp.black0 }, -- the column separating vertically split windows - Folded = { fg = cp.blue, bg = cp.black4 }, -- line used for closed folds - FoldColumn = { bg = cp.black2, fg = cp.gray0 }, -- 'foldcolumn' - SignColumn = { bg = cnf.transparent_background and cp.none or cp.black2, fg = cp.black4 }, -- column where |signs| are displayed - SignColumnSB = { bg = cp.black0, fg = cp.black4 }, -- column where |signs| are displayed - Substitute = { bg = cp.black4, fg = cp.pink }, -- |:substitute| replacement text highlighting - LineNr = { fg = cp.black4 }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is secp. - CursorLineNr = { fg = cp.green }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. highlights the number in numberline. + VertSplit = { fg = cp.crust }, -- the column separating vertically split windows + Folded = { fg = cp.blue, bg = cp.surface1 }, -- line used for closed folds + FoldColumn = { bg = cp.base, fg = cp.overlay0 }, -- 'foldcolumn' + SignColumn = { bg = cnf.transparent_background and cp.none or cp.base, fg = cp.surface1 }, -- column where |signs| are displayed + SignColumnSB = { bg = cp.crust, fg = cp.surface1 }, -- column where |signs| are displayed + Substitute = { bg = cp.surface1, fg = cp.pink }, -- |:substitute| replacement text highlighting + LineNr = { fg = cp.surface1 }, -- colors_util.vary_color({latte = cp.crust}, cp.surface1) }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is secp. + CursorLineNr = { fg = cp.lavender }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. highlights the number in numberline. MatchParen = { fg = cp.peach, style = "bold" }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt| - ModeMsg = { fg = cp.white, style = "bold" }, -- 'showmode' message (e.g., "-- INSERT -- ") - MsgArea = { fg = cp.white }, -- Area for messages and cmdline + ModeMsg = { fg = cp.text, style = "bold" }, -- 'showmode' message (e.g., "-- INSERT -- ") + MsgArea = { fg = cp.text }, -- Area for messages and cmdline MsgSeparator = {}, -- Separator for scrolled messages, `msgsep` flag of 'display' MoreMsg = { fg = cp.blue }, -- |more-prompt| - NonText = { fg = cp.gray0 }, -- '@' 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 = cp.white, bg = cnf.transparent_background and cp.none or cp.black2 }, -- normal text - NormalNC = { fg = cp.white, bg = cnf.transparent_background and cp.none or cp.black2 }, -- normal text in non-current windows - NormalSB = { fg = cp.white, bg = cp.black0 }, -- normal text in non-current windows - NormalFloat = { fg = cp.white, bg = cp.black1 }, -- Normal text in floating windows. + NonText = { fg = cp.overlay0 }, -- '@' 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 = cp.text, bg = cnf.transparent_background and cp.none or cp.base }, -- normal text + NormalNC = { fg = cp.text, bg = cnf.transparent_background and cp.none or cp.base }, -- normal text in non-current windows + NormalSB = { fg = cp.text, bg = cp.crust }, -- normal text in non-current windows + NormalFloat = { fg = cp.text, bg = cp.mantle }, -- Normal text in floating windows. FloatBorder = { fg = cp.blue }, - Pmenu = { bg = cp.black3, fg = cp.gray2 }, -- Popup menu: normal item. - PmenuSel = { fg = cp.white, bg = cp.black4, style = "bold" }, -- Popup menu: selected item. - PmenuSbar = { bg = cp.black4 }, -- Popup menu: scrollbar. - PmenuThumb = { bg = cp.gray0 }, -- Popup menu: Thumb of the scrollbar. + Pmenu = { bg = cp.surface0, fg = cp.overlay2 }, -- Popup menu: normal item. + PmenuSel = { fg = cp.text, bg = cp.surface1, style = "bold" }, -- Popup menu: selected item. + PmenuSbar = { bg = cp.surface1 }, -- Popup menu: scrollbar. + PmenuThumb = { bg = cp.overlay0 }, -- Popup menu: Thumb of the scrollbar. Question = { fg = cp.blue }, -- |hit-enter| prompt and yes/no questions - QuickFixLine = { bg = cp.black4, style = "bold" }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there. - Search = { bg = cp.black4, fg = cp.pink, style = "bold" }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand oucp. - IncSearch = { bg = cp.pink, fg = cp.black4 }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c" - SpecialKey = { fg = cp.white }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' whitespace. |hl-Whitespace| + QuickFixLine = { bg = cp.surface1, style = "bold" }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there. + Search = { bg = cp.surface1, fg = cp.pink, style = "bold" }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand oucp. + IncSearch = { bg = cp.pink, fg = cp.surface1 }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c" + SpecialKey = { fg = cp.text }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' textspace. |hl-Whitespace| SpellBad = { sp = cp.red, style = "undercurl" }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise. SpellCap = { sp = cp.yellow, style = "undercurl" }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise. SpellLocal = { sp = cp.blue, style = "undercurl" }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise. SpellRare = { sp = cp.green, style = "undercurl" }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise. - StatusLine = { fg = cp.white, bg = cp.black1 }, -- status line of current window - StatusLineNC = { fg = cp.black4, bg = cp.black1 }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window. - TabLine = { bg = cp.black1, fg = cp.black4 }, -- tab pages line, not active tab page label + StatusLine = { fg = cp.text, bg = cp.mantle }, -- status line of current window + StatusLineNC = { fg = cp.surface1, bg = cp.mantle }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window. + TabLine = { bg = cp.mantle, fg = cp.surface1 }, -- tab pages line, not active tab page label TabLineFill = { bg = cp.black }, -- tab pages line, where there are no labels - TabLineSel = { fg = cp.green, bg = cp.black4 }, -- tab pages line, active tab page label + TabLineSel = { fg = cp.green, bg = cp.surface1 }, -- tab pages line, active tab page label Title = { fg = cp.blue, style = "bold" }, -- titles for output from ":set all", ":autocmd" etcp. - Visual = { bg = cp.black4, style = "bold" }, -- Visual mode selection - VisualNOS = { bg = cp.black4, style = "bold" }, -- Visual mode selection when vim is "Not Owning the Selection". + Visual = { bg = cp.surface1, style = "bold" }, -- Visual mode selection + VisualNOS = { bg = cp.surface1, style = "bold" }, -- Visual mode selection when vim is "Not Owning the Selection". WarningMsg = { fg = cp.yellow }, -- warning messages - Whitespace = { fg = cp.black4 }, -- "nbsp", "space", "tab" and "trail" in 'listchars' - WildMenu = { bg = cp.gray0 }, -- current match in 'wildmenu' completion + Whitespace = { fg = cp.surface1 }, -- "nbsp", "space", "tab" and "trail" in 'listchars' + WildMenu = { bg = cp.overlay0 }, -- current match in 'wildmenu' completion -- These groups are not listed as default vim groups, -- but they are defacto standard group names for syntax highlighting. - -- gray0ed out groups should chain up to their "preferred" group by + -- overlay0ed out groups should chain up to their "preferred" group by -- default, - -- Ungray0 and edit if you want more specific syntax highlighting. + -- Unoverlay0 and edit if you want more specific syntax highlighting. -- code itself @@ -113,7 +113,7 @@ local function get_base() -- SpecialChar = { }, -- special character in a constant -- Tag = { }, -- you can use CTRL-] on this -- Delimiter = { }, -- character that needs attention - -- Specialgray0= { }, -- special things inside a gray0 + -- Specialoverlay0= { }, -- special things inside a overlay0 -- Debug = { }, -- debugging statements Underlined = { style = "underline" }, -- (preferred) text that stands out, HTML links @@ -123,24 +123,24 @@ local function get_base() -- Ignore = { }, -- (preferred) left blank, hidden |hl-Ignore| Error = { fg = cp.red }, -- (preferred) any erroneous construct - Todo = { bg = cp.yellow, fg = cp.black2, style = "bold" }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX + Todo = { bg = cp.yellow, fg = cp.base, style = "bold" }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX qfLineNr = { fg = cp.yellow }, qfFileName = { fg = cp.blue }, htmlH1 = { fg = cp.pink, style = "bold" }, htmlH2 = { fg = cp.blue, style = "bold" }, -- mkdHeading = { fg = cp.peach, style = "bold" }, - -- mkdCode = { bg = cp.terminal_black, fg = cp.white }, - mkdCodeDelimiter = { bg = cp.black2, fg = cp.white }, + -- mkdCode = { bg = cp.terminal_black, fg = cp.text }, + mkdCodeDelimiter = { bg = cp.base, fg = cp.text }, mkdCodeStart = { fg = cp.flamingo, style = "bold" }, mkdCodeEnd = { fg = cp.flamingo, style = "bold" }, -- mkdLink = { fg = cp.blue, style = "underline" }, -- debugging - debugPC = { bg = cp.black0 }, -- used for highlighting the current line in terminal-debug - debugBreakpoint = { bg = cp.black2, fg = cp.gray0 }, -- used for breakpoint colors in terminal-debug + debugPC = { bg = cp.crust }, -- used for highlighting the current line in terminal-debug + debugBreakpoint = { bg = cp.base, fg = cp.overlay0 }, -- used for breakpoint colors in terminal-debug -- illuminate - illuminatedWord = { bg = cp.black4 }, - illuminatedCurWord = { bg = cp.black4 }, + illuminatedWord = { bg = cp.surface1 }, + illuminatedCurWord = { bg = cp.surface1 }, -- diff diffAdded = { fg = cp.green }, diffRemoved = { fg = cp.red }, @@ -148,12 +148,12 @@ local function get_base() diffOldFile = { fg = cp.yellow }, diffNewFile = { fg = cp.peach }, diffFile = { fg = cp.blue }, - diffLine = { fg = cp.gray0 }, + diffLine = { fg = cp.overlay0 }, diffIndexLine = { fg = cp.pink }, - DiffAdd = { fg = cp.green, bg = cp.black2 }, -- diff mode: Added line |diff.txt| - DiffChange = { fg = cp.yellow, bg = cp.black2 }, -- diff mode: Changed line |diff.txt| - DiffDelete = { fg = cp.red, bg = cp.black2 }, -- diff mode: Deleted line |diff.txt| - DiffText = { fg = cp.blue, bg = cp.black2 }, -- diff mode: Changed text within a changed line |diff.txt| + DiffAdd = { fg = cp.green, bg = cp.base }, -- diff mode: Added line |diff.txt| + DiffChange = { fg = cp.yellow, bg = cp.base }, -- diff mode: Changed line |diff.txt| + DiffDelete = { fg = cp.red, bg = cp.base }, -- diff mode: Deleted line |diff.txt| + DiffText = { fg = cp.blue, bg = cp.base }, -- diff mode: Changed text within a changed line |diff.txt| -- NeoVim healthError = { fg = cp.red }, healthSuccess = { fg = cp.teal }, @@ -166,7 +166,7 @@ local function get_base() GlyphPalette3 = { fg = cp.yellow }, GlyphPalette4 = { fg = cp.blue }, GlyphPalette6 = { fg = cp.teal }, - GlyphPalette7 = { fg = cp.white }, + GlyphPalette7 = { fg = cp.text }, GlyphPalette9 = { fg = cp.red }, } end @@ -191,7 +191,7 @@ local function get_integrations() final_integrations = vim.tbl_deep_extend( "force", final_integrations, - require("catppuccin.core.integrations." .. integration).get(color_palette) + require("catppuccin.core.integrations." .. integration).get(cp) ) end end @@ -205,11 +205,12 @@ local function get_integrations() end local function get_terminal() - return color_palette + return cp end function M.apply() _G.cnf = require("catppuccin.config").options + cp = require("catppuccin.core.palettes.init").get_palette() local theme = {} theme.properties = get_properties() -- nvim settings diff --git a/lua/catppuccin/core/palettes/frappe.lua b/lua/catppuccin/core/palettes/frappe.lua new file mode 100644 index 0000000..d5e619e --- /dev/null +++ b/lua/catppuccin/core/palettes/frappe.lua @@ -0,0 +1,37 @@ +-- NOTE: references for Catppuccin Frappé +-- monochromatic: https://coolors.co/c6ceef-b1b8d7-9ba2bf-868ca7-707590-5b5f78-454960-303348-252737-181a25 +-- analogous 1: https://coolors.co/f2d5cf-eebebe-f4b8e4-ca9ee6-ea999c-e78284-ef9f76 +-- analogous 2: https://coolors.co/bfb7e4-8caaee-99d1db-e5c890-85c1dc-a6d189-81c8be + +local color_palette = { + rosewater = "#F2D5CF", + flamingo = "#EEBEBE", + pink = "#F4B8E4", + mauve = "#CA9EE6", + red = "#E78284", + maroon = "#EA999C", + peach = "#EF9F76", + yellow = "#E5C890", + green = "#A6D189", + teal = "#81C8BE", + sky = "#99D1DB", + sapphire = "#85C1DC", + blue = "#8CAAEE", + lavender = "#BABBF1", + + text = "#C6CEEF", + subtext1 = "#B5BDDC", + subtext0 = "#A5ACC9", + overlay2 = "#949BB7", + overlay1 = "#838AA4", + overlay0 = "#737891", + surface2 = "#62677E", + surface1 = "#51566C", + surface0 = "#414559", + + base = "#303446", + mantle = "#292C3C", + crust = "#232634", +} + +return color_palette diff --git a/lua/catppuccin/core/palettes/init.lua b/lua/catppuccin/core/palettes/init.lua new file mode 100644 index 0000000..fc01b70 --- /dev/null +++ b/lua/catppuccin/core/palettes/init.lua @@ -0,0 +1,12 @@ +local M = {} + +function M.get_palette() + local flvr = vim.g.catppuccin_flavour + + if flvr == "mocha" or flvr == "latte" or flvr == "macchiato" or flvr == "frappe" then + return require("catppuccin.core.palettes." .. flvr) + end + return require("catppuccin.core.palettes.mocha") +end + +return M diff --git a/lua/catppuccin/core/palettes/latte.lua b/lua/catppuccin/core/palettes/latte.lua new file mode 100644 index 0000000..bfd72a5 --- /dev/null +++ b/lua/catppuccin/core/palettes/latte.lua @@ -0,0 +1,37 @@ +-- NOTE: references for Catppuccin Latte +-- monochromatic: https://coolors.co/fbf8f4-e9e6e6-d7d3d9-c4c1cb-b2aebd-a09cb0-8e89a2-7b7794-696487-575279 +-- analogous 1: https://coolors.co/de9584-dd7878-ec83d0-822fee-e64553-bb0d33-fe640b +-- analogous 2: https://coolors.co/7287fd-2a6ef5-04a5e5-e49320-209fb5-40a02b-179299 + +local color_palette = { + rosewater = "#dc8a78", + flamingo = "#DD7878", + pink = "#ea76cb", + mauve = "#8839EF", + red = "#D20F39", + maroon = "#E64553", + peach = "#FE640B", + yellow = "#df8e1d", + green = "#40A02B", + teal = "#179299", + sky = "#04A5E5", + sapphire = "#209FB5", + blue = "#1e66f5", + lavender = "#7287FD", + + text = "#4C4F69", + subtext1 = "#5C5F77", + subtext0 = "#6C6F85", + overlay2 = "#7C7F93", + overlay1 = "#8C8FA1", + overlay0 = "#9CA0B0", + surface2 = "#ACB0BE", + surface1 = "#BCC0CC", + surface0 = "#CCD0DA", + + crust = "#DCE0E8", + mantle = "#E6E9EF", + base = "#EFF1F5", +} + +return color_palette diff --git a/lua/catppuccin/core/palettes/macchiato.lua b/lua/catppuccin/core/palettes/macchiato.lua new file mode 100644 index 0000000..3d13330 --- /dev/null +++ b/lua/catppuccin/core/palettes/macchiato.lua @@ -0,0 +1,37 @@ +-- NOTE: references for Catppuccin Macchiato +-- monochromatic: https://coolors.co/c5cff5-aeb7da-979fc0-8087a5-696f8a-52576f-3b3f55-24273a-181926-0c0d13 +-- analogous 1: https://coolors.co/f4dbd6-f0c6c6-f5bde6-c6a0f6-ee99a0-ed8796-f5a97f +-- analogous 2: https://coolors.co/bfb7e4-8caaee-99d1db-e5c890-85c1dc-a6d189-81c8be + +local color_palette = { + rosewater = "#F4DBD6", + flamingo = "#F0C6C6", + pink = "#F5BDE6", + mauve = "#C6A0F6", + red = "#ED8796", + maroon = "#EE99A0", + peach = "#F5A97F", + yellow = "#EED49F", + green = "#A6DA95", + teal = "#8BD5CA", + sky = "#91D7E3", + sapphire = "#7DC4E4", + blue = "#8AADF4", + lavender = "#B7BDF8", + + text = "#C5CFF5", + subtext1 = "#B3BCE0", + subtext0 = "#A1AACB", + overlay2 = "#8F97B7", + overlay1 = "#7D84A2", + overlay0 = "#6C728D", + surface2 = "#5A5F78", + surface1 = "#484C64", + surface0 = "#363A4F", + + base = "#24273A", + mantle = "#1E2030", + crust = "#181926", +} + +return color_palette diff --git a/lua/catppuccin/core/palettes/mocha.lua b/lua/catppuccin/core/palettes/mocha.lua new file mode 100644 index 0000000..561cd5f --- /dev/null +++ b/lua/catppuccin/core/palettes/mocha.lua @@ -0,0 +1,37 @@ +-- NOTE: references for Catppuccin Mocha +-- monochromatic: https://coolors.co/c6d0f5-aeb7d9-969dbc-7e84a0-666a83-4e5167-36374a-1e1e2e-12121c-07070a +-- analogous 1: https://coolors.co/f5e0dc-f2cdcd-f5c2e7-cba6f7-eba0ac-f38ba8-fab387 +-- analogous 2: https://coolors.co/bfb7e4-8caaee-99d1db-e5c890-85c1dc-a6d189-81c8be + +local color_palette = { + rosewater = "#F5E0DC", + flamingo = "#F2CDCD", + pink = "#F5C2E7", + mauve = "#CBA6F7", + red = "#F38BA8", + maroon = "#EBA0AC", + peach = "#FAB387", + yellow = "#F9E2AF", + green = "#A6E3A1", + teal = "#94E2D5", + sky = "#89DCEB", + sapphire = "#74C7EC", + blue = "#87B0F9", + lavender = "#B4BEFE", + + text = "#C6D0F5", + subtext1 = "#B3BCDF", + subtext0 = "#A1A8C9", + overlay2 = "#8E95B3", + overlay1 = "#7B819D", + overlay0 = "#696D86", + surface2 = "#565970", + surface1 = "#43465A", + surface0 = "#313244", + + base = "#1E1E2E", + mantle = "#181825", + crust = "#11111B", +} + +return color_palette diff --git a/lua/catppuccin/main.lua b/lua/catppuccin/main.lua index ded0cde..16fc21c 100644 --- a/lua/catppuccin/main.lua +++ b/lua/catppuccin/main.lua @@ -1,6 +1,11 @@ local M = {} local utils = require("catppuccin.utils.util") +local flavours = {"latte", "frappe", "macchiato", "mocha"} + +function M.cli_flavour_completion() + return vim.tbl_keys(require("catppuccin.utils.data").set_of(flavours)) +end local function load() local catppuccin = require("catppuccin") @@ -18,17 +23,11 @@ local function load() end end -local function clear() - vim.cmd("hi clear") -end - function M.main(option) option = option or "load" if option == "load" then load() - elseif option == "clear" then - clear() else print("catppuccin: option was not recognized") end diff --git a/lua/catppuccin/utils/colors.lua b/lua/catppuccin/utils/colors.lua index 4e38058..4d53851 100644 --- a/lua/catppuccin/utils/colors.lua +++ b/lua/catppuccin/utils/colors.lua @@ -6,7 +6,7 @@ local function color_is_bright(r, g, b) if luminance > 0.5 then return true -- Bright colors, black font else - return false -- Dark colors, white font + return false -- Dark colors, text font end end @@ -27,4 +27,13 @@ function M.assert_brightness(color) return false -- dull end +function M.vary_color(palettes, default) + local flvr = vim.g.catppuccin_flavour + + if palettes[flvr] ~= nil then + return palettes[flvr] + end + return default +end + return M diff --git a/lua/catppuccin/utils/data.lua b/lua/catppuccin/utils/data.lua new file mode 100644 index 0000000..241f04f --- /dev/null +++ b/lua/catppuccin/utils/data.lua @@ -0,0 +1,11 @@ +local M = {} + +function M.set_of(list) + local set = {} + for i = 1, #list do + set[list[i]] = true + end + return set +end + +return M diff --git a/lua/catppuccin/utils/util.lua b/lua/catppuccin/utils/util.lua index 27390fa..c65324a 100644 --- a/lua/catppuccin/utils/util.lua +++ b/lua/catppuccin/utils/util.lua @@ -21,7 +21,7 @@ local hex_to_rgb = function(hex_str) return { tonumber(red, 16), tonumber(green, 16), tonumber(blue, 16) } end ----@param fg string foreground color +---@param fg string forecrust color ---@param bg string background color ---@param alpha number number between 0 and 1. 0 results in bg, 1 results in fg function util.blend(fg, bg, alpha) @@ -78,7 +78,7 @@ function util.string_to_color(colors, value, default) return value end - local acceptable_colors = { "black", "red", "green", "blue", "magenta", "cyan", "white", "orange", "pink" } + local acceptable_colors = { "black", "red", "green", "blue", "magenta", "cyan", "text", "orange", "pink" } for _, ac in ipairs(acceptable_colors) do if string.match(value, ac) then return colors[value] @@ -117,8 +117,8 @@ function util.properties(tbl) end function util.terminal(cp) - g.terminal_color_0 = cp.gray0 - g.terminal_color_8 = cp.gray1 + g.terminal_color_0 = cp.overlay0 + g.terminal_color_8 = cp.overlay1 g.terminal_color_1 = cp.red g.terminal_color_9 = cp.red @@ -138,8 +138,8 @@ function util.terminal(cp) g.terminal_color_6 = cp.sky g.terminal_color_14 = cp.sky - g.terminal_color_7 = cp.white - g.terminal_color_15 = cp.white + g.terminal_color_7 = cp.text + g.terminal_color_15 = cp.text end function util.load(theme) diff --git a/lua/lightline/colorscheme/catppuccin.lua b/lua/lightline/colorscheme/catppuccin.lua index 49a413f..ec03573 100644 --- a/lua/lightline/colorscheme/catppuccin.lua +++ b/lua/lightline/colorscheme/catppuccin.lua @@ -2,36 +2,36 @@ local cp = require("catppuccin.core.color_palette") local catppuccin = {} catppuccin.normal = { - left = { { cp.black1, cp.blue }, { cp.blue, cp.black2 } }, - middle = { { cp.blue, cp.black4 } }, - right = { { cp.gray0, cp.black2 }, { cp.blue, cp.black3 } }, - error = { { cp.black1, cp.red } }, - warning = { { cp.black1, cp.yellow } }, + left = { { cp.mantle, cp.blue }, { cp.blue, cp.base } }, + middle = { { cp.blue, cp.surface1 } }, + right = { { cp.overlay0, cp.base }, { cp.blue, cp.surface0 } }, + error = { { cp.mantle, cp.red } }, + warning = { { cp.mantle, cp.yellow } }, } catppuccin.insert = { - left = { { cp.black1, cp.teal }, { cp.blue, cp.black2 } }, + left = { { cp.mantle, cp.teal }, { cp.blue, cp.base } }, } catppuccin.visual = { - left = { { cp.black1, cp.mauve }, { cp.blue, cp.black2 } }, + left = { { cp.mantle, cp.mauve }, { cp.blue, cp.base } }, } catppuccin.replace = { - left = { { cp.black1, cp.red }, { cp.blue, cp.black2 } }, + left = { { cp.mantle, cp.red }, { cp.blue, cp.base } }, } catppuccin.inactive = { - left = { { cp.blue, cp.black2 }, { cp.gray0, cp.black2 } }, - middle = { { cp.black4, cp.black2 } }, - right = { { cp.black4, cp.black2 }, { cp.gray0, cp.black2 } }, + left = { { cp.blue, cp.base }, { cp.overlay0, cp.base } }, + middle = { { cp.surface1, cp.base } }, + right = { { cp.surface1, cp.base }, { cp.overlay0, cp.base } }, } catppuccin.tabline = { - left = { { cp.gray0, cp.black2 }, { cp.gray0, cp.black2 } }, - middle = { { cp.black4, cp.black2 } }, - right = { { cp.black4, cp.black2 }, { cp.gray0, cp.black2 } }, - tabsel = { { cp.blue, cp.black4 }, { cp.gray0, cp.black2 } }, + left = { { cp.overlay0, cp.base }, { cp.overlay0, cp.base } }, + middle = { { cp.surface1, cp.base } }, + right = { { cp.surface1, cp.base }, { cp.overlay0, cp.base } }, + tabsel = { { cp.blue, cp.surface1 }, { cp.overlay0, cp.base } }, } return catppuccin diff --git a/lua/lualine/themes/catppuccin.lua b/lua/lualine/themes/catppuccin.lua index 5dff200..94627a3 100644 --- a/lua/lualine/themes/catppuccin.lua +++ b/lua/lualine/themes/catppuccin.lua @@ -2,35 +2,35 @@ local cp = require("catppuccin.core.color_palette") local catppuccin = {} catppuccin.normal = { - a = { bg = cp.blue, fg = cp.black1, gui = "bold" }, - b = { bg = cp.black4, fg = cp.blue }, - c = { bg = cp.black1, fg = cp.white }, + a = { bg = cp.blue, fg = cp.mantle, gui = "bold" }, + b = { bg = cp.surface1, fg = cp.blue }, + c = { bg = cp.mantle, fg = cp.text }, } catppuccin.insert = { - a = { bg = cp.green, fg = cp.black2, gui = "bold" }, - b = { bg = cp.black4, fg = cp.teal }, + a = { bg = cp.green, fg = cp.base, gui = "bold" }, + b = { bg = cp.surface1, fg = cp.teal }, } catppuccin.command = { - a = { bg = cp.peach, fg = cp.black2, gui = "bold" }, - b = { bg = cp.black4, fg = cp.peach }, + a = { bg = cp.peach, fg = cp.base, gui = "bold" }, + b = { bg = cp.surface1, fg = cp.peach }, } catppuccin.visual = { - a = { bg = cp.mauve, fg = cp.black2, gui = "bold" }, - b = { bg = cp.black4, fg = cp.mauve }, + a = { bg = cp.mauve, fg = cp.base, gui = "bold" }, + b = { bg = cp.surface1, fg = cp.mauve }, } catppuccin.replace = { - a = { bg = cp.red, fg = cp.black2, gui = "bold" }, - b = { bg = cp.black4, fg = cp.red }, + a = { bg = cp.red, fg = cp.base, gui = "bold" }, + b = { bg = cp.surface1, fg = cp.red }, } catppuccin.inactive = { - a = { bg = cp.black1, fg = cp.blue }, - b = { bg = cp.black1, fg = cp.black4, gui = "bold" }, - c = { bg = cp.black1, fg = cp.gray0 }, + a = { bg = cp.mantle, fg = cp.blue }, + b = { bg = cp.mantle, fg = cp.surface1, gui = "bold" }, + c = { bg = cp.mantle, fg = cp.overlay0 }, } return catppuccin diff --git a/plugin/catppuccin.vim b/plugin/catppuccin.vim new file mode 100644 index 0000000..4951cd1 --- /dev/null +++ b/plugin/catppuccin.vim @@ -0,0 +1,15 @@ +if exists('g:loaded_catppuccin') | finish | endif + +function! s:FlavourCompletion(...) abort + return join(sort(luaeval("require'catppuccin.main'.cli_flavour_completion()")), "\n") +endfunction + +function! s:ApplyFlavour(args) abort + let l:flavour = matchstr(a:args[0], "[a-z]*") + let g:catppuccin_flavour = flavour + colorscheme catppuccin +endfunction + +command! -nargs=1 -complete=custom,s:FlavourCompletion Catppuccin call s:ApplyFlavour([]) + +let g:loaded_catppuccin = 1