Merge branch 'dev'

dev
Pocco81 2 years ago
commit 8a9ce37ea1

@ -86,10 +86,17 @@ transparent_background = false,
term_colors = false, term_colors = false,
styles = { styles = {
comments = "italic", comments = "italic",
functions = "italic", conditionals = "italic",
keywords = "italic", loops = "NONE",
functions = "NONE",
keywords = "NONE",
strings = "NONE", strings = "NONE",
variables = "italic", variables = "NONE",
numbers = "NONE",
booleans = "NONE",
properties = "NONE",
types = "NONE",
operators = "NONE",
}, },
integrations = { integrations = {
treesitter = true, 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.
<details> <details>
<summary>For init.lua</summary> <summary>For init.lua</summary>
@ -181,14 +188,20 @@ After setting things up, you can load catppuccin like so:
```vim ```vim
" Vim Script " Vim Script
let g:catppuccin_flavour = "dusk" " latte, frappe, macchiato, mocha
colorscheme catppuccin colorscheme catppuccin
``` ```
```lua ```lua
-- Lua -- Lua
vim.g.catppuccin_flavour = "frappe" -- latte, frappe, macchiato, mocha
vim.cmd[[colorscheme catppuccin]] vim.cmd[[colorscheme catppuccin]]
``` ```
Remember that if you want to switch your Catppuccin flavour "on the fly" you may use the `:Catppuccin <flavour>` command.
> Note: the command has autocompletion enabled, so you can just press tab to cycle through the flavours
### Configuration ### Configuration
Although settings already have self-explanatory names, here is where you can find info about each one of them and their classifications! 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 ##### 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 ```lua
require("feline").setup({ require("feline").setup({

@ -1,7 +1,7 @@
local M = {} local M = {}
function M.get_colors() function M.get_colors()
return require("catppuccin.core.color_palette") return require("catppuccin.core.palettes.init").get_palette()
end end
return M return M

@ -6,10 +6,17 @@ config.options = {
term_colors = false, term_colors = false,
styles = { styles = {
comments = "italic", comments = "italic",
functions = "italic", conditionals = "italic",
keywords = "italic", loops = "NONE",
functions = "NONE",
keywords = "NONE",
strings = "NONE", strings = "NONE",
variables = "italic", variables = "NONE",
numbers = "NONE",
booleans = "NONE",
properties = "NONE",
types = "NONE",
operators = "NONE",
}, },
integrations = { integrations = {
treesitter = true, treesitter = true,

@ -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

@ -2,23 +2,23 @@ local M = {}
function M.get(cp) function M.get(cp)
return { return {
BufferCurrent = { bg = cp.black4, fg = cp.white }, BufferCurrent = { bg = cp.surface1, fg = cp.text },
BufferCurrentIndex = { bg = cp.black4, fg = cp.blue }, BufferCurrentIndex = { bg = cp.surface1, fg = cp.blue },
BufferCurrentMod = { bg = cp.black4, fg = cp.yellow }, BufferCurrentMod = { bg = cp.surface1, fg = cp.yellow },
BufferCurrentSign = { bg = cp.black4, fg = cp.blue }, BufferCurrentSign = { bg = cp.surface1, fg = cp.blue },
BufferCurrentTarget = { bg = cp.black4, fg = cp.red }, BufferCurrentTarget = { bg = cp.surface1, fg = cp.red },
BufferVisible = { bg = cp.black1, fg = cp.white }, BufferVisible = { bg = cp.mantle, fg = cp.text },
BufferVisibleIndex = { bg = cp.black1, fg = cp.blue }, BufferVisibleIndex = { bg = cp.mantle, fg = cp.blue },
BufferVisibleMod = { bg = cp.black1, fg = cp.yellow }, BufferVisibleMod = { bg = cp.mantle, fg = cp.yellow },
BufferVisibleSign = { bg = cp.black1, fg = cp.blue }, BufferVisibleSign = { bg = cp.mantle, fg = cp.blue },
BufferVisibleTarget = { bg = cp.black1, fg = cp.red }, BufferVisibleTarget = { bg = cp.mantle, fg = cp.red },
BufferInactive = { bg = cp.black1, fg = cp.gray0 }, BufferInactive = { bg = cp.mantle, fg = cp.overlay0 },
BufferInactiveIndex = { bg = cp.black1, fg = cp.gray0 }, BufferInactiveIndex = { bg = cp.mantle, fg = cp.overlay0 },
BufferInactiveMod = { bg = cp.black1, fg = cp.yellow }, BufferInactiveMod = { bg = cp.mantle, fg = cp.yellow },
BufferInactiveSign = { bg = cp.black1, fg = cp.blue }, BufferInactiveSign = { bg = cp.mantle, fg = cp.blue },
BufferInactiveTarget = { bg = cp.black1, fg = cp.red }, BufferInactiveTarget = { bg = cp.mantle, fg = cp.red },
BufferTabpages = { bg = cp.black1, fg = cp.none }, BufferTabpages = { bg = cp.mantle, fg = cp.none },
BufferTabpage = { bg = cp.black1, fg = cp.blue }, BufferTabpage = { bg = cp.mantle, fg = cp.blue },
} }
end end

@ -2,25 +2,25 @@ local M = {}
function M.get(cp) function M.get(cp)
local inactive_bg = cp.black1 local inactive_bg = cp.mantle
return { return {
BufferLineFill = { bg = cp.black0 }, BufferLineFill = { bg = cp.crust },
BufferLineBackground = { fg = cp.white, bg = inactive_bg }, -- others BufferLineBackcrust = { fg = cp.text, bg = inactive_bg }, -- others
BufferLineBufferVisible = { fg = cp.black4, bg = inactive_bg }, BufferLineBufferVisible = { fg = cp.surface1, bg = inactive_bg },
BufferLineBufferSelected = { fg = cp.white, bg = cp.black2, style = "bold,italic" }, -- current BufferLineBufferSelected = { fg = cp.text, bg = cp.base, style = "bold,italic" }, -- current
BufferLineTab = { fg = cp.black4, bg = cp.black2 }, BufferLineTab = { fg = cp.surface1, bg = cp.base },
BufferLineTabSelected = { fg = cp.red, bg = cp.blue }, BufferLineTabSelected = { fg = cp.red, bg = cp.blue },
BufferLineTabClose = { fg = cp.red, bg = inactive_bg }, BufferLineTabClose = { fg = cp.red, bg = inactive_bg },
BufferLineIndicatorSelected = { fg = cp.peach, bg = cp.black2 }, BufferLineIndicatorSelected = { fg = cp.peach, bg = cp.base },
-- separators -- separators
BufferLineSeparator = { fg = inactive_bg, bg = inactive_bg }, BufferLineSeparator = { fg = inactive_bg, bg = inactive_bg },
BufferLineSeparatorVisible = { fg = inactive_bg, bg = inactive_bg }, BufferLineSeparatorVisible = { fg = inactive_bg, bg = inactive_bg },
BufferLineSeparatorSelected = { fg = inactive_bg, bg = inactive_bg }, BufferLineSeparatorSelected = { fg = inactive_bg, bg = inactive_bg },
-- close buttons -- close buttons
BufferLineCloseButton = { fg = cp.black4, bg = inactive_bg }, BufferLineCloseButton = { fg = cp.surface1, bg = inactive_bg },
BufferLineCloseButtonVisible = { fg = cp.black4, bg = inactive_bg }, BufferLineCloseButtonVisible = { fg = cp.surface1, bg = inactive_bg },
BufferLineCloseButtonSelected = { fg = cp.red, bg = cp.black2 }, BufferLineCloseButtonSelected = { fg = cp.red, bg = cp.base },
} }
end end

@ -2,12 +2,12 @@ local M = {}
function M.get(cp) function M.get(cp)
return { return {
CmpItemAbbr = { fg = cp.gray2 }, CmpItemAbbr = { fg = cp.overlay2 },
CmpItemAbbrDeprecated = { fg = cp.gray0, style = "strikethrough" }, CmpItemAbbrDeprecated = { fg = cp.overlay0, style = "strikethrough" },
CmpItemKind = { fg = cp.blue }, CmpItemKind = { fg = cp.blue },
CmpItemMenu = { fg = cp.white }, CmpItemMenu = { fg = cp.text },
CmpItemAbbrMatch = { fg = cp.white, style = "bold" }, CmpItemAbbrMatch = { fg = cp.text, style = "bold" },
CmpItemAbbrMatchFuzzy = { fg = cp.white, style = "bold" }, CmpItemAbbrMatchFuzzy = { fg = cp.text, style = "bold" },
-- kind support -- kind support
CmpItemKindSnippet = { fg = cp.mauve }, CmpItemKindSnippet = { fg = cp.mauve },

@ -30,9 +30,9 @@ local clrs = require("catppuccin.core.color_palette")
-- settings -- settings
local sett = { local sett = {
bkg = clrs.black3, bkg = clrs.surface0,
diffs = clrs.mauve, diffs = clrs.mauve,
extras = clrs.gray1, extras = clrs.overlay1,
curr_file = clrs.maroon, curr_file = clrs.maroon,
curr_dir = clrs.flamingo, curr_dir = clrs.flamingo,
} }

@ -2,9 +2,9 @@ local M = {}
function M.get(cp) function M.get(cp)
return { return {
GitSignsAdd = { fg = cp.green, bg = cnf.transparent_background and cp.none or cp.black2 }, -- diff mode: Added 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.black2 }, -- diff mode: Changed 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.black2 }, -- diff mode: Deleted line |diff.txt| GitSignsDelete = { fg = cp.red, bg = cnf.transparent_background and cp.none or cp.base }, -- diff mode: Deleted line |diff.txt|
} }
end end

@ -2,10 +2,10 @@ local M = {}
function M.get(cp) function M.get(cp)
return { return {
HopNextKey = { bg = cp.black2, fg = cp.peach, style = "bold,underline" }, HopNextKey = { bg = cp.base, fg = cp.peach, style = "bold,underline" },
HopNextKey1 = { bg = cp.black2, fg = cp.blue, style = "bold" }, HopNextKey1 = { bg = cp.base, fg = cp.blue, style = "bold" },
HopNextKey2 = { bg = cp.black2, fg = cp.teal, style = "bold,italic" }, HopNextKey2 = { bg = cp.base, fg = cp.teal, style = "bold,italic" },
HopUnmatched = { bg = cp.black2, fg = cp.gray0 }, HopUnmatched = { bg = cp.base, fg = cp.overlay0 },
} }
end end

@ -3,8 +3,8 @@ local M = {}
function M.get(cp) function M.get(cp)
local hi = { local hi = {
IndentBlanklineChar = { fg = cp.black3 }, IndentBlanklineChar = { fg = cp.surface0 },
IndentBlanklineContextChar = { fg = cp.white }, IndentBlanklineContextChar = { fg = cp.text },
} }
if cnf.integrations.indent_blankline.colored_indent_levels then if cnf.integrations.indent_blankline.colored_indent_levels then

@ -28,20 +28,20 @@ function M.get(cp)
end end
return { return {
LightspeedLabel = {bg = cp.black4, fg = cp.white}, LightspeedLabel = {bg = cp.surface1, fg = cp.text},
LightspeedOverlapped = {bg = cp.black4, fg = cp.white}, LightspeedOverlapped = {bg = cp.surface1, fg = cp.text},
LightspeedLabelDistant = {bg = cp.mauve, fg = cp.white}, LightspeedLabelDistant = {bg = cp.mauve, fg = cp.text},
LightspeedLabelDistantOverlapped = {bg = cp.mauve, fg = cp.white}, LightspeedLabelDistantOverlapped = {bg = cp.mauve, fg = cp.text},
LightspeedShortcut = {bg = cp.black2, fg = cp.peach, style = "italic"}, LightspeedShortcut = {bg = cp.base, fg = cp.peach, style = "italic"},
LightspeedShortcutOverlapped = {bg = cp.black2, fg = cp.peach, style = "bold"}, LightspeedShortcutOverlapped = {bg = cp.base, fg = cp.peach, style = "bold"},
LightspeedMaskedChar = {bg = cp.black2, fg = cp.red, style = "undercurl"}, LightspeedMaskedChar = {bg = cp.base, fg = cp.red, style = "undercurl"},
LightspeedGreyWash = {bg = cp.black2, fg = cp.gray0}, LightspeedGreyWash = {bg = cp.base, fg = cp.overlay0},
LightspeedUnlabeledMatch = {bg = cp.black2, fg = cp.red, style = "underline"}, LightspeedUnlabeledMatch = {bg = cp.base, fg = cp.red, style = "underline"},
LightspeedOneCharMatch = {bg = cp.black2, fg = cp.red, style = "underline"}, LightspeedOneCharMatch = {bg = cp.base, fg = cp.red, style = "underline"},
LightspeedUniqueChar = {bg = cp.black2, fg = cp.green, style = "strikethrough"}, LightspeedUniqueChar = {bg = cp.base, fg = cp.green, style = "strikethrough"},
LightspeedPendingOpArea = {bg = cp.black2, fg = cp.green, style = "strikethrough"}, LightspeedPendingOpArea = {bg = cp.base, fg = cp.green, style = "strikethrough"},
LightspeedPendingChangeOpArea = {bg = cp.black2, fg = cp.green, style = "strikethrough"}, LightspeedPendingChangeOpArea = {bg = cp.base, fg = cp.green, style = "strikethrough"},
LightspeedCursor = {fg = cp.black2, bg = cp.white}, LightspeedCursor = {fg = cp.base, bg = cp.text},
} }
end end

@ -6,14 +6,14 @@ function M.get(cp)
DiagnosticWarning = { fg = cp.yellow }, DiagnosticWarning = { fg = cp.yellow },
DiagnosticInformation = { fg = cp.blue }, DiagnosticInformation = { fg = cp.blue },
DiagnosticHint = { fg = cp.hint }, DiagnosticHint = { fg = cp.hint },
LspFloatWinNormal = { bg = cp.black0 }, LspFloatWinNormal = { bg = cp.crust },
LspFloatWinBorder = { fg = cp.blue }, LspFloatWinBorder = { fg = cp.blue },
LspSagaBorderTitle = { fg = cp.flamingo }, LspSagaBorderTitle = { fg = cp.flamingo },
LspSagaHoverBorder = { fg = cp.blue }, LspSagaHoverBorder = { fg = cp.blue },
LspSagaRenameBorder = { fg = cp.teal }, LspSagaRenameBorder = { fg = cp.teal },
LspSagaDefPreviewBorder = { fg = cp.teal }, LspSagaDefPreviewBorder = { fg = cp.teal },
LspSagaCodeActionBorder = { fg = cp.blue }, LspSagaCodeActionBorder = { fg = cp.blue },
LspSagaFinderSelection = { fg = cp.black4 }, LspSagaFinderSelection = { fg = cp.surface1 },
LspSagaCodeActionTitle = { fg = cp.blue1 }, LspSagaCodeActionTitle = { fg = cp.blue1 },
LspSagaCodeActionContent = { fg = cp.purple }, LspSagaCodeActionContent = { fg = cp.purple },
LspSagaSignatureHelpBorder = { fg = cp.red }, LspSagaSignatureHelpBorder = { fg = cp.red },

@ -3,8 +3,8 @@ local M = {}
function M.get(cp) function M.get(cp)
return { return {
LspTroubleText = { fg = cp.green }, LspTroubleText = { fg = cp.green },
LspTroubleCount = { fg = cp.pink, bg = cp.black4 }, LspTroubleCount = { fg = cp.pink, bg = cp.surface1 },
LspTroubleNormal = { fg = cp.white, bg = cp.black0 }, LspTroubleNormal = { fg = cp.text, bg = cp.crust },
} }
end end

@ -1,4 +1,5 @@
local M = {} local M = {}
local util = require("catppuccin.utils.util")
function M.get(cp) function M.get(cp)
@ -8,20 +9,22 @@ function M.get(cp)
local error = cp.red local error = cp.red
local warning = cp.yellow local warning = cp.yellow
local info = cp.sky local info = cp.sky
local hint = cp.rosewater local hint = cp.teal
local darkening_percentage = 0.095
return { return {
-- These groups are for the native LSP cliencp. Some other LSP clients may -- 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 -- use these groups, or use their own. Consult your LSP client's
-- documentation. -- documentation.
LspReferenceText = { bg = cp.black4 }, -- used for highlighting "text" references LspReferenceText = { bg = cp.surface1 }, -- used for highlighting "text" references
LspReferenceRead = { bg = cp.black4 }, -- used for highlighting "read" references LspReferenceRead = { bg = cp.surface1 }, -- used for highlighting "read" references
LspReferenceWrite = { bg = cp.black4 }, -- used for highlighting "write" references LspReferenceWrite = { bg = cp.surface1 }, -- used for highlighting "write" references
-- hightlight diagnostics in numberline -- 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 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 = { fg = warning, style = virtual_text.warnings }, -- Used as the base 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 = { fg = info, style = virtual_text.information }, -- Used as the base 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 = { fg = hint, style = virtual_text.hints }, -- Used as the base 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 -- for nvim nightly
DiagnosticUnderlineError = { style = underlines.errors, sp = error }, DiagnosticUnderlineError = { style = underlines.errors, sp = error },
@ -29,10 +32,10 @@ function M.get(cp)
DiagnosticUnderlineInfo = { style = underlines.information, sp = info }, DiagnosticUnderlineInfo = { style = underlines.information, sp = info },
DiagnosticUnderlineHint = { style = underlines.hints, sp = hint }, 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) 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 base 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 base 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 base 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 }, LspSignatureActiveParameter = { fg = cp.peach },
-- LspDiagnosticsFloatingError = { }, -- Used to color "Error" diagnostic messages in diagnostics float -- LspDiagnosticsFloatingError = { }, -- Used to color "Error" diagnostic messages in diagnostics float
-- LspDiagnosticsFloatingWarning = { }, -- Used to color "Warning" 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 LspDiagnosticsUnderlineWarning = { style = underlines.warnings, sp = warning }, -- Used to underline "Warning" diagnostics
LspDiagnosticsUnderlineInformation = { style = underlines.information, sp = info }, -- Used to underline "Information" diagnostics LspDiagnosticsUnderlineInformation = { style = underlines.information, sp = info }, -- Used to underline "Information" diagnostics
LspDiagnosticsUnderlineHint = { style = underlines.hints, sp = hint }, -- Used to underline "Hint" 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 end

@ -4,11 +4,11 @@ function M.get(cp)
return { return {
NeogitBranch = { fg = cp.pink }, NeogitBranch = { fg = cp.pink },
NeogitRemote = { fg = cp.pink }, NeogitRemote = { fg = cp.pink },
NeogitHunkHeader = { bg = cp.blue, fg = cp.white }, NeogitHunkHeader = { bg = cp.blue, fg = cp.text },
NeogitHunkHeaderHighlight = { bg = cp.black2, fg = cp.blue }, NeogitHunkHeaderHighlight = { bg = cp.base, fg = cp.blue },
NeogitDiffContextHighlight = { bg = cp.black1, fg = cp.gray2 }, NeogitDiffContextHighlight = { bg = cp.mantle, fg = cp.overlay2 },
NeogitDiffDeleteHighlight = { bg = cp.black1, fg = cp.red }, NeogitDiffDeleteHighlight = { bg = cp.mantle, fg = cp.red },
NeogitDiffAddHighlight = { bg = cp.black1, fg = cp.green }, NeogitDiffAddHighlight = { bg = cp.mantle, fg = cp.green },
} }
end end

@ -13,8 +13,8 @@ function M.get(cp)
return { return {
NeoTreeDirectoryName = { fg = cp.blue }, NeoTreeDirectoryName = { fg = cp.blue },
NeoTreeDirectoryIcon = { fg = cp.blue }, NeoTreeDirectoryIcon = { fg = cp.blue },
NeoTreeNormal = { fg = cp.white, bg = neotree.transparent_panel and "NONE" or cp.black1 }, NeoTreeNormal = { fg = cp.text, bg = neotree.transparent_panel and "NONE" or cp.mantle },
NeoTreeIndentMarker = { fg = cp.gray0 }, NeoTreeIndentMarker = { fg = cp.overlay0 },
NeoTreeRootName = { fg = root_dir_color, style = "bold" }, NeoTreeRootName = { fg = root_dir_color, style = "bold" },
NeoTreeSymbolicLinkTarget = { fg = cp.pink }, NeoTreeSymbolicLinkTarget = { fg = cp.pink },
NeoTreeGitModified = { fg = cp.yellow }, NeoTreeGitModified = { fg = cp.yellow },

@ -4,9 +4,8 @@ function M.get(cp)
local config = require("catppuccin.config").options local config = require("catppuccin.config").options
local nvimtree = config.integrations.nvimtree local nvimtree = config.integrations.nvimtree
local root_dir_color = cp.pink local root_dir_color = cp.mantle
if nvimtree.show_root == true then
if nvimtree.show_root then
root_dir_color = cp.blue root_dir_color = cp.blue
end end
@ -14,19 +13,19 @@ function M.get(cp)
return { return {
NvimTreeFolderName = { fg = cp.blue }, NvimTreeFolderName = { fg = cp.blue },
NvimTreeFolderIcon = { 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 }, NvimTreeOpenedFolderName = { fg = cp.blue },
NvimTreeEmptyFolderName = { fg = cp.blue }, NvimTreeEmptyFolderName = { fg = cp.blue },
NvimTreeIndentMarker = { fg = cp.gray0 }, NvimTreeIndentMarker = { fg = cp.overlay0 },
NvimTreeVertSplit = { fg = cp.black2, bg = cp.black2 }, NvimTreeVertSplit = { fg = cp.base, bg = cp.base },
NvimTreeRootFolder = { fg = root_dir_color, style = "bold" }, NvimTreeRootFolder = { fg = root_dir_color, style = "bold" },
NvimTreeSymlink = { fg = cp.pink }, NvimTreeSymlink = { fg = cp.pink },
NvimTreeStatuslineNc = { fg = cp.black1, bg = cp.black1 }, NvimTreeStatuslineNc = { fg = cp.mantle, bg = cp.mantle },
NvimTreeGitDirty = { fg = cp.yellow }, NvimTreeGitDirty = { fg = cp.yellow },
NvimTreeGitNew = { fg = cp.blue }, NvimTreeGitNew = { fg = cp.blue },
NvimTreeGitDeleted = { fg = cp.red }, NvimTreeGitDeleted = { fg = cp.red },
NvimTreeSpecialFile = { fg = cp.flamingo }, NvimTreeSpecialFile = { fg = cp.flamingo },
NvimTreeImageFile = { fg = cp.white }, NvimTreeImageFile = { fg = cp.text },
NvimTreeOpenedFile = { fg = cp.pink }, NvimTreeOpenedFile = { fg = cp.pink },
} }
end end

@ -2,7 +2,7 @@ local M = {}
function M.get(cp) function M.get(cp)
return { return {
FocusedSymbol = { fg = cp.yellow, bg = cp.black2 }, FocusedSymbol = { fg = cp.yellow, bg = cp.base },
} }
end end

@ -4,7 +4,7 @@ function M.get(cp)
return { return {
TelescopeBorder = { fg = cp.blue }, TelescopeBorder = { fg = cp.blue },
TelescopeSelectionCaret = { fg = cp.flamingo }, 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 }, TelescopeMatching = { fg = cp.blue },
} }
end end

@ -1,10 +1,10 @@
local M = {} local M = {}
function M.get(cp) function M.get(cp)
local delimeters = cp.gray1 -- local delimeters = cp.overlay2
local operators = cp.sky local operators = cp.sky
local cl = cp.mauve -- conditionals, loops local cl = cp.mauve -- conditionals, loops
local keywords = cp.red local keywords = cp.mauve
local math_logic = cp.peach local math_logic = cp.peach
return { return {
@ -13,62 +13,65 @@ function M.get(cp)
-- By default, most of these groups link to an appropriate Vim group, -- 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 -- TSError -> Error for example, so you do not have to define these unless
-- you explicitly want to support Treesitter's improved syntax awareness. -- you explicitly want to support Treesitter's improved syntax awareness.
TSField = { fg = cp.rosewater }, -- For fields. TSField = { fg = cp.teal }, -- For fields.
TSProperty = { fg = cp.yellow, style = "italic" }, -- Same as TSField. TSProperty = { fg = cp.teal, style = cnf.styles.properties or "NONE" }, -- 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. 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.
TSKeywordOperator = { fg = operators, style = "bold" }, -- For new keyword operator TSOperator = { fg = operators, style = cnf.styles.operators or "NONE" }, -- For any operator: +, but also -> and * in cp.
TSPunctSpecial = { fg = cp.maroon, style = "bold" }, -- For special punctutation that does not fall in the catagories before. 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 = "bold,italic" }, -- For floats.
TSNumber = { fg = math_logic, style = "bold,italic" }, -- For all numbers TSFloat = { fg = math_logic, style = cnf.styles.numbers or "NONE" }, -- For floats.
TSBoolean = { fg = math_logic, style = "bold,italic" }, -- For booleans. 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.lavender }, -- For constructor calls and definitions: = { } in Lua, and Java constructors.
TSConstructor = { fg = cp.sapphire }, -- For constructor calls and definitions: = { } in Lua, and Java constructors.
TSConstant = { fg = cp.peach }, -- For constants TSConstant = { fg = cp.peach }, -- For constants
TSConditional = { fg = cl, style = "bold" }, -- For keywords related to conditionnals. TSConditional = { fg = cl, style = cnf.styles.conditionals or "NONE" }, -- For keywords related to conditionnals.
TSRepeat = { fg = cl, style = "bold" }, -- For keywords related to loops. TSRepeat = { fg = cl, style = cnf.styles.loops or "NONE" }, -- For keywords related to loops.
TSException = { fg = cp.peach, style = cnf.styles.keywords }, -- For exception related keywords. TSException = { fg = cp.mauve, style = cnf.styles.keywords or "NONE" }, -- For exception related keywords.
-- builtin -- builtin
TSConstBuiltin = { fg = cp.lavender, style = cnf.styles.keywords }, -- For constant that are built in the language: nil in Lua. 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 = "italic" }, -- For builtin functions: table.insert in Lua. TSFuncBuiltin = { fg = cp.peach, style = cnf.styles.functions or "NONE" }, -- 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. 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.
TSFunction = { fg = cp.blue, style = cnf.styles.functions }, -- For function (calls and definitions). TSTypeBuiltin = { fg = cp.yellow, style = cnf.styles.properties or "italic" }, -- For builtin types.
TSFuncMacro = { fg = cp.red }, -- For macro defined functions (calls and definitions): each macro_rules in Ruscp. TSVariableBuiltin = { fg = cp.red }, -- Variable names that are defined by the languages, like this or self.
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. TSFunction = { fg = cp.blue, style = cnf.styles.functions or "NONE" }, -- For function (calls and definitions).
TSKeyword = { fg = keywords, style = cnf.styles.keywords }, -- For keywords that don't fall in previous categories. TSFuncMacro = { fg = cp.teal, style = cnf.styles.functions or "NONE" }, -- For macro defined functions (calls and definitions): each macro_rules in Ruscp.
TSKeywordReturn = { fg = cp.pink }, 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. -- TSAnnotation = { }; -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information.
-- TSAttribute = { }; -- (unstable) TODO: docs -- TSAttribute = { }; -- (unstable) TODO: docs
-- TSCharacter = { }; -- For characters. -- TSCharacter = { }; -- For characters.
-- TSgray0 = { }; -- For gray0 blocks. -- TSoverlay0 = { }; -- For overlay0 blocks.
TSNote = { fg = cp.black2, bg = cp.blue }, TSNote = { fg = cp.base, bg = cp.blue },
TSWarning = { fg = cp.black2, bg = cp.yellow }, TSWarning = { fg = cp.base, bg = cp.yellow },
TSDanger = { fg = cp.black2, bg = cp.red }, TSDanger = { fg = cp.base, bg = cp.red },
-- TSConstMacro = { }; -- For constants that are defined by macros: NULL in cp. TSConstMacro = { fg = cp.mauve }; -- For constants that are defined by macros: NULL in cp.
-- TSError = { fg = cp.red }, -- For syntax/parser errors. -- TSError = { fg = cp.red }, -- For syntax/parser errors.
-- rustTSField = { fg = cp.black4 }, -- For fields. -- rustTSField = { fg = cp.surface1 }, -- For fields.
TSLabel = { fg = cp.blue }, -- For labels: label: in C and :label: in Lua. TSLabel = { fg = cp.sapphire }, -- For labels: label: in C and :label: in Lua.
TSMethod = { fg = cp.blue, style = "italic" }, -- For method calls and definitions. TSMethod = { fg = cp.blue, style = cnf.styles.functions or "NONE" }, -- For method calls and definitions.
TSNamespace = { fg = cp.rosewater, style = "italic" }, -- For identifiers referring to modules and namespaces.
-- TSNone = { }; -- TODO: docs -- TSNone = { }; -- TODO: docs
-- TSParameterReference= { }; -- For references to parameters of a function. -- TSParameterReference= { }; -- For references to parameters of a function.
tomlTSProperty = { fg = cp.blue }, -- Differentiates between string and properties tomlTSProperty = { fg = cp.blue }, -- Differentiates between string and properties
TSPunctDelimiter = { fg = cp.teal }, -- For delimiters ie: . TSPunctDelimiter = { fg = cp.overlay2 }, -- For delimiters ie: .
TSPunctBracket = { fg = delimeters }, -- For brackets and parenthesis. -- TSPunctBracket = { fg = delimeters }, -- For brackets and parenthesis.
TSString = { fg = cp.green }, -- For strings. TSPunctBracket = { fg = cp.overlay2 }, -- For brackets and parenthesis.
TSStringRegex = { fg = cp.peach, style = cnf.styles.strings }, -- For regexes. 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. -- TSSymbol = { }; -- For identifiers referring to symbols or atoms.
TSType = { fg = cp.yellow }, -- For types. TSVariable = { fg = cp.text, style = cnf.styles.variables or "NONE" }, -- Any variable name that does not have another highlighcp.
TSVariable = { fg = cp.white, style = cnf.styles.variables }, -- Any variable name that does not have another highlighcp. TSTagAttribute = { fg = cp.teal, style = "italic" }, -- Tags like html tag names.
TSTagAttribute = { fg = cp.mauve, style = "italic" }, -- Tags like html tag names. TSTag = { fg = cp.mauve }, -- Tags like html tag names.
TSTag = { fg = cp.peach }, -- Tags like html tag names. TSTagDelimiter = { fg = cp.sky }, -- Tag delimiter like < > /
TSTagDelimiter = { fg = cp.maroon }, -- Tag delimiter like < > / TSText = { fg = cp.text }, -- For strings considerated text in a markup language.
TSText = { fg = cp.white }, -- For strings considerated text in a markup language.
-- TSEmphasis = { }; -- For text to be represented with emphasis. -- TSEmphasis = { }; -- For text to be represented with emphasis.
-- TSUnderline = { }; -- For text to be represented with an underline. -- TSUnderline = { }; -- For text to be represented with an underline.
-- TSStrike = { }; -- For strikethrough texcp. -- 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. TSStringEscape = { fg = cp.pink, style = cnf.styles.strings }, -- For escape characters within a string.
-- bash -- bash
bashTSFuncBuiltin = { fg = cp.red, style = "italic" }, -- bashTSFuncBuiltin = { fg = cp.red, style = "italic" },
bashTSParameter = { fg = cp.yellow, style = "italic" }, -- bashTSParameter = { fg = cp.yellow, style = "italic" },
-- lua -- json
luaTSField = { fg = cp.lavender }, jsonTSLabel = { fg = cp.blue }, -- For labels: label: in C and :label: in Lua.
luaTSConstructor = { fg = cp.flamingo }, -- For constructor calls and definitions: = { } in Lua, and Java constructors.
-- java -- lua
javaTSConstant = { fg = cp.teal }, luaTSConstructor = { fg = cp.lavender }, -- For constructor calls and definitions: = { } in Lua, and Java constructors.
-- typescript -- typescript
typescriptTSProperty = { fg = cp.lavender, style = "italic" }, -- Same as TSField. typescriptTSConstructor = { fg = cp.lavender },
-- css -- TSX (Typescript React)
cssTSType = { fg = cp.lavender }, tsxTSConstructor = { fg = cp.lavender },
cssTSProperty = { fg = cp.yellow, style = "italic" }, -- Same as TSField. tsxTSTagAttribute = { fg = cp.mauve },
-- cpp -- cpp
cppTSProperty = { fg = cp.white }, cppTSProperty = { fg = cp.text },
-- yaml
yamlTSField = { fg = cp.blue }, -- For fields.
} }
end end

@ -2,7 +2,7 @@ local M = {}
function M.get(cp) function M.get(cp)
local transparent_background = require("catppuccin.config").options.transparent_background 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 { return {
rainbowcol1 = {bg = bg_highlight, fg = cp.red}, rainbowcol1 = {bg = bg_highlight, fg = cp.red},
rainbowcol2 = {bg = bg_highlight, fg = cp.teal}, rainbowcol2 = {bg = bg_highlight, fg = cp.teal},

@ -2,8 +2,8 @@ local M = {}
function M.get(cp) function M.get(cp)
return { return {
Sneak = { fg = cp.gray2, bg = cp.pink }, Sneak = { fg = cp.overlay2, bg = cp.pink },
SneakScope = { bg = cp.white }, SneakScope = { bg = cp.text },
} }
end end

@ -5,10 +5,10 @@ function M.get(cp)
WhichKey = { fg = cp.flamingo }, WhichKey = { fg = cp.flamingo },
WhichKeyGroup = { fg = cp.blue }, WhichKeyGroup = { fg = cp.blue },
WhichKeyDesc = { fg = cp.pink }, WhichKeyDesc = { fg = cp.pink },
WhichKeySeperator = { fg = cp.gray0 }, WhichKeySeperator = { fg = cp.overlay0 },
WhichKeySeparator = { fg = cp.gray0 }, WhichKeySeparator = { fg = cp.overlay0 },
WhichKeyFloat = { bg = cp.black0 }, WhichKeyFloat = { bg = cp.crust },
WhichKeyValue = { fg = cp.gray0 }, WhichKeyValue = { fg = cp.overlay0 },
} }
end end

@ -1,5 +1,6 @@
local colors_util = require("catppuccin.utils.colors") 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 = {} local M = {}
@ -9,7 +10,7 @@ local function get_properties()
background = "dark", background = "dark",
} }
if colors_util.assert_brightness(color_palette.black2) then if colors_util.assert_brightness(cp.base) then
props["background"] = "light" props["background"] = "light"
end end
@ -17,69 +18,68 @@ local function get_properties()
end end
local function get_base() local function get_base()
local cp = color_palette
cp.none = "NONE" cp.none = "NONE"
return { return {
Comment = { fg = cp.gray0, style = cnf.styles.comments }, -- just comments Comment = { fg = cp.surface2, style = cnf.styles.comments }, -- just comments
ColorColumn = { bg = cp.black3 }, -- used for the columns set with 'colorcolumn' ColorColumn = { bg = cp.surface0 }, -- used for the columns set with 'colorcolumn'
Conceal = { fg = cp.gray1 }, -- placeholder characters substituted for concealed text (see 'conceallevel') Conceal = { fg = cp.overlay1 }, -- placeholder characters substituted for concealed text (see 'conceallevel')
Cursor = { fg = cp.black2, bg = cp.white }, -- character under the cursor Cursor = { fg = cp.base, bg = cp.text }, -- character under the cursor
lCursor = { fg = cp.black2, bg = cp.white }, -- the character under the cursor when |language-mapping| is used (see 'guicursor') lCursor = { fg = cp.base, bg = cp.text }, -- 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| CursorIM = { fg = cp.base, bg = cp.text }, -- like Cursor, but used when in IME mode |CursorIM|
CursorColumn = { bg = cp.black1 }, -- Screen-column at the cursor, when 'cursorcolumn' is secp. CursorColumn = { bg = cp.mantle }, -- 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. 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) 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 ErrorMsg = { fg = cp.red, style = "bold,italic" }, -- error messages on the command line
VertSplit = { fg = cp.black0 }, -- the column separating vertically split windows VertSplit = { fg = cp.crust }, -- the column separating vertically split windows
Folded = { fg = cp.blue, bg = cp.black4 }, -- line used for closed folds Folded = { fg = cp.blue, bg = cp.surface1 }, -- line used for closed folds
FoldColumn = { bg = cp.black2, fg = cp.gray0 }, -- 'foldcolumn' FoldColumn = { bg = cp.base, fg = cp.overlay0 }, -- 'foldcolumn'
SignColumn = { bg = cnf.transparent_background and cp.none or cp.black2, fg = cp.black4 }, -- column where |signs| are displayed SignColumn = { bg = cnf.transparent_background and cp.none or cp.base, fg = cp.surface1 }, -- column where |signs| are displayed
SignColumnSB = { bg = cp.black0, fg = cp.black4 }, -- column where |signs| are displayed SignColumnSB = { bg = cp.crust, fg = cp.surface1 }, -- column where |signs| are displayed
Substitute = { bg = cp.black4, fg = cp.pink }, -- |:substitute| replacement text highlighting Substitute = { bg = cp.surface1, 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. 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.green }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. highlights the number in numberline. 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| 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 -- ") ModeMsg = { fg = cp.text, style = "bold" }, -- 'showmode' message (e.g., "-- INSERT -- ")
MsgArea = { fg = cp.white }, -- Area for messages and cmdline MsgArea = { fg = cp.text }, -- Area for messages and cmdline
MsgSeparator = {}, -- Separator for scrolled messages, `msgsep` flag of 'display' MsgSeparator = {}, -- Separator for scrolled messages, `msgsep` flag of 'display'
MoreMsg = { fg = cp.blue }, -- |more-prompt| 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|. 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.white, bg = cnf.transparent_background and cp.none or cp.black2 }, -- normal text Normal = { fg = cp.text, bg = cnf.transparent_background and cp.none or cp.base }, -- normal text
NormalNC = { fg = cp.white, bg = cnf.transparent_background and cp.none or cp.black2 }, -- normal text in non-current windows NormalNC = { fg = cp.text, bg = cnf.transparent_background and cp.none or cp.base }, -- normal text in non-current windows
NormalSB = { fg = cp.white, bg = cp.black0 }, -- normal text in non-current windows NormalSB = { fg = cp.text, bg = cp.crust }, -- normal text in non-current windows
NormalFloat = { fg = cp.white, bg = cp.black1 }, -- Normal text in floating windows. NormalFloat = { fg = cp.text, bg = cp.mantle }, -- Normal text in floating windows.
FloatBorder = { fg = cp.blue }, FloatBorder = { fg = cp.blue },
Pmenu = { bg = cp.black3, fg = cp.gray2 }, -- Popup menu: normal item. Pmenu = { bg = cp.surface0, fg = cp.overlay2 }, -- Popup menu: normal item.
PmenuSel = { fg = cp.white, bg = cp.black4, style = "bold" }, -- Popup menu: selected item. PmenuSel = { fg = cp.text, bg = cp.surface1, style = "bold" }, -- Popup menu: selected item.
PmenuSbar = { bg = cp.black4 }, -- Popup menu: scrollbar. PmenuSbar = { bg = cp.surface1 }, -- Popup menu: scrollbar.
PmenuThumb = { bg = cp.gray0 }, -- Popup menu: Thumb of the scrollbar. PmenuThumb = { bg = cp.overlay0 }, -- Popup menu: Thumb of the scrollbar.
Question = { fg = cp.blue }, -- |hit-enter| prompt and yes/no questions 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. 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.black4, fg = cp.pink, style = "bold" }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand oucp. 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.black4 }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c" IncSearch = { bg = cp.pink, fg = cp.surface1 }, -- '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| 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. 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. 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. 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. 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 StatusLine = { fg = cp.text, bg = cp.mantle }, -- 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. 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.black1, fg = cp.black4 }, -- tab pages line, not active tab page label 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 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. Title = { fg = cp.blue, style = "bold" }, -- titles for output from ":set all", ":autocmd" etcp.
Visual = { bg = cp.black4, style = "bold" }, -- Visual mode selection Visual = { bg = cp.surface1, style = "bold" }, -- Visual mode selection
VisualNOS = { bg = cp.black4, style = "bold" }, -- Visual mode selection when vim is "Not Owning the Selection". VisualNOS = { bg = cp.surface1, style = "bold" }, -- Visual mode selection when vim is "Not Owning the Selection".
WarningMsg = { fg = cp.yellow }, -- warning messages WarningMsg = { fg = cp.yellow }, -- warning messages
Whitespace = { fg = cp.black4 }, -- "nbsp", "space", "tab" and "trail" in 'listchars' Whitespace = { fg = cp.surface1 }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
WildMenu = { bg = cp.gray0 }, -- current match in 'wildmenu' completion WildMenu = { bg = cp.overlay0 }, -- current match in 'wildmenu' completion
-- These groups are not listed as default vim groups, -- These groups are not listed as default vim groups,
-- but they are defacto standard group names for syntax highlighting. -- 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, -- default,
-- Ungray0 and edit if you want more specific syntax highlighting. -- Unoverlay0 and edit if you want more specific syntax highlighting.
-- code itself -- code itself
@ -113,7 +113,7 @@ local function get_base()
-- SpecialChar = { }, -- special character in a constant -- SpecialChar = { }, -- special character in a constant
-- Tag = { }, -- you can use CTRL-] on this -- Tag = { }, -- you can use CTRL-] on this
-- Delimiter = { }, -- character that needs attention -- Delimiter = { }, -- character that needs attention
-- Specialgray0= { }, -- special things inside a gray0 -- Specialoverlay0= { }, -- special things inside a overlay0
-- Debug = { }, -- debugging statements -- Debug = { }, -- debugging statements
Underlined = { style = "underline" }, -- (preferred) text that stands out, HTML links 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| -- Ignore = { }, -- (preferred) left blank, hidden |hl-Ignore|
Error = { fg = cp.red }, -- (preferred) any erroneous construct 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 }, qfLineNr = { fg = cp.yellow },
qfFileName = { fg = cp.blue }, qfFileName = { fg = cp.blue },
htmlH1 = { fg = cp.pink, style = "bold" }, htmlH1 = { fg = cp.pink, style = "bold" },
htmlH2 = { fg = cp.blue, style = "bold" }, htmlH2 = { fg = cp.blue, style = "bold" },
-- mkdHeading = { fg = cp.peach, style = "bold" }, -- mkdHeading = { fg = cp.peach, style = "bold" },
-- mkdCode = { bg = cp.terminal_black, fg = cp.white }, -- mkdCode = { bg = cp.terminal_black, fg = cp.text },
mkdCodeDelimiter = { bg = cp.black2, fg = cp.white }, mkdCodeDelimiter = { bg = cp.base, fg = cp.text },
mkdCodeStart = { fg = cp.flamingo, style = "bold" }, mkdCodeStart = { fg = cp.flamingo, style = "bold" },
mkdCodeEnd = { fg = cp.flamingo, style = "bold" }, mkdCodeEnd = { fg = cp.flamingo, style = "bold" },
-- mkdLink = { fg = cp.blue, style = "underline" }, -- mkdLink = { fg = cp.blue, style = "underline" },
-- debugging -- debugging
debugPC = { bg = cp.black0 }, -- used for highlighting the current line in terminal-debug debugPC = { bg = cp.crust }, -- used for highlighting the current line in terminal-debug
debugBreakpoint = { bg = cp.black2, fg = cp.gray0 }, -- used for breakpoint colors in terminal-debug debugBreakpoint = { bg = cp.base, fg = cp.overlay0 }, -- used for breakpoint colors in terminal-debug
-- illuminate -- illuminate
illuminatedWord = { bg = cp.black4 }, illuminatedWord = { bg = cp.surface1 },
illuminatedCurWord = { bg = cp.black4 }, illuminatedCurWord = { bg = cp.surface1 },
-- diff -- diff
diffAdded = { fg = cp.green }, diffAdded = { fg = cp.green },
diffRemoved = { fg = cp.red }, diffRemoved = { fg = cp.red },
@ -148,12 +148,12 @@ local function get_base()
diffOldFile = { fg = cp.yellow }, diffOldFile = { fg = cp.yellow },
diffNewFile = { fg = cp.peach }, diffNewFile = { fg = cp.peach },
diffFile = { fg = cp.blue }, diffFile = { fg = cp.blue },
diffLine = { fg = cp.gray0 }, diffLine = { fg = cp.overlay0 },
diffIndexLine = { fg = cp.pink }, diffIndexLine = { fg = cp.pink },
DiffAdd = { fg = cp.green, bg = cp.black2 }, -- diff mode: Added line |diff.txt| DiffAdd = { fg = cp.green, bg = cp.base }, -- diff mode: Added line |diff.txt|
DiffChange = { fg = cp.yellow, bg = cp.black2 }, -- diff mode: Changed line |diff.txt| DiffChange = { fg = cp.yellow, bg = cp.base }, -- diff mode: Changed line |diff.txt|
DiffDelete = { fg = cp.red, bg = cp.black2 }, -- diff mode: Deleted line |diff.txt| DiffDelete = { fg = cp.red, bg = cp.base }, -- diff mode: Deleted line |diff.txt|
DiffText = { fg = cp.blue, bg = cp.black2 }, -- diff mode: Changed text within a changed line |diff.txt| DiffText = { fg = cp.blue, bg = cp.base }, -- diff mode: Changed text within a changed line |diff.txt|
-- NeoVim -- NeoVim
healthError = { fg = cp.red }, healthError = { fg = cp.red },
healthSuccess = { fg = cp.teal }, healthSuccess = { fg = cp.teal },
@ -166,7 +166,7 @@ local function get_base()
GlyphPalette3 = { fg = cp.yellow }, GlyphPalette3 = { fg = cp.yellow },
GlyphPalette4 = { fg = cp.blue }, GlyphPalette4 = { fg = cp.blue },
GlyphPalette6 = { fg = cp.teal }, GlyphPalette6 = { fg = cp.teal },
GlyphPalette7 = { fg = cp.white }, GlyphPalette7 = { fg = cp.text },
GlyphPalette9 = { fg = cp.red }, GlyphPalette9 = { fg = cp.red },
} }
end end
@ -191,7 +191,7 @@ local function get_integrations()
final_integrations = vim.tbl_deep_extend( final_integrations = vim.tbl_deep_extend(
"force", "force",
final_integrations, final_integrations,
require("catppuccin.core.integrations." .. integration).get(color_palette) require("catppuccin.core.integrations." .. integration).get(cp)
) )
end end
end end
@ -205,11 +205,12 @@ local function get_integrations()
end end
local function get_terminal() local function get_terminal()
return color_palette return cp
end end
function M.apply() function M.apply()
_G.cnf = require("catppuccin.config").options _G.cnf = require("catppuccin.config").options
cp = require("catppuccin.core.palettes.init").get_palette()
local theme = {} local theme = {}
theme.properties = get_properties() -- nvim settings theme.properties = get_properties() -- nvim settings

