GNU Emacs NEWS -- history of user-visible changes. Copyright (C) 2021 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. If possible, use 'M-x report-emacs-bug'. This file is about changes in Emacs version 29. See file HISTORY for a list of GNU Emacs versions and release dates. See files NEWS.28, NEWS.27, ..., NEWS.18, and NEWS.1-17 for changes in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing 'C-u C-h C-n'. Temporary note: +++ indicates that all relevant manuals in doc/ have been updated. --- means no change in the manuals is needed. When you add a new item, use the appropriate mark if you are sure it applies, and please also update docstrings as needed. * Installation Changes in Emacs 29.1 * Startup Changes in Emacs 29.1 +++ ** Emacs now has a --fingerprint option. This will output a string identifying the current Emacs build. +++ ** New hook 'after-pdump-load-hook'. This is run at the end of the Emacs startup process, and it meant to be used to reinitialize structures that would normally be done at load time. * Changes in Emacs 29.1 ** Help --- *** Jumping to function/variable source now saves mark before moving point. Jumping to source from "*Help*" buffer moves the point when the source buffer is already open. Now, the old point is pushed to mark ring. * Editing Changes in Emacs 29.1 --- ** Indentation of 'cl-flet' and 'cl-labels' has changed. These forms now indent like this: (cl-flet ((bla (x) (* x x))) (bla 42)) This change also affects 'cl-macrolet', 'cl-flet*' and 'cl-symbol-macrolet'. +++ ** New user option 'translate-upper-case-key-bindings'. This can be set to nil to inhibit translating upper case keys to lower case keys. +++ ** New command 'ensure-empty-lines'. This command increases (or decreases) the number of empty lines before point. --- *** Improved mouse behavior with auto-scrolling modes. When clicking inside the `scroll-margin' or `hscroll-margin' region the point is now moved only when releasing the mouse button. This no longer results in a bogus selection, unless the mouse has been effectively dragged. +++ ** 'kill-ring-max' now defaults to 120. --- ** New user option 'yank-menu-max-items'. Customize this option to limit the amount of entries in the menu "Edit->Paste from Kill Menu". The default is 60. * Changes in Specialized Modes and Packages in Emacs 29.1 ** image-dired --- *** New command for the thumbnail buffer. The new command 'image-dired-unmark-all-marks' has been added with a binding in the menu. --- *** info-look specs can now be expanded at run time instead of a load time. The new ':doc-spec-function' element can be used to compute the ':doc-spec' element when the user asks for info on that particular mode (instead of at load time). ** subr-x +++ *** New macro 'with-memoization' provides a very primitive form of memoization ** ansi-color.el --- *** Support for ANSI 256-color and 24-bit colors. 256-color and 24-bit color codes are now handled by ANSI color filters and displayed with the specified color. ** term-mode --- *** Support for ANSI 256-color and 24-bit colors, italic and other fonts. Term-mode can now display 256-color and 24-bit color codes. It can also handle ANSI codes for faint, italic and blinking text, displaying it with new 'ansi-term-faint/italic/slow-blinking/fast-blinking' faces. ** Xref *** 'project-find-file' and 'project-or-external-find-file' now accept a prefix argument which is interpreted to mean "include all files". * New Modes and Packages in Emacs 29.1 +++ ** New mode 'erts-mode'. This mode is used to edit files geared towards testing actions in Emacs buffers, like indentation and the like. The new ert function 'ert-test-erts-file' is used to parse these files. * Incompatible Lisp Changes in Emacs 29.1 --- ** The 'inhibit-changing-match-data' variable is now obsolete. Instead, functions like 'string-match' and 'looking-at' now take an optional 'inhibit-modify' argument. --- ** 'gnus-define-keys' is now obsolete. Use 'define-keymap' instead. --- ** MozRepl has been removed from js.el. MozRepl was removed from Firefox in 2017, so this code doesn't work with recent versions of Firefox. * Lisp Changes in Emacs 29.1 +++ ** :keys in 'menu-item' can now be a function. If so, it is called whenever the menu is computed, and can be used to calculate the keys dynamically. +++ ** New major mode 'clean-mode'. This is a new major mode meant for debugging. It kills absolutely all local variables and removes overlays and text properties. +++ ** 'kill-all-local-variables' can now kill all local variables. If given the new optional KILL-PERMANENT argument, also kill permanent local variables. +++ ** Third 'mapconcat' argument 'separator' is now optional. An explicit nil always meant the empty string, now it can be left out. --- ** Themes can now be made obsolete. Using 'make-obsolete' on a theme is now supported. This will make 'load-theme' issue a warning when loading the theme. +++ ** New function 'define-keymap'. This function allows defining a number of keystrokes with one form. +++ ** New macro 'defvar-keymap'. This macro allows defining keymap variables more conveniently. * Changes in Emacs 29.1 on Non-Free Operating Systems ---------------------------------------------------------------------- This file is part of GNU Emacs. GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . Local variables: coding: utf-8 mode: outline paragraph-separate: "[ ]*$" end: