Ambiente de Desenvolvimento para Common Lisp: Emacs + SBCL + CMUCL + Quicklisp + utilitários. Parte VII: configuração do SLIME e do Company

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):

Conteúdo do arquivo ~/.emacs.d/config/slime_config.el

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):

Conteúdo do arquivo ~/.emacs.d/config/company_config.el

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):

Parte do arquivo ~/.emacs

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:

Retângulo vermelho: os modos Lisp, SLIME e Company estão ativos e funcionando!

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:

Código e terminal SBCL

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:

Note o HÍFEM antes do M-x

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:

Note que agora o terminal é do 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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *