Skip to content
Tech AI Wire
Dev Stack

Emacs 31.1 automatiza gramáticas do Tree-sitter e retira o unexec

4 min de leitura

Por Tech AI Wire Team

The GNU gnu-head logo drawn in ink outline with a red arrow curving down into it

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:

ComandoO que faz
window-layout-rotate-clockwiseGira a disposição no sentido horário
window-layout-counterclockwiseGira no sentido contrário
window-layout-flip-topdownInverte a disposição na vertical
window-layout-flip-leftrightInverte na horizontal
window-layout-transposeTranspõ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

  1. Emacs 31.1 released - GNU info-gnu-emacs mailing list
  2. What's New in Emacs 31.1? - Mastering Emacs
  3. GNU Emacs 31.1 RC1: Completion Overhaul, Window Commands and Unicode 17.0 - Linux Compatible