nvim-lspconfig é um repositório "somente dados", que fornece configurações básicas e padrão do cliente Nvim LSP para vários servidores LSP.
Veja a documentação para todas as configurações ou :help lspconfig-all do Nvim.
:help lsp ), relate-o ao núcleo do Neovim. git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig
npm i -g pyright require ' lspconfig ' . pyright . setup {}:help lspconfig-all . nvim main.py
:checkhealth lsp para ver o status ou solucionar problemas. Leia :help lspconfig para obter detalhes. Leia :help lspconfig-all para obter a lista completa de detalhes específicos do servidor. Para servidores que não estão em seu $PATH (por exemplo, jdtls , elixirls ), você deve definir manualmente o parâmetro cmd ao chamar setup() .
O Nvim define algumas opções e mapeamentos padrão quando um buffer é anexado ao LSP (consulte :help lsp-config ). Em particular:
'tagfunc'<C-]> e outros comandos de tag.'omnifunc'<CX><CO> no modo Inserir. Para o preenchimento automático , é necessário um plugin de preenchimento automático.'formatexpr'gq .K mapeia para vim.lsp.buf.hover() no modo Normal.[d e ]d mapeiam para vim.diagnostic.goto_prev() e vim.diagnostic.goto_next() , respectivamente.<CW>d mapeia para vim.diagnostic.open_float() . Personalização adicional pode ser obtida usando o evento de comando automático LspAttach . O evento de comando automático LspDetach pode ser usado para "limpar" mapeamentos se um buffer for desconectado de um servidor LSP. Consulte :h LspAttach e :h LspDetach para obter detalhes e exemplos. Veja :h lsp-buf para detalhes sobre outras funções LSP.
Opções de configuração adicionais podem ser fornecidas para cada servidor LSP passando argumentos para a função setup . Veja :h lspconfig-setup para detalhes. Exemplo:
local lspconfig = require ( ' lspconfig ' )
lspconfig . rust_analyzer . setup {
-- Server-specific settings. See `:help lspconfig-setup`
settings = {
[ ' rust-analyzer ' ] = {},
},
}Os motivos mais comuns pelos quais um servidor de idioma não inicia ou se conecta são:
cmd definido no módulo Lua de cada servidor a partir da linha de comando e ver se o servidor de linguagem é iniciado. Se o cmd for um nome de executável em vez de um caminho absoluto para o executável, verifique se ele está no seu caminho.:set ft? mostra o tipo de arquivo e não um valor vazio..git , mas cada servidor define a configuração raiz no arquivo lua. Consulte doc/configs.md ou a fonte para obter a lista de diretórios raiz.capabilities para cada setup {} se quiser que eles entrem em vigor.setup {} duas vezes para o mesmo servidor . A segunda chamada para setup {} substituirá a primeira. Se você encontrou um bug na funcionalidade LSP, relate-o ao núcleo do Neovim.
Antes de relatar um bug, verifique seus logs e a saída de :LspInfo . Adicione o seguinte ao seu init.vim para ativar o registro:
vim . lsp . set_log_level ( " debug " )Tente executar o servidor de idiomas e abra o log com:
:LspLog
Na maioria das vezes, o motivo da falha está presente nos logs.
:LspInfo (alias obsoleto para :che lspconfig ) mostra o status dos servidores de idiomas ativos e configurados.:LspStart <config_name> Inicia o nome do servidor solicitado. Só será iniciado com êxito se o comando detectar um diretório raiz correspondente à configuração atual. Passe autostart = false para sua chamada .setup{} para um servidor de linguagem se desejar iniciar clientes somente com este comando. O padrão é todos os servidores que correspondem ao tipo de arquivo de buffer atual.:LspStop <client_id> O padrão é parar todos os clientes de buffer.:LspRestart <client_id> O padrão é reiniciar todos os clientes de buffer. Se um servidor de idioma estiver faltando em configs.md, contribuir com uma nova configuração para ele ajudará outras pessoas, especialmente se o servidor exigir configuração especial. Siga estas etapas:
lua/lspconfig/configs/SERVER_NAME.lua .Para publicar um lançamento:
Colaboradores do Neovim com direitos autorais. Todos os direitos reservados.
nvim-lspconfig está licenciado sob os termos da licença Apache 2.0.
Veja LICENSE.md