What is different about Emacs 30?
Here’s a list of the most important changes in Emacs 30 as compared to Emacs 29. The full list is too long to fit here, but can be read in the Emacs NEWS file by typing C-h n inside Emacs.
- Native compilation is now enabled by default. When Emacs is built on a machine with ‘
libgccjit’, this will improve Emacs performance in many typical workloads. - Emacs has been ported to the Android operating system. See the file
java/INSTALLin the Emacs source distribution for details on how to build it. - New user option
trusted-contentto allow potentially dangerous Emacs features which could execute arbitrary Lisp code. Use this variable to list files and directories whose contents Emacs should trust, thus allowing those potentially dangerous features when those files are visited. - Numerous performance improvements, for example in parsing JSON, reading data from subprocesses, handling output from Eshell and in Shell mode, X selection requests, remote files, and so on.
- Native JSON support is now always available; libjansson is no longer used.
- New major modes based on the tree-sitter library library for editing Elixir, HEEx, HTML, Lua, and PHP.
- Support for the EditorConfig standard has been added, an editor-neutral way to provide directory local (project-wide) settings. It is enabled via a new global minor mode
editorconfig-modewhich makes Emacs obey the.editorconfigfiles. - Support for touchscreens has been improved. On systems that understand them (at present X, Android, PGTK, and MS-Windows), many touch screen gestures are now implemented and translated into mouse or gesture events, and support for tapping tool bar buttons and opening menus has been added.
- Tool bar tweaks. The new minor mode
window-tool-bar-modeprovides a per-window toolbar. Toolbars can be placed on the bottom of a frame by setting thetool-bar-positionvariable on all window systems but GNUStep and macOS. - The ‘
which-key’ package from GNU ELPA is now included in Emacs. After enabling the minor mode modewhich-key-mode, if you enter C-x and wait for one second, the minibuffer will expand with all available key bindings that follow C-x (or as many as space allows). - New global minor mode
kill-ring-deindent-mode. When enabled, text being saved to the kill ring will be de-indented by the column number at its start. - New minor mode
visual-wrap-prefix-mode. Unlike M-q, the indentation only happens on display, and doesn’t change the buffer text in any way. - Automatic regeneration of TAGS files using the new global minor mode
etags-regen-mode. - Improved warnings from the byte-code compiler to aid Lisp developers.
- Support for underline colors on TTY frames.