GNU Emacs 31.1 shipped on August 24, 2026, and the two changes developers actually care about are long overdue: automatic tree-sitter grammar installation and a rewritten flex completion engine. Neovim has had native tree-sitter since 2021. Helix was built tree-sitter-first from day one. Emacs users have been manually configuring grammar sources, running compile steps, and wiring up modes by hand for three years. That ends with 31.1.
Tree-Sitter Grammars, Finally Automatic
The new treesit-auto-install-grammar setting is the feature most Emacs developers have been waiting for. Set it to 'always and Emacs fetches and compiles missing grammars automatically when you open a file. Set it to 'ask and it prompts you first. Previously, setting up tree-sitter required configuring treesit-language-source-alist manually, running treesit-install-language-grammar for each language, and adding conditionals throughout your init file. A fresh machine could take thirty minutes just to get tree-sitter working. According to Mastering Emacs’s full 31.1 breakdown, this is the treesit-auto third-party package experience — moved into Emacs core where it belongs.
;; One line replaces thirty minutes of manual setup
(setq treesit-auto-install-grammar 'always)
Built-in grammar sources now ship for TypeScript, Rust, TOML, YAML, and Dockerfile. Open any of those file types and Emacs handles the rest. The community consensus: this should have been in Emacs 29 when tree-sitter support first landed.
One caveat worth knowing: auto-installed grammars are not segregated by CPU architecture. If you sync your Emacs directory across machines — via Dropbox, dotfiles repo, or shared home directory — an x86_64 grammar binary will conflict with an arm64 one under the same filename. Developers sharing configs across architectures should use 'ask-dir to install grammars in machine-specific locations instead.
A Completion Engine That Actually Works
The flex completion algorithm was completely rewritten. The previous version had a ranking problem that bordered on absurd: searching for “scope” would surface dos-codepage above elisp-scope-* functions — unrelated results ranked higher than directly relevant matches. The rewrite fixes this. Results now rank accurately, and elisp-scope-* functions appear where you expect them.
Beyond ranking, the completion buffer now opens immediately when you invoke the minibuffer and updates in real-time as you type. Arrow-key navigation through candidates works, and RET correctly selects items you’ve moved with M-<UP>/M-<DOWN>. These defaults bring vanilla Emacs closer to what Corfu and Vertico users have taken for granted. If you’ve been running external completion frameworks purely because built-in Emacs completion was broken, 31.1 gives you reason to reconsider.
;; Explicitly enable the new live-update defaults
(setq completion-eager-display 'auto
completion-eager-update 'auto)
Terminal and Daily Workflow Improvements
Terminal mouse support is now on by default. xterm-mouse-mode activates automatically in compatible terminals, meaning clicks, scrolling, and clipboard operations work over SSH without any init file configuration. Child frames also work on TTY frames now, so packages like Corfu can render pop-up completions in terminal Emacs. The term buffer correctly renders full-screen TUI applications — htop no longer looks broken.
The grep and xref buffers gained editable modes. Press e in a grep results buffer, make your edits, save — and those changes apply across all matched files simultaneously. For developers who do bulk renames or refactors through search results, this removes a step that previously required additional packages. Alongside this, a new user-lisp/ directory auto-compiles any .el files you drop into it — a cleaner way to organize configuration beyond a monolithic init.el. For more on how the developer tooling landscape is shifting, see our coverage of the JetBrains 2026 developer survey.
On the housekeeping side: the old unexec dumper is gone, legacy ctags is replaced by Universal Ctags, Org mode is at v9.8, and Unicode 17.0 support is in. Window layout gets new rotation commands (window-layout-rotate-clockwise, window-layout-transpose) and the split-width-threshold default dropped from 160 to 150 characters — more sensible automatic splitting on modern widescreen setups. Full details in Linux Compatible’s feature breakdown.
Key Takeaways
- Tree-sitter grammar auto-install (
treesit-auto-install-grammar) eliminates the #1 setup friction for modern Emacs modes — TypeScript, Rust, TOML, YAML, and Dockerfile grammars ship built-in - The flex completion rewrite fixes genuinely broken ranking; vanilla Emacs completion is now usable without third-party packages for most workflows
- Terminal mouse support is on by default — SSH users get clicks and scrolling with zero configuration
- Editable grep and xref buffers enable bulk file changes directly from search results, no extra packages needed
- Developers syncing configs across x86_64 and arm64 machines should use
'ask-dirfor grammar installation to avoid binary conflicts













