GNU Emacs NEWS -- history of user-visible changes. Copyright (C) 2022-2024 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 31. See file HISTORY for a list of GNU Emacs versions and release dates. See files NEWS.30, NEWS.29, ..., 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 31.1 ** When using GCC 4 or later to build Emacs on 32-bit x86 systems, 'configure' now defaults to using the GCC options -mfpmath=sse (if the host system supports SSE2) or -fno-tree-sra (if not). These GCC options work around GCC bug 58416, which can cause Emacs to behave incorrectly in rare cases. * Startup Changes in Emacs 31.1 * Changes in Emacs 31.1 --- ** "find-func.el" commands now have history enabled. The 'find-function', 'find-library', 'find-face-definition', and 'find-variable' commands now allow retrieving previous input using the usual minibuffer history commands. Each command has a separate history. * Editing Changes in Emacs 31.1 * Changes in Specialized Modes and Packages in Emacs 31.1 ** Whitespace --- *** 'whitespace-cleanup' now adds missing newline at end of file. If 'whitespace-style' includes 'missing-newline-at-eof (which is the default), the 'whitespace-cleanup' function will now add the newline. ** Eshell --- *** New option 'eshell-command-async-buffer'. This option lets you tell 'eshell-command' how to respond if its output buffer is already in use by another invocation of 'eshell-command', much like 'async-shell-command-buffer' does for 'shell-command'. By default, this will prompt for confirmation before creating a new buffer when necessary. To restore the previous behavior, set this option to 'confirm-kill-process'. +++ *** 'eshell-execute-file' is now an interactive command. Interactively, this now prompts for a script file to execute. With the prefix argument, it will also insert any output into the current buffer at point. +++ *** 'eshell-command' and 'eshell-execute-file' can now set where stderr goes. These functions now take an optional ERROR-TARGET argument to control where to send the standard error output. See the "(eshell) Entry Points" node in the Eshell manual for more details. +++ *** Eshell's built-in "wait" command now accepts a timeout. By passing "-t" or "--timeout", you can specify a maximum time to wait for the processes to exit. Additionally, you can now wait for external processes by passing their PIDs. ** SHR +++ *** SHR now slices large images into rows. Sliced images allow for more intuitive scrolling up/down by letting you scroll past each slice, instead of jumping past the entire image. Previously, SHR sliced images when zoomed to their original size, no matter how large or small that was). Now, SHR slices any images taller than 'shr-sliced-image-height'. For more information, see the "(eww) Advanced" node in the EWW manual. --- *** You can now customize the image zoom levels to cycle through. By customizing 'shr-image-zoom-levels', you can change the list of zoom levels that SHR cycles through when calling 'shr-zoom-image'. ** Go-ts mode +++ *** New unit test commands. Three new commands are now available to run unit tests. The 'go-ts-mode-test-function-at-point' command runs the unit test at point. If a region is active, it runs all the unit tests under the region. It is bound to 'C-c C-t t' in 'go-ts-mode'. The 'go-ts-mode-test-this-file' command runs all unit tests in the current file. It is bound to 'C-c C-t f' in 'go-ts-mode'. The 'go-ts-mode-test-this-package' command runs all unit tests under the package of the current buffer. It is bound to 'C-c C-t p' in 'go-ts-mode'. The 'go-ts-mode-build-tags' variable is available to set a list of build tags for the test commands. ** Emacs Lisp mode --- *** Checkdoc no longer warns about missing footer lines in some cases. Emacs Lisp libraries have traditionally ended with a footer line (sometimes referred to as "terminating comment"). Their purpose was to easily detect files that had been truncated in transit on ancient and less reliable connections: ;; some-cool-package.el ends here 'checkdoc' will no longer warn if that line is missing for packages that explicitly only support Emacs 30.1 or later, as specified in the "Package-Requires" header. The reason for keeping the warning for packages that support earlier versions of Emacs is that package.el in those versions can't install packages where that line is missing. This change affects both 'M-x checkdoc' and the corresponding flymake backend. --- *** Checkdoc will now flag incorrect formatting in warnings. This affects calls to 'warn', 'lwarn', 'display-warning', and 'message-box'. --- *** The default of 'checkdoc-verb-check-experimental-flag' is now nil. In most cases, having it enabled leads to a large amount of false positives. ** DocView --- *** Dedicated buffer for plain text contents. When switching to the plain text contents with 'doc-view-open-text', DocView now creates a dedicated buffer to display it. 'C-c C-c' gets you back to real DocView buffer if it still exists. * New Modes and Packages in Emacs 31.1 * Incompatible Lisp Changes in Emacs 31.1 * Lisp Changes in Emacs 31.1 +++ *** Support interactive D-Bus authorization. A new ':authorizable t' parameter has been added to 'dbus-call-method' and 'dbus-call-method-asynchronously' to allow the user to interactively authorize the invoked D-Bus method (e.g., via polkit). * Changes in Emacs 31.1 on Non-Free Operating Systems --- ** Process execution has been optimized on Android. The run-time performance of subprocesses on recent Android releases where a userspace executable loader is required has been optimized on systems featuring Linux 3.5.0 and above. ---------------------------------------------------------------------- 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 mode: emacs-news paragraph-separate: "[ ]" end: