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 ** Emacs now installs the ".pdmp" file using a unique fingerprint in the name. The file is typically installed using a file name akin to "...dir/libexec/emacs/29.1/x86_64-pc-linux-gnu/emacs-.pdmp". If a constant file name is required, the file can be renamed to "emacs.pdmp", and Emacs will find it during startup anyway. * 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 ** Terminal Emacs --- *** Emacs will now use 24-bit colors on terminals that support "Tc" capability. This is in addition to previously-supported ways of discovering 24-bit color support: either via the "RGB" or "setf24" capabilities, or if the 'COLORTERM' environment variable is set to the value "truecolor". ** Emoji +++ *** Emacs now has several new methods for inserting Emojis. The Emoji commands are under the new 'C-x 8 e' prefix. +++ *** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i'). This command guides you through various Emoji categories and combinations in a graphical menu system. +++ *** New command 'emoji-search' (bound to 'C-x 8 e s'). This command lets you search for Emojis based on names. +++ *** New command 'emoji-list' (bound to 'C-x 8 e l'). This command lists all Emojis (categorized by themes) in a special buffer and lets you choose one of them. --- *** New command 'emoji-recent' (bound to 'C-x 8 e r'). This command lets you choose among the Emojis you have recently inserted. +++ *** New command 'emoji-describe' (bound to 'C-x 8 e d'). This command will tell you the name of the Emoji at point. (This command also works for non-Emoji characters.) ** Help --- *** 'C-h b' uses outlining by default. Set 'describe-bindings-outline' to nil to get the old behaviour. --- *** 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. +++ *** New key bindings in "*Help*" buffers: 'n' and 'p'. These will take you (respectively) to the next and previous "page". --- *** 'describe-char' now also outputs the name of emoji combinations. ** Outline Minor Mode +++ *** New user option 'outline-minor-mode-use-buttons'. If non-nil, Outline Minor Mode will use buttons to hide/show outlines in addition to the ellipsis. Default nil. --- *** New user option 'outline-minor-mode-buttons'. This is a list of pairs of open/close strings used to display buttons. +++ ** Support for the WebP image format. This support is built by default when the libwebp library is available. To disable it, use the '--without-webp' configure flag. Image specifiers can now use ':type webp'. ** Windows +++ *** 'display-buffer' now can set up the body size of the chosen window. For example, a 'display-buffer-alist' entry of '(window-width . (body-columns . 40))' will make the body of the chosen window 40 columns wide. For the height use 'window-height' in combination with 'body-lines'. ** Better detection of text suspiciously reordered on display. The function 'bidi-find-overridden-directionality' has been extended to detect reordering effects produced by embeddings and isolates (started by directional formatting control characters such as RLO and LRI). The new command 'highlight-confusing-reorderings' finds and highlights segments of buffer text whose reordering for display is suspicious and could be malicious. ** Emacs server and client changes +++ *** New command-line option '-r' for emacsclient. With this command-line option, Emacs reuses an existing graphical client frame if one exists; otherwise it creates a new frame. +++ *** 'server-stop-automatically' can be used to automatically stop the server. The Emacs server will be automatically stopped when certain conditions are met. The conditions are given by the argument, which can be 'empty', 'delete-frame' or 'kill-terminal'. * 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 number of entries in the menu "Edit->Paste from Kill Menu". The default is 60. ** show-paren-mode +++ *** New user option 'show-paren-context-when-offscreen'. When non-nil, if the point is in a closing delimiter and the opening delimiter is offscreen, shows some context around the opening delimiter in the echo area. Default nil. ** Comint +++ *** 'comint-term-environment' is now aware of connection-local variables. The user option 'comint-terminfo-terminal' and variable 'system-uses-terminfo' can now be set as connection-local variables to change the terminal used on a remote host. * Changes in Specialized Modes and Packages in Emacs 29.1 ** Info --- *** New command 'Info-goto-node-web' and key binding 'G'. This will take you to the gnu.org web server's version of the current info node. This command only works for the Emacs and Emacs Lisp manuals. ** vc --- *** 'C-x v v' on an unregistered file will now use the most specific backend. Previously, if you had an SVN-covered "~/" directory, and a Git-covered directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file "~/foo/bar/zot" would register it in the SVN repository in "~/" instead of in the Git repository in "~/foo/bar". This makes this command consistent with 'vc-responsible-backend'. ** Message --- *** New user option 'mml-attach-file-at-the-end'. If non-nil, 'C-c C-a' will put attached files at the end of the message. --- *** Message Mode now supports image yanking. ** HTML Mode --- *** HTML Mode now supports "text/html" and "image/*" yanking. ** Texinfo Mode --- *** 'texinfo-mode' now has a specialised 'narrow-to-defun' definition. It narrows to the current node. ** eww/shr +++ *** New user option 'shr-use-xwidgets-for-media'. If non-nil (and Emacs has been built with support for xwidgets), display