mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-27 07:37:33 +00:00
367 lines
13 KiB
Plaintext
367 lines
13 KiB
Plaintext
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
|
||
|
||
** Changed GCC default options on 32-bit x86 systems.
|
||
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.
|
||
|
||
** Minibuffer and Completions
|
||
|
||
+++
|
||
*** New user option 'completion-pcm-leading-wildcard'.
|
||
This option configures how the partial-completion style does completion.
|
||
It defaults to nil, which preserves the existing behavior. When it is set
|
||
to t, the partial-completion style behaves more like the substring
|
||
style, in that a string being completed can match against a candidate
|
||
anywhere in the candidate string.
|
||
|
||
+++
|
||
*** 'completion-styles' now can contain lists of bindings.
|
||
In addition to being a symbol naming a completion style, an element of
|
||
'completion-styles' can now be a list of the form '(STYLE ((VARIABLE
|
||
VALUE) ...))' where STYLE is a symbol naming a completion style.
|
||
VARIABLE will be bound to VALUE (without evaluating it) while the style
|
||
is executing. This allows multiple references to the same style with
|
||
different values for completion-affecting variables like
|
||
'completion-pcm-leading-wildcard' or 'completion-ignore-case'. This also
|
||
applies for the styles configuration in 'completion-category-overrides'
|
||
and 'completion-category-defaults'.
|
||
|
||
** Windows
|
||
|
||
+++
|
||
*** New hook 'window-deletable-functions'.
|
||
This abnormal hook gives its client a way to save a window from getting
|
||
deleted implicitly by functions like 'kill-buffer', 'bury-buffer' and
|
||
'quit-restore-window'.
|
||
|
||
+++
|
||
*** New user option 'kill-buffer-quit-windows'.
|
||
This option has 'kill-buffer' call 'quit-restore-window' to handle the
|
||
further destiny of any window showing the buffer to be killed.
|
||
|
||
+++
|
||
*** New window parameter 'quit-restore-prev'.
|
||
This parameter is set up by 'display-buffer' when it detects that the
|
||
window used already has a 'quit-restore' parameter. Its presence gives
|
||
'quit-restore-window' a way to undo a sequence of buffer display
|
||
operations more intuitively.
|
||
|
||
+++
|
||
*** 'quit-restore-window' handles new values for BURY-OR-KILL argument.
|
||
The values 'killing' and 'burying' are like 'kill' and 'bury' but assume
|
||
that the actual killing or burying of the buffer is done by the caller.
|
||
|
||
+++
|
||
*** New user option 'quit-restore-window-no-switch'.
|
||
With this option set, 'quit-restore-window' will delete its window more
|
||
aggressively rather than switching to some other buffer in it.
|
||
|
||
** Frames
|
||
|
||
+++
|
||
*** New function 'frame-deletable-p'.
|
||
Calling this function before 'delete-frame' is useful to avoid that the
|
||
latter throws an error when the argument FRAME cannot be deleted.
|
||
|
||
** Tab Bars and Tab Lines
|
||
|
||
---
|
||
*** New abnormal hook 'tab-bar-auto-width-functions'.
|
||
This hook allows you to control which tab-bar tabs are auto-resized.
|
||
|
||
|
||
* Editing Changes in Emacs 31.1
|
||
|
||
** Internationalization
|
||
|
||
---
|
||
*** New language-environment and input method for Tifinagh.
|
||
The Tifinagh script is used to write the Berber languages.
|
||
|
||
---
|
||
** 'visual-wrap-prefix-mode' now supports variable-pitch fonts.
|
||
When using 'visual-wrap-prefix-mode' in buffers with variable-pitch
|
||
fonts, the wrapped text will now be lined up correctly so that it's
|
||
exactly below the text after the prefix on the first line.
|
||
|
||
|
||
* 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 user 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'.
|
||
|
||
** SHR
|
||
|
||
---
|
||
*** New user option 'shr-fill-text'.
|
||
When 'shr-fill-text' is non-nil (the default), SHR will fill text
|
||
according to the width of the window. If you customize it to nil, SHR
|
||
will leave the text as-is; in that case, EWW will automatically enable
|
||
'visual-line-mode' when displaying a page so that long lines are
|
||
visually wrapped at word boundaries.
|
||
|
||
** EWW
|
||
|
||
---
|
||
*** EWW now enables 'visual-wrap-prefix-mode' when 'shr-fill-text' is nil.
|
||
By default, 'shr-fill-text' is t, and EWW fills the text according to
|
||
the width of the window. If you customize 'shr-fill-text' to nil, EWW
|
||
will now automatically turn on 'visual-wrap-prefix-mode' in addition to
|
||
'visual-line-mode', so that long lines are wrapped at word boundaries
|
||
near window edge and the continuation lines are indented using prefixes
|
||
computed from surrounding context.
|
||
|
||
** 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' user option 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.
|
||
|
||
** Tramp
|
||
|
||
+++
|
||
*** Connection method "kubernetes" supports now optional namespace.
|
||
The host name for Kubernetes connections can be of kind
|
||
[CONTAINER.]POD[%NAMESPACE], in order to specify the namespace to be
|
||
used. This overrides the setting in 'tramp-kubernetes-namespace', if
|
||
any.
|
||
|
||
** Diff
|
||
|
||
---
|
||
*** New command 'diff-kill-ring-save'.
|
||
This command copies to the 'kill-ring' a region of text modified
|
||
according to diffs in the current buffer, but without applying the diffs
|
||
to the original text. If the selected range extends a hunk, the
|
||
command attempts to look up and copy the text in-between the hunks.
|
||
|
||
|
||
* New Modes and Packages in Emacs 31.1
|
||
|
||
|
||
* Incompatible Lisp Changes in Emacs 31.1
|
||
|
||
** The obsolete calling convention of 'error' has been removed.
|
||
That convention was: '(error &rest ARGS)'.
|
||
|
||
** The 'rx' category name 'chinese-two-byte' must now be spelled correctly.
|
||
An old alternative name (without the first 'e') has been removed.
|
||
|
||
|
||
* 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 (for example via polkit).
|
||
|
||
** The customization group 'wp' has been removed.
|
||
It has been obsolete since Emacs 26.1. Use the group 'text' instead.
|
||
|
||
** Tree-sitter changes
|
||
|
||
+++
|
||
*** Indirect buffers can have their own parser list.
|
||
Before, indirect buffers share their base buffer’s parser list and
|
||
parsers. Now they can have their own parser list.
|
||
|
||
+++
|
||
*** New variable 'treesit-language-remap-alist'.
|
||
This variable allows a user to remap one language into another, such
|
||
that creating a parser for language A actually creates a parser for
|
||
language B. By extension, any font-lock rules or indentation rules for
|
||
language A will be applied to language B instead.
|
||
|
||
This is useful for reusing font-lock rules and indentation rules of
|
||
language A for language B, when language B is a strict superset of
|
||
language A.
|
||
|
||
+++
|
||
** New optional BUFFER argument for 'string-pixel-width'.
|
||
If supplied, 'string-pixel-width' will use any face remappings from
|
||
BUFFER when computing the string's width.
|
||
|
||
+++
|
||
** 'date-to-time' now defaults to local time.
|
||
The function now assumes local time instead of Universal Time when
|
||
its argument lacks explicit time zone information. This has been the
|
||
de-facto behavior since Emacs 24 although documentation said otherwise.
|
||
Also, the fallback on 'timezone-make-date-arpa-standard' has been
|
||
removed because its supported date styles can be handled by
|
||
'parse-time-string'. To restore the previously documented behavior,
|
||
specify "+0000" or "Z" as the time zone in the argument.
|
||
|
||
|
||
* 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 <https://www.gnu.org/licenses/>.
|
||
|
||
|
||
Local variables:
|
||
coding: utf-8
|
||
mode: outline
|
||
mode: emacs-news
|
||
paragraph-separate: "[ ]"
|
||
end:
|