UFA!, chegamos no último artigo desta série. Se você acompanhou e seguiu as instruções de todos os artigos anteriores, está com o Emacs, o SBCL, o CMUCL e o Quicklisp instalados e configurados. O único problema é que todas as peças do quebra-cabeça estão separadas, isoladas. É preciso juntar tudo e fazer o Emacs utilizar as implementações Common Lisp instaladas. E como fazer isso? Com o SLIME: The Superior Lisp Interaction Mode for Emacs!
O Emacs tem nativamente um Lisp Mode, mas é um pouco limitado. O SLIME agrega inúmeras funcionalidades ao Lisp Mode do Emacs como: avaliação de código, compilação, expansão de macros, documentação online, autocomplete de nomes, indentação automática e muito mais.
Além do SLIME também configuraremos o Company Mode, que é um framework para autocomplete de texto, ou seja: enquanto vamos digitando o código Lisp, o Company abre uma “janela” com sugestões.
1. Configuração do SLIME
Já fizemos a instalação do SLIME quando instalamos e configuramos o Emacs. A única coisa a fazer é configurar o SLIME para usar nossas distribuições Common Lisp.
Crie o arquivo slime_config.el
dentro do diretório ~/.emacs.d/config
, com o seguinte conteúdo (ou faça o download do arquivo pronto):
Uma breve explicação sobre as configurações:
- A linha 6 pode ser utilizada se tivermos apenas uma única implementação Lisp no computador: ela informa ao SLIME exatamente qual a implementação utilizar. Como temos duas implementações (SBCL e CMUCL) vamos deixar essa linha comentada e trabalhar com as linhas 9 a 12;
- Linhas 9-11: configuramquais implementações Lisp estão disponíveis para o SLIME/Emacs, indicando o path até o executável;
- Linha 12: configura qual implementação será a padrão do SLIME/Emacs;
- As demais linhas (15 até 36) carregam o SLIME e ajustam diversas configurações que eu gosto (eu tento mimetizar o comportamento do SLIME do Portacle, mudando as funcionalidades que eu não gosto desse ambiente).
2. Configuração do Company
Também já fizemos a instalação do Company quando instalamos e configuramos o Emacs. A única coisa a fazer é configurar o Company com o SLIME.
Crie o arquivo company_config.el
dentro do diretório ~/.emacs.d/config
, com o seguinte conteúdo (ou faça o download do arquivo pronto):
Basicamente o que essas configurações fazem é carregar o Company durante a inicialização do Emacs e fazer uma espécie de “integração” entre o Company e SLIME.
3. Ativando as configurações do SLIME e do Company no Emacs
Até o momento nós apenas colocamos os 2 arquivos de configurações no diretório ~/.emacs.d/config
, mas não informamos ao Emacs para ler e ativar esses arquivos durante a inicialização. Para isso vamos fazer o seguinte acréscimo ao arquivo ~/.emacs
(antes das configurações automáticas que o Emacs incluiu ao final do arquivo):
Com isso instruímos o Emacs para ler e carregar as configurações do SLIME e do Company durante a inicialização.
4. Hora do teste!
Com tudo pronto, vamos testar nosso ambiente! Abra um arquivo Lisp no Emacs. Você verá algo como o seguinte:
Para abrir um terminal Lisp com o SLIME, basta digitarmos M-x slime
e teclar Enter:
Nesse momento o buffer do Emacs será dividido, como código e com o terminal Lisp, e a implementação padrão (definimos como a SBCL) será carregada:
Com o SLIME podemos carregar as funções definidas no código, por exemplo a função FATORIAL, e chamar essas funções diretamente no terminal, por exemplo, para calcular o fatorial de 30:
A implementação SBCL foi aberta porque na configuração do SLIME indicamos que seria a implementação padrão. Mas e se eu quiser escolher a CMUCL (ou qualquer outra que esteja instalada e configurada)? Nesse caso temos que digitar o comando M-- M-x slime
. Segure a tecla Meta (geralmente é a Alt) e, enquanto está segurando, tecle o hífem e depois o x, e depois escreva slime. Você deverá ver isso na barra de comandos do Emacs:
Ao teclar Enter o SLIME perguntará qual implementação Lisp carregar (lembre-se que no arquivo ~/.emacs.d/config/slime_config.el
configuramos a “cmucl” e a “sbcl”):
Eu posso escolher qualquer uma das implementações. Para usar a CMUCL, por exemplo, basta digitar “cmucl” e teclar Enter:
Agora o terminal Lisp será aberto com o CMUCL:
Além de todas as funcionalidades do SLIME você conta também com as funções de autocomplete do Company:
Agora você pode comemorar, pois está com o ambiente de desenvolvimento Common Lisp pronto. Ah, sim: é fundamental que você aprenda a usar o SLIME com eficiência.
5. Finalizando esta série de artigos
Apesar de você estar com um ambiente de desenvolvimento Common Lisp excelente e totalmente open-source, é claro que você pode configurar muitas outras coisas além das demonstradas nestes textos. Fizemos apenas uma configuração básica para você poder começar.
Como tempo você irá aprender a ajustar outras configurações para deixar o ambiente cada vez mais adequado às suas necessidades.
Com o tempo você verá que existem outras possibilidades além do SLIME, como o SLY ou o Roswell, e aprenderá a ajustar outras configurações e funcionalidades para deixar o ambiente cada vez mais adequado às suas necessidades.
Boa programação!
Este artigo foi publicado originalmente em 2021-10-18, no meu site pessoal: www.abrantes.pro.br.