@ -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

@ -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

@ -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

@ -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

@ -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

@ -1,6 +1,11 @@
local M = {} local M = {}
local utils = require("catppuccin.utils.util") 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 function load()
local catppuccin = require("catppuccin") local catppuccin = require("catppuccin")
@ -18,17 +23,11 @@ local function load()
end end
end end
local function clear()
vim.cmd("hi clear")
end
function M.main(option) function M.main(option)
option = option or "load" option = option or "load"
if option == "load" then if option == "load" then
load() load()
elseif option == "clear" then
clear()
else else
print("catppuccin: option was not recognized") print("catppuccin: option was not recognized")
end end

@ -6,7 +6,7 @@ local function color_is_bright(r, g, b)
if luminance > 0.5 then if luminance > 0.5 then
return true -- Bright colors, black font return true -- Bright colors, black font
else else
return false -- Dark colors, white font return false -- Dark colors, text font
end end
end end
@ -27,4 +27,13 @@ function M.assert_brightness(color)
return false -- dull return false -- dull
end 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 return M

@ -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

@ -21,7 +21,7 @@ local hex_to_rgb = function(hex_str)
return { tonumber(red, 16), tonumber(green, 16), tonumber(blue, 16) } return { tonumber(red, 16), tonumber(green, 16), tonumber(blue, 16) }
end end
---@param fg string foreground color ---@param fg string forecrust color
---@param bg string background color ---@param bg string background color
---@param alpha number number between 0 and 1. 0 results in bg, 1 results in fg ---@param alpha number number between 0 and 1. 0 results in bg, 1 results in fg
function util.blend(fg, bg, alpha) function util.blend(fg, bg, alpha)
@ -78,7 +78,7 @@ function util.string_to_color(colors, value, default)
return value return value
end 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 for _, ac in ipairs(acceptable_colors) do
if string.match(value, ac) then if string.match(value, ac) then
return colors[value] return colors[value]
@ -117,8 +117,8 @@ function util.properties(tbl)
end end
function util.terminal(cp) function util.terminal(cp)
g.terminal_color_0 = cp.gray0 g.terminal_color_0 = cp.overlay0
g.terminal_color_8 = cp.gray1 g.terminal_color_8 = cp.overlay1
g.terminal_color_1 = cp.red g.terminal_color_1 = cp.red
g.terminal_color_9 = 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_6 = cp.sky
g.terminal_color_14 = cp.sky g.terminal_color_14 = cp.sky
g.terminal_color_7 = cp.white g.terminal_color_7 = cp.text
g.terminal_color_15 = cp.white g.terminal_color_15 = cp.text
end end
function util.load(theme) function util.load(theme)

