#lua #neovim
Вопрос:
Я пытался настроить автозаполнение для языков с 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
Когда я пытаюсь их протестировать, я могу получать только проверки предупреждений и подсветку синтаксиса. Я не могу заставить автозаполнение работать. Кто-нибудь знает, нужно ли мне включить параметр или переменную среды, чтобы включить это?
Комментарии:
1. какой плагин автозаполнения вы используете?
2. Завершение-nvim устарел, пожалуйста, используйте вместо него nvim-cmp .
Ответ №1:
да. ваша проблема в том, что вы call
подключаетесь вместо 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
, хорошо? и расскажите мне о результатах