mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-07 20:30:32 -08:00
* etc/NEWS: * doc/lispref/files.texi (File Attributes): Improve wording of the documentation of 'file-has-changed-p'.
522 lines
16 KiB
Text
522 lines
16 KiB
Text
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 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-<fingerprint>.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
|
||
|
||
** 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".
|
||
|
||
** 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.
|
||
|
||
---
|
||
*** New user option 'outline-minor-mode-buttons'.
|
||
This is a list of pairs of open/close strings used to display buttons.
|
||
|
||
** Fonts
|
||
|
||
---
|
||
*** Emacs now supports "medium" fonts.
|
||
Emacs previously didn't distinguish between the "regular" weight and
|
||
the "medium" weight, but it now also supports the (heavier) "medium"
|
||
weight.
|
||
|
||
+++
|
||
** 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, an alist entry as '(window-width . (body-columns . 40))'
|
||
will make the body of the chosen window 40 columns wide.
|
||
|
||
|
||
* 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 amount 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.
|
||
|
||
** 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
|
||
|
||
** EIEIO
|
||
+++
|
||
*** 'slot-value' can now be used to read slots of 'cl-defstruct' objects
|
||
|
||
** align
|
||
|
||
---
|
||
*** Alignment in 'text-mode' has changed.
|
||
Previously, 'M-x align' didn't do anything, and you had to say 'C-u
|
||
M-x align' for it to work. This has now been changed. The default
|
||
regexp for 'C-u M-x align-regexp' has also been changed to be easier
|
||
for inexperienced users to use.
|
||
|
||
** eww
|
||
|
||
+++
|
||
*** New user option to automatically rename EWW buffers.
|
||
The 'eww-auto-rename-buffer' user option can be configured to rename
|
||
rendered web pages by using their title, URL, or a user-defined
|
||
function which returns a string. For the first two cases, the length
|
||
of the resulting name is controlled by 'eww-buffer-name-length'. By
|
||
default, no automatic renaming is performed.
|
||
|
||
** Help
|
||
|
||
*** New user option 'help-link-key-to-documentation'.
|
||
When this option is non-nil, key bindings displayed in the "*Help*"
|
||
buffer will be linked to the documentation for the command they are
|
||
bound to. This does not affect listings of key bindings and
|
||
functions (such as 'C-h b').
|
||
|
||
** info-look
|
||
|
||
---
|
||
*** info-look specs can now be expanded at run time instead of a load time.
|
||
The new ':doc-spec-function' element can be used to compute the
|
||
':doc-spec' element when the user asks for info on that particular
|
||
mode (instead of at load time).
|
||
|
||
** subr-x
|
||
|
||
+++
|
||
*** New macro 'with-memoization' provides a very primitive form of memoization.
|
||
|
||
** ansi-color
|
||
|
||
---
|
||
*** Support for ANSI 256-color and 24-bit colors.
|
||
256-color and 24-bit color codes are now handled by ANSI color
|
||
filters and displayed with the specified color.
|
||
|
||
** term-mode
|
||
|
||
---
|
||
*** Support for ANSI 256-color and 24-bit colors, italic and other fonts.
|
||
Term-mode can now display 256-color and 24-bit color codes. It can
|
||
also handle ANSI codes for faint, italic and blinking text, displaying
|
||
it with new 'term-{faint,italic,slow-blink,fast-blink}' faces.
|
||
|
||
** Xref
|
||
|
||
*** 'project-find-file' and 'project-or-external-find-file' now accept
|
||
a prefix argument which is interpreted to mean "include all files".
|
||
|
||
+++
|
||
*** New command 'xref-go-forward'.
|
||
It is bound to 'C-M-,' and jumps to the location where 'xref-go-back'
|
||
('M-,', also known as 'xref-pop-marker-stack') was invoked previously.
|
||
|
||
** File notifications
|
||
|
||
+++
|
||
*** The new command 'file-notify-rm-all-watches' removes all file notifications.
|
||
|
||
** Sql
|
||
|
||
---
|
||
*** Sql now supports sending of passwords in-process.
|
||
To improve security, if an sql product has ':password-in-comint' set
|
||
to t, a password supplied via the minibuffer will be sent in-process,
|
||
as opposed to via the command-line.
|
||
|
||
** Image-Dired
|
||
|
||
---
|
||
*** Reduce dependency on external "exiftool" command.
|
||
The 'image-dired-copy-with-exif-file-name' no longer requires an
|
||
external "exiftool" command to be available. The user options
|
||
'image-dired-cmd-read-exif-data-program' and
|
||
'image-dired-cmd-read-exif-data-options' are now obsolete.
|
||
|
||
---
|
||
*** New command for the thumbnail buffer.
|
||
The new command 'image-dired-unmark-all-marks' has been added with a
|
||
binding in the menu.
|
||
|
||
---
|
||
*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020).
|
||
This standard allows sharing generated thumbnails across different
|
||
programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and
|
||
1024x1024 pixels. See the user option `image-dired-thumbnail-storage'
|
||
to use it; it is not enabled by default.
|
||
|
||
---
|
||
*** Support GraphicsMagick command line tools.
|
||
Support for the GraphicsMagick command line tool ("gm") has been
|
||
added, and is used instead of ImageMagick when it is available.
|
||
|
||
---
|
||
*** Support for bookmark.el.
|
||
The command 'bookmark-set' (bound to 'C-x r m') is now supported in
|
||
the thumbnail view, and will create a bookmark that opens the current
|
||
directory in Image-Dired.
|
||
|
||
+++
|
||
*** 'image-dired-show-all-from-dir-max-files' has been increased to 500.
|
||
This option controls asking for confirmation when starting Image-Dired
|
||
in a directory with many files. However, Image-Dired creates
|
||
thumbnails in the background these days, so this is not as important
|
||
as it used to be, back when entering a large directory could lock up
|
||
Emacs for tens of seconds. In addition, you can now customize this
|
||
option to nil to disable this confirmation completely.
|
||
|
||
---
|
||
*** Make 'image-dired-rotate-thumbnail-(left|right)' obsolete.
|
||
Instead, use 'M-x image-dired-refresh-thumb' to generate a new
|
||
thumbnail, or 'M-x image-rotate' to rotate the thumbnail without
|
||
updating the thumbnail file.
|
||
|
||
** Dired
|
||
|
||
---
|
||
*** New user option 'dired-make-directory-clickable'.
|
||
If non-nil (which is the default), hitting 'RET' or 'mouse-1' on
|
||
the directory components at the directory displayed at the start of
|
||
the buffer will take you to that directory.
|
||
|
||
|
||
** Exif
|
||
|
||
*** New function 'exif-field'.
|
||
This is a convenience function to extract the field data from
|
||
'exif-parse-file' and 'exif-parse-buffer'.
|
||
|
||
|
||
* New Modes and Packages in Emacs 29.1
|
||
|
||
+++
|
||
** New mode 'erts-mode'.
|
||
This mode is used to edit files geared towards testing actions in
|
||
Emacs buffers, like indentation and the like. The new ert function
|
||
'ert-test-erts-file' is used to parse these files.
|
||
|
||
|
||
* Incompatible Lisp Changes in Emacs 29.1
|
||
|
||
** Keymap descriptions have changed.
|
||
'help--describe-command', 'C-h b' and associated functions that output
|
||
keymap descriptions have changed. In particular, prefix commands are
|
||
not output at all, and instead of "??" for closures/functions,
|
||
"[closure]"/"[lambda]" is output.
|
||
|
||
---
|
||
** 'downcase' details have changed slightly.
|
||
In certain locales, changing the case of an ASCII-range character may
|
||
turn it into a multibyte character, most notably with "I" in Turkish
|
||
(the lowercase is "ı", 0x0131). Previously, 'downcase' on a unibyte
|
||
string was buggy, and would mistakenly just return the lower byte of
|
||
this, 0x31 (the digit "1"). 'downcase' on a unibyte string has now
|
||
been changed to downcase such characters as if they were ASCII. To
|
||
get proper locale-dependent downcasing, the string has to be converted
|
||
to multibyte first. (This goes for the other case-changing functions,
|
||
too.)
|
||
|
||
---
|
||
** 'def' indentation changes.
|
||
In 'emacs-lisp-mode', forms with a symbol with a name that start with
|
||
"def" have been automatically indented as if they were 'defun'-like
|
||
forms, for instance:
|
||
|
||
(defzot 1
|
||
2 3)
|
||
|
||
This heuristic has now been removed, and all functions/macros that
|
||
want to be indented this way have to be marked with
|
||
|
||
(declare (indent defun))
|
||
|
||
or the like. If the function/macro definition itself can't be
|
||
changed, the indentation can also be adjusted by saying something
|
||
like:
|
||
|
||
(put 'defzot 'lisp-indent-function 'defun)
|
||
|
||
---
|
||
** The 'inhibit-changing-match-data' variable is now obsolete.
|
||
Instead, functions like 'string-match' and 'looking-at' now take an
|
||
optional 'inhibit-modify' argument.
|
||
|
||
---
|
||
** 'gnus-define-keys' is now obsolete.
|
||
Use 'define-keymap' instead.
|
||
|
||
---
|
||
** MozRepl has been removed from js.el.
|
||
MozRepl was removed from Firefox in 2017, so this code doesn't work
|
||
with recent versions of Firefox.
|
||
|
||
---
|
||
** The function 'image-dired-get-exif-data' is now obsolete.
|
||
Use 'exif-parse-file' and 'exif-field' instead.
|
||
|
||
|
||
* Lisp Changes in Emacs 29.1
|
||
|
||
+++
|
||
*** New function 'file-has-changed-p'.
|
||
This convenience function is useful when writing code that parses
|
||
files at run-time, and allows Lisp programs to re-parse files only
|
||
when they have changed.
|
||
|
||
---
|
||
*** New function 'font-has-char-p'.
|
||
This can be used to check whether a specific font has a glyph for a
|
||
character.
|
||
|
||
** XDG support
|
||
|
||
*** New function 'xdg-state-home' returns $XDG_STATE_HOME.
|
||
This new location, introduced in the XDG Base Directory Specification
|
||
version 0.8 (8th May 2021), "contains state data that should persist
|
||
between (application) restarts, but that is not important or portable
|
||
enough to the user that it should be stored in $XDG_DATA_HOME".
|
||
|
||
+++
|
||
** New macro 'with-delayed-message'.
|
||
This macro is like 'progn', but will output the specified message if
|
||
the body takes longer to execute than the specified timeout.
|
||
|
||
---
|
||
** New function 'funcall-with-delayed-message'.
|
||
This function is like 'funcall', but will output the specified message
|
||
is the function take longer to execute that the specified timeout.
|
||
|
||
** Locale
|
||
|
||
---
|
||
*** New variable 'current-locale-environment'.
|
||
This holds the value of the previous call to 'set-locale-environment'.
|
||
|
||
---
|
||
*** New macro 'with-locale-environment'.
|
||
This macro can be used to change the locale temporarily while
|
||
executing code.
|
||
|
||
+++
|
||
** 'define-key' now understands a new strict 'kbd' representation for keys.
|
||
The '(define-key map ["C-c M-f"] #'some-command)' syntax is now
|
||
supported, and is like the 'kbd' representation, but is stricter. If
|
||
the string doesn't represent a valid key sequence, an error is
|
||
signalled (both when evaluating and byte compiling).
|
||
|
||
+++
|
||
** :keys in 'menu-item' can now be a function.
|
||
If so, it is called whenever the menu is computed, and can be used to
|
||
calculate the keys dynamically.
|
||
|
||
+++
|
||
** New major mode 'clean-mode'.
|
||
This is a new major mode meant for debugging. It kills absolutely all
|
||
local variables and removes overlays and text properties.
|
||
|
||
+++
|
||
** 'kill-all-local-variables' can now kill all local variables.
|
||
If given the new optional KILL-PERMANENT argument, also kill permanent
|
||
local variables.
|
||
|
||
+++
|
||
** Third 'mapconcat' argument SEPARATOR is now optional.
|
||
An explicit nil always meant the empty string, now it can be left out.
|
||
|
||
---
|
||
** Themes can now be made obsolete.
|
||
Using 'make-obsolete' on a theme is now supported. This will make
|
||
'load-theme' issue a warning when loading the theme.
|
||
|
||
+++
|
||
** New function 'define-keymap'.
|
||
This function allows defining a number of keystrokes with one form.
|
||
|
||
+++
|
||
** New macro 'defvar-keymap'.
|
||
This macro allows defining keymap variables more conveniently.
|
||
|
||
---
|
||
** 'kbd' can now be used in built-in, preloaded libraries.
|
||
It no longer depends on edmacro.el and cl-lib.el.
|
||
|
||
+++
|
||
** New function 'kbd-valid-p'.
|
||
The 'kbd' function is quite permissive, and will try to return
|
||
something usable even if the syntax of the argument isn't completely
|
||
correct. The 'kbd-valid-p' predicate does a stricter check of the
|
||
syntax.
|
||
|
||
+++
|
||
** New function 'image-at-point-p'.
|
||
This function returns t if point is on a valid image, and nil
|
||
otherwise.
|
||
|
||
+++
|
||
** New function 'string-pixel-width'.
|
||
This returns the width of a string in pixels. This can be useful when
|
||
dealing with variable pitch fonts and glyphs that have widths that
|
||
aren't integer multiples of the default font.
|
||
|
||
+++
|
||
** New function 'string-glyph-split'.
|
||
This function splits a string into a list of strings representing
|
||
separate glyphs. This takes into account combining characters and
|
||
grapheme clusters.
|
||
|
||
---
|
||
** 'lookup-key' is more allowing when searching for extended menu items.
|
||
In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking
|
||
for a menu item '[menu-bar Foo-Bar]', first try to find an exact
|
||
match, then look for the lowercased '[menu-bar foo-bar]'.
|
||
|
||
This has been extended, so that when looking for a menu item with a
|
||
symbol containing spaces, as in '[menu-bar Foo\ Bar]', first look for
|
||
an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
|
||
'[menu-bar foo-bar]'. This further improves backwards-compatibility
|
||
when converting menus to use 'easy-menu-define'.
|
||
|
||
|
||
* Changes in Emacs 29.1 on Non-Free Operating Systems
|
||
|
||
** MS-Windows
|
||
|
||
+++
|
||
*** Emacs now supports system dark mode.
|
||
On Windows 10 (version 1809 and higher) and Windows 11, Emacs will now
|
||
follow the system's dark mode: GUI frames use the appropriate light or
|
||
dark title bar and scroll bars, based on the user's Windows-wide color
|
||
settings.
|
||
|
||
|
||
----------------------------------------------------------------------
|
||
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
|
||
paragraph-separate: "[ ]*$"
|
||
end:
|