
Emacs 31 is around the corner: the changes this user already runs daily
Emacs 31 is still in pre-release, but Rahul M. Juliato has been building it from the emacs-31 branch and master for months. His rundown covers tree-sitter setup, an experimental Markdown mode and long-standing terminal bugs now fixed.
Emacs 31 has not been released yet — it is still in its pre-release phase — but Rahul M. Juliato has been building it from the emacs-31 branch and from master and using it as his daily editor for months. In a post published on 18 June 2026, he walks through the changes he has already folded into his configuration, all of which work without any external package.
Tree-sitter without the ceremony
The change the author values most concerns tree-sitter. Previously, enabling a *-ts-mode meant populating treesit-language-source-alist by hand, calling treesit-install-language-grammar and hoping the local toolchain could compile the grammar. In Emacs 31, setting treesit-auto-install-grammar to 'always makes Emacs offer to fetch and build a missing grammar, while treesit-enabled-modes set to t switches major modes that have a tree-sitter variant over to it.
Grammar sources for languages such as TypeScript, TSX, Rust, TOML, YAML and Dockerfile now live inside the modes themselves, which removes a long list of configuration lines. One caveat: auto-installed grammars are not separated by architecture, so an x86_64 shared object and an arm64 one land under the same name if a configuration directory is shared between machines.
markdown-ts-mode and editable xref buffers
Emacs 31 ships an experimental markdown-ts-mode, which Juliato started after a proposal to emacs-devel in early 2025 and now co-authors with Stéphane Marks. Keybindings follow Org conventions, fenced code blocks are fontified using the real major mode for their language — including Emacs Lisp — and images render inline in the buffer. It is not yet wired to auto-mode-alist, so users have to load it manually. Eglot can also render LSP documentation with the same mode.
Version control and navigation get smaller but practical additions. Editable xref buffers arrived through bug#80616: after the author proposed an xref-export-to-grep command in March 2026, maintainer Dmitry Gutov argued for editing in place instead, and xref-edit-mode was pushed a few days later. vc-dir-auto-hide-up-to-date hides up-to-date files when a vc-dir buffer refreshes, and vc-allow-rewriting-published-history acknowledges workflows such as Jujutsu and force-pushing feature branches.
Smaller knobs and two long-standing bugs
The post lists a long tail of quality-of-life options: kill-region-dwim, so that C-w with no active region deletes a word instead of signalling an error; view-lossage-auto-refresh, which turns C-h l into a live view of recent keystrokes; ielm-history-file-name, which persists IELM input history; and native-comp-async-on-battery-power, which stops background native compilation on battery power.
Two fixes matter beyond configuration. The term and ansi-term backends no longer swallow lines when full-screen, curses-based programs redraw, which makes tools such as htop or nethack usable inside Emacs again. The release also ships several Modus 5 themes, including variants optimised for deuteranopia and tritanopia. Juliato notes that names and defaults may still shift before the final release, and treats the list as a preview of what is coming.
SiTech — AI-powered web development
We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.