我一直在尝试用neovim/nvim-lspconfig为语言设置自动补全功能
这是我到目前为止所拥有的代码:
set cot=menuone,noinsert shm+=c
let g:completion_matching_strategy_list = ['exact', 'substring', 'fuzzy']
nnoremap <leader>vd :lua vim.lsp.buf.definition()<CR>
nnoremap <leader>vi :lua vim.lsp.buf.implementation()<CR>
nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR>
nnoremap <leader>vrr :lua vim.lsp.buf.references()<CR>
nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR>
nnoremap <leader>vsd :lua vim.lsp.util.show_line_diagnostics(); vim.lsp.util.show_line_diagnostics()<CR>
command! -buffer -nargs=0 LspShowLineDiagnostics lua require'jumpLoc'.openLineDiagnostics()
nnoremap <buffer><silent> <C-h> <cmd>LspShowLineDiagnostics<CR>
:lua << EOF
local nvim_lsp = require('lspconfig')
local on_attach = function(_, bufnr)
require('completion').on_attach()
end
local servers = {'clangd', 'pyright', 'gopls'}
for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup {
on_attach = on_attach,
}
end
EOF当我尝试测试它们时,我只能得到警告检查和语法突出显示。我无法让自动完成功能工作。有没有人知道我是否需要启用一个设置或环境变量来启用它?
发布于 2021-10-13 10:09:38
嗯。你的问题是你call on_attach而不是returning it
这就是问题所在
local on_attach = function(_, bufnr)
require('completion').on_attach()
end将上面的代码更改为
local on_attach = function(_, bufnr)
return require('completion').on_attach
end还有这里:
nvim_lsp[lsp].setup {
on_attach = on_attach,
}你正在分析一个on_attach函数,你被禁止调用它,你是pass the function object
从completion-nvim文档(https://github.com/nvim-lua/completion-nvim#setup):
lua require'lspconfig'.pyls.setup{on_attach=require'completion'.on_attach}它们传递函数,而不是调用它。
试一下readme中的这个例子,好吗?告诉我结果
https://stackoverflow.com/questions/69422154
复制相似问题