mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-23 18:47:57 +00:00

* lisp/progmodes/gdb-mi.el (gdb): Bind gud-go to `C-c C-v' and allow a prefix to enter arguments (bug#10106).
2525 lines
88 KiB
Plaintext
2525 lines
88 KiB
Plaintext
GNU Emacs NEWS -- history of user-visible changes.
|
||
|
||
Copyright (C) 2021-2022 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 can be built with built-in support for accessing SQLite databases.
|
||
This uses the popular sqlite3 library, and can be disabled by using
|
||
the '--without-sqlite3' option to the 'configure' script.
|
||
|
||
+++
|
||
** Emacs has been ported to the Haiku operating system.
|
||
The configuration process should automatically detect and build for
|
||
Haiku. There is also an optional window-system port to Haiku, which
|
||
can be enabled by configuring Emacs with the option '--with-be-app',
|
||
which will require the Haiku Application Kit development headers and a
|
||
C++ compiler to be present on your system. If Emacs is not built with
|
||
the option '--with-be-app', the resulting Emacs will only run in
|
||
text-mode terminals.
|
||
|
||
+++
|
||
** Cairo drawing support has been enabled for Haiku builds.
|
||
To enable Cairo support, ensure that the Cairo and FreeType
|
||
development files are present on your system, and configure Emacs with
|
||
'--with-be-cairo'.
|
||
|
||
---
|
||
** Double buffering is now enabled on the Haiku operating system.
|
||
Unlike X, there is no compile-time option to enable or disable
|
||
double-buffering. If you wish to disable double-buffering, change the
|
||
frame parameter 'inhibit-double-buffering' instead.
|
||
|
||
---
|
||
** 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.
|
||
|
||
---
|
||
** Emacs now uses of XInput 2 for input events.
|
||
If your X server has support and you have the XInput 2 development
|
||
headers installed, Emacs will use the X Input Extension for handling
|
||
input. If this causes problems, you can configure Emacs with the
|
||
option '--without-xinput2' to disable this support.
|
||
|
||
(featurep 'xinput2) can be used to test for the presence of XInput 2
|
||
support from Lisp programs.
|
||
|
||
+++
|
||
** Emacs now supports being built with pure GTK.
|
||
To use this option, make sure the GTK 3 (version 3.20 or later) and
|
||
Cairo development files are installed, and configure Emacs with the
|
||
option '--with-pgtk'. Unlike the default X and GTK build, the
|
||
resulting Emacs binary will work on any underlying window system
|
||
supported by GDK, such as Wayland and Broadway. We do not recommend
|
||
that you use this configuration, unless you are running a window
|
||
system that's supported by GDK other than X. Running this
|
||
configuration on X is known to have problems, such as undesirable
|
||
frame positioning and various issues with keyboard input of sequences
|
||
such as 'C-;' and 'C-S-u'.
|
||
|
||
---
|
||
** The docstrings of preloaded files are not in "etc/DOC" any more.
|
||
Instead, they're fetched as needed from the corresponding ".elc" file,
|
||
as was already the case for all the non-preloaded files.
|
||
|
||
** Emacs Sessions (Desktop)
|
||
|
||
+++
|
||
*** New option to load a locked desktop if locking Emacs is not running.
|
||
The option 'desktop-load-locked-desktop' can now be set to the value
|
||
'check-pid', which means to allow loading a locked ".emacs.desktop"
|
||
file if the Emacs process which locked it is no longer running on the
|
||
local machine. This allows avoiding questions about locked desktop
|
||
files when the Emacs session which locked it crashes, or was otherwise
|
||
interrupted, and didn't exit gracefully. See the "(emacs) Saving
|
||
Emacs Sessions" node in the Emacs manual for more details.
|
||
|
||
|
||
* Startup Changes in Emacs 29.1
|
||
|
||
+++
|
||
** Emacs can now be used more easily in an executable script.
|
||
If you start an executable script with
|
||
|
||
#!/usr/bin/emacs -x
|
||
|
||
Emacs will start without reading any init files (like with '--quick'),
|
||
and then execute the rest of the script file as Emacs Lisp. When it
|
||
reaches the end of the script, Emacs will exit with an exit code from
|
||
the value of the final form.
|
||
|
||
+++
|
||
** Emacs now supports setting 'user-emacs-directory' via '--init-directory'.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
---
|
||
** New function 'startup-redirect-eln-cache'.
|
||
This function can be called in your init files to change the
|
||
user-specific directory where Emacs stores the "*.eln" files produced
|
||
by native compilation of Lisp packages Emacs loads. The default
|
||
eln-cache directory is unchanged: it is the 'eln-cache' subdirectory
|
||
of 'user-emacs-directory'.
|
||
|
||
|
||
* Incompatible changes in Emacs 29.1
|
||
|
||
---
|
||
** Isearch in *Help* and *info* now char-folds quote characters by default.
|
||
This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer
|
||
contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These
|
||
quotation characters look somewhat similar in some fonts. To switch
|
||
this off, disable the new 'isearch-fold-quotes-mode' minor mode.
|
||
|
||
---
|
||
** Sorting commands no longer necessarily change modification status.
|
||
In earlier Emacs versions, commands like 'M-x sort-lines' would always
|
||
change buffer modification status to "modified", whether they changed
|
||
something in the buffer or not. This has been changed: The buffer is
|
||
marked as modified only if the sorting ended up changing the contents
|
||
of the buffer.
|
||
|
||
---
|
||
** 'string-lines' handles trailing newlines differently.
|
||
It no longer returns an empty final string if the string ends with a
|
||
newline.
|
||
|
||
---
|
||
** 'TAB' and '<backtab>' are now bound in 'button-map'.
|
||
This means that if your cursor is on a button, 'TAB' will take you to
|
||
the next button, even if the mode has bound it to something else.
|
||
This also means that 'TAB' on a button in an 'outline-minor-mode'
|
||
heading will move point instead of collapsing the outline.
|
||
|
||
---
|
||
** 'Info-default-directory-list' is no longer populated at Emacs startup.
|
||
If you have code in your init file that removes directories from
|
||
'Info-default-directory-list', this will no longer work.
|
||
|
||
---
|
||
** 'C-k' no longer deletes files in 'ido-mode'.
|
||
To get the previous action back, put something like the following in
|
||
your init file:
|
||
|
||
(require 'ido)
|
||
(keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head)
|
||
|
||
---
|
||
** New user option 'term-clear-full-screen-programs'.
|
||
By default, term will now work like most terminals when displaying
|
||
full-screen programs: When they exit, the output is cleared, leaving
|
||
what was displayed in the window before the programs started. Set
|
||
this user option to nil to revert back to the old behavior.
|
||
|
||
---
|
||
** Support for old EIEIO functions is not autoloaded any more.
|
||
You need an explicit '(require 'eieio-compat)' to use 'defmethod'
|
||
and 'defgeneric' (which have been made obsolete in Emacs 25.1 with
|
||
'cl-defmethod' and 'cl-defgeneric').
|
||
Similarly you might need to '(require 'eieio-compat)' before loading
|
||
files that were compiled with an old EIEIO (Emacs<25).
|
||
|
||
---
|
||
** 'C-x 8 .' has been moved to 'C-x 8 . .'.
|
||
This is to open up the 'C-x 8 .' map to bind further characters there.
|
||
|
||
** Eshell
|
||
|
||
---
|
||
*** 'source' and '.' no longer accept the '--help' option.
|
||
This is for compatibility with the shell versions of these commands,
|
||
which don't handle options like '--help' in any special way.
|
||
|
||
+++
|
||
*** String delimiters in argument predicates/modifiers are more restricted.
|
||
Previously, some argument predicates/modifiers allowed arbitrary
|
||
characters as string delimiters. To provide more unified behavior
|
||
across all predicates/modifiers, the list of allowed delimiters has
|
||
been restricted to "...", '...', /.../, |...|, (...), [...], <...>,
|
||
and {...}. See the "(eshell) Argument Predication and Modification"
|
||
node in the Eshell manual for more details.
|
||
|
||
---
|
||
** The 'delete-forward-char' command now deletes by grapheme clusters.
|
||
This command is by default bound to the <Delete> function key
|
||
(a.k.a. <deletechar>). When invoked without a prefix argument or with
|
||
a positive prefix numeric argument, the command will now delete
|
||
complete grapheme clusters produced by character composition. For
|
||
example, if point is before an Emoji sequence, pressing <Delete> will
|
||
delete the entire sequence, not just a single character at its
|
||
beginning.
|
||
|
||
+++
|
||
** 'load-history' does not treat autoloads specially any more.
|
||
An autoload definition appears just as a '(defun . NAME)' and the
|
||
'(t . NAME)' entries are not generated any more.
|
||
|
||
---
|
||
** The Tamil input methods no longer insert Tamil digits.
|
||
The input methods 'tamil-itrans' and 'tamil-inscript' no longer insert
|
||
the Tamil digits, as those digit characters are not used nowadays by
|
||
speakers of the Tamil language. To get back the previous behavior,
|
||
use the new 'tamil-itrans-digits' and 'tamil-inscript-digits' input
|
||
methods instead.
|
||
|
||
+++
|
||
** New variable current-time-list governing default timestamp form.
|
||
Functions like current-time now yield (TICKS . HZ) timestamps if this
|
||
new variable is nil. The variable defaults to t, which means these
|
||
functions default to timestamps of the forms (HI LO US PS), (HI LO US)
|
||
or (HI LO), which are less regular and less efficient. This is part
|
||
of a long-planned change first documented in Emacs 27. Developers are
|
||
encouraged to test timestamp-related code with this variable set to
|
||
nil, as it will default to nil in a future Emacs version and will be
|
||
removed some time after that.
|
||
|
||
+++
|
||
** Functions which recreate the *scratch* buffer now also initialize it.
|
||
When functions like 'other-buffer' and 'server-execute' recreate
|
||
*scratch*, they now also insert 'initial-scratch-message' and set
|
||
the major mode according to 'initial-major-mode', like at Emacs
|
||
startup. Previously, these functions ignored
|
||
'initial-scratch-message' and left *scratch* in 'fundamental-mode'.
|
||
|
||
|
||
* Changes in Emacs 29.1
|
||
|
||
** Menus
|
||
|
||
---
|
||
*** The entries following the buffers in the "Buffers" menu can now be altered.
|
||
Change the 'menu-bar-buffers-menu-command-entries' variable to alter
|
||
the entries that follow the buffer list.
|
||
|
||
---
|
||
** 'delete-process' is now a command.
|
||
When called interactively, it will kill the process running in the
|
||
current buffer (if any). This can be useful if you have runaway
|
||
output in the current buffer (from a process or a network connection),
|
||
and want to stop it.
|
||
|
||
+++
|
||
** New command 'restart-emacs'.
|
||
This is like 'save-buffers-kill-emacs', but instead of just killing
|
||
the current Emacs process at the end, it starts a new Emacs process
|
||
(using the same command line arguments as the running Emacs process).
|
||
'kill-emacs' and 'save-buffers-kill-emacs' have also gained new
|
||
optional parameters to restart instead of just killing the current
|
||
process.
|
||
|
||
+++
|
||
** New user option 'mouse-drag-and-drop-region-cross-program'.
|
||
If non-nil, this option allows dragging text in the region from Emacs
|
||
to another program.
|
||
|
||
---
|
||
** New user option 'mouse-drag-and-drop-region-scroll-margin'.
|
||
If non-nil, this option allows scrolling a window while dragging text
|
||
around without a scroll wheel.
|
||
|
||
+++
|
||
** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'.
|
||
These options allow adjusting point and scrolling a window when
|
||
dragging items from another program.
|
||
|
||
+++
|
||
** New function 'command-query'.
|
||
This function makes its argument command prompt the user for
|
||
confirmation before executing.
|
||
|
||
+++
|
||
** The 'disabled' property of a command's symbol can now be a list.
|
||
The first element of the list should be the symbol 'query', which will
|
||
cause the command disabled this way prompt the user with a y/n or a
|
||
yes/no question before executing. The new function 'command-query' is
|
||
a convenient method of making commands disabled in this way.
|
||
|
||
---
|
||
** 'count-lines' will now report buffer totals if given a prefix.
|
||
|
||
---
|
||
** New user option 'find-library-include-other-files'.
|
||
If set to nil, commands like 'find-library' will only include library
|
||
files in the completion candidates. The default is t, which preserves
|
||
previous behavior, whereby non-library files could also be included.
|
||
|
||
+++
|
||
** New command 'sqlite-mode-open-file' for examining an sqlite3 file.
|
||
This uses the new 'sqlite-mode' which allows listing the tables in a
|
||
DB file, and examining and modifying the columns and the contents of
|
||
those tables.
|
||
|
||
---
|
||
** 'write-file' will now copy some file mode bits.
|
||
If the current buffer is visiting a file that is executable, the
|
||
'C-x C-w' command will now make the new file executable, too.
|
||
|
||
+++
|
||
** New user option 'process-error-pause-time'.
|
||
This determines how long to pause Emacs after a process
|
||
filter/sentinel error has been handled.
|
||
|
||
+++
|
||
** New face 'variable-pitch-text'.
|
||
This face is like 'variable-pitch' (from which it inherits), but is
|
||
slightly larger, which should help with the visual size differences
|
||
between the default, non-proportional font and proportional fonts when
|
||
mixed.
|
||
|
||
+++
|
||
** New face 'mode-line-active'.
|
||
This inherits from the 'mode-line' face, but is the face actually used
|
||
on the mode lines (along with 'mode-line-inactive').
|
||
|
||
+++
|
||
** New function 'buffer-text-pixel-size'.
|
||
This is similar to 'window-text-pixel-size', but can be used when the
|
||
buffer isn't displayed.
|
||
|
||
+++
|
||
** New X resource: "borderThickness".
|
||
This controls the thickness of the external borders of the menu bars
|
||
and pop-up menus.
|
||
|
||
+++
|
||
** New X resource: "inputStyle".
|
||
This controls the style of the pre-edit and status areas of X input
|
||
methods.
|
||
|
||
+++
|
||
** On X11, Emacs now tries to synchronize window resize with the window manager.
|
||
This leads to less flicker and empty areas of a frame being displayed
|
||
when a frame is being resized. Unfortunately, it does not work on
|
||
some ancient buggy window managers, so if Emacs appears to freeze, but
|
||
is still responsive to input, you can turn it off by setting the X
|
||
resource "synchronizeResize" to "off".
|
||
|
||
+++
|
||
** New frame parameter 'alpha-background' and X resource "alphaBackground".
|
||
This controls the opacity of the text background when running on a
|
||
composited display.
|
||
|
||
+++
|
||
** New frame parameter 'shaded'.
|
||
With window managers which support this, it controls whether or not a
|
||
frame's contents will be hidden, leaving only the title bar on display.
|
||
|
||
---
|
||
** New user option 'x-gtk-use-native-input'.
|
||
This controls whether or not GTK input methods are used by Emacs,
|
||
instead of XIM input methods.
|
||
|
||
+++
|
||
** New user option 'use-system-tooltips'.
|
||
This controls whether to use the toolkit tooltips, or Emacs's own
|
||
native implementation of tooltips as small frames. This option is
|
||
only meaningful if Emacs was built with GTK+ or Haiku support, and
|
||
defaults to t, which makes Emacs use the toolkit tooltips. The
|
||
existing GTK-specific option 'x-gtk-use-system-tooltips' is now an
|
||
alias of this new option.
|
||
|
||
** Connection-local variables
|
||
|
||
+++
|
||
*** Some connection-local variables are now user options.
|
||
The variables 'connection-local-profile-alist' and
|
||
'connection-local-criteria-alist' are now user options, in order to
|
||
make it more convenient to inspect and modify them.
|
||
|
||
+++
|
||
*** The default connection-local application can be changed temporarily.
|
||
Running 'with-connection-local-variables' defaults to application
|
||
'tramp'. This can be changed by let-binding
|
||
'connection-local-default-application' to another symbol. This is
|
||
useful when running code in a buffer, where Tramp has already set some
|
||
connection local variables.
|
||
|
||
---
|
||
** New minor mode 'pixel-scroll-precision-mode'.
|
||
When enabled, and if your mouse supports it, you can scroll the
|
||
display up or down at pixel resolution, according to what your mouse
|
||
wheel reports. Unlike 'pixel-scroll-mode', this mode scrolls the
|
||
display pixel-by-pixel, as opposed to only animating line-by-line
|
||
scrolls.
|
||
|
||
** Terminal Emacs
|
||
|
||
---
|
||
*** Emacs will now use 24-bit colors on terminals that support "Tc" capability.
|
||
This is in addition to previously-supported ways of discovering 24-bit
|
||
color support: either via the "RGB" or "setf24" capabilities, or if
|
||
the 'COLORTERM' environment variable is set to the value "truecolor".
|
||
|
||
** ERT
|
||
|
||
+++
|
||
*** New ERT variables 'ert-batch-print-length' and 'ert-batch-print-level'.
|
||
These variables will override 'print-length' and 'print-level' when
|
||
printing Lisp values in ERT batch test results.
|
||
|
||
---
|
||
*** Redefining an ERT test in batch mode now signals an error.
|
||
Executing 'ert-deftest' with the same name as an existing test causes
|
||
the previous definition to be discarded, which was probably not
|
||
intended when this occurs in batch mode. To remedy the error, rename
|
||
tests so that they all have unique names.
|
||
|
||
+++
|
||
*** ERT can generate JUnit test reports.
|
||
When environment variable 'EMACS_TEST_JUNIT_REPORT' is set, ERT
|
||
generates a JUnit test report under this file name. This is useful
|
||
for Emacs integration into CI/CD test environments.
|
||
|
||
---
|
||
*** Unbound test symbols now signal an 'ert-test-unbound' error.
|
||
This affects the 'ert-select-tests' function and its callers.
|
||
|
||
** Emoji
|
||
|
||
+++
|
||
*** Emacs now has several new methods for inserting Emojis.
|
||
The Emoji commands are under the new 'C-x 8 e' prefix.
|
||
|
||
+++
|
||
*** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i').
|
||
This command guides you through various Emoji categories and
|
||
combinations in a graphical menu system.
|
||
|
||
+++
|
||
*** New command 'emoji-search' (bound to 'C-x 8 e s').
|
||
This command lets you search for Emojis based on names.
|
||
|
||
+++
|
||
*** New command 'emoji-list' (bound to 'C-x 8 e l').
|
||
This command lists all Emojis (categorized by themes) in a special
|
||
buffer and lets you choose one of them.
|
||
|
||
---
|
||
*** New command 'emoji-recent' (bound to 'C-x 8 e r').
|
||
This command lets you choose among the Emojis you have recently
|
||
inserted.
|
||
|
||
+++
|
||
*** New command 'emoji-describe' (bound to 'C-x 8 e d').
|
||
This command will tell you the name of the Emoji at point. (This
|
||
command also works for non-Emoji characters.)
|
||
|
||
---
|
||
*** New input method 'emoji'.
|
||
This allows you to enter emoji using short strings, eg :face_palm: or
|
||
:scream:.
|
||
|
||
** Help
|
||
|
||
---
|
||
*** 'M-x apropos-variable' output now includes values of variables.
|
||
|
||
+++
|
||
*** New doc string syntax to indicate that symbols shouldn't be links.
|
||
When displaying doc strings in *Help* buffers, strings that are
|
||
"`like-this'" are made into links (if they point to a bound
|
||
function/variable). This can lead to false positives when talking
|
||
about values that are symbols that happen to have the same names as
|
||
functions/variables. To inhibit this buttonification, the new
|
||
"\\+`like-this'" syntax can be used.
|
||
|
||
+++
|
||
*** New user option 'help-window-keep-selected'.
|
||
If non-nil, commands to show the info manual and the source will reuse
|
||
the same window the *Help* buffer is shown in.
|
||
|
||
---
|
||
*** Commands like 'C-h f' have changed how they describe menu bindings.
|
||
For instance, previously a command might be described as having the
|
||
following bindings:
|
||
|
||
It is bound to <open>, C-x C-f, <menu-bar> <file> <new-file>.
|
||
|
||
This has been changed to:
|
||
|
||
It is bound to <open> and C-x C-f.
|
||
It can also be invoked from the menu: File → Visit New File...
|
||
|
||
+++
|
||
*** The 'C-h .' command now accepts a prefix argument.
|
||
'C-u C-h .' would previously inhibit displaying a warning message if
|
||
there's no local help at point. This has been changed to call
|
||
'button-describe'/'widget-describe' and display button/widget help
|
||
instead.
|
||
|
||
---
|
||
*** New user option 'help-enable-variable-value-editing'.
|
||
If enabled, 'e' on a value in *Help* will pop you to a new buffer
|
||
where you can edit the value. This is not enabled by default, because
|
||
it's easy to make an edit that yields an invalid result.
|
||
|
||
---
|
||
*** 'C-h b' uses outlining by default.
|
||
Set 'describe-bindings-outline' to nil to get the old behavior.
|
||
|
||
---
|
||
*** 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".
|
||
|
||
---
|
||
*** 'describe-char' now also outputs the name of emoji combinations.
|
||
|
||
+++
|
||
*** New key binding in "*Help*" buffer: 'I'.
|
||
This will take you to the Emacs Lisp manual entry for the item
|
||
displayed, if any.
|
||
|
||
---
|
||
*** The 'C-h m' ('describe-mode') "*Help*" buffer has been reformatted.
|
||
It now only includes local minor modes at the start, and the global
|
||
minor modes are listed after the major mode.
|
||
|
||
+++
|
||
*** The user option 'help-window-select' now affects apropos commands.
|
||
The apropos commands will now select the apropos window if
|
||
'help-window-select' is non-nil.
|
||
|
||
** Outline Mode
|
||
|
||
+++
|
||
*** Support for customizing the default visibility state of headings.
|
||
Customize the user option 'outline-default-state' to define what
|
||
headings will be visible after Outline mode is turned on. When equal
|
||
to a number, the user option 'outline-default-rules' determines the
|
||
visibility of the subtree starting at the corresponding level. Values
|
||
are provided to control showing a heading subtree depending on whether
|
||
the heading matches a regexp, or on whether its subtree has long lines
|
||
or is itself too long.
|
||
|
||
** 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. Default nil.
|
||
|
||
---
|
||
*** New user option 'outline-minor-mode-buttons'.
|
||
This is a list of pairs of open/close strings used to display buttons.
|
||
|
||
+++
|
||
** Support for the WebP image format.
|
||
This support is built by default when the libwebp library is
|
||
available. (This also includes support for animated WebP images.) To
|
||
disable WebP support, 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, a 'display-buffer-alist' entry of
|
||
|
||
'(window-width . (body-columns . 40))'
|
||
|
||
will make the body of the chosen window 40 columns wide. For the
|
||
height use 'window-height' in combination with 'body-lines'.
|
||
|
||
---
|
||
*** You can customize which window 'scroll-other-window' operates on.
|
||
This is controlled by the new 'other-window-scroll-default' user option.
|
||
|
||
** Frames
|
||
|
||
+++
|
||
*** Deleted frames can now be undeleted.
|
||
The 16 most recently deleted frames can be undeleted with 'C-x 5 u' when
|
||
'undelete-frame-mode' is enabled. Without a prefix argument, undelete
|
||
the most recently deleted frame. With a numerical prefix argument
|
||
between 1 and 16, where 1 is the most recently deleted frame, undelete
|
||
the corresponding deleted frame.
|
||
|
||
** Tab Bars and Tab Lines
|
||
|
||
---
|
||
*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist.
|
||
|
||
---
|
||
*** New keymap 'tab-bar-history-mode-map'.
|
||
By default, it contains 'C-c <left>' and 'C-c <right>' to browse
|
||
the history of tab window configurations back and forward.
|
||
|
||
---
|
||
** Better detection of text suspiciously reordered on display.
|
||
The function 'bidi-find-overridden-directionality' has been extended
|
||
to detect reordering effects produced by embeddings and isolates
|
||
(started by directional formatting control characters such as RLO and
|
||
LRI). The new command 'highlight-confusing-reorderings' finds and
|
||
highlights segments of buffer text whose reordering for display is
|
||
suspicious and could be malicious.
|
||
|
||
** Emacs server and client changes
|
||
|
||
+++
|
||
*** New command-line option '-r' for emacsclient.
|
||
With this command-line option, Emacs reuses an existing graphical client
|
||
frame if one exists; otherwise it creates a new frame.
|
||
|
||
+++
|
||
*** 'server-stop-automatically' can be used to automatically stop the server.
|
||
The Emacs server will be automatically stopped when certain conditions
|
||
are met. The conditions are given by the argument, which can be
|
||
'empty', 'delete-frame' or 'kill-terminal'.
|
||
|
||
** Rcirc
|
||
|
||
+++
|
||
*** New command 'rcirc-when'.
|
||
|
||
+++
|
||
*** New user option 'rcirc-cycle-completion-flag'.
|
||
Rcirc will use the default 'completion-at-point' mechanism. The
|
||
conventional IRC behaviour of completing by cycling through the
|
||
available options can be restored by enabling this option.
|
||
|
||
+++
|
||
** 'imenu' is now bound to 'M-g i' globally.
|
||
|
||
* Editing Changes in Emacs 29.1
|
||
|
||
---
|
||
** 'scroll-other-window' and 'scroll-other-window-down' now respects remapping.
|
||
These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other
|
||
windows without looking a customizations in that other window. These
|
||
functions now check whether they have been rebound in the buffer in
|
||
that other window, and then call the remapped function instead. In
|
||
addition, these commands now also respect the
|
||
'scroll-error-top-bottom' user option.
|
||
|
||
---
|
||
** 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 number of entries in the menu
|
||
"Edit->Paste from Kill Menu". The default is 60.
|
||
|
||
+++
|
||
** Performing a pinch gesture on a touchpad now increases the text scale.
|
||
|
||
** 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. Default nil.
|
||
|
||
May also be set to the symbols 'overlay' or 'child-frame' in which
|
||
case the context is shown in an overlay or child-frame at the top-left
|
||
of the current window. The latter option requires a graphical frame.
|
||
On non-graphical frames, the context is shown 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.
|
||
|
||
** Mwheel
|
||
|
||
---
|
||
*** New user options for alternate wheel events.
|
||
The options 'mouse-wheel-down-alternate-event',
|
||
'mouse-wheel-up-alternate-event', 'mouse-wheel-left-alternate-event',
|
||
and 'mouse-wheel-right-alternate-event' have been added to better
|
||
support systems where two kinds of wheel events can be received.
|
||
|
||
** Internationalization changes
|
||
|
||
*** The <Delete> function key now allows deleting the entire composed sequence.
|
||
For the details, see the item about the 'delete-forward-char' command
|
||
above.
|
||
|
||
*** New user option 'composition-break-at-point'.
|
||
Setting it to a non-nil value temporarily disables automatic
|
||
composition of character sequences at point, and thus makes it easier
|
||
to edit such sequences by allowing point to "enter" the sequence.
|
||
|
||
*** New language environment "Northern Thai".
|
||
This uses the Tai Tham script, whose support has been enhanced.
|
||
|
||
*** New language environment "Brahmi".
|
||
This language environment supports Brahmi, which is a historical
|
||
script that was used in ancient South Asia. A new input method,
|
||
'brahmi', is provided to type text in this script.
|
||
|
||
*** New language environment "Kaithi".
|
||
This language environment supports Kaithi or Kayasthi, which was
|
||
an important writing system of the past mainly used for administrative
|
||
purposes. A new input method, 'kaithi', is provided to type text in
|
||
this script.
|
||
|
||
*** New language environment "Tirhuta".
|
||
This language environment supports Tirhuta or Mithilaakshar, which is
|
||
used to write the Maithili language. A new input method, 'tirhuta',
|
||
is provided to type text in this script.
|
||
|
||
*** New language environment "Sharada".
|
||
This language environment supports the Sharada script. Named after the
|
||
goddess of learning, this script is used to write the Kashmiri language.
|
||
A new input method, 'sharada', is provided to type text in this script.
|
||
|
||
*** New language environment "Siddham".
|
||
This language environment supports the Siddham script for the Sanskrit
|
||
language. Nowadays it is mostly used by the Buddhist monks in Japan for
|
||
religious writings. A new input method, 'siddham', is provided to type
|
||
text in this script.
|
||
|
||
---
|
||
*** New Greek translation of the Emacs tutorial.
|
||
Type 'C-u C-h t' to select it in case your language setup does not do
|
||
so automatically.
|
||
|
||
|
||
* Changes in Specialized Modes and Packages in Emacs 29.1
|
||
|
||
---
|
||
*** 'gud-go' is now bound to 'C-c C-v'.
|
||
If given a prefix, it will query the user for an argument to use for
|
||
the run/continue command.
|
||
|
||
** Customize
|
||
|
||
---
|
||
*** New command 'custom-toggle-hide-all-variables'.
|
||
This is bound to 'H' and toggles whether to hide or show the widget
|
||
contents.
|
||
|
||
** ispell
|
||
|
||
---
|
||
*** 'ispell-region' and 'ispell-buffer' now push the mark.
|
||
These commands push onto the mark ring the location of the last
|
||
misspelled word where corrections were offered, so that you can then
|
||
skip back to that location with 'C-x C-x'.
|
||
|
||
** dabbrev
|
||
|
||
---
|
||
*** New function 'dabbrev-capf' for use on 'completion-at-point-functions'
|
||
|
||
+++
|
||
*** New user option 'dabbrev-ignored-buffer-modes'.
|
||
Buffers with major modes in this list will be ignored. By default,
|
||
this includes "binary" buffers like 'archive-mode' and 'image-mode'.
|
||
|
||
** Package
|
||
|
||
+++
|
||
*** New command 'package-update'.
|
||
This command allows you to upgrade packages without using 'M-x
|
||
list-packages'.
|
||
|
||
+++
|
||
*** New DWIM action on 'x'.
|
||
If no packages are marked, 'x' will install the package under point if
|
||
it isn't already, and remove it if it is installed.
|
||
|
||
** Miscellaneous
|
||
|
||
+++
|
||
*** New command 'scratch-buffer'.
|
||
This command switches to the *scratch* buffer. If *scratch* doesn't
|
||
exist, the command creates it first. You can use this command if you
|
||
inadvertently delete the *scratch* buffer.
|
||
|
||
** Debugging
|
||
|
||
*** New user option 'debug-allow-recursive-debug'.
|
||
This user option controls whether the 'e' (in a *Backtrace*
|
||
buffer or while edebugging) and 'C-x C-e' (while edebugging) commands
|
||
lead to a (further) backtrace. By default, this variable is nil,
|
||
which is a change in behaviour from previous Emacs versions.
|
||
|
||
** Compile
|
||
|
||
+++
|
||
*** The 'compilation-auto-jump-to-first-error' has been extended.
|
||
It can now have the additional values 'if-location-known' (which will
|
||
only jump if the location of the first error is known), and
|
||
'first-known' (which will jump to the first known error location).
|
||
|
||
+++
|
||
*** New user option 'compilation-max-output-line-length'.
|
||
Lines longer than this will have the ends hidden, with a button to
|
||
reveal the hidden text. This speeds up operations like grepping on
|
||
files that have few newlines.
|
||
|
||
** Flymake
|
||
|
||
+++
|
||
*** New user option 'flymake-mode-line-lighter'.
|
||
|
||
+++
|
||
** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'.
|
||
This mode switches 'word-wrap' on, and breaks on all the whitespace
|
||
characters instead of just SPC and TAB.
|
||
|
||
---
|
||
** New mode, 'emacs-news-mode', for editing the NEWS file.
|
||
This mode adds some highlighting, fixes the 'M-q' command, and has
|
||
commands for doing maintenance.
|
||
|
||
---
|
||
** kmacro
|
||
Kmacros are now OClosures and have a new constructor 'kmacro' which
|
||
uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form'
|
||
(which is now declared obsolete).
|
||
|
||
---
|
||
** 'savehist.el' can now truncate variables that are too long.
|
||
An element of 'savehist-additional-variables' can now be of the form
|
||
'(VARIABLE . MAX-ELTS)', which means to truncate the VARIABLE's value to
|
||
at most MAX-ELTS elements (if the value is a list) before saving the
|
||
value.
|
||
|
||
** Minibuffer and Completions
|
||
|
||
+++
|
||
*** New commands for navigating completions from the minibuffer.
|
||
When the minibuffer is the current buffer, typing 'M-<up>' or
|
||
'M-<down>' selects a previous/next completion candidate from the
|
||
"*Completions*" buffer and inserts it to the minibuffer.
|
||
When the user option 'minibuffer-completion-auto-choose' is nil,
|
||
'M-<up>' and 'M-<down>' do the same, but without inserting
|
||
a completion candidate to the minibuffer, then 'M-RET' can be used
|
||
to choose the currently active candidate from the "*Completions*"
|
||
buffer and exit the minibuffer. With a prefix argument, 'C-u M-RET'
|
||
inserts the currently active candidate to the minibuffer, but doesn't
|
||
exit the minibuffer.
|
||
|
||
+++
|
||
*** The "*Completions*" buffer can now be automatically selected.
|
||
To enable this behavior, customize the user option
|
||
'completion-auto-select' to t, then pressing 'TAB' will switch to the
|
||
"*Completions*" buffer when it pops up that buffer. If the value is
|
||
'second-tab', then the first 'TAB' will display "*Completions*", and
|
||
the second one will switch to the "*Completions*" buffer.
|
||
|
||
---
|
||
*** New user option 'completion-wrap-movement'.
|
||
When non-nil, the commands 'next-completion' and 'previous-completion'
|
||
automatically wrap around on reaching the beginning or the end of
|
||
the "*Completions*" buffer.
|
||
|
||
+++
|
||
*** New user option 'completions-sort'.
|
||
This option controls the sorting of the completion candidates in
|
||
the "*Completions*" buffer. Available styles are no sorting,
|
||
alphabetical (the default), or a custom sort function.
|
||
|
||
+++
|
||
*** New values for the 'completion-auto-help' user option.
|
||
There are two new values to control the way the "*Completions*" buffer
|
||
behaves after pressing a 'TAB' if completion is not unique. The value
|
||
'always' updates or shows the "*Completions*" buffer after any attempt
|
||
to complete. The value 'visual' is like 'always', but only updates
|
||
the completions if they are already visible. The default value 't'
|
||
always hides the completion buffer after some completion is made.
|
||
|
||
+++
|
||
*** New user option 'completions-max-height'.
|
||
This option limits the height of the "*Completions*" buffer.
|
||
|
||
+++
|
||
*** New user option 'completions-header-format'.
|
||
This is a string to control the heading line to show in the
|
||
"*Completions*" buffer before the list of completions.
|
||
If it contains "%s", that is replaced with the number of completions.
|
||
If nil, the heading line is not shown.
|
||
|
||
+++
|
||
*** New user option 'completions-highlight-face'.
|
||
When this user option names a face, the current
|
||
candidate in the "*Completions*" buffer is highlighted with that face.
|
||
The nil value disables this highlighting.
|
||
|
||
+++
|
||
*** Choosing a completion with a prefix argument doesn't exit the minibuffer.
|
||
This means that typing 'C-u RET' on a completion candidate in the
|
||
"*Completions*" buffer inserts the completion to the minibuffer,
|
||
but doesn't exit the minibuffer.
|
||
|
||
** Isearch and Replace
|
||
|
||
+++
|
||
*** Changes in how Isearch responds to 'mouse-yank-at-point'.
|
||
If a user does 'C-s' and then uses '<mouse-2>' ('mouse-yank-primary')
|
||
outside the echo area, Emacs will, by default, end the Isearch and
|
||
yank the text at mouse cursor. But if 'mouse-yank-at-point' is
|
||
non-nil, the text will now be added to the Isearch instead.
|
||
|
||
+++
|
||
*** New user option 'char-fold-override'.
|
||
Non-nil means that the default definitions of equivalent characters
|
||
are overridden.
|
||
|
||
+++
|
||
*** New command 'isearch-emoji-by-name'.
|
||
It is bound to 'C-x 8 e RET' during an incremental search. The
|
||
command accepts the Unicode name of an Emoji (for example, "smiling
|
||
face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer
|
||
completion, and adds the Emoji into the search string.
|
||
|
||
+++
|
||
** New minor mode 'glyphless-display-mode'.
|
||
This allows an easy way to toggle seeing all glyphless characters in
|
||
the current buffer.
|
||
|
||
** Registers
|
||
|
||
+++
|
||
*** Buffer names can now be stored in registers.
|
||
For instance, to enable jumping to the "*Messages*" buffer with
|
||
'C-x r j m':
|
||
|
||
(set-register ?m '(buffer . "*Messages*"))
|
||
|
||
** pixel-fill
|
||
|
||
+++
|
||
*** This is a new package that deals with filling variable-pitch text.
|
||
|
||
+++
|
||
*** New function 'pixel-fill-region'.
|
||
This fills the region to be no wider than a specified pixel width.
|
||
|
||
** Info
|
||
|
||
+++
|
||
*** 'M-x info-apropos' now takes a prefix argument to search for regexps.
|
||
|
||
---
|
||
*** New command 'Info-goto-node-web' and key binding 'G'.
|
||
This will take you to the gnu.org web server's version of the current
|
||
info node. This command only works for the Emacs and Emacs Lisp manuals.
|
||
|
||
** vc
|
||
|
||
---
|
||
*** 'C-x v v' on an unregistered file will now use the most specific backend.
|
||
Previously, if you had an SVN-covered "~/" directory, and a Git-covered
|
||
directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file
|
||
"~/foo/bar/zot" would register it in the SVN repository in "~/" instead of
|
||
in the Git repository in "~/foo/bar". This makes this command
|
||
consistent with 'vc-responsible-backend'.
|
||
|
||
** Message
|
||
|
||
---
|
||
*** New user option 'mml-attach-file-at-the-end'.
|
||
If non-nil, 'C-c C-a' will put attached files at the end of the message.
|
||
|
||
---
|
||
*** Message Mode now supports image yanking.
|
||
|
||
+++
|
||
*** New user option 'message-server-alist'.
|
||
This controls automatic insertion of the "X-Message-SMTP-Method"
|
||
header before sending a message.
|
||
|
||
** HTML Mode
|
||
|
||
---
|
||
*** HTML Mode now supports "text/html" and "image/*" yanking.
|
||
|
||
** Texinfo Mode
|
||
|
||
---
|
||
*** 'texinfo-mode' now has a specialised 'narrow-to-defun' definition.
|
||
It narrows to the current node.
|
||
|
||
** EUDC
|
||
|
||
+++
|
||
*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'.
|
||
'eudc-expansion-overwrites-query' is renamed to
|
||
'eudc-expansion-save-query-as-kill' to reflect the actual behavior of
|
||
the user option.
|
||
|
||
+++
|
||
*** New command 'eudc-expand-try-all'.
|
||
This command can be used in place of 'eudc-expand-inline'. It takes a
|
||
prefix argument that causes 'eudc-expand-try-all' to return matches
|
||
from all servers instead of just the matches from the first server to
|
||
return any. This is useful for example, if one wants to search LDAP
|
||
for a name that happens to match a contact in one's BBDB.
|
||
|
||
+++
|
||
*** New behavior and default for user option 'eudc-inline-expansion-format'.
|
||
EUDC inline expansion result formatting defaulted to
|
||
|
||
'("%s %s <%s>" firstname name email)
|
||
|
||
Since email address specifications need to comply with RFC 5322 in
|
||
order to be useful in messages, there was a risk to produce syntax
|
||
which was standard with RFC 822, but is marked as obsolete syntax by
|
||
its successor RFC 5322. Also, the first and last name part was never
|
||
enclosed in double quotes, potentially producing invalid address
|
||
specifications, which may be rejected by a receiving MTA. Thus, this
|
||
variable can now additionally be set to nil (the new default), or a
|
||
function. In both cases, the formatted result will be in compliance
|
||
with RFC 5322. When set to nil, a default format very similar to the
|
||
old default will be produced. When set to a function, that function
|
||
is called, and the returned values are used to populate the phrase and
|
||
comment parts (see RFC 5322 for definitions). In both cases, the
|
||
phrase part will be automatically quoted if necessary.
|
||
|
||
+++
|
||
*** New function 'eudc-capf-complete' with message-mode integration
|
||
EUDC can now contribute email addresses to 'completion-at-point' by
|
||
adding the new function 'eudc-capf-complete' to
|
||
'completion-at-point-functions' in message-mode.
|
||
|
||
** eww/shr
|
||
|
||
+++
|
||
*** 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.
|
||
|
||
+++
|
||
*** New user option 'shr-allowed-images'.
|
||
This complements 'shr-blocked-images', but allows specifying just the
|
||
allowed images.
|
||
|
||
+++
|
||
*** New user option 'shr-use-xwidgets-for-media'.
|
||
If non-nil (and Emacs has been built with support for xwidgets),
|
||
display <video> elements with an xwidget. Note that this is
|
||
experimental, and is known to crash Emacs on some systems, and just
|
||
doesn't work on other systems. Also see etc/PROBLEMS.
|
||
|
||
+++
|
||
*** New user option 'eww-url-transformers'.
|
||
These are used to alter an URL before using it. By default it removes
|
||
the common "utm_" trackers from URLs.
|
||
|
||
** Gnus
|
||
|
||
+++
|
||
*** Tool bar changes in Gnus/Message.
|
||
There were previously two styles of tool bars available in Gnus and
|
||
Message, referred to as 'gnus-summary-tool-bar-retro',
|
||
'gnus-group-tool-bar-retro' and 'message-tool-bar-retro', and
|
||
'gnus-summary-tool-bar-gnome', 'gnus-group-tool-bar-gnome' and
|
||
'message-tool-bar-gnome'. The "retro" tool bars have been removed (as
|
||
well as the icons used), and the "Gnome" tool bars are now the only
|
||
pre-defined toolbars.
|
||
|
||
---
|
||
*** Gnus now uses a variable-pitch font in the headers by default.
|
||
To get the monospace font back, you can put something like the
|
||
following in your .gnus file:
|
||
|
||
(set-face-attribute 'gnus-header nil :inherit 'unspecified)
|
||
|
||
---
|
||
*** The default value of 'gnus-treat-fold-headers' is now 'head'.
|
||
|
||
---
|
||
*** New face 'gnus-header'.
|
||
All other 'gnus-header-*' faces inherit from this face now.
|
||
|
||
+++
|
||
*** New user option 'gnus-treat-emojize-symbols'.
|
||
If non-nil, symbols that have an emoji representation will be
|
||
displayed as emojis. Default nil.
|
||
|
||
+++
|
||
*** New command 'gnus-article-emojize-symbols'.
|
||
This is bound to 'W D e' and will display symbols that have emoji
|
||
representation as emojis.
|
||
|
||
+++
|
||
*** New mu backend for gnus-search.
|
||
Configuration is very similar to the notmuch and namazu backends. It
|
||
supports the unified search syntax.
|
||
|
||
---
|
||
*** gnus-html-image-cache-ttl is now a seconds count.
|
||
Formerly it was a pair of numbers (A B) that represented 65536*A + B,
|
||
to cater to older Emacs implementations that lacked bignums.
|
||
The older form still works but is undocumented.
|
||
|
||
** EIEIO
|
||
|
||
+++
|
||
*** 'slot-value' can now be used to access 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.
|
||
|
||
** Help
|
||
|
||
---
|
||
*** New mode, 'emacs-news-view-mode', for viewing the NEWS file.
|
||
This mode is used by the 'C-h N' command, and adds buttons to manual
|
||
entries and symbol references.
|
||
|
||
---
|
||
*** New user option 'help-link-key-to-documentation'.
|
||
When this option is non-nil (which is the default), 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
|
||
|
||
---
|
||
*** New user option 'term-bind-function-keys'.
|
||
If non-nil, 'term-mode' will pass the function keys on to the
|
||
underlying shell instead of using the normal Emacs bindings.
|
||
|
||
---
|
||
*** 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".
|
||
|
||
+++
|
||
*** 'project-kill-buffers' can display the list of buffers to kill.
|
||
Customize the user option 'project-kill-buffers-display-buffer-list'
|
||
to enable the display of the buffer list.
|
||
|
||
+++
|
||
*** 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.
|
||
|
||
+++
|
||
*** 'xref-query-replace-in-results' prompting change.
|
||
This command no longer prompts for FROM when called without prefix
|
||
argument. This makes the most common case faster: replacing entire
|
||
matches.
|
||
|
||
+++
|
||
*** New command 'xref-find-references-and-replace' to rename one identifier.
|
||
|
||
---
|
||
*** New variable 'xref-current-item' (renamed from a private version).
|
||
|
||
---
|
||
*** New function 'xref-show-xrefs'.
|
||
|
||
** 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 Mode
|
||
|
||
+++
|
||
*** New command 'image-transform-fit-to-window'.
|
||
This command fits the image to the current window by scaling down or
|
||
up as necessary. Unlike 'image-transform-fit-both', this does not
|
||
only scale the image down, but up as well. It is bound to "s w" in
|
||
Image Mode by default.
|
||
|
||
+++
|
||
*** 'image-transform-fit-to-(height|width)' are now obsolete.
|
||
Use the new command 'image-transform-fit-to-window' instead.
|
||
The keybinding for 'image-transform-fit-to-width' is now 's i'.
|
||
|
||
---
|
||
*** User option 'image-auto-resize' can now be set to 'fit-window'.
|
||
This works like 'image-transform-fit-to-window'.
|
||
|
||
---
|
||
*** New user option 'image-auto-resize-max-scale-percent'.
|
||
The new 'fit-window' option will never scale an image more than this
|
||
much (in percent). It is nil by default, which means no limit.
|
||
|
||
---
|
||
*** New user option 'image-text-based-formats'.
|
||
This controls whether or not to show a message when opening certain
|
||
image formats saying how to edit it as text. The default is to show
|
||
this message for SVG and XPM.
|
||
|
||
** Image-Dired
|
||
|
||
+++
|
||
*** 'image-dired-display-image-mode' is now based on 'image-mode'.
|
||
This avoids converting images in the background, and makes Image-Dired
|
||
noticeably faster. New keybindings from 'image-mode' are now
|
||
available in the "*image-dired-display-image*" buffer; press '?' or
|
||
'h' in that buffer to see the full list. Finally, some commands and
|
||
user options that are no longer needed are now obsolete:
|
||
'image-dired-cmd-create-temp-image-options',
|
||
'image-dired-cmd-create-temp-image-program',
|
||
'image-dired-display-current-image-full',
|
||
'image-dired-display-current-image-sized',
|
||
'image-dired-display-window-height-correction',
|
||
'image-dired-display-window-width-correction',
|
||
'image-dired-temp-image-file'.
|
||
|
||
---
|
||
*** Navigation and marking commands now work in image display buffer.
|
||
The following new bindings have been added:
|
||
|
||
n or SPC image-dired-display-next-thumbnail-original
|
||
p or DEL image-dired-display-previous-thumbnail-original
|
||
m image-dired-mark-thumb-original-file
|
||
d image-dired-flag-thumb-original-file
|
||
u image-dired-unmark-thumb-original-file
|
||
|
||
---
|
||
*** 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. It is
|
||
bound to 'U' in the thumbnail and display buffer.
|
||
|
||
---
|
||
*** 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.
|
||
|
||
---
|
||
*** New face 'image-dired-thumb-flagged'.
|
||
If 'image-dired-thumb-mark' is non-nil (the default), this face is
|
||
used for images that are flagged for deletion in the Dired buffer
|
||
associated with Image-Dired.
|
||
|
||
---
|
||
*** 'image-dired-slideshow-start' is now bound to 'S'.
|
||
It is bound in both the thumbnail and display buffer.
|
||
|
||
---
|
||
*** The 'image-dired-slideshow-start' command no longer prompts.
|
||
It no longer inconveniently prompts for a number of images and a
|
||
delay: it runs indefinitely, but stops automatically on any command.
|
||
You can set the delay with a prefix argument, or a negative prefix
|
||
argument to prompt for a delay. Customize the user option
|
||
'image-dired-slideshow-delay' to change the default from 5 seconds.
|
||
|
||
---
|
||
*** 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.
|
||
|
||
---
|
||
*** New user option 'image-dired-marking-shows-next'.
|
||
If this option is non-nil (the default), marking, unmarking or
|
||
flagging an image in either the thumbnail or display buffer shows the
|
||
next image.
|
||
|
||
---
|
||
*** Image information is now shown in the header line.
|
||
This replaces the message most navigation commands in the thumbnail
|
||
buffer used to show at the bottom of the screen.
|
||
|
||
+++
|
||
*** '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 commands 'image-dired-refresh-thumb' to generate a new
|
||
thumbnail, or 'image-rotate' to rotate the thumbnail without updating
|
||
the thumbnail file.
|
||
|
||
** Dired
|
||
|
||
+++
|
||
*** New user option 'dired-mouse-drag-files'.
|
||
If non-nil, dragging file names with the mouse in a Dired buffer will
|
||
initiate a drag-and-drop session allowing them to be opened in other
|
||
programs.
|
||
|
||
+++
|
||
*** New user option 'dired-free-space'.
|
||
Dired will now, by default, include the free space in the first line
|
||
instead of having it on a separate line. To get the previous behavior
|
||
back, say:
|
||
|
||
(setq dired-free-space 'separate)
|
||
|
||
---
|
||
*** 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'.
|
||
|
||
** Xwidgets
|
||
|
||
---
|
||
*** New user option 'xwidget-webkit-buffer-name-format'.
|
||
Using this option you can control how the xwidget-webkit buffers are
|
||
named.
|
||
|
||
---
|
||
*** New user option 'xwidget-webkit-cookie-file'.
|
||
Using this option you can control whether the xwidget-webkit buffers
|
||
save cookies set by web pages, and if so, in which file to save them.
|
||
|
||
+++
|
||
*** New minor mode 'xwidget-webkit-edit-mode'.
|
||
When this mode is enabled, self-inserting characters and other common
|
||
web browser shortcut keys are redefined to send themselves to the
|
||
WebKit widget.
|
||
|
||
+++
|
||
*** New minor mode 'xwidget-webkit-isearch-mode'.
|
||
This mode acts similarly to incremental search, and allows searching
|
||
the contents of a WebKit widget. In xwidget-webkit mode, it is bound
|
||
to 'C-s' and 'C-r'.
|
||
|
||
+++
|
||
*** New command 'xwidget-webkit-browse-history'.
|
||
This command displays a buffer containing the page load history of
|
||
the current WebKit widget, and allows you to navigate it.
|
||
|
||
---
|
||
*** On X11, the WebKit inspector is now available inside xwidgets.
|
||
To access the inspector, right click on the widget and select "Inspect
|
||
Element".
|
||
|
||
---
|
||
*** "Open in New Window" in a WebKit widget's context menu now works.
|
||
The newly created buffer will be displayed via 'display-buffer', which
|
||
can be customized through the usual mechanism of 'display-buffer-alist'
|
||
and friends.
|
||
|
||
** Tramp
|
||
|
||
---
|
||
*** Tramp supports abbreviating remote home directories now.
|
||
When calling 'abbreviate-file-name' on a Tramp file name, the result
|
||
will abbreviate the user's home directory, for example by abbreviating
|
||
"/ssh:user@host:/home/user" to "/ssh:user@host:~".
|
||
|
||
+++
|
||
*** New user option 'tramp-use-scp-direct-remote-copying'.
|
||
When set to non-nil, Tramp does not copy files between two remote
|
||
hosts via a local copy in its temporary directory, but lets the 'scp'
|
||
command do this job.
|
||
|
||
+++
|
||
*** Proper password prompts for methods "doas", "sudo" and "sudoedit".
|
||
The password prompts for these methods reflect now the credentials of
|
||
the user requesting such a connection, and not of the user who is the
|
||
target. This has always been needed, just the password prompt and the
|
||
related 'auth-sources' entry were wrong.
|
||
|
||
** Browse URL
|
||
|
||
---
|
||
*** Support for the Netscape web browser has been removed.
|
||
This support has been obsolete since Emacs 25.1. The final version of
|
||
the Netscape web browser was released in February, 2008.
|
||
|
||
---
|
||
*** Support for the Galeon web browser has been removed.
|
||
This support has been obsolete since Emacs 25.1. The final version of
|
||
the Galeon web browser was released in September, 2008.
|
||
|
||
** Ruby Mode
|
||
|
||
---
|
||
*** New user option 'ruby-toggle-block-space-before-parameters'.
|
||
|
||
** Eshell
|
||
|
||
+++
|
||
*** New feature to easily bypass Eshell's own pipelining.
|
||
Prefixing '|', '<' or '>' with an asterisk, i.e. '*|', '*<' or '*>',
|
||
will cause the whole command to be passed to the operating system
|
||
shell. This is particularly useful to bypass Eshell's own pipelining
|
||
support for pipelines which will move a lot of data. See section
|
||
"Running Shell Pipelines Natively" in the Eshell manual, node
|
||
"(eshell) Input/Output".
|
||
|
||
+++
|
||
*** New module to help supplying absolute file names to remote commands.
|
||
After enabling the new 'eshell-elecslash' module, typing a forward
|
||
slash as the first character of a command line argument will
|
||
automatically insert the Tramp prefix. The automatic insertion
|
||
applies only when 'default-directory' is remote and the command is a
|
||
Lisp function. This frees you from having to keep track of whether
|
||
commands are Lisp function or external when supplying absolute file
|
||
name arguments. See "Electric forward slash" in the Eshell manual.
|
||
|
||
+++
|
||
*** Double-quoting an Eshell expansion now treats the result as a single string.
|
||
If an Eshell expansion like '$FOO' is surrounded by double quotes, the
|
||
result will always be a single string, no matter the type that would
|
||
otherwise be returned.
|
||
|
||
+++
|
||
*** Concatenating Eshell expansions now works more similarly to other shells.
|
||
When concatenating an Eshell expansion that returns a list, "adjacent"
|
||
elements of each operand are now concatenated together,
|
||
e.g. '$list("a" "b")c' returns '("a" "bc")'. See the "(eshell)
|
||
Expansion" node in the Eshell manual for more details.
|
||
|
||
+++
|
||
*** Eshell subcommands with multiline numeric output return lists of numbers.
|
||
If every line of the output of an Eshell subcommand like '${COMMAND}'
|
||
is numeric, the result will be a list of numbers (or a single number
|
||
if only one line of output). Previously, this only converted numbers
|
||
when there was a single line of output.
|
||
|
||
---
|
||
*** Built-in Eshell commands now follow POSIX/GNU argument syntax conventions.
|
||
Built-in commands in Eshell now accept command-line options with
|
||
values passed as a single token, such as '-oVALUE' or
|
||
'--option=VALUE'. New commands can take advantage of this with the
|
||
'eshell-eval-using-options' macro. See "Defining new built-in
|
||
commands" in the "(eshell) Built-ins" node of the Eshell manual.
|
||
|
||
** Calc
|
||
|
||
+++
|
||
*** New user option 'calc-kill-line-numbering'.
|
||
This can be set to nil to exclude line numbering from kills and copies.
|
||
|
||
** Miscellaneous
|
||
|
||
+++
|
||
*** New user option 'font-lock-ignore'.
|
||
This option provides a mechanism to selectively disable font-lock
|
||
keyword-driven fontifications.
|
||
|
||
+++
|
||
*** New package vtable.el for formatting tabular data.
|
||
This package allows formatting data using variable-pitch fonts.
|
||
The resulting tables can display text in variable pitch fonts, text
|
||
using fonts of different sizes, and images. See the "(vtable) Top"
|
||
manual for more details.
|
||
|
||
---
|
||
*** 'list-bookmarks' now includes a type column.
|
||
Types are registered via a 'bookmark-handler-type' symbol property on
|
||
the jumping function.
|
||
|
||
---
|
||
*** New minor mode 'elide-head-mode'.
|
||
Enabling this minor mode turns on hiding header material, like
|
||
'elide-head' does; disabling it shows the header. The commands
|
||
'elide-head' and 'elide-head-show' are now obsolete.
|
||
|
||
---
|
||
** The autoarg.el library is now marked obsolete.
|
||
This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor
|
||
modes to emulate the behavior of the historical editor Twenex Emacs.
|
||
It is believed to no longer be useful.
|
||
|
||
---
|
||
** proced.el shows system processes of remote hosts.
|
||
When 'default-directory' is remote, and 'proced' is invoked with a
|
||
negative argument like 'C-u - proced', the system processes of that
|
||
remote host are shown. Alternatively, the user option
|
||
'proced-show-remote-processes' can be set to non-nil.
|
||
'proced-signal-function' has been marked obsolete.
|
||
|
||
|
||
* New Modes and Packages in Emacs 29.1
|
||
|
||
+++
|
||
** New package 'oclosure'.
|
||
Allows the creation of "functions with slots" or "function objects"
|
||
via the macros 'oclosure-define' and 'oclosure-lambda'.
|
||
|
||
*** New generic function 'oclosure-interactive-form'.
|
||
Used by 'interactive-form' when called on an OClosure.
|
||
This allows specific OClosure types to compute their interactive specs
|
||
on demand rather than precompute them when created.
|
||
|
||
---
|
||
** New theme 'leuven-dark'.
|
||
This is a dark version of the 'leuven' theme.
|
||
|
||
+++
|
||
** 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
|
||
|
||
+++
|
||
** 'buffer-modified-p' has been extended.
|
||
This function was previously documented to return only nil or t. This
|
||
has been changed to nil/'autosaved'/non-nil. The new 'autosaved'
|
||
value means that the buffer is modified, but that it hasn't been
|
||
modified since the time of last auto-save.
|
||
|
||
---
|
||
** 'with-silent-modifications' also restores buffer autosave status.
|
||
'with-silent-modifications' is a macro meant to be used by the font
|
||
locking machinery to allow applying text properties without changing
|
||
the modification status of the buffer. However, it didn't restore the
|
||
buffer autosave status, so applying font locking to a modified buffer
|
||
that had already been auto-saved would trigger another auto-saving.
|
||
This is no longer the case.
|
||
|
||
---
|
||
** 'prin1' doesn't always escape "." and "?" in symbols any more.
|
||
Previously, symbols like 'foo.bar' would be printed by 'prin1' as
|
||
"foo\.bar". This now prints as "foo.bar" instead. The Emacs Lisp
|
||
reader interprets these strings as referring to the same symbol, so
|
||
this is virtually always backwards-compatible, but there may
|
||
theoretically be code out there that expects a specific printed
|
||
representation.
|
||
|
||
The same is the case with the "?" character: The 'foo?' symbol is now
|
||
printed as "foo?" instead of "foo\?".
|
||
|
||
If the "." and "?" characters are the first character in the symbol,
|
||
they will still be escaped, so the '.foo' symbol is still printed as
|
||
"\.foo" and the '?bar' symbol is still printed as "\?bar".
|
||
|
||
+++
|
||
** Remapping 'mode-line' no longer works as expected.
|
||
'mode-line' is now the parent face of the new 'mode-line-active' face,
|
||
and remapping parent of basic faces does not work reliably.
|
||
Instead of remapping 'mode-line', you have to remap 'mode-line-active'.
|
||
|
||
---
|
||
** User option 'mail-source-ignore-errors' is now obsolete.
|
||
The whole mechanism for prompting users to continue in case of
|
||
mail-source errors has been removed, so this option is no longer
|
||
needed.
|
||
|
||
** Fonts
|
||
|
||
---
|
||
*** Emacs now supports 'medium' fonts.
|
||
Emacs previously didn't distinguish between the 'regular'/'normal'
|
||
weight and the 'medium' weight, but it now also supports the (heavier)
|
||
'medium' weight. However, this means that if you previously specified
|
||
a weight of 'normal' and the font doesn't have this weight, Emacs
|
||
won't find the font spec. In these cases, replacing ":weight 'normal"
|
||
with ":weight 'medium" should fix the issue.
|
||
|
||
---
|
||
** 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.)
|
||
|
||
---
|
||
** Functions in 'tramp-foreign-file-name-handler-alist' have changed.
|
||
Functions to determine which Tramp file name handler to use are now
|
||
passed a file name in dissected form (via 'tramp-dissect-file-name')
|
||
instead of in string form.
|
||
|
||
---
|
||
** '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.
|
||
|
||
---
|
||
** 'insert-directory' alternatives should not change the free disk space line.
|
||
This change is now applied in 'dired-insert-directory'.
|
||
|
||
---
|
||
** Some functions and variables obsolete since Emacs 23 have been removed:
|
||
'find-emacs-lisp-shadows', 'newsticker-cache-filename',
|
||
'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode',
|
||
'vc-arch-command'.
|
||
|
||
+++
|
||
** New generic function 'function-doumentation'.
|
||
Can dynamically generate a raw docstring depending on the type of
|
||
a function.
|
||
Used mainly for docstrings of OClosures.
|
||
|
||
+++
|
||
** Base64 encoding no longer tolerates latin-1 input.
|
||
The functions 'base64-encode-string', 'base64url-encode-string',
|
||
'base64-encode-region' and 'base64url-encode-region' no longer accept
|
||
characters in the range U+0080..U+00FF as substitutes for single bytes
|
||
in the range 128..255, but signal an error for all multibyte characters.
|
||
The input must be encoded text.
|
||
|
||
+++
|
||
** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'.
|
||
It was previously only run by 'clone-indirect-buffer' and
|
||
'clone-indirect-buffer-other-window'. Since 'make-indirect-buffer' is
|
||
called by both of these, the hook is now run by all 3 of these
|
||
functions.
|
||
|
||
|
||
* Lisp Changes in Emacs 29.1
|
||
|
||
** Byte compilation
|
||
|
||
---
|
||
*** Byte compilation will now warn about some malformed 'defcustom' types.
|
||
It's very common to write 'defcustom' types on the form:
|
||
|
||
:type '(choice (const :tag "foo" 'bar))
|
||
|
||
I.e., double-quoting the 'bar', which is almost never the correct
|
||
value. The byte compiler will now issue a warning if it encounters
|
||
these forms.
|
||
|
||
|
||
+++
|
||
*** 'restore-buffer-modified-p' can now alter buffer auto-save state.
|
||
With a FLAG value of 'autosaved', it will mark the buffer as having
|
||
been auto-saved since the time of last modification.
|
||
|
||
---
|
||
*** New minor mode 'isearch-fold-quotes-mode'.
|
||
This sets up 'search-default-mode' so that quote characters are
|
||
char-folded into each other. It is used, by default, in *Help* and
|
||
*info* buffers.
|
||
|
||
+++
|
||
** New macro 'buffer-local-set-state'.
|
||
This is a helper macro to be used by minor modes that wish to restore
|
||
buffer-local variables back to their original states when the mode is
|
||
switched off.
|
||
|
||
---
|
||
** New macro 'with-buffer-unmodified-if-unchanged'.
|
||
If the buffer is marked as unmodified, and code does modifications
|
||
that, in total, means that the buffer is identical to the buffer
|
||
before, mark the buffer as unmodified again.
|
||
|
||
---
|
||
** New function 'malloc-trim'.
|
||
This function allows returning unused memory back to the operating
|
||
system, and is mainly meant as a debugging tool. It is currently
|
||
available only when Emacs was built with glibc as the C library.
|
||
|
||
---
|
||
** 'x-show-tip' no longer hard-codes a timeout default.
|
||
The new 'x-show-tooltip-timeout' variable allows the user to alter
|
||
this for packages that don't use 'tooltip-show', but instead calls the
|
||
lower level function directly.
|
||
|
||
+++
|
||
** New function 'window-max-characters-per-line'.
|
||
|
||
+++
|
||
** New function 'window-char-pixel-width'.
|
||
|
||
+++
|
||
** New function 'window-char-pixel-width'.
|
||
|
||
---
|
||
** New function 'current-cpu-time'.
|
||
It gives access to the CPU time used by the Emacs process, for
|
||
example for benchmarking purposes.
|
||
|
||
---
|
||
** New function 'string-edit'.
|
||
This is meant to be used when the user has to edit a (potentially)
|
||
long string. It pops you to a new buffer where you can edit the
|
||
string, and a callback is called when the user types 'C-c C-c'.
|
||
|
||
+++
|
||
** New function 'read-string-from-buffer'.
|
||
This is a modal version of 'string-edit', and can be used as an
|
||
alternative to 'read-string'.
|
||
|
||
+++
|
||
** The return value of 'clear-message-function' is not ignored anymore.
|
||
If the function returns 'dont-clear-message', then the message is not
|
||
cleared, with the assumption that the function cleared it itself.
|
||
|
||
+++
|
||
** The local variable section now supports defining fallback modes.
|
||
This was previously only available when using a property line (i.e.,
|
||
putting the modes on the first line of a file).
|
||
|
||
+++
|
||
** New function 'flush-standard-output'.
|
||
This enables you do display incomplete lines from batch-based Emacs
|
||
scripts.
|
||
|
||
+++
|
||
** New convenience function 'buttonize-region'.
|
||
This works like 'buttonize', but for a region instead of a string.
|
||
|
||
+++
|
||
** 'macroexp-let2*' can omit TEST arg and use single-var bindings.
|
||
|
||
+++
|
||
** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'.
|
||
See the "(cl) Macro-Writing Macros" manual section for descriptions.
|
||
|
||
+++
|
||
** New variable 'last-event-device' and new function 'device-class'.
|
||
On X Windows, 'last-event-device' specifies the input extension device
|
||
from which the last input event originated, and 'device-class' can be
|
||
used to determine the type of an input device.
|
||
|
||
+++
|
||
** 'track-mouse' can be a new value 'drag-source'.
|
||
This means the same as 'dropping', but modifies the mouse position
|
||
list in reported motion events if there is no frame underneath the
|
||
mouse pointer.
|
||
|
||
+++
|
||
** New function 'x-begin-drag'.
|
||
This function initiates a drag-and-drop request with the contents of
|
||
the selection 'XdndSelection', and returns when a drop occurs.
|
||
|
||
---
|
||
** New function 'ietf-drums-parse-date-string'.
|
||
This function parses RFC5322 (and RFC822) date strings, and should be
|
||
used instead of 'parse-time-string' when parsing data that's standards
|
||
compliant.
|
||
|
||
+++
|
||
** New macro 'setopt'.
|
||
This is like 'setq', but is meant to be used for user options instead
|
||
of plain variables, and
|
||
uses 'custom-set'/'set-default' to set them.
|
||
|
||
+++
|
||
** New utility predicate 'mode-line-window-selected-p'.
|
||
This is meant to be used from ':eval' mode line constructs to create
|
||
different mode line looks for selected and unselected windows.
|
||
|
||
+++
|
||
** New variable 'messages-buffer-name'.
|
||
This variable (defaulting to "*Messages*") allows packages to override
|
||
where messages are logged.
|
||
|
||
+++
|
||
** New function 'readablep'.
|
||
This function says whether an object can be written out and then
|
||
read back by the Emacs Lisp reader.
|
||
|
||
+++
|
||
** New variable 'print-unreadable-function'.
|
||
This variable allows changing how Emacs prints unreadable objects.
|
||
|
||
---
|
||
** The user option 'polling-period' now accepts floating point values.
|
||
This means Emacs can now poll for input during Lisp execution more
|
||
frequently than once in a second.
|
||
|
||
---
|
||
** New function 'bidi-string-strip-control-characters'.
|
||
This utility function is meant for displaying strings when it's
|
||
essential that there's no bidirectional context.
|
||
|
||
---
|
||
** The Gnus range functions have been moved to a new library, range.el.
|
||
All the old names have been made obsolete.
|
||
|
||
+++
|
||
** New function 'function-alias-p'.
|
||
This predicate says whether an object is a function alias, and if it
|
||
is, the alias chain is returned.
|
||
|
||
+++
|
||
** New variable 'lisp-directory' holds the directory of Emacs's own Lisp files.
|
||
|
||
+++
|
||
** New facility for handling session state: 'multisession-value'.
|
||
This can be used as a convenient way to store (simple) application
|
||
state, and the command 'list-multisession-values' allows users to list
|
||
(and edit) this data.
|
||
|
||
+++
|
||
** New function 'get-display-property'.
|
||
This is like 'get-text-property', but works on the 'display' text
|
||
property.
|
||
|
||
+++
|
||
** New function 'add-text-display-property'.
|
||
This is like 'put-text-property', but works on the 'display' text
|
||
property.
|
||
|
||
+++
|
||
** New 'min-width' 'display' property.
|
||
This allows setting a minimum display width for a region of text.
|
||
|
||
+++
|
||
** New 'cursor-face' text property.
|
||
This uses 'cursor-face' instead of the default face when cursor is on or
|
||
near the character and 'cursor-face-highlight-mode' is enabled. The
|
||
user option 'cursor-face-highlight-nonselected-window' is similar to
|
||
'highlight-nonselected-windows', but for this property.
|
||
|
||
+++
|
||
** New event type 'touch-end'.
|
||
This event is sent whenever the user's finger moves off the mouse
|
||
wheel on some mice, or when the user's finger moves off the touchpad.
|
||
|
||
+++
|
||
** New event type 'pinch'.
|
||
This event is sent when a user performs a pinch gesture on a touchpad,
|
||
which is comprised of placing two fingers on the touchpad and moving
|
||
them towards or away from each other.
|
||
|
||
+++
|
||
** New hook 'x-pre-popup-menu-hook'.
|
||
This hook is run before 'x-popup-menu' is about to display a
|
||
deck-of-cards menu on screen.
|
||
|
||
** New function 'buffer-match-p'.
|
||
Check if a buffer satisfies some condition. Some examples for
|
||
conditions can be regular expressions that match a buffer name, a
|
||
cons-cell like '(major-mode . shell-mode)' that matches any buffer
|
||
where 'major-mode' is 'shell-mode' or a combined with a condition like
|
||
'(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'.
|
||
|
||
** New function 'match-buffers'.
|
||
Use 'buffer-match-p' to gather a list of buffers that match a
|
||
condition.
|
||
|
||
** Text security and suspiciousness
|
||
|
||
+++
|
||
*** New library textsec.el.
|
||
This library contains a number of checks for whether a string is
|
||
"suspicious". This usually means that the string contains characters
|
||
that have glyphs that can be confused with other, more commonly used
|
||
glyphs, or contain bidirectional (or other) formatting characters that
|
||
may be used to confuse a user.
|
||
|
||
+++
|
||
*** New user option 'textsec-check'.
|
||
If non-nil (which is the default), Emacs packages that are vulnerable
|
||
to attackers trying to confuse the users will use the textsec library
|
||
to mark suspicious text. For instance shr/eww will mark suspicious
|
||
URLs and links, Gnus will mark suspicious From addresses, and
|
||
Message mode will query the user if the user is sending mail to a
|
||
suspicious address. If this variable is nil, these checks aren't
|
||
performed.
|
||
|
||
+++
|
||
*** New function 'textsec-suspicious-p'.
|
||
This is the main function Emacs applications should be using to check
|
||
whether a string is suspicious. It heeds the 'textsec-check' user
|
||
option.
|
||
|
||
** Keymaps and key definitions
|
||
|
||
+++
|
||
*** New functions for defining and manipulating keystrokes.
|
||
These all take the syntax defined by 'key-valid-p'. None of the older
|
||
functions have been deprecated or altered, but they are now
|
||
de-emphasized in the documentation.
|
||
|
||
+++
|
||
*** Use 'keymap-set' instead of 'define-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-global-set' instead of 'global-set-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-local-set' instead of 'local-set-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-global-unset' instead of 'global-unset-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-local-unset' instead of 'local-unset-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-substitute' instead of 'substitute-key-definition'.
|
||
|
||
+++
|
||
*** Use 'keymap-set-after' instead of 'define-key-after'.
|
||
|
||
+++
|
||
*** Use 'keymap-lookup' instead of 'lookup-keymap' and 'key-binding'.
|
||
|
||
+++
|
||
*** Use 'keymap-local-lookup' instead of 'local-key-binding'.
|
||
|
||
+++
|
||
*** Use 'keymap-global-lookup' instead of 'global-key-binding'.
|
||
|
||
+++
|
||
*** 'define-key' now takes an optional REMOVE argument.
|
||
If non-nil, remove the definition from the keymap. This is subtly
|
||
different from setting a definition to nil (when the keymap has a
|
||
parent).
|
||
|
||
+++
|
||
*** 'read-multiple-choice' now takes an optional SHOW-HELP argument.
|
||
If non-nil, show the help buffer immediately, before any user input.
|
||
|
||
+++
|
||
*** New function 'key-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 'key-valid-p' predicate does a stricter check of the
|
||
syntax.
|
||
|
||
---
|
||
*** New function 'key-parse'.
|
||
This is like 'kbd', but only returns vectors instead of a mix of
|
||
vectors and strings.
|
||
|
||
+++
|
||
*** New ':type' for 'defcustom' for keys.
|
||
The new 'key' type can be used for options that should be a valid key
|
||
according to 'key-valid-p'. The type 'key-sequence' is now obsolete.
|
||
|
||
+++
|
||
** New substitution in docstrings and 'substitute-command-keys'.
|
||
Use \\`KEYSEQ' to insert a literal key sequence "KEYSEQ" (for example
|
||
\\`C-k') in a docstring or when calling 'substitute-command-keys',
|
||
which will use the same face as a command substitution. This should
|
||
be used only when a key sequence has no corresponding command, for
|
||
example when it is read directly with 'read-key-sequence'. It must be
|
||
a valid key sequence according to 'key-valid-p'.
|
||
|
||
+++
|
||
** New function 'file-name-split'.
|
||
This returns a list of all the components of a file name.
|
||
|
||
+++
|
||
** New macro 'with-undo-amalgamate'.
|
||
It records a particular sequence of operations as a single undo step.
|
||
|
||
+++
|
||
** New command 'yank-media'.
|
||
This command supports yanking non-plain-text media like images and
|
||
HTML from other applications into Emacs. It is only supported in
|
||
modes that have registered support for it, and only on capable
|
||
platforms.
|
||
|
||
+++
|
||
** New command 'yank-media-types'.
|
||
This command lets you examine all data in the current selection and
|
||
the clipboard, and insert it into the buffer.
|
||
|
||
---
|
||
** New function 'minibuffer-lazy-highlight-setup'.
|
||
This function allows setting up the minibuffer so that lazy
|
||
highlighting of its content is applied in the original window.
|
||
|
||
+++
|
||
** New text property 'inhibit-isearch'.
|
||
If set, 'isearch' will skip these areas, which can be useful (for
|
||
instance) when covering huge amounts of data (that has no meaningful
|
||
searchable data, like image data) with a 'display' text property.
|
||
|
||
+++
|
||
** 'insert-image' now takes an INHIBIT-ISEARCH optional parameter.
|
||
It marks the image with the 'inhibit-isearch' text property, which
|
||
inhibits 'isearch' matching the STRING parameter.
|
||
|
||
---
|
||
** New variable 'replace-regexp-function'.
|
||
Function to call to convert the entered FROM string to an Emacs
|
||
regexp in 'query-replace' and similar commands. It can be used to
|
||
implement a different regexp syntax for search/replace.
|
||
|
||
---
|
||
** New variables to customize defaults of FROM for 'query-replace*' commands.
|
||
The new variable 'query-replace-read-from-default' can be set to a
|
||
function that returns the default value of FROM when 'query-replace'
|
||
prompts for a string to be replaced. An example of such a function is
|
||
'find-tag-default'.
|
||
|
||
The new variable 'query-replace-read-from-regexp-default' can be set
|
||
to a function (such as 'find-tag-default-as-regexp') that returns the
|
||
default value of FROM when 'query-replace-regexp' prompts for a regexp
|
||
whose matches are to be replaced. If these variables are nil (which
|
||
is the default), 'query-replace' and 'query-replace-regexp' take the
|
||
default value from the previous FROM-TO pair.
|
||
|
||
---
|
||
** New user option 'pp-use-max-width'.
|
||
If non-nil, 'pp' will attempt to limit the line length when formatting
|
||
long lists and vectors.
|
||
|
||
---
|
||
** New function 'pp-emacs-lisp-code'.
|
||
'pp' formats general Lisp sexps. This function does much the same,
|
||
but applies formatting rules appropriate for Emacs Lisp code.
|
||
|
||
+++
|
||
** 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.
|
||
|
||
+++
|
||
** 'abbreviate-file-name' now respects magic file name handlers.
|
||
|
||
---
|
||
** New function 'font-has-char-p'.
|
||
This can be used to check whether a specific font has a glyph for a
|
||
character.
|
||
|
||
+++
|
||
** 'window-text-pixel-size' now accepts a new argument IGNORE-LINE-AT-END.
|
||
This controls whether or not the last screen line of the text being
|
||
measured will be counted for the purpose of calculating the text
|
||
dimensions.
|
||
|
||
+++
|
||
** 'window-text-pixel-size' understands a new meaning of FROM.
|
||
Specifying a cons as the FROM argument allows to start measuring text
|
||
from a specified amount of pixels above or below a position.
|
||
|
||
+++
|
||
** 'set-window-vscroll' now accepts a new argument PRESERVE-VSCROLL-P.
|
||
This means the vscroll will not be reset when set on a window that is
|
||
"frozen" due to a mini-window being resized.
|
||
|
||
** XDG support
|
||
|
||
---
|
||
*** New function 'xdg-state-home' returns 'XDG_STATE_HOME' environment variable.
|
||
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
|
||
if the function takes longer to execute than 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.
|
||
|
||
** table.el
|
||
|
||
---
|
||
*** New user option 'table-latex-environment'.
|
||
This allows switching between "table" and "tabular".
|
||
|
||
** Tabulated List Mode
|
||
|
||
+++
|
||
*** A column can now be set to an image descriptor.
|
||
The 'tabulated-list-entries' variable now supports using an image
|
||
descriptor, which means to insert an image in that column instead of
|
||
text. See the documentation string of that variable for details.
|
||
|
||
+++
|
||
** :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 '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 permissive 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'.
|
||
|
||
** xwidgets
|
||
|
||
+++
|
||
*** The function 'make-xwidget' now accepts an optional RELATED argument.
|
||
This argument is used as another widget for the newly created WebKit
|
||
widget to share settings and subprocesses with. It must be another
|
||
WebKit widget.
|
||
|
||
+++
|
||
*** New function 'xwidget-perform-lispy-event'.
|
||
This function allows you to send events to xwidgets. Usually, some
|
||
equivalent of the event will be sent, but there is no guarantee of
|
||
what the widget will actually receive.
|
||
|
||
On GTK+, only key and function key events are implemented.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-load-html'.
|
||
This function is used to load HTML text into WebKit xwidgets
|
||
directly, in contrast to creating a temporary file to hold the
|
||
markup, and passing the URI of the file as an argument to
|
||
'xwidget-webkit-goto-uri'.
|
||
|
||
+++
|
||
*** New functions for performing searches on WebKit xwidgets.
|
||
Some new functions, such as 'xwidget-webkit-search', have been added
|
||
for performing searches on WebKit xwidgets.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-back-forward-list'.
|
||
This function is used to obtain the history of page-loads in a given
|
||
WebKit xwidget.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-estimated-load-progress'.
|
||
This function is used to obtain the estimated progress of page loading
|
||
in a given WebKit xwidget.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-stop-loading'.
|
||
This function is used to terminate all data transfer during page loads
|
||
in a given WebKit xwidget.
|
||
|
||
+++
|
||
*** 'load-changed' xwidget events are now more detailed.
|
||
In particular, they can now have different arguments based on the
|
||
state of the WebKit widget. 'load-finished' is sent when a load has
|
||
completed, 'load-started' when a load first starts, 'load-redirected'
|
||
after a redirect, and 'load-committed' when the WebKit widget first
|
||
commits to the load.
|
||
|
||
+++
|
||
*** New event type 'xwidget-display-event'.
|
||
These events are sent whenever an xwidget requests that Emacs display
|
||
another xwidget. The only arguments to this event are the xwidget
|
||
that should be displayed, and the xwidget that asked to display it.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-set-cookie-storage-file'.
|
||
This function is used to control where and if an xwidget stores
|
||
cookies set by web pages on disk.
|
||
|
||
---
|
||
** New variable 'help-buffer-under-preparation'.
|
||
This variable is bound to t during the preparation of a "*Help*" buffer.
|
||
|
||
+++
|
||
** Timestamps like '(1 . 1000)' now work without warnings being generated.
|
||
For example, '(time-add nil '(1 . 1000))' no longer warns that the
|
||
'(1 . 1000)' acts like '(1000 . 1000000)'. This warning, which was a
|
||
temporary transition aid for Emacs 27, has served its purpose.
|
||
|
||
+++
|
||
** 'encode-time' now also accepts a 6-element list with just time and date.
|
||
(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR)) is now short for
|
||
(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil)).
|
||
|
||
+++
|
||
** 'date-to-time' now assumes earliest values if its argument lacks
|
||
month, day, or time. For example, (date-to-time "2021-12-04") now
|
||
assumes a time of 00:00 instead of signaling an error.
|
||
|
||
+++
|
||
** 'format-seconds' now allows suppressing zero-value trailing elements.
|
||
The new "%x" non-printing control character will suppress zero-value
|
||
elements that appear after "%x".
|
||
|
||
+++
|
||
** New events for taking advantage of touchscreen devices.
|
||
The events 'touchscreen-begin, 'touchscreen-update', and
|
||
'touchscreen-end' have been added to take better advantage of
|
||
touch-capable display panels.
|
||
|
||
+++
|
||
** New error symbol 'permission-denied'.
|
||
This is a subcategory of 'file-error', and is signaled when some file
|
||
operation fails because the OS doesn't allow Emacs to access a file or
|
||
a directory.
|
||
|
||
+++
|
||
** The ':underline' face attribute now accepts a new property.
|
||
The property ':position' now specifies the position of the underline
|
||
when used as part of a property list specification for the
|
||
':underline' attribute.
|
||
|
||
+++
|
||
** 'defalias' records a more precise history of definitions.
|
||
This is recorded in the 'function-history' symbol property.
|
||
|
||
---
|
||
** 'indian-tml-base-table' no longer translates digits.
|
||
Use 'indian-tml-base-digits-table' if you want digits translation.
|
||
|
||
---
|
||
** 'indian-tml-itrans-v5-hash' no longer translates digits.
|
||
Use 'indian-tml-itrans-digits-v5-hash' if you want digits
|
||
translation.
|
||
|
||
+++
|
||
** 'shell-quote-argument' has a new optional parameter POSIX.
|
||
This is useful when quoting shell arguments for a remote shell
|
||
invocation. Such shells are POSIX conformant by default.
|
||
|
||
+++
|
||
** 'signal-process' now consults the list 'signal-process-functions'.
|
||
This is to determine which function has to be called in order to
|
||
deliver the signal. This allows Tramp to send the signal to remote
|
||
asynchronous processes. The hitherto existing implementation has been
|
||
moved to 'signal-default-interrupt-process'.
|
||
|
||
+++
|
||
** 'list-system-processes' now returns remote process IDs.
|
||
This happens only when the current buffer's 'default-directory' is
|
||
remote. In order to preserve the old behavior, apply
|
||
|
||
(let ((default-directory temporary-file-directory))
|
||
(list-system-processes))
|
||
|
||
+++
|
||
** 'process-attributes' expects a remote process ID now.
|
||
When current buffer's 'default-directory' is remote, the PID argument
|
||
of 'process-attributes' is regarded as a remote process ID. In order
|
||
to preserve the old behavior, apply
|
||
|
||
(let ((default-directory temporary-file-directory))
|
||
(process-attributes pid))
|
||
|
||
|
||
|
||
* Changes in Emacs 29.1 on Non-Free Operating Systems
|
||
|
||
** MS-Windows
|
||
|
||
---
|
||
*** Emacs now supports double-buffering on MS-Windows to reduce display flicker.
|
||
(This was supported on Free systems since Emacs 26.1.)
|
||
|
||
To disable double-buffering (e.g., if it causes display problems), set
|
||
the frame parameter 'inhibit-double-buffering' to a non-nil value.
|
||
You can do that either by adding
|
||
|
||
'(inhibit-double-buffering . t)
|
||
|
||
to 'default-frame-alist', or by modifying the frame parameters of the
|
||
selected frame by evaluating
|
||
|
||
(modify-frame-parameters nil '((inhibit-double-buffering . t)))
|
||
|
||
+++
|
||
*** 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.
|
||
|
||
---
|
||
*** Emacs now uses native image APIs to display some image formats.
|
||
On Windows 2000 and later, Emacs now defaults to using the native
|
||
image APIs for displaying the BMP, GIF, JPEG, PNG, and TIFF images.
|
||
This means Emacs on MS-Windows needs no longer use external image
|
||
support libraries to display those images. Other image types -- XPM,
|
||
SVG, and WEBP -- still need support libraries for Emacs to be able to
|
||
display them.
|
||
|
||
The use of native image APIs is controlled by the variable
|
||
'w32-use-native-image-API', whose value now defaults to t on systems
|
||
where those APIs are available.
|
||
|
||
+++
|
||
*** Emacs now supports display of BMP images using native image APIs.
|
||
When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now
|
||
has built-in support for displaying BMP images.
|
||
|
||
** Cygwin
|
||
|
||
---
|
||
*** 'process-attributes' is now implemented.
|
||
|
||
|
||
----------------------------------------------------------------------
|
||
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:
|