LSP (Language Server Protocol)

Usando LSP para desenvolver

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 …


This content originally appeared on DEV Community and was authored by Everton Lopes

Usando LSP para desenvolver

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, etc.

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,

  local servers = require 'nvim-lsp-installer.servers'

Lsp-config

on_attach

Definição

Callback called when attaching to a buffer. Mainly used to set up keymaps when config.keymaps is empty. The buffer number is passed as the first 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 functions with special signatures that are designed to handle 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 item 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 {
..., -- Other 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 collection of language server configurations. Each configuration exposes a setup {} metamethod which makes it easy to directly use the default configuration or selectively override the defaults. setup {} is the primary interface by which users interact with lspconfig.

'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 precise 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
  }
end

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, etc.

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 post eu ainda estou aprendendo e posso errar, mas com o passar do tempo quero aprender mais e compartilhar!


This content originally appeared on DEV Community and was authored by Everton Lopes


Print Share Comment Cite Upload Translate Updates
APA

Everton Lopes | Sciencx (2022-06-12T20:29:23+00:00) LSP (Language Server Protocol). Retrieved from https://www.scien.cx/2022/06/12/lsp-language-server-protocol/

MLA
" » LSP (Language Server Protocol)." Everton Lopes | Sciencx - Sunday June 12, 2022, https://www.scien.cx/2022/06/12/lsp-language-server-protocol/
HARVARD
Everton Lopes | Sciencx Sunday June 12, 2022 » LSP (Language Server Protocol)., viewed ,<https://www.scien.cx/2022/06/12/lsp-language-server-protocol/>
VANCOUVER
Everton Lopes | Sciencx - » LSP (Language Server Protocol). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/06/12/lsp-language-server-protocol/
CHICAGO
" » LSP (Language Server Protocol)." Everton Lopes | Sciencx - Accessed . https://www.scien.cx/2022/06/12/lsp-language-server-protocol/
IEEE
" » LSP (Language Server Protocol)." Everton Lopes | Sciencx [Online]. Available: https://www.scien.cx/2022/06/12/lsp-language-server-protocol/. [Accessed: ]
rf:citation
» LSP (Language Server Protocol) | Everton Lopes | Sciencx | https://www.scien.cx/2022/06/12/lsp-language-server-protocol/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.