Compare commits

..
1 Commits
Author SHA1 Message Date
nvrl 2cbfe6946a updated theme 2026-08-11 17:39:01 +02:00
7 changed files with 526 additions and 45 deletions
+3
View File
@@ -0,0 +1,3 @@
-- Loader. The palette and highlight table live in lua/takemi.lua so that
-- `require("takemi")` works for the lualine theme too.
require("takemi").load()
+16
View File
@@ -2,6 +2,10 @@
vim.keymap.set("n", "<leader>w", "<cmd>write<cr>", { desc = "Save file" }) vim.keymap.set("n", "<leader>w", "<cmd>write<cr>", { desc = "Save file" })
vim.keymap.set("n", "<leader>q", "<cmd>quitall<cr>", { desc = "Exit Neovim" }) vim.keymap.set("n", "<leader>q", "<cmd>quitall<cr>", { desc = "Exit Neovim" })
-- marp configuration
vim.keymap.set("n", "<leader>MT", "<cmd>MarpToggle<cr>", { noremap = true, silent = true })
vim.keymap.set("n", "<leader>MS", "<cmd>MarpStatus<cr>", { noremap = true, silent = true })
-- Window Navigation -- Window Navigation
vim.keymap.set("n", "<leader>h", "<cmd>wincmd h<cr>", { desc = "Move to left split" }) vim.keymap.set("n", "<leader>h", "<cmd>wincmd h<cr>", { desc = "Move to left split" })
vim.keymap.set("n", "<leader>l", "<cmd>wincmd l<cr>", { desc = "Move to right split" }) vim.keymap.set("n", "<leader>l", "<cmd>wincmd l<cr>", { desc = "Move to right split" })
@@ -24,3 +28,15 @@ end, { desc = "Next error" })
vim.keymap.set("n", "[e", function() vim.keymap.set("n", "[e", function()
vim.diagnostic.goto_prev({ severity = vim.diagnostic.severity.ERROR }) vim.diagnostic.goto_prev({ severity = vim.diagnostic.severity.ERROR })
end, { desc = "Previous error" }) end, { desc = "Previous error" })
-- Dynamic LSP Keymaps (Loaded only when LSP attaches to a buffer)
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(event)
local opts = { buffer = event.buf }
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
end,
})
+11 -11
View File
@@ -2,10 +2,11 @@ require("mini.deps").setup()
local add = MiniDeps.add local add = MiniDeps.add
-- UI & Theming -- UI & Theming
add({ source = "catppuccin/nvim", name = "catppuccin" }) -- The colourscheme is local (colors/takemi.lua), so there is no theme plugin.
add({ source = "nvim-lualine/lualine.nvim" }) add({ source = "nvim-lualine/lualine.nvim" })
add({ source = "lewis6991/gitsigns.nvim" }) add({ source = "lewis6991/gitsigns.nvim" })
add({ source = "folke/which-key.nvim" }) add({ source = "folke/which-key.nvim" })
add({ source = "mpas/marp-nvim" })
-- Utility & Editing -- Utility & Editing
add({ source = "akinsho/toggleterm.nvim" }) add({ source = "akinsho/toggleterm.nvim" })
@@ -24,25 +25,24 @@ add({ source = "mfussenegger/nvim-lint" })
add({ source = "seblyng/roslyn.nvim" }) add({ source = "seblyng/roslyn.nvim" })
add({ source = "tris203/rzls.nvim" }) add({ source = "tris203/rzls.nvim" })
add({ source = "https://git.narl.io/nvrl/mould-rs", checkout = "main" }) add({ source = "https://git.narl.io/nvrl/mould-rs", checkout = "main" })
add({ source = "ray-x/go.nvim" })
-- Autocompletion -- Autocompletion
add({ add({
source = "Saghen/blink.cmp", source = "saghen/blink.cmp",
depends = { "rafamadriz/friendly-snippets" }, depends = {'saghen/blink.lib', "rafamadriz/friendly-snippets" },
hooks = { hooks = {
post_install = function(ctx) -- NOTE: v2 also changed how the rust binary is built!
vim.cmd("!cd " .. ctx.path .. " && cargo build --release") -- Replace the old 'cargo build --release' string with the new Lua API:
end, post_install = function() require('blink.cmp').build():pwait(60000) end,
post_checkout = function(ctx) post_checkout = function() require('blink.cmp').build():pwait(60000) end,
vim.cmd("!cd " .. ctx.path .. " && cargo build --release") }
end,
},
}) })
-- Treesitter -- Treesitter
add({ add({
source = "nvim-treesitter/nvim-treesitter", source = "nvim-treesitter/nvim-treesitter",
checkout = "master", checkout = "main",
monitor = "main", monitor = "main",
hooks = { hooks = {
post_checkout = function() post_checkout = function()
+3 -11
View File
@@ -75,6 +75,9 @@ require("roslyn").setup({
config = { handlers = require("rzls.roslyn_handlers") }, config = { handlers = require("rzls.roslyn_handlers") },
}) })
-- Dedicated go Setup
require('go').setup()
-- Diagnostics Configuration -- Diagnostics Configuration
local sign = function(opts) local sign = function(opts)
vim.fn.sign_define(opts.name, { texthl = opts.name, text = opts.text, numhl = "" }) vim.fn.sign_define(opts.name, { texthl = opts.name, text = opts.text, numhl = "" })
@@ -135,14 +138,3 @@ require("lint").linters_by_ft = {
python = { "flake8" }, python = { "flake8" },
} }
-- Dynamic LSP Keymaps (Loaded only when LSP attaches to a buffer)
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(event)
local opts = { buffer = event.buf }
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
end,
})
+5 -6
View File
@@ -53,11 +53,10 @@ require("typst-preview").setup({
end, end,
}) })
require("marp").setup({})
-- Treesitter -- Treesitter
require("nvim-treesitter.configs").setup({ vim.api.nvim_create_autocmd('FileType', {
ensure_installed = { "lua", "rust", "toml", "c_sharp", "python", "typst", "markdown", "markdown_inline" }, pattern = { '<filetype>' },
auto_install = true, callback = function() vim.treesitter.start() end,
highlight = { enable = true },
ident = { enable = true },
rainbow = { enable = true, extended_mode = true },
}) })
+5 -16
View File
@@ -1,18 +1,7 @@
-- Catppuccin Theme -- Takemi Theme — lives in colors/takemi.lua, shares its palette with
require("catppuccin").setup({ -- ~/.config/quickshell/config/Theme.qml and ~/.config/alacritty/takemi.toml.
flavour = "auto", vim.o.termguicolors = true
background = { light = "latte", dark = "mocha" }, vim.cmd.colorscheme("takemi")
transparent_background = false,
show_end_of_buffer = false,
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
treesitter = true,
mini = { enabled = true },
},
})
vim.cmd.colorscheme("catppuccin")
-- Git Signs -- Git Signs
require("gitsigns").setup() require("gitsigns").setup()
@@ -35,7 +24,7 @@ end
require("lualine").setup({ require("lualine").setup({
options = { options = {
theme = require("catppuccin.utils.lualine")(), theme = require("takemi").lualine(),
component_separators = { left = "|", right = "|" }, component_separators = { left = "|", right = "|" },
section_separators = { left = "", right = "" }, section_separators = { left = "", right = "" },
globalstatus = true, globalstatus = true,
+482
View File
@@ -0,0 +1,482 @@
-- Takemi — matched to ~/.config/quickshell/config/Theme.qml and
-- ~/.config/alacritty/takemi.toml.
--
-- Same rules as the shell: near-black ground, white text, crimson as the only
-- saturated colour. Crimson always means one of two things and never anything
-- else — this construct is load-bearing (keyword, type, active), or it is
-- wrong (error, diff-delete). Everything else is white, grey, or a hue pulled
-- so far down it reads as grey with a temperature.
--
-- Syntax needs more separation than a shell bar does, so the muted ANSI hues
-- from takemi.toml do survive here. They are deliberately dull. If a token
-- catches your eye and it isn't red, the palette has drifted.
local M = {}
local p = {
ink = "#000000",
base = "#0a0a0c",
mantle = "#0d0d10",
surface = "#141418",
surface_alt = "#1c1c22",
overlay = "#26262e",
outline = "#3a3a44",
text = "#ffffff",
subtext = "#c8c8ce",
muted = "#6b6b70",
faint = "#4a4a52",
-- THE KNOB. Keep in step with `accent` in Theme.qml and `$accent` in
-- hypr/modules/takemi.conf.
accent = "#ff2d40",
accent_soft = "#ff6b78",
accent_dim = "#8f1826",
accent_bg = "#2a1016", -- crimson washed into the ground, for line/diff fills
green = "#7f9b6a",
green_br = "#9bb886",
green_bg = "#161c14",
yellow = "#d6a24a",
yellow_br = "#f0c070",
yellow_bg = "#221a10",
blue = "#6f7d99",
blue_br = "#8d9bb8",
blue_bg = "#14181f",
magenta = "#c0566d",
magenta_br = "#e07a8e",
cyan = "#7f9aa0",
cyan_br = "#9db8bd",
}
M.palette = p
local function hl(groups)
for name, spec in pairs(groups) do
vim.api.nvim_set_hl(0, name, spec)
end
end
function M.load(opts)
opts = opts or {}
local transparent = opts.transparent or false
local bg = transparent and "NONE" or p.base
vim.cmd("hi clear")
if vim.fn.exists("syntax_on") == 1 then
vim.cmd("syntax reset")
end
vim.o.background = "dark"
vim.g.colors_name = "takemi"
-- :terminal and anything that reads terminal_color_*. Mirrors takemi.toml
-- slot for slot so a shell inside nvim looks like a shell outside it.
local ansi = {
p.surface, p.accent, p.green, p.yellow, p.blue, p.magenta, p.cyan, p.subtext,
p.outline, p.accent_soft, p.green_br, p.yellow_br, p.blue_br, p.magenta_br,
p.cyan_br, p.text,
}
for i, c in ipairs(ansi) do
vim.g["terminal_color_" .. (i - 1)] = c
end
hl({
-- ---------------------------------------------------------------- editor
Normal = { fg = p.text, bg = bg },
NormalNC = { fg = p.subtext, bg = bg },
NormalFloat = { fg = p.text, bg = p.surface },
-- Floats get a hard crimson keyline, not a soft border. Same move as the
-- shell's panels.
FloatBorder = { fg = p.accent, bg = p.surface },
FloatTitle = { fg = p.ink, bg = p.accent, bold = true },
FloatFooter = { fg = p.muted, bg = p.surface },
Cursor = { fg = p.ink, bg = p.accent },
lCursor = { fg = p.ink, bg = p.accent },
CursorIM = { fg = p.ink, bg = p.accent },
TermCursor = { fg = p.ink, bg = p.accent },
CursorLine = { bg = p.surface },
CursorColumn = { bg = p.surface },
ColorColumn = { bg = p.mantle },
-- The current line number is crimson: it is the one "you are here" signal
-- in the buffer, which is exactly what the accent is for.
CursorLineNr = { fg = p.accent, bold = true },
LineNr = { fg = p.faint },
LineNrAbove = { fg = p.faint },
LineNrBelow = { fg = p.faint },
SignColumn = { fg = p.muted, bg = bg },
FoldColumn = { fg = p.faint, bg = bg },
Folded = { fg = p.muted, bg = p.surface },
-- Selection is a solid crimson block with the text punched out, matching
-- [colors.selection] in takemi.toml.
Visual = { fg = p.ink, bg = p.accent },
VisualNOS = { fg = p.ink, bg = p.accent_dim },
Search = { fg = p.ink, bg = p.subtext },
IncSearch = { fg = p.ink, bg = p.accent },
CurSearch = { fg = p.ink, bg = p.accent },
Substitute = { fg = p.ink, bg = p.accent_soft },
MatchParen = { fg = p.accent, bold = true, underline = true },
-- Splits are a black keyline, never a grey gutter.
WinSeparator = { fg = p.ink, bg = bg },
VertSplit = { fg = p.ink, bg = bg },
Pmenu = { fg = p.subtext, bg = p.surface },
PmenuSel = { fg = p.ink, bg = p.accent, bold = true },
PmenuKind = { fg = p.blue, bg = p.surface },
PmenuKindSel = { fg = p.ink, bg = p.accent },
PmenuExtra = { fg = p.muted, bg = p.surface },
PmenuExtraSel = { fg = p.ink, bg = p.accent },
PmenuSbar = { bg = p.surface_alt },
PmenuThumb = { bg = p.accent },
PmenuMatch = { fg = p.accent, bold = true },
PmenuMatchSel = { fg = p.ink, bg = p.accent, bold = true },
WildMenu = { fg = p.ink, bg = p.accent },
StatusLine = { fg = p.subtext, bg = p.surface },
StatusLineNC = { fg = p.muted, bg = p.mantle },
TabLine = { fg = p.muted, bg = p.mantle },
TabLineFill = { bg = p.mantle },
TabLineSel = { fg = p.ink, bg = p.accent, bold = true },
WinBar = { fg = p.subtext, bg = bg, bold = true },
WinBarNC = { fg = p.muted, bg = bg },
MsgArea = { fg = p.subtext },
MsgSeparator = { fg = p.ink, bg = p.surface },
ModeMsg = { fg = p.accent, bold = true },
MoreMsg = { fg = p.text, bold = true },
Question = { fg = p.text },
ErrorMsg = { fg = p.accent, bold = true },
WarningMsg = { fg = p.yellow },
Title = { fg = p.text, bold = true },
Directory = { fg = p.text, bold = true },
Conceal = { fg = p.muted },
NonText = { fg = p.outline },
EndOfBuffer = { fg = bg == "NONE" and p.outline or bg },
SpecialKey = { fg = p.outline },
Whitespace = { fg = p.surface_alt },
QuickFixLine = { bg = p.surface_alt, bold = true },
SpellBad = { sp = p.accent, undercurl = true },
SpellCap = { sp = p.yellow, undercurl = true },
SpellLocal = { sp = p.cyan, undercurl = true },
SpellRare = { sp = p.magenta, undercurl = true },
-- ---------------------------------------------------------------- syntax
-- Crimson is spent only on the words that structure the program.
Comment = { fg = p.muted, italic = true },
Constant = { fg = p.subtext },
String = { fg = p.green },
Character = { fg = p.green },
Number = { fg = p.yellow },
Boolean = { fg = p.accent_soft },
Float = { fg = p.yellow },
Identifier = { fg = p.text },
Function = { fg = p.text, bold = true },
Statement = { fg = p.accent },
Conditional = { fg = p.accent },
Repeat = { fg = p.accent },
Label = { fg = p.accent },
Operator = { fg = p.subtext },
Keyword = { fg = p.accent },
Exception = { fg = p.accent },
PreProc = { fg = p.magenta },
Include = { fg = p.accent },
Define = { fg = p.magenta },
Macro = { fg = p.magenta },
PreCondit = { fg = p.magenta },
Type = { fg = p.accent_soft },
StorageClass = { fg = p.accent },
Structure = { fg = p.accent_soft },
Typedef = { fg = p.accent_soft },
Special = { fg = p.cyan },
SpecialChar = { fg = p.cyan_br },
Tag = { fg = p.accent },
Delimiter = { fg = p.muted },
SpecialComment = { fg = p.subtext, italic = true },
Debug = { fg = p.accent },
Underlined = { underline = true },
Ignore = { fg = p.faint },
Error = { fg = p.accent, bold = true },
Todo = { fg = p.ink, bg = p.accent, bold = true },
Added = { fg = p.green },
Changed = { fg = p.yellow },
Removed = { fg = p.accent },
-- ------------------------------------------------------------ treesitter
["@variable"] = { fg = p.text },
["@variable.builtin"] = { fg = p.accent_soft, italic = true },
["@variable.parameter"] = { fg = p.subtext, italic = true },
["@variable.member"] = { fg = p.blue_br },
["@constant"] = { fg = p.subtext },
["@constant.builtin"] = { fg = p.accent_soft },
["@constant.macro"] = { fg = p.magenta },
["@module"] = { fg = p.subtext },
["@label"] = { fg = p.accent },
["@string"] = { fg = p.green },
["@string.escape"] = { fg = p.cyan_br, bold = true },
["@string.special"] = { fg = p.cyan },
["@string.special.url"] = { fg = p.cyan, underline = true },
["@character"] = { fg = p.green },
["@number"] = { fg = p.yellow },
["@boolean"] = { fg = p.accent_soft },
["@float"] = { fg = p.yellow },
["@function"] = { fg = p.text, bold = true },
["@function.builtin"] = { fg = p.text, bold = true, italic = true },
["@function.macro"] = { fg = p.magenta, bold = true },
["@function.method"] = { fg = p.text, bold = true },
["@constructor"] = { fg = p.accent_soft },
["@keyword"] = { fg = p.accent },
["@keyword.function"] = { fg = p.accent },
["@keyword.operator"] = { fg = p.accent },
["@keyword.return"] = { fg = p.accent, bold = true },
["@keyword.import"] = { fg = p.accent },
["@keyword.exception"] = { fg = p.accent },
["@keyword.conditional"] = { fg = p.accent },
["@keyword.repeat"] = { fg = p.accent },
["@operator"] = { fg = p.subtext },
["@punctuation.delimiter"] = { fg = p.muted },
["@punctuation.bracket"] = { fg = p.muted },
["@punctuation.special"] = { fg = p.accent },
["@type"] = { fg = p.accent_soft },
["@type.builtin"] = { fg = p.accent_soft, italic = true },
["@type.definition"] = { fg = p.accent_soft },
["@attribute"] = { fg = p.magenta },
["@property"] = { fg = p.blue_br },
["@comment"] = { fg = p.muted, italic = true },
["@comment.todo"] = { fg = p.ink, bg = p.accent, bold = true },
["@comment.note"] = { fg = p.ink, bg = p.subtext, bold = true },
["@comment.warning"] = { fg = p.ink, bg = p.yellow, bold = true },
["@comment.error"] = { fg = p.ink, bg = p.accent, bold = true },
["@tag"] = { fg = p.accent },
["@tag.builtin"] = { fg = p.accent },
["@tag.attribute"] = { fg = p.blue_br, italic = true },
["@tag.delimiter"] = { fg = p.muted },
["@diff.plus"] = { fg = p.green },
["@diff.minus"] = { fg = p.accent },
["@diff.delta"] = { fg = p.yellow },
-- markdown / prose
["@markup.heading"] = { fg = p.text, bold = true },
["@markup.heading.1"] = { fg = p.accent, bold = true },
["@markup.heading.2"] = { fg = p.text, bold = true },
["@markup.heading.3"] = { fg = p.subtext, bold = true },
["@markup.heading.4"] = { fg = p.subtext },
["@markup.heading.5"] = { fg = p.muted },
["@markup.heading.6"] = { fg = p.muted },
["@markup.strong"] = { fg = p.text, bold = true },
["@markup.italic"] = { italic = true },
["@markup.strikethrough"] = { strikethrough = true },
["@markup.underline"] = { underline = true },
["@markup.link"] = { fg = p.accent },
["@markup.link.url"] = { fg = p.cyan, underline = true },
["@markup.link.label"] = { fg = p.accent },
["@markup.raw"] = { fg = p.green },
["@markup.raw.block"] = { fg = p.subtext, bg = p.surface },
["@markup.quote"] = { fg = p.muted, italic = true },
["@markup.list"] = { fg = p.accent },
["@markup.list.checked"] = { fg = p.green },
["@markup.list.unchecked"] = { fg = p.muted },
-- ------------------------------------------------------------------- lsp
["@lsp.type.class"] = { link = "@type" },
["@lsp.type.enum"] = { link = "@type" },
["@lsp.type.interface"] = { link = "@type" },
["@lsp.type.struct"] = { link = "@type" },
["@lsp.type.namespace"] = { link = "@module" },
["@lsp.type.parameter"] = { link = "@variable.parameter" },
["@lsp.type.property"] = { link = "@property" },
["@lsp.type.variable"] = { link = "@variable" },
["@lsp.type.enumMember"] = { link = "@constant" },
["@lsp.type.decorator"] = { link = "@attribute" },
["@lsp.type.macro"] = { link = "@function.macro" },
["@lsp.mod.deprecated"] = { strikethrough = true },
["@lsp.mod.readonly"] = { link = "@constant" },
LspReferenceText = { bg = p.surface_alt },
LspReferenceRead = { bg = p.surface_alt },
LspReferenceWrite = { bg = p.surface_alt, underline = true },
LspSignatureActiveParameter = { fg = p.ink, bg = p.accent, bold = true },
LspInlayHint = { fg = p.faint, bg = p.mantle, italic = true },
LspCodeLens = { fg = p.faint, italic = true },
LspInfoBorder = { fg = p.accent, bg = p.surface },
-- Diagnostics. Error is crimson because crimson also means "wrong"; warn
-- and hint stay dull so an error is never one of four equal shouts.
DiagnosticError = { fg = p.accent },
DiagnosticWarn = { fg = p.yellow },
DiagnosticInfo = { fg = p.blue_br },
DiagnosticHint = { fg = p.cyan },
DiagnosticOk = { fg = p.green },
DiagnosticVirtualTextError = { fg = p.accent, bg = p.accent_bg },
DiagnosticVirtualTextWarn = { fg = p.yellow, bg = p.yellow_bg },
DiagnosticVirtualTextInfo = { fg = p.blue_br, bg = p.blue_bg },
DiagnosticVirtualTextHint = { fg = p.cyan, bg = p.blue_bg },
DiagnosticVirtualTextOk = { fg = p.green, bg = p.green_bg },
DiagnosticUnderlineError = { sp = p.accent, undercurl = true },
DiagnosticUnderlineWarn = { sp = p.yellow, undercurl = true },
DiagnosticUnderlineInfo = { sp = p.blue_br, undercurl = true },
DiagnosticUnderlineHint = { sp = p.cyan, undercurl = true },
DiagnosticUnderlineOk = { sp = p.green, undercurl = true },
DiagnosticDeprecated = { sp = p.muted, strikethrough = true },
DiagnosticUnnecessary = { fg = p.faint },
-- ------------------------------------------------------------------ diff
DiffAdd = { fg = p.green_br, bg = p.green_bg },
DiffChange = { bg = p.yellow_bg },
DiffDelete = { fg = p.accent, bg = p.accent_bg },
DiffText = { fg = p.yellow_br, bg = p.surface_alt },
-- --------------------------------------------------------------- gitsigns
GitSignsAdd = { fg = p.green },
GitSignsChange = { fg = p.yellow },
GitSignsDelete = { fg = p.accent },
GitSignsAddNr = { fg = p.green },
GitSignsChangeNr = { fg = p.yellow },
GitSignsDeleteNr = { fg = p.accent },
GitSignsAddLn = { bg = p.green_bg },
GitSignsChangeLn = { bg = p.yellow_bg },
GitSignsDeleteLn = { bg = p.accent_bg },
GitSignsCurrentLineBlame = { fg = p.faint, italic = true },
-- --------------------------------------------------------------- blink.cmp
BlinkCmpMenu = { fg = p.subtext, bg = p.surface },
BlinkCmpMenuBorder = { fg = p.accent, bg = p.surface },
BlinkCmpMenuSelection = { fg = p.ink, bg = p.accent, bold = true },
BlinkCmpScrollBarThumb = { bg = p.accent },
BlinkCmpScrollBarGutter = { bg = p.surface_alt },
BlinkCmpLabel = { fg = p.subtext },
BlinkCmpLabelDeprecated = { fg = p.muted, strikethrough = true },
BlinkCmpLabelMatch = { fg = p.accent, bold = true },
BlinkCmpLabelDetail = { fg = p.muted },
BlinkCmpLabelDescription = { fg = p.muted },
BlinkCmpKind = { fg = p.blue_br },
BlinkCmpSource = { fg = p.faint },
BlinkCmpDoc = { fg = p.subtext, bg = p.surface },
BlinkCmpDocBorder = { fg = p.accent, bg = p.surface },
BlinkCmpDocSeparator = { fg = p.outline, bg = p.surface },
BlinkCmpSignatureHelp = { fg = p.subtext, bg = p.surface },
BlinkCmpSignatureHelpBorder = { fg = p.accent, bg = p.surface },
BlinkCmpSignatureHelpActiveParameter = { fg = p.ink, bg = p.accent, bold = true },
BlinkCmpGhostText = { fg = p.faint, italic = true },
-- --------------------------------------------------------------- which-key
WhichKey = { fg = p.accent, bold = true },
WhichKeyGroup = { fg = p.text, bold = true },
WhichKeyDesc = { fg = p.subtext },
WhichKeySeparator = { fg = p.faint },
WhichKeyFloat = { bg = p.surface },
WhichKeyBorder = { fg = p.accent, bg = p.surface },
WhichKeyTitle = { fg = p.ink, bg = p.accent, bold = true },
WhichKeyValue = { fg = p.muted },
-- ------------------------------------------------------------------- mini
MiniIconsRed = { fg = p.accent },
MiniIconsOrange = { fg = p.accent_soft },
MiniIconsYellow = { fg = p.yellow },
MiniIconsGreen = { fg = p.green },
MiniIconsCyan = { fg = p.cyan },
MiniIconsBlue = { fg = p.blue_br },
MiniIconsPurple = { fg = p.magenta },
MiniIconsGrey = { fg = p.subtext },
MiniStatuslineModeNormal = { fg = p.ink, bg = p.text, bold = true },
MiniStatuslineModeInsert = { fg = p.ink, bg = p.accent, bold = true },
MiniStatuslineModeVisual = { fg = p.ink, bg = p.accent_soft, bold = true },
MiniStatuslineModeReplace = { fg = p.ink, bg = p.yellow, bold = true },
MiniStatuslineModeCommand = { fg = p.ink, bg = p.subtext, bold = true },
MiniStatuslineModeOther = { fg = p.ink, bg = p.cyan, bold = true },
MiniStatuslineDevinfo = { fg = p.subtext, bg = p.surface_alt },
MiniStatuslineFilename = { fg = p.subtext, bg = p.surface },
MiniStatuslineInactive = { fg = p.muted, bg = p.mantle },
MiniPickBorder = { fg = p.accent, bg = p.surface },
MiniPickMatchCurrent = { fg = p.ink, bg = p.accent },
MiniPickMatchRanges = { fg = p.accent, bold = true },
MiniPickPrompt = { fg = p.accent, bg = p.surface, bold = true },
-- ------------------------------------------------------- render-markdown
-- Only H1 gets the crimson bar. Deeper headings step down through greys so
-- a document has one focal point, the same way a panel does.
RenderMarkdownH1Bg = { fg = p.ink, bg = p.accent, bold = true },
RenderMarkdownH2Bg = { fg = p.ink, bg = p.text, bold = true },
RenderMarkdownH3Bg = { fg = p.text, bg = p.overlay, bold = true },
RenderMarkdownH4Bg = { fg = p.subtext, bg = p.surface_alt },
RenderMarkdownH5Bg = { fg = p.subtext, bg = p.surface },
RenderMarkdownH6Bg = { fg = p.muted, bg = p.surface },
RenderMarkdownCode = { bg = p.mantle },
RenderMarkdownCodeInline = { fg = p.green, bg = p.surface },
RenderMarkdownBullet = { fg = p.accent },
RenderMarkdownQuote = { fg = p.outline },
RenderMarkdownDash = { fg = p.outline },
RenderMarkdownLink = { fg = p.cyan },
RenderMarkdownTableHead = { fg = p.accent },
RenderMarkdownTableRow = { fg = p.muted },
RenderMarkdownSuccess = { fg = p.green },
RenderMarkdownInfo = { fg = p.blue_br },
RenderMarkdownHint = { fg = p.cyan },
RenderMarkdownWarn = { fg = p.yellow },
RenderMarkdownError = { fg = p.accent },
-- --------------------------------------------------------------- misc plugins
ToggleTerm1FloatBorder = { fg = p.accent, bg = p.surface },
MasonHeader = { fg = p.ink, bg = p.accent, bold = true },
MasonHighlight = { fg = p.accent },
MasonHighlightBlock = { fg = p.ink, bg = p.accent },
MasonHighlightBlockBold = { fg = p.ink, bg = p.accent, bold = true },
MasonMuted = { fg = p.muted },
MasonMutedBlock = { fg = p.subtext, bg = p.surface_alt },
MasonError = { fg = p.accent },
NvimTreeNormal = { fg = p.subtext, bg = p.mantle },
NvimTreeRootFolder = { fg = p.accent, bold = true },
NvimTreeFolderIcon = { fg = p.subtext },
NvimTreeOpenedFile = { fg = p.text, bold = true },
NvimTreeGitDirty = { fg = p.yellow },
NvimTreeGitNew = { fg = p.green },
NvimTreeGitDeleted = { fg = p.accent },
NvimTreeIndentMarker = { fg = p.surface_alt },
NvimTreeWinSeparator = { fg = p.ink, bg = p.mantle },
})
end
-- Lualine theme. Mode is the only place the bar carries hue, and it is the
-- accent in the modes where you can actually change the buffer.
function M.lualine()
local outer = function(c) return { fg = p.ink, bg = c, gui = "bold" } end
local mid = { fg = p.subtext, bg = p.surface_alt }
local inner = { fg = p.muted, bg = p.surface }
return {
normal = { a = outer(p.text), b = mid, c = inner },
insert = { a = outer(p.accent), b = mid, c = inner },
visual = { a = outer(p.accent_soft), b = mid, c = inner },
replace = { a = outer(p.yellow), b = mid, c = inner },
command = { a = outer(p.subtext), b = mid, c = inner },
terminal = { a = outer(p.cyan), b = mid, c = inner },
inactive = {
a = { fg = p.muted, bg = p.mantle },
b = { fg = p.muted, bg = p.mantle },
c = { fg = p.faint, bg = p.mantle },
},
}
end
return M