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 has been ported to the Haiku operating system. The configuration process should automatically detect and build for Haiku. There is also an optional window-system port to Haiku, which can be enabled by configuring Emacs with the option '--with-be-app', which will require the Haiku Application Kit development headers and a C++ compiler to be present on your system. If Emacs is not built with the option '--with-be-app', the resulting Emacs will only run in text-mode terminals. +++ ** Cairo drawing support has been enabled for Haiku builds. To enable Cairo support, ensure that the Cairo and FreeType development files are present on your system, and configure Emacs with '--with-be-cairo'. --- ** Double buffering is now enabled on the Haiku operating system. Unlike X, there is no compile-time option to enable or disable double-buffering. If you wish to disable double-buffering, change the frame parameter `inhibit-double-buffering' instead. ** 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 ** 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. * 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 ** 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