fix(blink): set kind to int, not string, if overriding

when sorting completion results, blink compares kinds, which can result
in an error if the kind is a string
This commit is contained in:
Stefan Boca 2024-12-11 11:01:24 -08:00
parent 475e3f32b8
commit 74ad771487
No known key found for this signature in database

View file

@ -107,7 +107,12 @@ return {
for _, provider in pairs(opts.sources.providers or {}) do
---@cast provider blink.cmp.SourceProviderConfig|{kind?:string}
if provider.kind then
require("blink.cmp.types").CompletionItemKind[provider.kind] = provider.kind
local CompletionItemKind = require("blink.cmp.types").CompletionItemKind
local kind_idx = #CompletionItemKind + 1
CompletionItemKind[kind_idx] = provider.kind
CompletionItemKind[provider.kind] = kind_idx
---@type fun(ctx: blink.cmp.Context, items: blink.cmp.CompletionItem[]): blink.cmp.CompletionItem[]
local transform_items = provider.transform_items
---@param ctx blink.cmp.Context
@ -115,7 +120,7 @@ return {
provider.transform_items = function(ctx, items)
items = transform_items and transform_items(ctx, items) or items
for _, item in ipairs(items) do
item.kind = provider.kind or item.kind
item.kind = kind_idx or item.kind
end
return items
end