Neovim - 如何从 nvim-lspconfig + nvim-cmp 中过滤文本片段

Mas*_*ano 6 neovim nvim-lspconfig

我正在使用带有自动完成功能的 NeoVim,使用 nvim-lspconfig 和 nvim-cmp。我想知道是否有一种方法可以从自动完成菜单中过滤掉文本源,以便它们不会出现在上下文菜单中:

在此输入图像描述

小智 6

在您的设置中,由于这个合并的 PR,您可以排除任何类型的建议。

发生的情况是,每当对 nvim_lsp 提出建议时,就会调用函数“entry_filter”。如果条目是“文本”类型,我们将返回 false。

local cmp = require "cmp"

cmp.setup {
    ...
    sources = cmp.config.sources({
        -- Dont suggest Text from nvm_lsp
        { name = "nvim_lsp",
            entry_filter = function(entry, ctx)
                return require("cmp").lsp.CompletionItemKind.Text ~= entry:get_kind()
            end },
    })
}
Run Code Online (Sandbox Code Playgroud)


dom*_*lip 1

查看nvim-cmp 源列表并删除您不想使用的任何源。文本很可能来自buffer

cmp.setup({
    ...
    sources = cmp.config.sources({
        { name = 'buffer' }, -- <- remove
        { name = 'nvim_lsp' },
        ...
    })

})
Run Code Online (Sandbox Code Playgroud)

  • 有一个 [nvim-cmp PR](https://github.com/hrsh7th/nvim-cmp/pull/1067) 允许基于“kind”进行过滤。 (4认同)