Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 12, 2022 08:29 pm GMT

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 vrias funcionalidades que facilita no desenvolvimento como diagnosticar erros, formatar conforme sua configurao, renomear variveis, 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 fcil.

lsp-installer

Aqui mais tranquilo, pois, teve uma atualizao onde ele pode ser chamado de um modo simples e basta informar a auto-instalao e depois fazer o lsp enxergar esses servidores e pronto!

  automatic_installation = true,  local servers = require 'nvim-lsp-installer.servers'

Lsp-config

on_attach

Definio

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 nmero do buffer passado como o primeiro argumento.

De incio eu configuro o on_attach, em minhas palavras o responsvel por executar os comandos. Nesse (carinha) eu uso apenas a configurao padro recomendada na documentao.

handlers

Definio

lsp-handlers are functions with special signatures that are designed to handle responses and notifications from LSP servers.

lsp-handlers so funes com assinaturas especiais projetadas para lidar com respostas e notificaes de servidores LSP.

Em segundo eu configuro o handlers, e nas minhas palavras voc pode alterar a resposta do lsp. Nesse item eu no altero muito por no 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

Definio

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 coleo de configuraes de servidor de linguagem. Cada configurao expe um setup {} 'metamethod' que torna mais fcil usar diretamente a configurao padro ou substituir seletivamente os padres. 'setup {}' a interface principal pela qual os usurios 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 opes.

O diagnstico feito informando o servidor responsvel 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 configurao para ver as vantagens, como em Ruby preciso ter um Gemfile com o servidor solargraph instalado para funcionar e disponibilizar o diagnstico, 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 configuraes 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!


Original Link: https://dev.to/evertonlopesc/lsp-language-server-protocol-478f

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To