Closed cxwx closed 2 months ago
@cxwx
您是怎样配置 source
和 nvim-cmp
的,可以复现吗
source
在nvim-cmp
下面entry.lua
下面
local cmp_opts = self:get_completion_item().cmp or {}
local vim_item = {
word = word,
abbr = abbr,
kind = cmp_opts.kind_text or types.lsp.CompletionItemKind[self:get_kind()] or types.lsp.CompletionItemKind[1],
kind_hl_group = cmp_opts.kind_hl_group,
menu = menu,
dup = self:get_completion_item().dup or 1,
}
要想改变返回的 kind_text 似乎是要加上 cmp.kind_text 选项。
@cxwx
cmp 如何才能支持多行补全?
现在其实是支持多行的了,但是在 cmp 的提示列表中会把换行符用 <\n>
折叠起来成一行。
当您在 cmp 的选中预览时,cmp 的文档窗口则会显示完整的补全
只是显示的为 “text” 能使用 lspkind 就更好了
刚更新了,添加了 FittenCode
的类型提示;
lspkind
也是支持的了,只需在 symbol_map
中添加 FittenCode
与相应图标的映射即可。
感谢回复: 1,似乎多行补全和所用的语言还有点关系,对python可以实现多行补全,这应是cmp本身的问题, 2,我的理解 FittenCode 的返回cmp的table 里头必须加上定义 return {..., cmp= {kind_text = "自定义新的类型"}}, 否则将识别为通用的text,simbol_map 也只能匹配为text的图标 比如 codeium 返回值中
return {
type = 1,
documentation = {
kind = "markdown",
value = table.concat({
"```" .. vim.api.nvim_buf_get_option(0, "filetype"),
label,
"```",
}, "\n"),
},
label = label,
insertText = label,
textEdit = {
newText = label,
insert = range,
replace = range,
},
cmp = { -- this line set type Codeium
kind_text = "Codeium",
kind_hl_group = "CmpItemKindCodeium",
},
codeium_completion_id = comp.completion.completionId,
}
@cxwx
自定义类型就是 FittenCode
,在之前的 commit 里添加了,您用最新的 commit 应该就可以了
感谢
@cxwx 您客气了
inline 使用没有问题,但是与 codeium.vim 是互相冲突的,二者都用 virtual text 模式, 故改用 cmp 插件,但似乎没法使用cmp触发