@ -2,36 +2,36 @@ local cp = require("catppuccin.core.color_palette")
local catppuccin = {} local catppuccin = {}
catppuccin.normal = { catppuccin.normal = {
left = { { cp.black1, cp.blue }, { cp.blue, cp.black2 } }, left = { { cp.mantle, cp.blue }, { cp.blue, cp.base } },
middle = { { cp.blue, cp.black4 } }, middle = { { cp.blue, cp.surface1 } },
right = { { cp.gray0, cp.black2 }, { cp.blue, cp.black3 } }, right = { { cp.overlay0, cp.base }, { cp.blue, cp.surface0 } },
error = { { cp.black1, cp.red } }, error = { { cp.mantle, cp.red } },
warning = { { cp.black1, cp.yellow } }, warning = { { cp.mantle, cp.yellow } },
} }
catppuccin.insert = { catppuccin.insert = {
left = { { cp.black1, cp.teal }, { cp.blue, cp.black2 } }, left = { { cp.mantle, cp.teal }, { cp.blue, cp.base } },
} }
catppuccin.visual = { catppuccin.visual = {
left = { { cp.black1, cp.mauve }, { cp.blue, cp.black2 } }, left = { { cp.mantle, cp.mauve }, { cp.blue, cp.base } },
} }
catppuccin.replace = { catppuccin.replace = {
left = { { cp.black1, cp.red }, { cp.blue, cp.black2 } }, left = { { cp.mantle, cp.red }, { cp.blue, cp.base } },
} }
catppuccin.inactive = { catppuccin.inactive = {
left = { { cp.blue, cp.black2 }, { cp.gray0, cp.black2 } }, left = { { cp.blue, cp.base }, { cp.overlay0, cp.base } },
middle = { { cp.black4, cp.black2 } }, middle = { { cp.surface1, cp.base } },
right = { { cp.black4, cp.black2 }, { cp.gray0, cp.black2 } }, right = { { cp.surface1, cp.base }, { cp.overlay0, cp.base } },
} }
catppuccin.tabline = { catppuccin.tabline = {
left = { { cp.gray0, cp.black2 }, { cp.gray0, cp.black2 } }, left = { { cp.overlay0, cp.base }, { cp.overlay0, cp.base } },
middle = { { cp.black4, cp.black2 } }, middle = { { cp.surface1, cp.base } },
right = { { cp.black4, cp.black2 }, { cp.gray0, cp.black2 } }, right = { { cp.surface1, cp.base }, { cp.overlay0, cp.base } },
tabsel = { { cp.blue, cp.black4 }, { cp.gray0, cp.black2 } }, tabsel = { { cp.blue, cp.surface1 }, { cp.overlay0, cp.base } },
} }
return catppuccin return catppuccin

