Hoje eu quero mostrar como uso o LSP (Language Server Protocol) para poder programar ou escrever artigos.
Ele tem várias funcionalidades que facilita no desenvolvimento como diagnosticar erros, formatar conforme sua configuração, renomear variáveis, and so on.
Para isso eu utilizo os plugins Lsp-config e Lsp-installer. O lsp-config traz todas essas possibilidades, já o lsp-installer eu utilizo para instalar esses servidores de modo mais fácil.
lsp-installer
Aqui é mais tranquilo, pois, teve uma atualização onde ele pode ser chamado de um modo simples e basta informar a auto-instalação e depois fazer o lsp enxergar esses servidores e pronto!
automatic_installation = true,
native servers = require 'nvim-lsp-installer.servers'
Lsp-config
on_attach
Definição
Callback referred to as when attaching to a buffer. Primarily used to arrange keymaps when
config.keymaps
is empty. The buffer quantity is handed as the primary argument.Callback chamado ao anexar a um buffer. Usado principalmente para configurar keymaps quando
config.keymaps
está vazio. O número do buffer é passado como o primeiro argumento.
De início eu configuro o on_attach, em minhas palavras é o responsável por executar os comandos. Nesse (carinha) eu uso apenas a configuração padrão recomendada na documentação.
handlers
Definição
lsp-handlers are capabilities with particular signatures which can be designed to deal with responses and notifications from LSP servers.
lsp-handlers são funções com assinaturas especiais projetadas para lidar com respostas e notificações de servidores LSP.
Em segundo eu configuro o handlers, e nas minhas palavras você pode alterar a resposta do lsp. Nesse merchandise eu não altero muito por não entender ainda.
Aqui é um exemplo onde ele retira os erros que aparecem flutuando no editor, mas você pode passar para uma linguagem ou para todas.
vim.lsp.start_client {
..., -- Different configuration omitted.
handlers = {
["textDocument/publishDiagnostics"] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, {
-- Disable virtual_text
virtual_text = false,
}
},
}
setup
Definição
lspconfig
consists of a set of language server configurations. Every configuration exposes asetup {}
metamethod
which makes it straightforward to instantly use the default configuration or selectively override the defaults.setup {}
is the first interface by which customers work together withlspconfig
.‘lspconfig’ consiste em uma coleção de configurações de servidor de linguagem. Cada configuração expõe um
setup {}
‘metamethod’ que torna mais fácil usar diretamente a configuração padrão ou substituir seletivamente os padrões. ‘setup {}’ é a interface principal pela qual os usuários interagem com ‘lspconfig’.
Nesse ponto é mais tranquilo, aqui você precisa apenas passar o setup da linguagem e adicionar os itens anteriores. Caso exact definir a rota como é preciso em sumneko_lua dentre outras opções.
O diagnóstico é feito informando o servidor responsável que você instalou ou vai instalar.
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
on_attach = on_attach(),
capabilities = capabilities,
handlers = lsp_handlers
}
finish
Dependendo da linguagem escolhida você deve ter uma configuração para ver as vantagens, como em Ruby é preciso ter um Gemfile
com o servidor solargraph instalado para funcionar e disponibilizar o diagnóstico, hover, formatter, and so on.
Obs.: eu fiz esse teste e mesmo já passando o on_attach
, o capabilities
e o handlers
dentro do lspconfig na imagem acima eu tenho que passar nas configurações de cada linguagem para ficar tudo funcional.
lspconfig.solargraph.setup {
on_attach = on_attach,
capabilities = capabilities,
handlers = lsp_handlers,
}
Como disse nos demais publish eu ainda estou aprendendo e posso errar, mas com o passar do tempo quero aprender mais e compartilhar!