luozhiya / fittencode.nvim

Fitten Code AI Programming Assistant for Neovim
49 stars 8 forks source link

source 模式 使用cmp补全 有成功的先例吗? #23

Closed cxwx closed 2 months ago

cxwx commented 2 months ago

inline 使用没有问题,但是与 codeium.vim 是互相冲突的,二者都用 virtual text 模式, 故改用 cmp 插件,但似乎没法使用cmp触发

luozhiya commented 2 months ago

@cxwx

您是怎样配置 sourcenvim-cmp 的,可以复现吗

Preview source

GIF 4-19-2024 5-34-18 PM

cxwx commented 2 months ago

1:是我搞错了,fitten code 已经成功补全,只是显示的为 “text”,

截屏2024-04-19 22 35 47

如果能使用 lspkind 就更好了

2: cmp 如何才能支持多行补全?

cxwx commented 2 months ago

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 选项。

luozhiya commented 2 months ago

@cxwx

cmp 如何才能支持多行补全?

现在其实是支持多行的了,但是在 cmp 的提示列表中会把换行符用 <\n> 折叠起来成一行。 image

当您在 cmp 的选中预览时,cmp 的文档窗口则会显示完整的补全 image

只是显示的为 “text” 能使用 lspkind 就更好了

刚更新了,添加了 FittenCode 的类型提示; lspkind 也是支持的了,只需在 symbol_map 中添加 FittenCode 与相应图标的映射即可。

cxwx commented 2 months ago

感谢回复: 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,
    }
luozhiya commented 2 months ago

@cxwx

自定义类型就是 FittenCode,在之前的 commit 里添加了,您用最新的 commit 应该就可以了

https://github.com/luozhiya/fittencode.nvim/pull/25/files#diff-243370d50a9fcd8f6312d57425402b70e4eccb3569aa0a761224990255dd6444R448

cxwx commented 2 months ago

感谢

luozhiya commented 2 months ago

@cxwx 您客气了