Switch from catppuccin to a custom version of ayu mirage in neovim

This commit is contained in:
Martin Larsson 2025-01-09 17:10:29 +01:00
parent f0f10ab09b
commit e100b9cf57
6 changed files with 114 additions and 65 deletions

View file

@ -1 +1 @@
--theme="Catppuccin Macchiato" --theme="ayu_mirage"

View file

@ -0,0 +1,108 @@
local function force_color_from_reference_on_others(others, reference)
local reference_hl = vim.api.nvim_get_hl(0, { name = reference })
for _, member in ipairs(others) do
local property = vim.api.nvim_get_hl(0, { name = member })
property.fg = reference_hl.fg
vim.api.nvim_set_hl(0, member, property)
end
end
local function reset_hl_groups_for_ft(groups_to_reset)
for _, group in ipairs(groups_to_reset) do
local ft = group[1]
local groups = group[2]
vim.api.nvim_create_autocmd("FileType", {
pattern = ft,
callback = function()
for _, group_name in ipairs(groups) do
vim.api.nvim_set_hl(0, group_name, {})
end
end,
})
end
end
return {
"Shatur/neovim-ayu",
config = function()
local is_mirage = true
local ayu = require("ayu")
local colors = require("ayu.colors")
colors.generate(is_mirage)
local overrides = {
global_variable = {
underline = true,
italic = true,
},
member_variable = {
bold = true,
},
namespace = {
italic = true,
fg = colors.markup,
},
pre_process = {
fg = colors.keyword,
},
default_type = {
fg = colors.regexp
},
}
ayu.setup({
mirage = is_mirage, -- Set to `true` to use `mirage` variant instead of `dark` for dark background.
terminal = false, -- Set to `false` to let terminal manage its own colors.
overrides = {
["@property"] = overrides.member_variable,
["PreProc"] = overrides.pre_process,
--CPP
["@lsp.typemod.variable.fileScope.cpp"] = overrides.global_variable,
["@lsp.type.namespace.cpp"] = overrides.namespace,
["@type.builtin.cpp"] = overrides.default_type,
-- CPP
--
-- Rust
["@lsp.type.namespace.rust"] = overrides.namespace,
["@lsp.type.builtinType.rust"] = overrides.default_type,
-- Rust
--
-- C
["@lsp.typemod.variable.globalScope.c"] = overrides.global_variable,
["@type.builtin.c"] = overrides.default_type,
-- C
--
-- Go
-- ["@module.go"] = overrides.namespace, -- The go LSP is not reliable enough for this sadly, sometimes it adds module tokens and sometimes it doesnt.
["@variable.member.go"] = overrides.member_variable,
["@type.builtin.go"] = overrides.default_type,
-- Go
--
-- Zig
["@module.zig"] = overrides.namespace,
["@type.builtin.zig"] = overrides.default_type,
["@function.builtin.zig"] = overrides.default_type,
-- ["@variable.member.zig"] = overrides.member_variable,-- Cant have bold member variable in zig, they don't differentiate function calls/accessors from variables, they are all just "members" .... BS LSP
-- ["@variable.parameter"] = {},-- Zig LSP is lacking, a parameter is marked as a regular variable outside of it's definition, can't separate between them.
-- Zig
},
})
ayu.colorscheme()
-- Fix nuances of the colorscheme in different languages.
-- These changes needs to run after the colorscheme is set.
force_color_from_reference_on_others({
"@property",
"@variable.member.go",
"@variable.member",
"@variable.member.zig",
}, "@variable")
reset_hl_groups_for_ft({
{ "go", { "@property", } },
})
end
}

View file

@ -1,57 +0,0 @@
return {
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
config = function()
require("catppuccin").setup({
flavour = "macchiato",
background = {
light = "latte",
dark = "macchiato"
},
transparent_background = true,
term_colors = true,
sidebars = { "qf", "help" },
integrations = {
lsp_saga = true,
lsp_trouble = true,
mason = true,
semantic_tokens = true,
treesitter_context = true,
telescope = { -- This doesn't seem to be compatible when running the custom dropdown theme
enable = true
},
cmp = true,
dap_ui = true,
dap = true,
notify = true,
},
dim_inactive = {
enabled = false,
shade = "dark",
percent = 0.15,
},
styles = {
comments = { "italic" },
},
custom_highlights = function(colors)
return {
FloatBorder = { fg = colors.surface0 },
CmpItemMenu = { fg = colors.overlay2 },
CopilotSuggestion = { fg = colors.overlay2 },
-- Saga
ActionPreviewTitle = { bg = colors.mantle },
-- Leap
LeapLabelPrimary = { bg = colors.green, fg = colors.base },
LeapBackdrop = { link = "Comment" },
["@lsp.typemod.variable.functionScope.cpp"] = { bold = true },
}
end
})
vim.cmd.colorscheme "catppuccin"
end
}

View file

@ -1,10 +1,11 @@
local saved_hlsearch = false local saved_hlsearch = false
local saved_highlights = {} local saved_highlights = {}
local colors = require("catppuccin.palettes.macchiato"); local colors = require("ayu.colors")
colors.generate(true)
local function save_and_set_invisible_inlay_hints_hl() local function save_and_set_invisible_inlay_hints_hl()
saved_highlights = vim.api.nvim_get_hl_by_name("LspInlayHint", true) saved_highlights = vim.api.nvim_get_hl_by_name("LspInlayHint", true)
vim.api.nvim_set_hl(0, "LspInlayHint", { fg = colors.crust, bg = colors.crust }) vim.api.nvim_set_hl(0, "LspInlayHint", { fg = colors.bg, bg = colors.bg })
end end
local function restore_inlay_hints_hl() local function restore_inlay_hints_hl()

View file

@ -19,7 +19,7 @@ return {
win_width = 52, win_width = 52,
}, },
ui = { ui = {
kind = require("catppuccin.groups.integrations.lsp_saga").custom_kind(), -- kind = require("catppuccin.groups.integrations.lsp_saga").custom_kind(),
border = "single", border = "single",
title = false title = false
}, },

View file

@ -16,12 +16,9 @@ return {
event = "VeryLazy", event = "VeryLazy",
lazy = true, lazy = true,
config = function() config = function()
local catppuccin_theme = require("lualine.themes.catppuccin")
local slightly_darker_surface0 = "#2c3045"
catppuccin_theme.normal.c.bg = slightly_darker_surface0
require("lualine").setup { require("lualine").setup {
options = { options = {
theme = catppuccin_theme, theme = "ayu",
section_separators = { section_separators = {
left = "", left = "",
right = "", right = "",