Emacs 31.1 automatiza gramáticas do Tree-sitter e retira o unexec
4 min de leitura

O GNU Emacs 31.1 foi lançado em 24 de agosto de 2026, e a mudança com mais
chance de alterar um dia de trabalho é pequena: as gramáticas do Tree-sitter
agora podem se instalar sozinhas. O anúncio da versão, publicado na lista de
e-mails info-gnu-emacs por Sean Whitton, remete ao etc/NEWS para os detalhes
em vez de listá-los, então o formato desta versão vem dos resumos publicados em
paralelo: um sistema de completação reescrito, um conjunto de comandos para
disposições de janelas e a remoção do dumper unexec, obsoleto desde o Emacs 27.
As gramáticas do Tree-sitter deixam de ser trabalho manual
O Emacs 31.1 acrescenta uma opção treesit-auto-install-grammar que instala
automaticamente as gramáticas do Tree-sitter, segundo o resumo da versão feito
pelo Mastering Emacs. Até agora, usar um modo maior do Tree-sitter exigia
obter a gramática por conta própria e manter sua versão alinhada com a que o
modo esperava; uma divergência produzia erros que pareciam falhas do editor e
não um problema de dependência. O Mastering Emacs descreve a nova opção como
algo que elimina essa gestão manual de versões.
A navegação com Tree-sitter também fica mais completa. O mesmo resumo cita
treesit-forward-sexp-list e treesit-forward-list para mover entre nós
estruturais, além de um comando treesit-explore para inspecionar a árvore de
análise - a forma prática de descobrir por que um modo destaca ou indenta algo
de maneira inesperada.
O sistema de completação foi reescrito
O buffer Completions já pode aparecer de imediato, em vez de esperar ser
solicitado, e o algoritmo de correspondência flex foi reescrito, segundo o
Mastering Emacs e a cobertura da versão candidata pelo Linux Compatible. As
categorias de completação podem herdar umas das outras, e RET agora seleciona
o candidato escolhido com M-UP ou M-DOWN.
O Linux Compatible documenta ainda que minibuffer-visible-completions ganha um
valor up-down: "Você também pode usar minibuffer-visible-completions com o
novo valor 'up-down' para navegar pelas completações independentemente do
minibuffer." Quem montou esse comportamento a partir de pacotes de terceiros
deve perguntar, depois de atualizar, quais deles ficaram redundantes.
As disposições de janelas ganham comandos próprios
Reorganizar uma disposição de janelas exigia apagar e dividir janelas de novo à mão. O Emacs 31.1 acrescenta comandos que agem sobre a disposição inteira, listados pelo Mastering Emacs:
| Comando | O que faz |
|---|---|
window-layout-rotate-clockwise | Gira a disposição no sentido horário |
window-layout-counterclockwise | Gira no sentido contrário |
window-layout-flip-topdown | Inverte a disposição na vertical |
window-layout-flip-leftright | Inverte na horizontal |
window-layout-transpose | Transpõe linhas e colunas |
other-window-backward (C-x O) | Vai para a janela anterior |
O split-window também pode ressuscitar uma janela apagada, segundo a mesma
fonte. Duas mudanças voltadas ao terminal acompanham essas: xterm-mouse-mode
fica ativado por padrão nos terminais que o suportam, e os child frames agora
funcionam em frames TTY.
O que saiu, e uma correção que não chegou
O dumper unexec saiu. Estava obsoleto desde o Emacs 27, e o Mastering Emacs
chama sua remoção de "o fim de uma era" - algo relevante principalmente para
quem compila o Emacs por conta própria ou mantém o empacotamento dele. O
programa ctags embutido também foi removido, com o Universal Ctags como
substituto previsto.
Dois itens não entraram nesta versão. O trabalho no coletor de lixo foi adiado para o Emacs 32, segundo o Mastering Emacs. E o Linux Compatible relata que uma vulnerabilidade nas formas abreviadas de símbolos do Emacs Lisp tem mitigação nesta linha de versões, mas que a resolução completa fica para a versão 32 - vale saber se você abre arquivos Elisp de fontes que não controla.
O suporte a Unicode passa para a versão 17.0, com novos métodos de entrada para grego politônico, tifinagh, línguas iroquesas do norte como mohawk e oneida, variantes do birmanês e siríaco.
O que isso significa para desenvolvedores
A mudança do Tree-sitter é a primeira em que agir. Se a sua configuração carrega
código próprio de instalação de gramática ou um commit de gramática fixado,
teste treesit-auto-install-grammar em uma configuração descartável antes de
apagar qualquer coisa - e então remova o que ela tornar dispensável. O mesmo
vale para a completação: o buffer Completions imediato e o novo motor flex se
sobrepõem ao que vários pacotes populares existem para oferecer, e rodar o 31.1
por uma tarde com uma configuração deliberadamente mínima é o jeito mais rápido
de descobrir o que você não precisa mais carregar.
Se você compila o Emacs a partir do código-fonte ou mantém um pacote para uma
distribuição, leia a remoção do unexec como uma mudança no sistema de
compilação e revise a sua receita antes que os usuários atualizem. A remoção do
ctags merece o mesmo tratamento: qualquer coisa que chame o binário embutido
vai precisar do Universal Ctags instalado.
Dois motivos pedem paciência em vez de pressa. O próprio anúncio delega o
detalhe ao etc/NEWS, então C-h n dentro de um 31.1 recém-compilado é a
lista com autoridade - não um resumo, este incluído. E como a correção das
formas abreviadas de símbolos só chega no Emacs 32, a parte de segurança segue
incompleta; se você abre Elisp não confiável com frequência, isso é motivo para
continuar atento em vez de considerar o assunto encerrado.
Sources
- Emacs 31.1 released - GNU info-gnu-emacs mailing list
- What's New in Emacs 31.1? - Mastering Emacs
- GNU Emacs 31.1 RC1: Completion Overhaul, Window Commands and Unicode 17.0 - Linux Compatible