Skip to content

Commit e8efb7f

Browse files
committed
refactor(lspsaga): use own kind table instead of catppuccin custom_kind
Drop the dependency on catppuccin's lsp_saga integration and define the kind icons from the repo's own icons util (icons.kind / icons.type) with LspKind* highlight groups, matching upstream ayamir/nvimdots. Icons are now stable across colorschemes (only their LspKind* colors follow the active theme via gen_lspkind_hl), and no catppuccin require is needed, so the colorscheme guard added previously is no longer required.
1 parent c7fdd44 commit e8efb7f

1 file changed

Lines changed: 40 additions & 5 deletions

File tree

lua/modules/configs/completion/lspsaga.lua

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
return function()
22
require("modules.utils").gen_lspkind_hl()
33

4-
-- Only align kind icons to catppuccin's set when catppuccin is the active
5-
-- colorscheme; other themes fall back to Lspsaga's built-in icons untouched.
6-
local has_catppuccin = (vim.g.colors_name or ""):find("catppuccin") ~= nil
7-
84
local icons = {
95
cmp = require("modules.utils.icons").get("cmp", true),
106
diagnostics = require("modules.utils.icons").get("diagnostics", true),
@@ -154,7 +150,46 @@ return function()
154150
actionfix = icons.ui.Spell,
155151
lines = { "", "", "", "", "" },
156152
imp_sign = icons.kind.Implementation,
157-
kind = has_catppuccin and require("catppuccin.groups.integrations.lsp_saga").custom_kind() or nil,
153+
kind = {
154+
-- Kind
155+
Class = { icons.kind.Class, "LspKindClass" },
156+
Constant = { icons.kind.Constant, "LspKindConstant" },
157+
Constructor = { icons.kind.Constructor, "LspKindConstructor" },
158+
Enum = { icons.kind.Enum, "LspKindEnum" },
159+
EnumMember = { icons.kind.EnumMember, "LspKindEnumMember" },
160+
Event = { icons.kind.Event, "LspKindEvent" },
161+
Field = { icons.kind.Field, "LspKindField" },
162+
File = { icons.kind.File, "LspKindFile" },
163+
Function = { icons.kind.Function, "LspKindFunction" },
164+
Interface = { icons.kind.Interface, "LspKindInterface" },
165+
Key = { icons.kind.Keyword, "LspKindKey" },
166+
Method = { icons.kind.Method, "LspKindMethod" },
167+
Module = { icons.kind.Module, "LspKindModule" },
168+
Namespace = { icons.kind.Namespace, "LspKindNamespace" },
169+
Operator = { icons.kind.Operator, "LspKindOperator" },
170+
Package = { icons.kind.Package, "LspKindPackage" },
171+
Property = { icons.kind.Property, "LspKindProperty" },
172+
Struct = { icons.kind.Struct, "LspKindStruct" },
173+
TypeParameter = { icons.kind.TypeParameter, "LspKindTypeParameter" },
174+
Variable = { icons.kind.Variable, "LspKindVariable" },
175+
-- Type
176+
Array = { icons.type.Array, "LspKindArray" },
177+
Boolean = { icons.type.Boolean, "LspKindBoolean" },
178+
Null = { icons.type.Null, "LspKindNull" },
179+
Number = { icons.type.Number, "LspKindNumber" },
180+
Object = { icons.type.Object, "LspKindObject" },
181+
String = { icons.type.String, "LspKindString" },
182+
-- ccls-specific icons.
183+
TypeAlias = { icons.kind.TypeAlias, "LspKindTypeAlias" },
184+
Parameter = { icons.kind.Parameter, "LspKindParameter" },
185+
StaticMethod = { icons.kind.StaticMethod, "LspKindStaticMethod" },
186+
-- Microsoft-specific icons.
187+
Text = { icons.kind.Text, "LspKindText" },
188+
Snippet = { icons.kind.Snippet, "LspKindSnippet" },
189+
Folder = { icons.kind.Folder, "LspKindFolder" },
190+
Unit = { icons.kind.Unit, "LspKindUnit" },
191+
Value = { icons.kind.Value, "LspKindValue" },
192+
},
158193
},
159194
-- Scrolling Keymaps: https://nvimdev.github.io/lspsaga/misc/#scrolling-keymaps
160195
scroll_preview = {

0 commit comments

Comments
 (0)