@ -2,35 +2,35 @@ local cp = require("catppuccin.core.color_palette")
local catppuccin = {} local catppuccin = {}
catppuccin.normal = { catppuccin.normal = {
a = { bg = cp.blue, fg = cp.black1, gui = "bold" }, a = { bg = cp.blue, fg = cp.mantle, gui = "bold" },
b = { bg = cp.black4, fg = cp.blue }, b = { bg = cp.surface1, fg = cp.blue },
c = { bg = cp.black1, fg = cp.white }, c = { bg = cp.mantle, fg = cp.text },
} }
catppuccin.insert = { catppuccin.insert = {
a = { bg = cp.green, fg = cp.black2, gui = "bold" }, a = { bg = cp.green, fg = cp.base, gui = "bold" },
b = { bg = cp.black4, fg = cp.teal }, b = { bg = cp.surface1, fg = cp.teal },
} }
catppuccin.command = { catppuccin.command = {
a = { bg = cp.peach, fg = cp.black2, gui = "bold" }, a = { bg = cp.peach, fg = cp.base, gui = "bold" },
b = { bg = cp.black4, fg = cp.peach }, b = { bg = cp.surface1, fg = cp.peach },
} }
catppuccin.visual = { catppuccin.visual = {
a = { bg = cp.mauve, fg = cp.black2, gui = "bold" }, a = { bg = cp.mauve, fg = cp.base, gui = "bold" },
b = { bg = cp.black4, fg = cp.mauve }, b = { bg = cp.surface1, fg = cp.mauve },
} }
catppuccin.replace = { catppuccin.replace = {
a = { bg = cp.red, fg = cp.black2, gui = "bold" }, a = { bg = cp.red, fg = cp.base, gui = "bold" },
b = { bg = cp.black4, fg = cp.red }, b = { bg = cp.surface1, fg = cp.red },
} }
catppuccin.inactive = { catppuccin.inactive = {
a = { bg = cp.black1, fg = cp.blue }, a = { bg = cp.mantle, fg = cp.blue },
b = { bg = cp.black1, fg = cp.black4, gui = "bold" }, b = { bg = cp.mantle, fg = cp.surface1, gui = "bold" },
c = { bg = cp.black1, fg = cp.gray0 }, c = { bg = cp.mantle, fg = cp.overlay0 },
} }
return catppuccin return catppuccin

@ -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([<f-args>])
let g:loaded_catppuccin = 1
Loading…
Cancel
Save