Introdução
De idas e vindas acabei trabalhando muito tempo com elixir no VS Code. Até então tudo certo. De um tempo para cá, comecei a sentir lentidão no autocomplete e dificuldade de utilizar algumas ferramentas. Isso me levou a fazer essa pergunta no twitter / X.
Trabalhei a alguns anos atrás com VIM e no geral gostava dele, mas achava complexo a configuração e customização. Com isso em mente fui ver como funcionava a configuração do Nvim
que muitos comentaram na thread. Fui atras também de um jeito fácil de configurar e encontrei o Astronvim
que me interessou bastante. Tendo isso em mãos, iniciei o setup.
Configuração
- NeoVim
- AstroNvim
- Elixir-tools
Instalações
Requisitos
Requisitos | Versão |
---|---|
neovim | 0.9.5+ |
NeoVim
A versão estável atual do Nvim é o 0.7.x, porém, Astronvim pede 0.8+. Isso buscando das versões não estáveis. Tendei diretamente pelo repositório unstable e instalar a versão nighty
. Porém, me trouxe muitos problemas que não tive paciência para ir em frente. Foi então que me lembrei do gerencias asdf e por ele ficou mais simples
Repositório: https://github.com/richin13/asdf-neovim
asdf plugin add neovim
asdf install neovim 0.10.0
Feito. Nvim instalado. Porém, se você rodar o nvim agora, ele vai receber o erro
No version is set for command nvim
Precisamos definir a versão padrão para a ferramenta. Caso não exista, precisamos criar o arquivo no root do seu usuário. ~/.tool-versions
e adicione no conteúdo a ferramenta e a versão
neovim 0.10.0
Com isso, podemos rodar o comando e abrir a ferramenta
nvim
AstroNvim
Astro é uma ferramenta que une extensibilidade com gerenciamento de plugin utilizando o Mason. Ele facilita a adição de novos plugins e o gerenciamento de dependencia e configurações, por isso decidi usar ele.
E tive uma boa impressão. ele é simples de rodar, basta seguir o guia oficial e tudo funciona como deveria.
A configuração é simples
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim # baixa e coloca a configuração no local certo
rm -rf ~/.config/nvim/.git # Remove o .git do que foi clonado
⚠ Uma atualização no AstroLSP está quebrando o template acima. Para resolver isso simplesmente substitui pela configuração da doc. Caso você tenha feito alguma alteração, vai precisar fazer um de para =D
Depois disso, bastou rodar o nvim e ele já saiu funcionando
nvim
Você pode receber o erro que não encontrou o compilador C. Para isso precisa ter as dependêmncias base. No linux temos o pacote essencial.
sudo apt-get install build-essential
Depois disso só abrir novamente o nvim
e o erro deve ter sumido.
Ao abrir, ele começa a instalar as dependências automaticamente. Lindo demais <3
Talvez você tenha problema com a font e icones. Para isso, instale a nerdfonts no link.
Eu instalei a font 0xProto Nerd Font e ficou bom para mim =D
Elixir-tools
Precisei adicionar suporte a linguagem. Para minha surpresa, foi fácil. Existe esse plugin para NeoVim
que da suporte a tudo que precisamos do elixir o Elixir-tools
Para isso precisamos acessar a pasta de configuração do nvim
, mesmo lugar que fizemos o clone do astro.
cd ~/.config/nvim
Essa é a estrutura das configurações
.nvim/
├─ lua/
│ ├─ plugins/
│ │ ├─ ...
│ ├─ community.lua
│ ├─ lazy_setup.lua
│ ├─ polish.lua
.neoconf.json
.stylua.toml
init.lua
lazy-lock.json
neovim.yml
README.md
selene.toml
De forma visual, fica fácil saber onde adicionar um plugin, não? Criei um novo arquivo dentro de .nvim/lua/plugins/
e o chamei de elixir.lua
.
Dentro da documentação do plugin elixir-tools, tem uma seção de configuração usando o lazy.nvim, resolvi usar ele.
Dentro do arquivo .nvim/lua/plugins/elixir.lua
adicionei a configuração para o lazy e um retorno para devolver a configuração
return {
"elixir-tools/elixir-tools.nvim",
version = "*",
event = { "BufReadPre", "BufNewFile" },
config = function()
local elixir = require("elixir")
local elixirls = require("elixir.elixirls")
elixir.setup {
nextls = {enable = false},
credo = {},
elixirls = {
enable = true,
settings = elixirls.settings {
dialyzerEnabled = false,
enableTestLenses = true,
},
on_attach = function(client, bufnr)
vim.keymap.set("n", "<space>fp", ":ElixirFromPipe<cr>", { buffer = true, noremap = true })
vim.keymap.set("n", "<space>tp", ":ElixirToPipe<cr>", { buffer = true, noremap = true })
vim.keymap.set("v", "<space>em", ":ElixirExpandMacro<cr>", { buffer = true, noremap = true })
end,
}
}
end,
dependencies = {
"nvim-lua/plenary.nvim",
},
}
feito isso, fechei meu nvim e abri ele diretamente em um arquivo elixir.
nvim some_place/file.ex
Ele começou a perguntar se queria instalar o
- nextls
- Credo Language Server
- ElixirLS
E eu, so aceitei. Feito isso, tudo funcionou bem.
Problemas
- Versão do NeoVim 0,11+ me dava muitos warnings que resolvi voltando para a 0.10 usando asdf
- Tive problema de permissão também, resolvido mudando a permissão da pasta.
Agradecimentos
A thread teve vários comentários e queria agradecer todos que participaram <3
Top comments (0)