4.3 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/INSTALL in the Emacs source distribution for details on how
to build it.
- New user option
trusted-content to 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-mode which makes Emacs
obey the .editorconfig files.
- 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-mode
provides a per-window toolbar. Toolbars can be placed on the bottom of
a frame by setting the tool-bar-position variable 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 mode
which-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.