mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-11 09:20:51 +00:00
f16064f6bc
* etc/NEWS: Delete announcement of eval-command-interactive-spec. * lisp/emacs-lisp/subr-x.el (eval-command-interactive-spec): Delete.
702 lines
24 KiB
Plaintext
702 lines
24 KiB
Plaintext
GNU Emacs NEWS -- history of user-visible changes.
|
||
|
||
Copyright (C) 2022-2023 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 30.
|
||
|
||
See file HISTORY for a list of GNU Emacs versions and release dates.
|
||
See files NEWS.29, NEWS.28, ..., 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 30.1
|
||
|
||
|
||
* Startup Changes in Emacs 30.1
|
||
|
||
|
||
* Changes in Emacs 30.1
|
||
|
||
** Help
|
||
|
||
*** 'describe-function' shows function inferred type when available.
|
||
For native compiled Lisp functions 'describe-function' prints (after
|
||
the signature) the automatically inferred function type as well.
|
||
|
||
---
|
||
** New user option 'describe-bindings-outline-rules'.
|
||
This user option controls outline visibility in the output buffer of
|
||
'describe-bindings' when 'describe-bindings-outline' in non-nil.
|
||
|
||
** X selection requests are now handled much faster and asynchronously.
|
||
This means it should be less necessary to disable the likes of
|
||
'select-active-regions' when Emacs is running over a slow network
|
||
connection.
|
||
|
||
** Emacs now updates invisible frames that are made visible by a compositor.
|
||
If an invisible or an iconified frame is shown to the user by the
|
||
compositing manager, Emacs will now redisplay such a frame even though
|
||
'frame-visible-p' returns nil or 'icon' for it. This can happen, for
|
||
example, as part of preview for iconified frames.
|
||
|
||
+++
|
||
** 'write-region-inhibit-fsync' now defaults to t in interactive mode,
|
||
as it has in batch mode since Emacs 24.
|
||
|
||
+++
|
||
** New user option 'remote-file-name-inhibit-delete-by-moving-to-trash'.
|
||
When non-nil, this option suppresses moving remote files to the local
|
||
trash when deleting. Default is nil.
|
||
|
||
---
|
||
** New user option 'remote-file-name-inhibit-auto-save'.
|
||
If this user option is non-nil, 'auto-save-mode' will not auto-save
|
||
remote buffers. The default is nil.
|
||
|
||
+++
|
||
** New user option 'yes-or-no-prompt'.
|
||
This allows the user to customize the prompt that is appended by
|
||
'yes-or-no-p' when asking questions. The default value is
|
||
"(yes or no) ".
|
||
|
||
---
|
||
** New face 'display-time-date-and-time'.
|
||
This is used for displaying the time and date components of
|
||
'display-time-mode'.
|
||
|
||
---
|
||
** New icon images for general use.
|
||
Several symbolic icons are added to "etc/images/symbols", including
|
||
plus, minus, check-mark, start, etc.
|
||
|
||
+++
|
||
** Tool bars can now be placed on the bottom on more systems.
|
||
The 'tool-bar-position' frame parameter can be set to 'bottom' on all
|
||
window systems other than Nextstep.
|
||
|
||
|
||
* Editing Changes in Emacs 30.1
|
||
|
||
---
|
||
** On X, Emacs now supports input methods which perform "string conversion".
|
||
This means an input method can now ask Emacs to delete text
|
||
surrounding point and replace it with something else, as well as query
|
||
Emacs for surrounding text. If your input method allows you to "undo"
|
||
mistaken compositions, this will now work as well.
|
||
|
||
---
|
||
** New command 'kill-matching-buffers-no-ask'.
|
||
This works like 'kill-matching-buffers', but without asking for
|
||
confirmation.
|
||
|
||
|
||
* Changes in Specialized Modes and Packages in Emacs 30.1
|
||
|
||
---
|
||
** Variable order and truncation can now be configured in 'gdb-many-windows'.
|
||
The new user option 'gdb-locals-table-row-config' allows users to
|
||
configure the order and max length of various properties in the local
|
||
variables buffer when using 'gdb-many-windows'.
|
||
|
||
By default, this user option is set to write the properties in the order:
|
||
name, type and value, where the name and type are truncated to 20
|
||
characters, and the value is truncated according to the value of
|
||
'gdb-locals-value-limit'.
|
||
|
||
If you want to get back the old behavior, set the user option to the value
|
||
|
||
(setopt gdb-locals-table-row-config
|
||
`((type . 0) (name . 0) (value . ,gdb-locals-value-limit)))
|
||
|
||
** Grep
|
||
|
||
*** New user option 'grep-use-headings'.
|
||
When non-nil, the output of Grep is split into sections, one for each
|
||
file, instead of having file names prefixed to each line. It is
|
||
equivalent to the "--heading" option of some tools such as 'git grep'
|
||
and 'rg'. The headings are displayed using the new 'grep-heading'
|
||
face.
|
||
|
||
** VC
|
||
|
||
---
|
||
*** New user option 'vc-git-shortlog-switches'.
|
||
This is a string or a list of strings that specifies the Git log
|
||
switches for shortlogs, such as the one produced by 'C-x v L'.
|
||
'vc-git-log-switches' is no longer used for shortlogs.
|
||
|
||
** Diff Mode
|
||
|
||
+++
|
||
*** 'diff-ignore-whitespace-hunk' can now be applied to all hunks.
|
||
When called with a non-nil prefix argument,
|
||
'diff-ignore-whitespace-hunk' now iterates over all the hunks in the
|
||
current diff, regenerating them without whitespace changes.
|
||
|
||
+++
|
||
*** New user option 'diff-ignore-whitespace-switches'.
|
||
This allows changing which type of whitespace changes are ignored when
|
||
regenerating hunks with 'diff-ignore-whitespace-hunk'. Defaults to
|
||
the previously hard-coded "-b".
|
||
|
||
** Buffer Selection
|
||
|
||
---
|
||
*** New user option 'bs-default-action-list'.
|
||
You can now configure how to display the "*buffer-selection*" buffer
|
||
using this new option. (Or set 'display-buffer-alist' directly.)
|
||
|
||
** Eshell
|
||
|
||
+++
|
||
*** New splice operator for Eshell dollar expansions.
|
||
Dollar expansions in Eshell now let you splice the elements of the
|
||
expansion in-place using '$@expr'. This makes it easier to fill lists
|
||
of arguments into a command, such as when defining aliases. For more
|
||
information, see the "(eshell) Dollars Expansion" node in the Eshell
|
||
manual.
|
||
|
||
+++
|
||
*** Eshell now supports negative numbers and ranges for indices.
|
||
Now, you can retrieve the last element of a list with '$my-list[-1]'
|
||
or get a sublist of elements 2 through 4 with '$my-list[2..5]'. For
|
||
more information, see the "(eshell) Dollars Expansion" node in the
|
||
Eshell manual.
|
||
|
||
---
|
||
*** Eshell now uses 'field' properties in its output.
|
||
In particular, this means that pressing the '<home>' key moves the
|
||
point to the beginning of your input, not the beginning of the whole
|
||
line. If you want to go back to the old behavior, add something like
|
||
this to your configuration:
|
||
|
||
(keymap-set eshell-mode-map "<home>" #'eshell-bol-ignoring-prompt)
|
||
|
||
---
|
||
*** You can now properly unload Eshell.
|
||
Calling '(unload-feature 'eshell)' no longer signals an error, and now
|
||
correctly unloads Eshell and all of its modules.
|
||
|
||
+++
|
||
*** 'eshell-read-aliases-list' is now an interactive command.
|
||
After manually editing 'eshell-aliases-file', you can use this command
|
||
to load the edited aliases.
|
||
|
||
+++
|
||
*** 'rgrep' is now a builtin command.
|
||
Running 'rgrep' in Eshell now uses the Emacs grep facility instead of
|
||
calling external rgrep.
|
||
|
||
** Shell Mode
|
||
|
||
+++
|
||
*** New user option 'shell-get-old-input-include-continuation-lines'.
|
||
When this user option is non-nil, 'shell-get-old-input' ('C-RET')
|
||
includes multiple shell "\" continuation lines from command output.
|
||
Default is nil.
|
||
|
||
** Prog Mode
|
||
|
||
+++
|
||
*** New command 'prog-fill-reindent-defun'.
|
||
This command either fills a single paragraph in a defun, such as a
|
||
docstring, or a comment, or (re)indents the surrounding defun if
|
||
point is not in a comment or a string. It is by default bound to
|
||
'M-q' in 'prog-mode' and all its descendants.
|
||
|
||
** Tramp
|
||
|
||
+++
|
||
*** New connection methods "toolbox" and "flatpak".
|
||
They allow accessing system containers provided by Toolbox or
|
||
sandboxes provided by Flatpak.
|
||
|
||
+++
|
||
*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share'.
|
||
The old name still exists as obsolete variable alias. This user
|
||
option controls now connection sharing for both ssh-based and
|
||
plink-based methods. It allows the values t, nil, and 'suppress'.
|
||
The latter suppresses also "ControlMaster" settings in the user's
|
||
"~/.ssh/config" file, or connection share configuration in PuTTY
|
||
sessions, respectively.
|
||
|
||
+++
|
||
*** New command 'tramp-cleanup-some-buffers'.
|
||
It allows to kill only selected remote buffers, controlled by user
|
||
option 'tramp-cleanup-some-buffers-hook'.
|
||
|
||
** EWW
|
||
|
||
+++
|
||
*** 'eww-open-file' can now display the file in a new buffer.
|
||
By default, the command reuses the "*eww*" buffer, but if called with
|
||
the new argument NEW-BUFFER non-nil, it will use a new buffer instead.
|
||
Interactively, invoke 'eww-open-file' with a prefix argument to
|
||
activate this behavior.
|
||
|
||
---
|
||
*** 'eww' URL or keyword prompt now has tab completion.
|
||
The interactive minibuffer prompt when invoking 'eww' now has support
|
||
for tab completion.
|
||
|
||
+++
|
||
*** 'eww' URL and keyword prompt now completes suggested URIs and bookmarks.
|
||
The interactive minibuffer prompt when invoking 'eww' now provides
|
||
completions from 'eww-suggest-uris'. 'eww-suggest-uris' now includes
|
||
bookmark URIs.
|
||
|
||
** go-ts-mode
|
||
|
||
+++
|
||
*** New command 'go-ts-mode-docstring'.
|
||
This command adds a docstring comment to the current defun. If a
|
||
comment already exists, point is only moved to the comment. It is
|
||
bound to 'C-c C-d' in 'go-ts-mode'.
|
||
|
||
** Man-mode
|
||
|
||
+++
|
||
*** New user option 'Man-prefer-synchronous-call'.
|
||
When this is non-nil, call the 'man' program synchronously rather than
|
||
asynchronously (which is the default behavior).
|
||
|
||
** DocView
|
||
|
||
---
|
||
*** New face 'doc-view-svg-face'.
|
||
This replaces 'doc-view-svg-foreground' and 'doc-view-svg-background'.
|
||
If you don't like the colors produced by the default definition of
|
||
this new face when DocView displays documents, customize this face to
|
||
restore the colors you were used to, or to get colors more to your
|
||
liking.
|
||
|
||
** Shortdoc
|
||
|
||
+++
|
||
*** New function 'shortdoc-function-examples'.
|
||
This function returns examples of use of a given Emacs Lisp function
|
||
from the available shortdoc information.
|
||
|
||
+++
|
||
*** New function 'shortdoc-help-fns-examples-function'.
|
||
This function inserts into the current buffer examples of use of a
|
||
given Emacs Lisp function, which it gleans from the shortdoc
|
||
information. If you want 'describe-function' ('C-h f') to insert
|
||
examples of using the function into regular "*Help*" buffers, add the
|
||
following to your init file:
|
||
|
||
(add-hook 'help-fns-describe-function-functions
|
||
#'shortdoc-help-fns-examples-function)
|
||
|
||
** Package
|
||
|
||
---
|
||
*** New user option 'package-vc-register-as-project'.
|
||
When non-nil, it will automatically register every package as a
|
||
project, that you can quickly select using 'project-switch-project'
|
||
('C-x p p').
|
||
|
||
---
|
||
*** New user option 'package-vc-allow-side-effects'.
|
||
When non-nil, package specifications with side-effects for building
|
||
software will be used when building a package.
|
||
|
||
** Flymake
|
||
|
||
+++
|
||
*** New user option 'flymake-show-diagnostics-at-end-of-line'.
|
||
When non-nil, Flymake shows summarized descriptions of diagnostics at
|
||
the end of the line. Depending on your preference, this can either be
|
||
distracting and easily confused with actual code, or a significant
|
||
early aid that relieves you from moving the buffer or reaching for the
|
||
mouse to consult an error message.
|
||
|
||
** Python Mode
|
||
|
||
---
|
||
*** New user option 'python-indent-block-paren-deeper'.
|
||
If non-nil, increase the indentation of the lines inside parens in a
|
||
header of a block when they are indented to the same level as the body
|
||
of the block:
|
||
|
||
if (some_expression
|
||
and another_expression):
|
||
do_something()
|
||
|
||
instead of:
|
||
|
||
if (some_expression
|
||
and another_expression):
|
||
do_something()
|
||
|
||
** use-package
|
||
|
||
+++
|
||
*** New ':vc' keyword.
|
||
This keyword enables the user to install packages using 'package-vc'.
|
||
|
||
** Rmail
|
||
|
||
---
|
||
*** New commands for reading mailing lists.
|
||
The new Rmail commands 'rmail-mailing-list-post',
|
||
'rmail-mailing-list-unsubscribe', 'rmail-mailing-list-help', and
|
||
'rmail-mailing-list-archive' allow to, respectively, post to,
|
||
unsubscribe from, request help about, and browse the archives, of the
|
||
mailing list from which the current email message was delivered.
|
||
|
||
** Dictionary
|
||
|
||
---
|
||
*** New user option 'dictionary-search-interface'.
|
||
Controls how the 'dictionary-search' command prompts for and displays
|
||
dictionary definitions. Customize this user option to 'help' to have
|
||
'dictionary-search' display definitions in a "*Help*" buffer and
|
||
provide dictionary-based minibuffer completion for word selection.
|
||
|
||
---
|
||
*** New user option 'dictionary-read-word-prompt'.
|
||
This allows the user to customize the prompt that is used by
|
||
'dictionary-search' when asking for a word to search in the
|
||
dictionary.
|
||
|
||
---
|
||
*** New user option 'dictionary-display-definition-function'.
|
||
This allows the user to customize the way in which 'dictionary-search'
|
||
displays word definitions. If non-nil, this user option should be set
|
||
to a function that displays a word definition obtained from a
|
||
dictionary server. The new function
|
||
'dictionary-display-definition-in-help-buffer' can be used to display
|
||
the definition in a "*Help*" buffer, instead of the default
|
||
"*Dictionary*" buffer.
|
||
|
||
---
|
||
*** New user option 'dictionary-read-word-function'.
|
||
This allows the user to customize the way in which 'dictionary-search'
|
||
prompts for a word to search in the dictionary. This user option
|
||
should be set to a function that lets the user select a word and
|
||
returns it as a string. The new function
|
||
'dictionary-completing-read-word' can be used to prompt with
|
||
completion based on dictionary matches.
|
||
|
||
---
|
||
*** New user option 'dictionary-read-dictionary-function'.
|
||
This allows the user to customize the way in which 'dictionary-search'
|
||
prompts for a dictionary to search in. This user option should be set
|
||
to a function that lets the user select a dictionary and returns its
|
||
name as a string. The new function
|
||
'dictionary-completing-read-dictionary' can be used to prompt with
|
||
completion based on dictionaries that the server supports.
|
||
|
||
** Pp
|
||
*** New 'pp-default-function' custom variable replaces 'pp-use-max-width'.
|
||
|
||
*** New default pretty printing function, which tries to obey 'fill-column'.
|
||
|
||
*** 'pp-to-string' takes an additional 'pp-function' argument.
|
||
This arg specifies the prettifying algorithm to use.
|
||
|
||
* New Modes and Packages in Emacs 30.1
|
||
|
||
** New major modes based on the tree-sitter library
|
||
|
||
+++
|
||
*** New major mode 'html-ts-mode'.
|
||
An optional major mode based on the tree-sitter library for editing
|
||
HTML files.
|
||
|
||
---
|
||
*** New major mode 'heex-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing HEEx files.
|
||
|
||
---
|
||
*** New major mode 'elixir-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing Elixir
|
||
files.
|
||
|
||
---
|
||
** The highly accessible Modus themes collection has eight items.
|
||
The 'modus-operandi' and 'modus-vivendi' are the main themes that have
|
||
been part of Emacs since version 28. The former is light, the latter
|
||
dark. In addition to these, we now have 'modus-operandi-tinted' and
|
||
'modus-vivendi-tinted' for easier legibility, as well as
|
||
'modus-operandi-deuteranopia', 'modus-vivendi-deuteranopia',
|
||
'modus-operandi-tritanopia', and 'modus-vivendi-tritanopia' to cover
|
||
the needs of users with red-green or blue-yellow color deficiency.
|
||
The Info manual "(modus-themes) Top" describes the details and
|
||
showcases all their customization options.
|
||
|
||
|
||
* Incompatible Lisp Changes in Emacs 30.1
|
||
|
||
---
|
||
** The escape sequence '\x' not followed by hex digits is now an error.
|
||
Previously, '\x' without at least one hex digit denoted character code
|
||
zero (NUL) but as this was neither intended nor documented or even
|
||
known by anyone, it is now treated as an error by the Lisp reader.
|
||
|
||
---
|
||
** Connection-local variables are applied in buffers visiting a remote file.
|
||
This overrides possible directory-local or file-local variables with
|
||
the same name.
|
||
|
||
---
|
||
** User option 'tramp-completion-reread-directory-timeout' has been removed.
|
||
This user option has been obsoleted in Emacs 27, use
|
||
'remote-file-name-inhibit-cache' instead.
|
||
|
||
---
|
||
** User options 'eshell-NAME-unload-hook' are now obsolete.
|
||
These hooks were named incorrectly, and so they never actually ran
|
||
when unloading the correspending feature. Instead, you should use
|
||
hooks named after the feature name, like 'esh-mode-unload-hook'.
|
||
|
||
+++
|
||
** 'copy-tree' now copies records when its optional 2nd argument is non-nil.
|
||
|
||
+++
|
||
** Certain values of 'header-line-format' now inhibit empty header line.
|
||
Emacs now avoids displaying a header line, instead of displaying an
|
||
empty one, when 'header-line-format' is a list whose 'car' is a
|
||
symbol, and either that symbol is ':eval' and the second element of
|
||
the list evaluates to 'nil' or the symbol's value as a variable is
|
||
'nil' or void.
|
||
|
||
|
||
* Lisp Changes in Emacs 30.1
|
||
|
||
+++
|
||
** New user option 'safe-local-variable-directories'.
|
||
This user option names directories in which Emacs will treat all
|
||
directory-local variables as safe.
|
||
|
||
** New variable 'inhibit-auto-fill' to temporarily prevent auto-fill.
|
||
|
||
** Functions and variables to transpose sexps
|
||
|
||
+++
|
||
*** New helper variable 'transpose-sexps-function'.
|
||
Emacs now can set this variable to customize the behavior of the
|
||
'transpose-sexps' function.
|
||
|
||
+++
|
||
*** New function 'transpose-sexps-default-function'.
|
||
The previous implementation is moved into its own function, to be
|
||
bound by 'transpose-sexps-function'.
|
||
|
||
*** New function 'treesit-transpose-sexps'.
|
||
Tree-sitter now unconditionally sets 'transpose-sexps-function' for all
|
||
tree-sitter enabled modes. This functionality utilizes the new
|
||
'transpose-sexps-function'.
|
||
|
||
** Functions and variables to move by program statements
|
||
|
||
*** New variable 'forward-sentence-function'.
|
||
Major modes can now set this variable to customize the behavior of the
|
||
'forward-sentence' command.
|
||
|
||
*** New function 'forward-sentence-default-function'.
|
||
The previous implementation of 'forward-sentence' is moved into its
|
||
own function, to be bound by 'forward-sentence-function'.
|
||
|
||
*** New buffer-local variable 'treesit-sentence-type-regexp'.
|
||
Similarly to 'treesit-defun-type-regexp', this variable is used to
|
||
define "sentences" in tree-sitter enabled modes.
|
||
|
||
*** New function 'treesit-forward-sentence'.
|
||
All tree-sitter enabled modes that define 'treesit-sentence-type-regexp'
|
||
now set 'forward-sentence-function' to call 'treesit-forward-sentence'.
|
||
|
||
** Functions and variables to move by program sexps
|
||
|
||
*** New buffer-local variable 'treesit-sexp-type-regexp'.
|
||
Similarly to 'treesit-defun-type-regexp', this variable is used to
|
||
define "sexps" in tree-sitter enabled modes.
|
||
|
||
*** New function 'treesit-forward-sexp'.
|
||
Tree-sitter conditionally sets 'forward-sexp-function' for major modes
|
||
that have defined 'treesit-sexp-type-regexp' to enable sexp-related
|
||
motion commands.
|
||
|
||
** New or changed byte-compilation warnings
|
||
|
||
---
|
||
*** Warn about empty bodies for more special forms and macros.
|
||
The compiler now warns about an empty body argument to 'when',
|
||
'unless', 'ignore-error' and 'with-suppressed-warnings' in addition to
|
||
the existing warnings for 'let' and 'let*'. Example:
|
||
|
||
(when (> x 2))
|
||
|
||
This warning can be suppressed using 'with-suppressed-warnings' with
|
||
the warning name 'empty-body'.
|
||
|
||
---
|
||
*** Warn about quoted error names in 'condition-case' and 'ignore-error'.
|
||
The compiler now warns about quoted condition (error) names
|
||
in 'condition-case' and 'ignore-error'. Example:
|
||
|
||
(condition-case nil
|
||
(/ x y)
|
||
('arith-error "division by zero"))
|
||
|
||
Quoting them adds the error name 'quote' to those handled or ignored
|
||
respectively, which was probably not intended.
|
||
|
||
---
|
||
*** Warn about comparison with literal constants without defined identity.
|
||
The compiler now warns about comparisons by identity with a literal
|
||
string, cons, vector, record, function, large integer or float as this
|
||
may not match any value at all. Example:
|
||
|
||
(eq x "hello")
|
||
|
||
Only literals for symbols and small integers (fixnums), including
|
||
characters, are guaranteed to have a consistent (unique) identity.
|
||
This warning applies to 'eq', 'eql', 'memq', 'memql', 'assq', 'rassq',
|
||
'remq' and 'delq'.
|
||
|
||
To compare by (structural) value, use 'equal', 'member', 'assoc',
|
||
'rassoc', 'remove' or 'delete' instead. Floats and bignums can also
|
||
be compared using 'eql', '=' and 'memql'. Function literals cannot be
|
||
compared reliably at all.
|
||
|
||
This warning can be suppressed using 'with-suppressed-warnings' with
|
||
the warning name 'suspicious'.
|
||
|
||
---
|
||
*** Warn about 'condition-case' without handlers.
|
||
The compiler now warns when the 'condition-case' form is used without
|
||
any actual handlers, as in
|
||
|
||
(condition-case nil (read buffer))
|
||
|
||
because it has no effect other than the execution of the body form.
|
||
In particular, no errors are caught or suppressed. If the intention
|
||
was to catch all errors, add an explicit handler for 'error', or use
|
||
'ignore-error' or 'ignore-errors'.
|
||
|
||
This warning can be suppressed using 'with-suppressed-warnings' with
|
||
the warning name 'suspicious'.
|
||
|
||
---
|
||
*** Warn about 'unwind-protect' without unwind forms.
|
||
The compiler now warns when the 'unwind-protect' form is used without
|
||
any unwind forms, as in
|
||
|
||
(unwind-protect (read buffer))
|
||
|
||
because the behavior is identical to that of the argument; there is
|
||
no protection of any kind. Perhaps the intended unwind forms have
|
||
been misplaced or forgotten, or the use of 'unwind-protect' could be
|
||
simplified away.
|
||
|
||
This warning can be suppressed using 'with-suppressed-warnings' with
|
||
the warning name 'suspicious'.
|
||
|
||
---
|
||
*** Warn about mutation of constant values.
|
||
The compiler now warns about code that modifies program constants in
|
||
some obvious cases. Examples:
|
||
|
||
(setcar '(1 2) 7)
|
||
(aset [3 4] 0 8)
|
||
(aset "abc" 1 ?d)
|
||
|
||
Such code may have unpredictable behavior because the constants are
|
||
part of the program, not data structures generated afresh during
|
||
execution, and the compiler does not expect them to change.
|
||
|
||
To avoid the warning, operate on an object created by the program
|
||
(maybe a copy of the constant), or use a non-destructive operation
|
||
instead.
|
||
|
||
This warning can be suppressed using 'with-suppressed-warnings' with
|
||
the warning name 'mutate-constant'.
|
||
|
||
---
|
||
*** Warn about more ignored function return values.
|
||
The compiler now warns when the return value from certain functions is
|
||
implicitly ignored. Example:
|
||
|
||
(progn (nreverse my-list) my-list)
|
||
|
||
will elicit a warning because it is usually pointless to call
|
||
'nreverse' on a list without using the returned value.
|
||
|
||
To silence the warning, make use of the value in some way, such as
|
||
assigning it to a variable. You can also wrap the function call in
|
||
'(ignore ...)', or use 'with-suppressed-warnings' with the warning
|
||
name 'ignored-return-value'.
|
||
|
||
The warning will only be issued for calls to functions declared
|
||
'important-return-value' or 'side-effect-free' (but not 'error-free').
|
||
|
||
+++
|
||
** New function declaration and property 'important-return-value'.
|
||
The declaration '(important-return-value t)' sets the
|
||
'important-return-value' property which indicates that the function
|
||
return value should probably not be thrown away implicitly.
|
||
|
||
+++
|
||
** New functions 'file-user-uid' and 'file-group-gid'.
|
||
These functions are like 'user-uid' and 'group-gid', respectively, but
|
||
are aware of file name handlers, so they will return the remote UID or
|
||
GID for remote files (or -1 if the connection has no associated user).
|
||
|
||
+++
|
||
** 'fset', 'defalias' and 'defvaralias' now signal an error for cyclic aliases.
|
||
Previously, 'fset', 'defalias' and 'defvaralias' could be made to
|
||
build circular function and variable indirection chains as in
|
||
|
||
(defalias 'able 'baker)
|
||
(defalias 'baker 'able)
|
||
|
||
but trying to use them would sometimes make Emacs hang. Now, an attempt
|
||
to create such a loop results in an error.
|
||
|
||
Since circular alias chains now cannot occur, 'function-alias-p',
|
||
'indirect-function' and 'indirect-variable' will never signal an error.
|
||
Their 'noerror' arguments have no effect and are therefore obsolete.
|
||
|
||
|
||
* Changes in Emacs 30.1 on Non-Free Operating Systems
|
||
|
||
|
||
----------------------------------------------------------------------
|
||
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:
|