1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00
emacs/etc/NEWS
2024-08-24 12:49:48 +02:00

367 lines
13 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 buffers 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: