2022-11-28 18:03:07 +00:00
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Ahead-of-time native compilation can now be specified via configure.
|
|
|
|
|
Use '--with-native-compilation=aot' to specify that all the Lisp files
|
|
|
|
|
in the Emacs tree should be natively compiled ahead of time. (This is
|
|
|
|
|
slow on most machines.)
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Support for the WebP image format.
|
|
|
|
|
This support is built by default when the libwebp library is
|
|
|
|
|
available, and includes support for animated WebP images. To disable
|
|
|
|
|
WebP support, use the '--without-webp' configure flag. Image
|
|
|
|
|
specifiers can now use ':type webp'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
To enable Cairo support, ensure that the Cairo and FreeType
|
|
|
|
|
development files are present on your system, and configure Emacs with
|
|
|
|
|
'--with-be-cairo'.
|
|
|
|
|
|
|
|
|
|
Unlike X, there is no compile-time option to enable or disable
|
|
|
|
|
double-buffering; it is always enabled. To disable it, 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 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 no longer reduces the size of the Japanese dictionary.
|
|
|
|
|
Building Emacs includes generation of a Japanese dictionary, which is
|
|
|
|
|
used by Japanese input methods. Previously, the build included a step
|
|
|
|
|
of reducing the size of this dictionary's vocabulary. This vocabulary
|
|
|
|
|
reduction is now optional, by default off. If you need the Emacs
|
|
|
|
|
build to include the vocabulary reduction, configure Emacs with the
|
|
|
|
|
option '--with-small-ja-dic'. In an Emacs source tree already
|
|
|
|
|
configured without that option, you can force the vocabulary reduction
|
|
|
|
|
by saying
|
|
|
|
|
|
|
|
|
|
make -C leim generate-ja-dic JA_DIC_NO_REDUCTION_OPTION=''
|
|
|
|
|
|
|
|
|
|
after deleting "lisp/leim/ja-dic/ja-dic.el".
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Emacs now supports being built with pure GTK.
|
|
|
|
|
To use this option, make sure the GTK 3 (version 3.22.23 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 implementation of overlays has changed.
|
|
|
|
|
Emacs now uses an implementation of overlays that is much more
|
|
|
|
|
efficient than the original one, and should speed up all the
|
|
|
|
|
operations that involve overlays, especially when there are lots of
|
|
|
|
|
them in a buffer. However, no changes in behavior of overlays should
|
|
|
|
|
be visible on the Lisp or user level, with the exception of better
|
|
|
|
|
performance and the order of overlays returned by functions that don't
|
|
|
|
|
promise any particular order.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Startup Changes in Emacs 29.1
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** '--batch' and '--script' now adjust the garbage collection levels.
|
|
|
|
|
These switches now set 'gc-cons-percentage' to 1.0 (up from the
|
|
|
|
|
default of 0.1). This means that batch processes will typically use
|
|
|
|
|
more memory than before, but use less time doing garbage collection.
|
|
|
|
|
Batch jobs that are supposed to run for a long time should adjust the
|
|
|
|
|
limit back down again.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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 is meant to
|
|
|
|
|
be used to reinitialize structures that would normally be done at load
|
|
|
|
|
time.
|
|
|
|
|
|
|
|
|
|
** Native Compilation
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New variable 'inhibit-automatic-native-compilation'.
|
|
|
|
|
If set, Emacs will inhibit native compilation (and won't write
|
|
|
|
|
anything to the eln cache automatically). The variable is initialized
|
|
|
|
|
from the 'EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION' environment
|
|
|
|
|
variable on Emacs startup.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'native-compile-prune-cache'.
|
|
|
|
|
This command deletes older eln cache entries (but not the ones for
|
|
|
|
|
the current Emacs version).
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** The image commands have changed key bindings.
|
|
|
|
|
In previous Emacs versions, images have had the '+', '-' and 'r' keys
|
|
|
|
|
bound when point is over an image. In Emacs 29.1, additional commands
|
|
|
|
|
were added, and this made it more likely that users would trigger the
|
|
|
|
|
image commands by mistake. To avoid this, all image commands have
|
|
|
|
|
moved to the 'i' keymap, so '+' is now 'i +', '-' is now 'i -', and
|
|
|
|
|
'r' is now 'i r'. In addition, these commands are now repeating, so
|
|
|
|
|
you can rotate an image twice by saying 'i r r', for instance.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Emacs now picks the correct coding system for X input methods.
|
|
|
|
|
Previously, Emacs would use the locale coding system for input
|
|
|
|
|
methods, which could in some circumstances be incorrect, especially
|
|
|
|
|
when the input method chose to fall back to some other coding system.
|
|
|
|
|
|
|
|
|
|
Now, Emacs automatically detects the coding system used by input
|
|
|
|
|
methods, and uses that to decode input in preference to the value of
|
|
|
|
|
'locale-coding-system'. This unfortunately means that users who have
|
|
|
|
|
changed the coding system used to decode X keyboard input must adjust
|
|
|
|
|
their customizations to 'locale-coding-system' to the variable
|
|
|
|
|
'x-input-coding-system' instead.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Bookmarks no longer include context for encrypted files.
|
|
|
|
|
If you're visiting an encrypted file, setting a bookmark no longer
|
|
|
|
|
includes excerpts from that buffer in the bookmarks file. This is
|
|
|
|
|
implemented by the new hook 'bookmark-inhibit-context-functions',
|
|
|
|
|
where packages can register a function which returns non-nil for file
|
|
|
|
|
names to be excluded from adding such excerpts.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 'show-paren-mode' is now disabled in 'special-mode' buffers.
|
|
|
|
|
In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted
|
|
|
|
|
off. In Emacs 28.1, the mode was switched on in all buffers. In
|
|
|
|
|
Emacs 29.1, this was changed to be switched on in all editing-related
|
|
|
|
|
buffers, but not in buffers that inherit from 'special-mode'. To get
|
|
|
|
|
back to how things worked in Emacs 28.1, put the following in your
|
|
|
|
|
init file:
|
|
|
|
|
|
|
|
|
|
(setopt show-paren-predicate t)
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Explicitly-set read-only state is preserved when reverting a buffer.
|
|
|
|
|
If you use the 'C-x C-q' command to change the read-only state of the
|
|
|
|
|
buffer and then revert it, Emacs would previously use the file
|
|
|
|
|
permission bits to determine whether the buffer should be read-only
|
|
|
|
|
after reverting the buffer. Emacs now remembers the decision made in
|
|
|
|
|
'C-x C-q'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The Gtk selection face is no longer used for the region.
|
|
|
|
|
The combination of a Gtk-controlled background and a foreground color
|
|
|
|
|
controlled by the internal Emacs machinery led to low-contrast faces
|
|
|
|
|
in common default setups. Emacs now uses the same 'region' face on
|
|
|
|
|
Gtk and non-Gtk setups.
|
|
|
|
|
|
|
|
|
|
** Dired
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'w' ('dired-copy-filename-as-kill') has changed behavior.
|
|
|
|
|
If there are several files marked, file names containing space and
|
|
|
|
|
quote characters will be quoted "like this".
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** The 'd' command now more consistently skips dot files.
|
|
|
|
|
In previous Emacs versions, commands like 'C-u 10 d' would put the "D"
|
|
|
|
|
mark on the next ten files, no matter whether they were dot files
|
|
|
|
|
(i.e., "." and "..") or not, while marking the next ten lines with the
|
|
|
|
|
mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot
|
|
|
|
|
files. These now work equivalently.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Warning about "eager macro-expansion failure" is changed into an error.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Previously, the X "reverseVideo" value at startup was heeded for all frames.
|
|
|
|
|
This meant that if you had a "reverseVideo" resource on the initial
|
|
|
|
|
display, and then opened up a new frame on a display without any
|
|
|
|
|
explicit "reverseVideo" setting, it would get heeded there, too. (This
|
|
|
|
|
included terminal frames.) In Emacs 29, the "reverseVideo" X resource
|
|
|
|
|
is handled like all the other X resources, and set on a per-frame basis.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'E' in 'query-replace' now edits the replacement with exact case.
|
|
|
|
|
Previously, this command did the same as 'e'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Setting the goal columns now also affects '<prior>' and '<next>'.
|
|
|
|
|
Previously, 'C-x C-n' only affected 'next-line' and 'previous-line',
|
|
|
|
|
but it now also affects 'scroll-up-command' and 'scroll-down-command'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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 point 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 'C-x 8 =' moved to 'C-x 8 = ='.
|
|
|
|
|
You can now use 'C-x 8 =' to insert several characters with macron;
|
|
|
|
|
for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH
|
|
|
|
|
MACRON. To insert a lone macron, type 'C-x 8 = =' instead of the
|
|
|
|
|
previous 'C-x ='.
|
|
|
|
|
|
|
|
|
|
** Eshell
|
|
|
|
|
|
|
|
|
|
*** Eshell's PATH is now derived from 'exec-path'.
|
|
|
|
|
For consistency with remote connections, Eshell now uses 'exec-path'
|
|
|
|
|
to determine the execution path on the local system, instead of using
|
|
|
|
|
the PATH environment variable directly.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** '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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Eshell pipelines now only pipe stdout by default.
|
|
|
|
|
To pipe both stdout and stderr, use the '|&' operator instead of '|'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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 that 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'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Naming of Image-Dired thumbnail files has changed.
|
|
|
|
|
Names of thumbnail files generated when 'image-dired-thumbnail-storage'
|
|
|
|
|
is 'image-dired' now always end in ".jpg". This fixes various issues
|
|
|
|
|
on different platforms, but means that thumbnails generated in Emacs 28
|
|
|
|
|
will not be used in Emacs 29, and vice-versa. If disk space is an
|
|
|
|
|
issue, consider deleting the 'image-dired-dir' directory after
|
|
|
|
|
upgrading (usually "~/.emacs.d/image-dired/").
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The 'rlogin' method in the URL library is now obsolete.
|
|
|
|
|
Emacs will now display a warning if you request a URL like
|
|
|
|
|
"rlogin://foo@example.org".
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Setting 'url-gateway-method' to 'rlogin' is now obsolete.
|
|
|
|
|
Emacs will now display a warning when setting it to that value.
|
|
|
|
|
The user options 'url-gateway-rlogin-host',
|
|
|
|
|
'url-gateway-rlogin-parameters', and 'url-gateway-rlogin-user-name'
|
|
|
|
|
are also obsolete.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The user function 'url-irc-function' now takes a SCHEME argument.
|
|
|
|
|
The user option 'url-irc-function' is now called with a sixth argument
|
|
|
|
|
corresponding to the scheme portion of the target URL. For example,
|
|
|
|
|
this would be "ircs" for a URL like "ircs://irc.libera.chat".
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The linum.el library is now obsolete.
|
|
|
|
|
We recommend using either the built-in 'display-line-numbers-mode', or
|
|
|
|
|
the 'nlinum' package from GNU ELPA instead. The former has better
|
|
|
|
|
performance, but the latter is closer to a drop-in replacement.
|
|
|
|
|
|
|
|
|
|
1. To use 'display-line-numbers-mode', add something like this to your
|
|
|
|
|
Init file:
|
|
|
|
|
|
|
|
|
|
(global-display-line-numbers-mode 1)
|
|
|
|
|
;; Alternatively, to use it only in programming modes:
|
|
|
|
|
(add-hook 'prog-mode-hook #'display-line-numbers-mode)
|
|
|
|
|
|
|
|
|
|
2. To use 'nlinum', add this to your Init file:
|
|
|
|
|
|
|
|
|
|
(package-install 'nlinum)
|
|
|
|
|
(global-nlinum-mode 1)
|
|
|
|
|
;; Alternatively, to use it only in programming modes:
|
|
|
|
|
(add-hook 'prog-mode-hook #'nlinum-mode)
|
|
|
|
|
|
|
|
|
|
3. To continue using the obsolete package 'linum', add this line to
|
|
|
|
|
your Init file, in addition to any existing customizations:
|
|
|
|
|
|
|
|
|
|
(require 'linum)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The thumbs.el library is now obsolete.
|
|
|
|
|
We recommend using 'M-x image-dired' instead.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The quickurl.el library is now obsolete.
|
|
|
|
|
Use 'abbrev', 'skeleton' or 'tempo' instead.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The rlogin.el library, and the 'rsh' command are now obsolete.
|
|
|
|
|
Use something like 'M-x shell RET ssh <host> RET' instead.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The url-about.el library is now obsolete.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The autoload.el library is now obsolete.
|
|
|
|
|
It is superseded by the loaddefs-gen.el library.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The netrc.el library is now obsolete.
|
|
|
|
|
Use the 'auth-source-netrc-parse-all' function in auth-source.el
|
|
|
|
|
instead.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** The url-dired.el library is now obsolete.
|
|
|
|
|
|
|
|
|
|
---
|
2022-11-30 15:10:39 +00:00
|
|
|
|
** The fast-lock.el and lazy-lock.el libraries have been removed.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
They have been obsolete since Emacs 22.1.
|
|
|
|
|
|
|
|
|
|
The variable 'font-lock-support-mode' is occasionally useful for
|
|
|
|
|
debugging purposes. It is now a regular variable (instead of a user
|
|
|
|
|
option) and can be set to nil to disable Just-in-time Lock mode.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Changes in Emacs 29.1
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New user option 'major-mode-remap-alist' to specify favorite major modes.
|
|
|
|
|
This user option lets you remap the default modes (e.g. 'perl-mode' or
|
|
|
|
|
'latex-mode') to your favorite ones (e.g. 'cperl-mode' or
|
|
|
|
|
'LaTeX-mode') without having to use 'defalias', which can have
|
|
|
|
|
undesirable side effects.
|
|
|
|
|
This applies to all modes specified via 'auto-mode-alist', file-local
|
|
|
|
|
variables, etc.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Emacs now supports Unicode Standard version 15.0.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New user option 'electric-quote-replace-consecutive'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Emacs is now capable of editing files with very long lines.
|
|
|
|
|
The display of long lines has been optimized, and Emacs should no
|
|
|
|
|
longer choke when a buffer on display contains long lines. The
|
|
|
|
|
variable 'long-line-threshold' controls whether and when these display
|
|
|
|
|
optimizations are in effect.
|
|
|
|
|
|
|
|
|
|
A companion variable 'large-hscroll-threshold' controls when another
|
|
|
|
|
set of display optimizations are in effect, which are aimed
|
|
|
|
|
specifically at speeding up display of long lines that are truncated.
|
|
|
|
|
|
|
|
|
|
If you still experience slowdowns while editing files with long lines,
|
|
|
|
|
this may be due to line truncation, or to one of the enabled minor
|
|
|
|
|
modes, or to the current major mode. Try turning off line truncation
|
|
|
|
|
with 'C-x x t', or try disabling all known slow minor modes with
|
|
|
|
|
'M-x so-long-minor-mode', or try disabling both known slow minor modes
|
|
|
|
|
and the major mode with 'M-x so-long-mode', or visit the file with
|
|
|
|
|
'M-x find-file-literally' instead of the usual 'C-x C-f'.
|
|
|
|
|
|
|
|
|
|
Note that the display optimizations in these cases may cause the
|
|
|
|
|
buffer to be occasionally mis-fontified.
|
|
|
|
|
|
|
|
|
|
The new function 'long-line-optimizations-p' returns non-nil when
|
|
|
|
|
these optimizations are in effect in the current buffer.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New command to change the font size globally.
|
|
|
|
|
To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to
|
|
|
|
|
decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x
|
|
|
|
|
C-M-0'. The final key in these commands may be repeated without the
|
|
|
|
|
leading 'C-x' and without the modifiers, e.g. 'C-x C-M-+ C-M-+ C-M-+'
|
|
|
|
|
and 'C-x C-M-+ + +' increase the font size by three steps. When
|
|
|
|
|
'mouse-wheel-mode' is enabled, 'C-M-wheel-up' and 'C-M-wheel-down' also
|
|
|
|
|
increase and decrease the font size globally. Additionally, the
|
|
|
|
|
user option 'global-text-scale-adjust-resizes-frames' controls whether
|
|
|
|
|
the frames are resized when the font size is changed.
|
|
|
|
|
|
|
|
|
|
** New config variable 'syntax-wholeline-max' to reduce the cost of long lines.
|
|
|
|
|
This variable is used by some operations (mostly syntax-propertization
|
|
|
|
|
and font-locking) to treat lines longer than this variable as if they
|
|
|
|
|
were made up of various smaller lines. This can help reduce the
|
|
|
|
|
slowdowns seen in buffers made of a single long line, but can also
|
|
|
|
|
cause misbehavior in the presence of such long lines (tho most of that
|
|
|
|
|
misbehavior should usually be limited to mis-highlighting). You can
|
|
|
|
|
recover the previous behavior with:
|
|
|
|
|
|
|
|
|
|
(setq syntax-wholeline-max most-positive-fixnum)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New bindings in 'find-function-setup-keys' for 'find-library'.
|
|
|
|
|
When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to
|
|
|
|
|
'find-library', 'C-x 4 L' is now bound to 'find-library-other-window'
|
|
|
|
|
and 'C-x 5 L' is now bound to 'find-library-other-frame'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New key binding after 'M-x' or 'M-X': 'M-X'.
|
|
|
|
|
Emacs allows different completion predicates to be used with 'M-x'
|
|
|
|
|
(i.e., 'execute-extended-command') via the
|
|
|
|
|
'read-extended-command-predicate' user option. Emacs also has the
|
|
|
|
|
'M-X' (note upper case) command, which only displays commands
|
|
|
|
|
especially relevant to the current buffer. Emacs now allows toggling
|
|
|
|
|
between these modes while the user is inputting a command by hitting
|
|
|
|
|
'M-X' while in the minibuffer.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New commands 'duplicate-line' and 'duplicate-dwim'.
|
|
|
|
|
'duplicate-line' duplicates the current line the specified number of times.
|
|
|
|
|
'duplicate-dwim' duplicates the region if it is active. If not, it
|
|
|
|
|
works like 'duplicate-line'. An active rectangular region is
|
|
|
|
|
duplicated on its right-hand side.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Files with the ".eld" extension are now visited in 'lisp-data-mode'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'network-lookup-address-info' can now check numeric IP address validity.
|
|
|
|
|
Specifying 'numeric' as the new optional 'hints' argument makes it
|
|
|
|
|
check if the passed address is a valid IPv4/IPv6 address (without DNS
|
|
|
|
|
traffic).
|
|
|
|
|
|
|
|
|
|
(network-lookup-address-info "127.1" 'ipv4 'numeric)
|
|
|
|
|
=> ([127 0 0 1 0])
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New command 'find-sibling-file'.
|
|
|
|
|
This command jumps to a file considered a "sibling file", which is
|
|
|
|
|
determined according to the new user option 'find-sibling-rules'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New user option 'delete-selection-temporary-region'.
|
|
|
|
|
When non-nil, 'delete-selection-mode' will only delete the temporary
|
|
|
|
|
regions (usually set by mouse-dragging or shift-selection).
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New user option 'switch-to-prev-buffer-skip-regexp'.
|
|
|
|
|
This should be a regexp or a list of regexps; buffers whose names
|
|
|
|
|
match those regexps will be ignored by 'switch-to-prev-buffer' and
|
|
|
|
|
'switch-to-next-buffer'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New command 'rename-visited-file'.
|
|
|
|
|
This command renames the file visited by the current buffer by moving
|
|
|
|
|
it to a new location, and also makes the buffer visit this new file.
|
|
|
|
|
|
|
|
|
|
** 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-mode-line-buffer'.
|
|
|
|
|
If non-nil, dragging on the buffer name part of the mode-line will
|
|
|
|
|
drag the buffer's associated file to other programs. This option is
|
|
|
|
|
currently only available on X, Haiku and Nextstep (GNUstep or macOS).
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** The value of 'mouse-drag-copy-region' can now be the symbol 'non-empty'.
|
|
|
|
|
This prevents mouse drag gestures from putting empty strings onto the
|
|
|
|
|
kill ring.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** The X Direct Save (XDS) protocol is now supported.
|
|
|
|
|
This means dropping an image or file link from programs such as
|
|
|
|
|
Firefox will no longer create a temporary file in a random directory,
|
|
|
|
|
instead asking you where to save the file first.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New user option 'record-all-keys'.
|
|
|
|
|
If non-nil, this option will force recording of all input keys,
|
|
|
|
|
including those typed in response to passwords prompt (this was the
|
|
|
|
|
previous behavior). The default is nil, which inhibits recording of
|
|
|
|
|
passwords.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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-words' will now report buffer totals if given a prefix.
|
|
|
|
|
Without a prefix, it will only report the word count for the narrowed
|
|
|
|
|
part of the buffer.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'count-words' will now report sentence count when used interactively.
|
|
|
|
|
|
|
|
|
|
** New user option 'set-message-functions'.
|
|
|
|
|
It allows selecting more functions for 'set-message-function'
|
|
|
|
|
in addition to the default function that handles messages
|
|
|
|
|
in the active minibuffer. The most useful are 'inhibit-message'
|
|
|
|
|
that allows specifying a list of messages to inhibit via
|
|
|
|
|
'inhibit-message-regexps', and 'set-multi-message' that
|
|
|
|
|
accumulates recent messages and displays them stacked
|
|
|
|
|
in the echo area.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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 faces for font-lock.
|
|
|
|
|
These faces are primarily meant for use with tree-sitter. They are:
|
|
|
|
|
'font-lock-bracket-face', 'font-lock-delimiter-face',
|
|
|
|
|
'font-lock-escape-face', 'font-lock-number-face',
|
|
|
|
|
'font-lock-misc-punctuation-face', 'font-lock-operator-face',
|
|
|
|
|
'font-lock-property-face', and 'font-lock-punctuation-face'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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 face attribute pseudo-value 'reset'.
|
|
|
|
|
This value stands for the value of the corresponding attribute of the
|
|
|
|
|
'default' face. It can be used to reset attribute values produced by
|
|
|
|
|
inheriting from other faces.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New X resources: "highlightForeground" and "highlightBackground".
|
|
|
|
|
Only in the Lucid build, this controls colors used for highlighted
|
|
|
|
|
menu item widgets.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** On X, 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".
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** On X, Emacs can optionally synchronize display with the graphics hardware.
|
|
|
|
|
When this is enabled by setting the X resource "synchronizeResize" to
|
|
|
|
|
"extended", frame content "tearing" is drastically reduced. This is
|
|
|
|
|
only supported on the Motif, Lucid, and no-toolkit builds, and
|
|
|
|
|
requires an X compositing manager supporting the extended frame
|
|
|
|
|
synchronization protocol (see
|
|
|
|
|
https://fishsoup.net/misc/wm-spec-synchronization.html).
|
|
|
|
|
|
|
|
|
|
This behavior can be toggled on and off via the frame parameter
|
|
|
|
|
'use-frame-synchronization'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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+, Nextstep, 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Non-native tooltips are now supported on Nextstep.
|
|
|
|
|
This means Emacs built with GNUstep or built on macOS is now able to
|
|
|
|
|
display different faces and images inside tooltips when the
|
|
|
|
|
'use-system-tooltips' user option is nil.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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".
|
|
|
|
|
|
|
|
|
|
*** Select active regions with xterm selection support.
|
|
|
|
|
On terminals with xterm setSelection support, the active region may be
|
|
|
|
|
saved to the X primary selection, following the
|
|
|
|
|
'select-active-regions' variable. This support is enabled when
|
|
|
|
|
'tty-select-active-regions' is non-nil.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command to set up display of unsupported characters.
|
|
|
|
|
The new command 'standard-display-by-replacement-char' produces Lisp
|
|
|
|
|
code that sets up the 'standard-display-table' to use a replacement
|
|
|
|
|
character for display of characters that the text-mode terminal
|
|
|
|
|
doesn't support. It is most useful with the Linux console and similar
|
|
|
|
|
terminals, where Emacs has a reliable way of determining which
|
|
|
|
|
characters have glyphs in the font loaded into the terminal's memory.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New functions to set terminal output buffer size.
|
|
|
|
|
The new functions 'tty--set-output-buffer-size' and
|
|
|
|
|
'tty--output-buffer-size' allow setting and retrieving the output
|
|
|
|
|
buffer size of a terminal device. The default buffer size is and has
|
|
|
|
|
always been BUFSIZ, which is defined in your system's stdio.h. When
|
|
|
|
|
you set a buffer size with 'tty--set-output-buffer-size', this also
|
|
|
|
|
prevents Emacs from explicitly flushing the tty output stream, except
|
|
|
|
|
at the end of display update.
|
|
|
|
|
|
|
|
|
|
** 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 commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'.
|
|
|
|
|
These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They
|
|
|
|
|
can be used on any character, but are mainly useful for emoji.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New input method 'emoji'.
|
|
|
|
|
This allows you to enter emoji using short strings, eg ':face_palm:'
|
|
|
|
|
or ':scream:'.
|
|
|
|
|
|
|
|
|
|
** Help
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Variable values displayed by 'C-h v' in "*Help*" are now font-locked.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'help-clean-buttons'.
|
|
|
|
|
If non-nil, link buttons in "*Help*" will have any surrounding quotes
|
|
|
|
|
removed.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'M-x apropos-variable' output now includes values of variables.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New docstring syntax to indicate that symbols shouldn't be links.
|
|
|
|
|
When displaying docstrings 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'describe-keymap' now considers the symbol at point.
|
|
|
|
|
If the symbol at point is a keymap, 'describe-keymap' suggests it as
|
|
|
|
|
the default candidate.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'help-quick' displays an overview of common commands.
|
|
|
|
|
The command pops up a buffer at the bottom of the screen with a few
|
|
|
|
|
helpful commands for various tasks. You can toggle the display using
|
|
|
|
|
'C-h q'.
|
|
|
|
|
|
2022-11-30 15:10:39 +00:00
|
|
|
|
** Emacs 29.1 comes with Org v9.6.
|
|
|
|
|
See the file ORG-NEWS for user-visible changes in Org.
|
|
|
|
|
|
2022-11-28 18:03:07 +00:00
|
|
|
|
** 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. The default is nil, but in 'help-mode'
|
|
|
|
|
it has the value 'insert' that inserts the buttons directly to the
|
|
|
|
|
buffer where you can use 'RET' to cycle outline visibility. When
|
|
|
|
|
the value is 'in-margins', Outline Minor Mode uses the window margins
|
|
|
|
|
to hide/show outlines.
|
|
|
|
|
|
|
|
|
|
** Windows
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New commands 'split-root-window-below' and 'split-root-window-right'.
|
|
|
|
|
These commands split the root window in two, and are bound to 'C-x w 2'
|
|
|
|
|
and 'C-x w 3', respectively. A number of other useful window-related
|
|
|
|
|
commands are now available on the 'C-x w' prefix.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'display-buffer-avoid-small-windows'.
|
|
|
|
|
If non-nil, this should be a window height, a number. Windows smaller
|
|
|
|
|
than this will be avoided by 'display-buffer', if possible.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New display action 'display-buffer-full-frame'.
|
|
|
|
|
This action removes other windows on the frame when displaying a
|
|
|
|
|
buffer.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** '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
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'tab-bar-auto-width' to automatically determine tab width.
|
|
|
|
|
This option is non-nil by default, which resizes tab-bar tabs so that
|
|
|
|
|
their width is evenly distributed across the tab bar. A companion
|
|
|
|
|
option 'tab-bar-auto-width-max' controls the maximum width of a tab
|
|
|
|
|
before its name on display is truncated.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** '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'/'--reuse-frame' for emacsclient.
|
|
|
|
|
With this command-line option, Emacs reuses an existing graphical client
|
|
|
|
|
frame if one exists; otherwise it creates a new frame.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command-line option '-w N'/'--timeout=N' for emacsclient.
|
|
|
|
|
With this command-line option, emacsclient will exit if Emacs does not
|
|
|
|
|
respond within N seconds. The default is to wait forever.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** '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 behavior of completing by cycling through the
|
|
|
|
|
available options can be restored by enabling this option.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'rcirc-bridge-bot-alist'.
|
|
|
|
|
If you are in a channel where a bot is responsible for bridging
|
|
|
|
|
between networks, you can use this variable to make these messages
|
|
|
|
|
appear more native. For example you might set the option to:
|
|
|
|
|
|
|
|
|
|
(setq rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+")))
|
|
|
|
|
|
|
|
|
|
for messages like
|
|
|
|
|
|
|
|
|
|
09:47 <bridge> {john} I am not on IRC
|
|
|
|
|
|
|
|
|
|
to be reformatted into
|
|
|
|
|
|
|
|
|
|
09:47 <john> I am not on IRC
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New formatting commands.
|
|
|
|
|
Most IRC clients (including rcirc) support basic formatting using
|
|
|
|
|
control codes. Under the 'C-c C-f' prefix a few commands have been
|
|
|
|
|
added to insert these automatically. For example, if a region is
|
|
|
|
|
active and 'C-c C-f C-b' is invoked, markup is inserted for the region
|
|
|
|
|
to be highlighted bold.
|
|
|
|
|
|
|
|
|
|
** Imenu
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'imenu' is now bound to 'M-g i' globally.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New function 'imenu-flush-cache'.
|
|
|
|
|
Use it if you want Imenu to forget the buffer's index alist and
|
|
|
|
|
recreate it anew next time 'imenu' is invoked.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Emacs is now capable of abandoning a window's redisplay that takes too long.
|
|
|
|
|
This is controlled by the new variable 'max-redisplay-ticks'. If that
|
|
|
|
|
variable is set to a non-zero value, display of a window will be
|
|
|
|
|
aborted after that many low-level redisplay operations, thus
|
|
|
|
|
preventing Emacs from becoming wedged when visiting files with very
|
|
|
|
|
long lines.
|
|
|
|
|
|
|
|
|
|
* Editing Changes in Emacs 29.1
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'M-SPC' is now bound to 'cycle-spacing'.
|
|
|
|
|
Formerly it invoked 'just-one-space'. The actions performed by
|
|
|
|
|
'cycle-spacing' and their order can now be customized via the user
|
|
|
|
|
option 'cycle-spacing-actions'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars.
|
|
|
|
|
These commands now behave as case-sensitive for interactive calls when
|
|
|
|
|
they are invoked with an uppercase character, regardless of the
|
|
|
|
|
'case-fold-search' value.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 'scroll-other-window' and 'scroll-other-window-down' now respect 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'.
|
|
|
|
|
Set this option 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,
|
|
|
|
|
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. The default is 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 the variable
|
|
|
|
|
'system-uses-terminfo' can now be set as connection-local variables to
|
|
|
|
|
change the terminal used on a remote host.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'comint-delete-old-input'.
|
|
|
|
|
When nil, this prevents comint from deleting the current input when
|
|
|
|
|
inserting previous input using '<mouse-2>'. The default is t, to
|
|
|
|
|
preserve past behavior.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New minor mode 'comint-fontify-input-mode'.
|
|
|
|
|
This minor mode is enabled by default in "*shell*" and "*ielm*"
|
|
|
|
|
buffers. It fontifies input text according to 'shell-mode' or
|
|
|
|
|
'emacs-lisp-mode' font-lock rules. Customize the user options
|
|
|
|
|
'shell-fontify-input-enable' and 'ielm-fontify-input-enable' to nil if
|
|
|
|
|
you don't want to enable input fontification by default.
|
|
|
|
|
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Support for many old scripts and writing systems.
|
|
|
|
|
Emacs now supports and has language-environments and input methods for
|
|
|
|
|
several dozens of old scripts that were used in the past for various
|
|
|
|
|
languages. For each such script Emacs now has font-selection and
|
|
|
|
|
character composition rules, a language environment, and an input
|
|
|
|
|
method. The newly-added scripts and the corresponding language
|
|
|
|
|
environments are:
|
|
|
|
|
|
|
|
|
|
Tai Tham script and the Northern Thai language environment
|
|
|
|
|
Brahmi script and language environment
|
|
|
|
|
Kaithi script and language environment
|
|
|
|
|
Tirhuta script and language environment
|
|
|
|
|
Sharada script and language environment
|
|
|
|
|
Siddham script and language environment
|
|
|
|
|
Syloti Nagri script and language environment
|
|
|
|
|
Modi script and language environment
|
|
|
|
|
Baybayin script and Tagalog language environment
|
|
|
|
|
Hanunoo script and language environment
|
|
|
|
|
Buhid script and language environment
|
|
|
|
|
Tagbanwa script and language environment
|
|
|
|
|
Limbu script and language environment
|
|
|
|
|
Balinese script and language environment
|
|
|
|
|
Javanese script and language environment
|
|
|
|
|
Sundanese script and language environment
|
|
|
|
|
Batak script and language environment
|
|
|
|
|
Rejang script and language environment
|
|
|
|
|
Makasar script and language environment
|
|
|
|
|
Lontara script and language environment
|
|
|
|
|
Hanifi Rohingya script and language environment
|
|
|
|
|
Grantha script and language environment
|
|
|
|
|
Kharoshthi script and language environment
|
|
|
|
|
Lepcha script and language environment
|
|
|
|
|
Meetei Mayek script and language environment
|
|
|
|
|
Adlam script and language environment
|
|
|
|
|
Mende Kikakui script and language environment
|
|
|
|
|
Wancho script and language environment
|
|
|
|
|
Toto script and language environment
|
|
|
|
|
Gothic script and language environment
|
|
|
|
|
Coptic script and language environment
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** The "Oriya" language environment was renamed to "Odia".
|
|
|
|
|
This is to follow the change in the official name of the script. The
|
|
|
|
|
'oriya' input method was also renamed to 'odia'. However, the old
|
|
|
|
|
name of the language environment and the input method are still
|
|
|
|
|
supported.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New Ukrainian translation of the Emacs Tutorial.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New default phonetic input method for the Tamil language environment.
|
|
|
|
|
The default input method for the Tamil language environment is now
|
|
|
|
|
"tamil-phonetic" which is a customizable phonetic input method. To
|
|
|
|
|
change the input method's translation rules, customize the user option
|
|
|
|
|
'tamil-translation-rules'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New tamil99 input method for the Tamil language.
|
|
|
|
|
This supports the keyboard layout specifically designed for the Tamil
|
|
|
|
|
language.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New input method 'slovak-qwerty'.
|
|
|
|
|
This is a variant of the 'slovak' input method, which corresponds to
|
|
|
|
|
the QWERTY Slovak keyboards.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Changes in Specialized Modes and Packages in Emacs 29.1
|
|
|
|
|
|
|
|
|
|
** Ecomplete
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New commands 'ecomplete-edit' and 'ecomplete-remove'.
|
|
|
|
|
These allow you to (respectively) edit and bulk-remove entries from
|
|
|
|
|
the ecomplete database.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'ecomplete-auto-select'.
|
|
|
|
|
If non-nil and there's only one matching option, auto-select that.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'ecomplete-filter-regexp'.
|
|
|
|
|
If non-nil, this user option describes what entries not to add to the
|
|
|
|
|
database stored on disk.
|
|
|
|
|
|
|
|
|
|
** Auth-Source
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'auth-source-pass-extra-query-keywords'.
|
|
|
|
|
Whether to recognize additional keyword params, like ':max' and
|
|
|
|
|
':require', as well as accept lists of query terms paired with
|
|
|
|
|
applicable keywords. This disables most known behavioral quirks
|
|
|
|
|
unique to auth-source-pass, such as wildcard subdomain matching.
|
|
|
|
|
|
|
|
|
|
** Dired
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'dired-guess-shell-command' moved from dired-x to dired.
|
|
|
|
|
This means that 'dired-do-shell-command' will now provide smarter
|
|
|
|
|
defaults without first having to require 'dired-x'. See the node
|
|
|
|
|
"(emacs) Shell Command Guessing" in the Emacs manual for more details.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'dired-clean-up-buffers-too' moved from dired-x to dired.
|
|
|
|
|
This means that Dired now offers to kill buffers visiting files and
|
|
|
|
|
dirs when they are deleted in Dired. Before, you had to require
|
|
|
|
|
'dired-x' to enable this behavior. To disable this behavior,
|
|
|
|
|
customize the user option 'dired-clean-up-buffers-too' to nil. The
|
|
|
|
|
related user option 'dired-clean-confirm-killing-deleted-buffers'
|
|
|
|
|
(which see) has also been moved to 'dired'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'dired-do-relsymlink' moved from dired-x to dired.
|
|
|
|
|
The corresponding key 'Y' is now bound by default in Dired.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'dired-do-relsymlink-regexp' moved from dired-x to dired.
|
|
|
|
|
The corresponding key '% Y' is now bound by default in Dired.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'M-G' is now bound to 'dired-goto-subdir'.
|
|
|
|
|
Before, that binding was only available if the dired-x package was
|
|
|
|
|
loaded.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'dired-info' and 'dired-man' moved from dired-x to dired.
|
|
|
|
|
The 'dired-info' and 'dired-man' commands have been moved from the
|
|
|
|
|
dired-x package to dired. They have also been renamed to
|
|
|
|
|
'dired-do-info' and 'dired-do-man'; the old command names are obsolete
|
|
|
|
|
aliases.
|
|
|
|
|
|
|
|
|
|
The keys 'I' ('dired-do-info') and 'N' ('dired-do-man') are now bound
|
|
|
|
|
in Dired mode by default. The user options 'dired-bind-man' and
|
|
|
|
|
'dired-bind-info' no longer have any effect and are obsolete.
|
|
|
|
|
|
|
|
|
|
To get the old behavior back and unbind these keys in Dired mode, add
|
|
|
|
|
the following to your Init file:
|
|
|
|
|
|
|
|
|
|
(with-eval-after-load 'dired
|
|
|
|
|
(keymap-set dired-mode-map "N" nil)
|
|
|
|
|
(keymap-set dired-mode-map "I" nil))
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'dired-do-eww'.
|
|
|
|
|
This command visits the file on the current line with EWW.
|
|
|
|
|
|
|
|
|
|
** Elisp
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'elisp-eval-region-or-buffer' (bound to 'C-c C-e').
|
|
|
|
|
This command evals the forms in the active region or in the whole buffer.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'.
|
|
|
|
|
These commands (bound to 'C-c C-f' and 'C-c C-b', respectively)
|
|
|
|
|
byte-compile the visited file and the current buffer, respectively.
|
|
|
|
|
|
|
|
|
|
** Games
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'tetris-allow-repetitions'.
|
|
|
|
|
This controls how randomness is implemented (whether to use pure
|
|
|
|
|
randomness as before or whether to use a bag).
|
|
|
|
|
|
|
|
|
|
** Battery
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'battery-update-functions'.
|
|
|
|
|
This can be used to trigger actions based on the battery status.
|
|
|
|
|
|
|
|
|
|
** Enriched Mode
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'enriched-toggle-markup'.
|
|
|
|
|
This allows you to see the markup in 'enriched-mode' buffers (e.g.,
|
|
|
|
|
the "HELLO" file).
|
|
|
|
|
|
|
|
|
|
** Shell Script Mode
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'sh-indent-statement-after-and'.
|
|
|
|
|
This controls how statements like the following are indented:
|
|
|
|
|
|
|
|
|
|
foo &&
|
|
|
|
|
bar
|
|
|
|
|
|
|
|
|
|
*** New Flymake backend using the ShellCheck program.
|
|
|
|
|
It is enabled by default, but requires that the external "shellcheck"
|
|
|
|
|
command is installed.
|
|
|
|
|
|
|
|
|
|
** CC Mode
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** C++ Mode now supports most of the new features in the C++20 standard.
|
|
|
|
|
|
|
|
|
|
** Cperl Mode
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'cperl-file-style'.
|
|
|
|
|
This option determines the indentation style to be used. It can also
|
|
|
|
|
be used as a file-local variable.
|
|
|
|
|
|
|
|
|
|
** Gud
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** '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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'perldb' now recognizes '-E'.
|
|
|
|
|
As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates
|
|
|
|
|
all optional features of the Perl version in use. 'perldb' now uses
|
|
|
|
|
this invocation as its default.
|
|
|
|
|
|
|
|
|
|
** Customize
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'custom-toggle-hide-all-widgets'.
|
|
|
|
|
This is bound to 'H' and toggles whether to hide or show the widget
|
|
|
|
|
contents.
|
|
|
|
|
|
|
|
|
|
** Diff mode
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'diff-whitespace-style'.
|
|
|
|
|
Sets the value of the buffer-local variable 'whitespace-style' in
|
|
|
|
|
'diff-mode' buffers. By default, this variable is '(face trailing)',
|
|
|
|
|
which preserves behavior from previous Emacs versions.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'diff-add-log-use-relative-names'.
|
|
|
|
|
If non-nil insert file names in ChangeLog skeletons relative to the
|
|
|
|
|
VC root directory.
|
|
|
|
|
|
|
|
|
|
** 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 command 'package-update-all'.
|
|
|
|
|
This command allows updating all packages without any queries.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New commands 'package-recompile' and 'package-recompile-all'.
|
|
|
|
|
These commands can be useful if the ".elc" files are out of date
|
|
|
|
|
(invalid byte code and macros).
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New DWIM action on 'x' in "*Packages*" buffer.
|
|
|
|
|
If no packages are marked, 'x' will install the package under point if
|
|
|
|
|
it isn't already, and remove it if it is installed.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'package-vc-install'.
|
|
|
|
|
Packages can now be installed directly from source by cloning from a
|
|
|
|
|
repository.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'package-vc-install-from-checkout'.
|
|
|
|
|
An existing checkout can now be loaded via package.el, by creating a
|
|
|
|
|
symbolic link from the usual package directory to the checkout.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'package-vc-checkout'.
|
|
|
|
|
Used to fetch the source of a package by cloning a repository without
|
|
|
|
|
activating the package.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'package-vc-prepare-patch'.
|
|
|
|
|
This command allows you to send patches to package maintainers, for
|
|
|
|
|
packages checked out using 'package-vc-install'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'package-report-bug'.
|
|
|
|
|
This command helps you compose an email for sending bug reports to
|
|
|
|
|
package maintainers.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'package-vc-selected-packages'.
|
|
|
|
|
By customizing this user option you can specify specific packages to
|
|
|
|
|
install.
|
|
|
|
|
|
|
|
|
|
** Emacs Sessions (Desktop)
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user 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.
|
|
|
|
|
|
|
|
|
|
** 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
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'q' in a "*Backtrace*" buffer no longer clears the buffer.
|
|
|
|
|
Instead it just buries the buffer and switches the mode from
|
|
|
|
|
'debugger-mode' to 'backtrace-mode', since commands like 'e' are no
|
|
|
|
|
longer available after exiting the recursive edit.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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 behavior from previous Emacs versions.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'e' in edebug can now take a prefix arg to pretty-print the results.
|
|
|
|
|
When invoked with a prefix argument, as in 'C-u e', this command will
|
|
|
|
|
pop up a new buffer and show the full pretty-printed value there.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results.
|
|
|
|
|
When invoked with a non-zero prefix argument, as in 'C-u C-x C-e',
|
|
|
|
|
this command will pop up a new buffer and show the full pretty-printed
|
|
|
|
|
value there.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** You can now generate a backtrace from Lisp errors in redisplay.
|
|
|
|
|
To do this, set the new variable 'backtrace-on-redisplay-error' to a
|
|
|
|
|
non-nil value. The backtrace will be written to a special buffer
|
|
|
|
|
named "*Redisplay-trace*". This buffer will not be automatically
|
|
|
|
|
displayed in a window.
|
|
|
|
|
|
|
|
|
|
** Compile
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'compilation-hidden-output'.
|
|
|
|
|
This can be used to make specific parts of compilation output
|
|
|
|
|
invisible.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** The 'compilation-auto-jump-to-first-error' user option 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 of the Emacs NEWS files. In addition,
|
|
|
|
|
this mode turns on 'outline-minor-mode', and thus displays
|
|
|
|
|
customizable icons (see 'icon-preference') in the margins. To
|
|
|
|
|
disable these icons, set 'outline-minor-mode-use-buttons' to a
|
|
|
|
|
nil value.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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. These keys are also available for in-buffer
|
|
|
|
|
completion, but they don't insert candidates automatically, you need
|
|
|
|
|
to type 'M-RET' to insert the selected candidate to the buffer.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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-auto-wrap'.
|
|
|
|
|
When non-nil, the commands 'next-completion', 'previous-completion',
|
|
|
|
|
'next-line-completion' and 'previous-line-completion' automatically
|
|
|
|
|
wrap around on reaching the beginning or the end of the "*Completions*"
|
|
|
|
|
buffer.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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 commands to complete the minibuffer history.
|
|
|
|
|
'minibuffer-complete-history' ('C-x <up>') is like 'minibuffer-complete'
|
|
|
|
|
but completes on the history items instead of the default completion
|
|
|
|
|
table. 'minibuffer-complete-defaults' ('C-x <down>') completes
|
|
|
|
|
on the list of default items.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** User option 'minibuffer-eldef-shorten-default' is now obsolete.
|
|
|
|
|
Customize the user option 'minibuffer-default-prompt-format' instead.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** You can now define abbrevs for the fundamental minibuffer modes.
|
|
|
|
|
'minibuffer-mode-abbrev-table' and
|
|
|
|
|
'minibuffer-inactive-mode-abbrev-table' are now defined.
|
|
|
|
|
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'.
|
|
|
|
|
Now with these values the search will wrap around not only on repeating
|
|
|
|
|
with 'C-s C-s', but also after typing a character.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'char-fold-override'.
|
|
|
|
|
Non-nil means that the default definitions of equivalent characters
|
|
|
|
|
are overridden.
|
|
|
|
|
|
|
|
|
|
*** New command 'describe-char-fold-equivalences'.
|
|
|
|
|
It displays character equivalences used by 'char-fold-to-regexp'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
** Glyphless characters
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New minor mode 'glyphless-display-mode'.
|
|
|
|
|
This allows an easy way to toggle seeing all glyphless characters in
|
|
|
|
|
the current buffer.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** The extra slot of 'glyphless-char-display' can now have cons values.
|
|
|
|
|
The extra slot of the 'glyphless-char-display' char-table can now have
|
|
|
|
|
values that are cons cells, specifying separate values for text-mode
|
|
|
|
|
and GUI terminals.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** "Replacement character" feature for undisplayable characters on TTYs.
|
|
|
|
|
The 'acronym' method of displaying glyphless characters on text-mode
|
|
|
|
|
frames treats single-character acronyms specially: they are displayed
|
|
|
|
|
without the surrounding [..] "box", thus in effect treating such
|
|
|
|
|
"acronyms" as replacement characters.
|
|
|
|
|
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
** Shortdoc
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'shortdoc-copy-function-as-kill' bound to 'w'.
|
|
|
|
|
It copies the name of the function near point into the kill ring.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'N' and 'P' are now bound to 'shortdoc-{next,previous}-section'.
|
|
|
|
|
This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'.
|
|
|
|
|
|
|
|
|
|
** VC
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'vc-pull-and-push'.
|
|
|
|
|
This commands first does a "pull" command, and if that is successful,
|
|
|
|
|
do a "push" command afterwards.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'C-x v b' prefix key is used now for branch commands.
|
|
|
|
|
'vc-print-branch-log' is bound to 'C-x v b l', and new commands are
|
|
|
|
|
'vc-create-branch' ('C-x v b c') and 'vc-switch-branch' ('C-x v b s').
|
|
|
|
|
The VC Directory buffer now uses the prefix 'b' for these branch-related
|
|
|
|
|
commands.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command '%' ('vc-dir-mark-by-regexp').
|
|
|
|
|
This command marks files based on a regexp. If given a prefix
|
|
|
|
|
argument, unmark instead.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'C-x v !' ('vc-edit-next-command').
|
|
|
|
|
This prefix command requests editing of the next VC shell command
|
|
|
|
|
before execution. For example, in a Git repository, you can produce a
|
|
|
|
|
log of more than one branch by typing 'C-x v ! C-x v b l' and then
|
|
|
|
|
appending additional branch names to the 'git log' command.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'C-x v v' in a diffs buffer allows to commit only some of the changes.
|
|
|
|
|
This command is intended to allow you to commit only some of the
|
|
|
|
|
changes you have in your working tree. Begin by creating a buffer
|
|
|
|
|
with the changes against the last commit, e.g. with 'C-x v D'
|
|
|
|
|
('vc-root-diff'). Then edit the diffs to remove the hunks you don't
|
|
|
|
|
want to commit. Finally, type 'C-x v v' in that diff buffer to commit
|
|
|
|
|
only part of your changes, those whose hunks were left in the buffer.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** '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'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Log Edit now font locks long Git commit summary lines.
|
|
|
|
|
Writing shorter summary lines avoids truncation in contexts in which
|
|
|
|
|
Git commands display summary lines. See the two new user options
|
|
|
|
|
'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New 'log-edit-headers-separator' face.
|
|
|
|
|
It is used to style the line that separates the 'log-edit' headers
|
|
|
|
|
from the 'log-edit' summary.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** The function 'vc-read-revision' accepts a new MULTIPLE argument.
|
|
|
|
|
If non-nil, multiple revisions can be queried. This is done using
|
|
|
|
|
'completing-read-multiple'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New function 'vc-read-multiple-revisions'.
|
|
|
|
|
This function invokes 'vc-read-revision' with a non-nil value for
|
|
|
|
|
MULTIPLE.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'vc-prepare-patch'.
|
|
|
|
|
Patches for any version control system can be prepared using VC. The
|
|
|
|
|
command will query what commits to send and will compose messages for
|
|
|
|
|
your mail user agent. The behavior of 'vc-prepare-patch' can be
|
|
|
|
|
modified by the user options 'vc-prepare-patches-separately' and
|
|
|
|
|
'vc-default-patch-addressee'.
|
|
|
|
|
|
|
|
|
|
** 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 specialized 'narrow-to-defun' definition.
|
|
|
|
|
It narrows to the current node.
|
|
|
|
|
|
|
|
|
|
** EUDC
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'eudc-ignore-options-file' that defaults to nil.
|
|
|
|
|
The 'eudc-ignore-options-file' user option can be configured to ignore
|
|
|
|
|
the 'eudc-options-file' (typically "~/.emacs.d/eudc-options"). Most
|
|
|
|
|
users should configure this to t and put EUDC configuration in the
|
|
|
|
|
main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el").
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** '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'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Additional attributes of query and results in eudcb-macos-contacts.el.
|
|
|
|
|
The EUDC back-end for the macOS Contacts app now provides a wider set
|
|
|
|
|
of attributes to use for queries, and delivers more attributes in
|
|
|
|
|
query results.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New back-end for ecomplete.
|
|
|
|
|
A new back-end for ecomplete allows information from that database to
|
|
|
|
|
be queried by EUDC, too. The attributes present in the EUDC query are
|
|
|
|
|
used to select the entry type in the ecomplete database.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New back-end for mailabbrev.
|
|
|
|
|
A new back-end for mailabbrev allows information from that database to
|
|
|
|
|
be queried by EUDC, too. The attributes 'email', 'name', and 'firstname'
|
|
|
|
|
are supported only.
|
|
|
|
|
|
|
|
|
|
** 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; it 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.
|
|
|
|
|
|
|
|
|
|
** Find-Dired
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'find-dired-with-command'.
|
|
|
|
|
This enables users to run 'find-dired' with an arbitrary command,
|
|
|
|
|
enabling running commands previously unsupported and also enabling new
|
|
|
|
|
commands to be built on top.
|
|
|
|
|
|
|
|
|
|
** 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-summary-up-thread' and 'gnus-summary-down-thread' bindings removed.
|
|
|
|
|
The 'gnus-summary-down-thread' binding to "M-C-d" was shadowed by
|
|
|
|
|
'gnus-summary-read-document', and these commands are also available on
|
|
|
|
|
"T-u" and "T-d" respectively.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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. The default is 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.
|
|
|
|
|
|
|
|
|
|
** Rmail
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Rmail partial summaries can now be applied one on top of the other.
|
|
|
|
|
You can now narrow the set of messages selected by Rmail summary's
|
|
|
|
|
criteria (recipients, topic, senders, etc.) by making a summary of the
|
|
|
|
|
already summarized messages. For example, invoking
|
|
|
|
|
'rmail-summary-by-senders', followed by 'rmail-summary-by-topic' will
|
|
|
|
|
produce a summary where both the senders and the topic are according
|
|
|
|
|
to your selection. The new user option
|
|
|
|
|
'rmail-summary-progressively-narrow' controls whether the stacking of
|
|
|
|
|
the filters is in effect; customize it to a non-nil value to enable
|
|
|
|
|
this feature.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New Rmail summary: by thread.
|
|
|
|
|
The new command 'rmail-summary-by-thread' produces a summary of
|
|
|
|
|
messages that belong to a single thread of discussion.
|
|
|
|
|
|
|
|
|
|
** 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).
|
|
|
|
|
|
|
|
|
|
** 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.
|
|
|
|
|
|
2022-12-01 15:54:50 +00:00
|
|
|
|
** Project
|
2022-11-28 18:03:07 +00:00
|
|
|
|
|
|
|
|
|
+++
|
2022-12-01 15:54:53 +00:00
|
|
|
|
*** 'project-find-file' and 'project-or-external-find-file' can include all.
|
|
|
|
|
The commands 'project-find-file' and 'project-or-external-find-file'
|
|
|
|
|
now accept a prefix argument, which is interpreted to mean "include
|
|
|
|
|
all files".
|
2022-11-28 18:03:07 +00:00
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'project-list-buffers' bound to 'C-x p C-b'.
|
|
|
|
|
This command displays a list of buffers from the current project.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** '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.
|
|
|
|
|
|
2022-12-01 15:54:53 +00:00
|
|
|
|
*** New user option 'project-vc-extra-root-markers'.
|
2022-12-01 15:54:50 +00:00
|
|
|
|
Use it to add detection of nested projects (inside a VCS repository),
|
|
|
|
|
or projects outside of VCS repositories.
|
|
|
|
|
|
|
|
|
|
As a consequence, the 'VC project backend' is formally renamed to
|
|
|
|
|
'VC-aware project backend'.
|
|
|
|
|
|
|
|
|
|
** Xref
|
|
|
|
|
|
2022-11-28 18:03:07 +00:00
|
|
|
|
+++
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'image-mode-wallpaper-set'.
|
|
|
|
|
This command sets the desktop background to the current image. It is
|
|
|
|
|
bound to 'W' 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New commands: 'image-flip-horizontally' and 'image-flip-vertically'.
|
|
|
|
|
These commands horizontally and vertically flip the image under point,
|
|
|
|
|
and are bound to 'i h' and 'i v', respectively.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New command 'image-transform-set-percent'.
|
|
|
|
|
It allows setting the image size to a percentage of its original size,
|
|
|
|
|
and is bound to 's p' in Image mode.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'image-transform-original' renamed to 'image-transform-reset-to-original'.
|
|
|
|
|
The old name was confusing, and is now an obsolete function alias.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'image-transform-reset' renamed to 'image-transform-reset-to-initial'.
|
|
|
|
|
The old name was confusing, and is now an obsolete function alias.
|
|
|
|
|
|
|
|
|
|
** Images
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Users can now add special image conversion functions.
|
|
|
|
|
This is done via 'image-converter-add-handler'.
|
|
|
|
|
|
|
|
|
|
** Image-Dired
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'image-dired-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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Navigation and marking commands now work in image display buffer.
|
|
|
|
|
The following new bindings have been added:
|
|
|
|
|
- 'n', 'SPC' => 'image-dired-display-next'
|
|
|
|
|
- 'p', 'DEL' => 'image-dired-display-previous'
|
|
|
|
|
- 'm' => 'image-dired-mark-thumb-original-file'
|
|
|
|
|
- 'd' => 'image-dired-flag-thumb-original-file'
|
|
|
|
|
- 'u' => 'image-dired-unmark-thumb-original-file'
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'image-dired-unmark-all-marks'.
|
|
|
|
|
It removes all marks from all files in the thumbnail and the
|
|
|
|
|
associated Dired buffer, and is bound to 'U' in the thumbnail and
|
|
|
|
|
display buffer.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'image-dired-do-flagged-delete'.
|
|
|
|
|
It deletes all flagged files, and is bound to 'x' in the thumbnail
|
|
|
|
|
buffer. It replaces the command 'image-dired-delete-marked', which is
|
|
|
|
|
now an obsolete alias.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'image-dired-copy-filename-as-kill'.
|
|
|
|
|
It copies the name of the marked or current image to the kill ring,
|
|
|
|
|
and is bound to 'w' in the thumbnail buffer.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'image-dired-wallpaper-set'.
|
|
|
|
|
This command sets the desktop background to the image at point in the
|
|
|
|
|
thumbnail buffer. It is bound to 'W' by default.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'image-dired-slideshow-start' is now bound to 'S'.
|
|
|
|
|
It is bound in both the thumbnail and display buffer, and no longer
|
|
|
|
|
prompts for a timeout; use a numerical prefix (e.g. 'C-u 8 S') to set
|
|
|
|
|
the timeout.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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 information is now shown in the header line of the thumbnail buffer.
|
|
|
|
|
This replaces the message that most navigation commands in the
|
|
|
|
|
thumbnail buffer used to show at the bottom of the screen.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New specifiers for 'image-dired-display-properties-format'.
|
|
|
|
|
This is used to format the new header line. The new specifiers are:
|
|
|
|
|
"%d" for the name of the directory that the file is in, "%n" for
|
|
|
|
|
file's number in the thumbnail buffer, and "%s" for the file size.
|
|
|
|
|
|
|
|
|
|
The default format has been updated to use this. If you prefer the
|
|
|
|
|
old format, add this to your Init file:
|
|
|
|
|
|
|
|
|
|
(setopt image-dired-display-properties-format "%b: %f (%t): %c")
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New faces for the header line of the thumbnail buffer.
|
|
|
|
|
These faces correspond to different parts of the header line, as
|
|
|
|
|
specified in 'image-dired-display-properties-format':
|
|
|
|
|
- 'image-dired-thumb-header-directory-name'
|
|
|
|
|
- 'image-dired-thumb-header-file-name'
|
|
|
|
|
- 'image-dired-thumb-header-file-size'
|
|
|
|
|
- 'image-dired-thumb-header-image-count'
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** PDF support.
|
|
|
|
|
Image-Dired now displays thumbnails for PDF files. Type 'RET' on a
|
|
|
|
|
PDF file in the thumbnail buffer to visit the corresponding PDF.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Support GraphicsMagick command line tools.
|
|
|
|
|
Support for the GraphicsMagick command line tool ("gm") has been
|
|
|
|
|
added, and is used instead of ImageMagick when it is available.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Support 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'image-dired-show-all-from-dir-max-files' increased to 1000.
|
|
|
|
|
This user option controls asking for confirmation when starting
|
|
|
|
|
Image-Dired in a directory with many files. Since Image-Dired creates
|
|
|
|
|
thumbnails in the background in recent versions, this is not as
|
|
|
|
|
important as it used to be. You can now also customize this option to
|
|
|
|
|
nil to disable this confirmation completely.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'image-dired-thumb-size' increased to 128.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'image-dired-db-file' renamed to 'image-dired-tags-db-file'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'image-dired-display-image-mode' renamed to 'image-dired-image-mode'.
|
|
|
|
|
The corresponding keymap is now named 'image-dired-image-mode-map'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Some commands have been renamed to be shorter.
|
|
|
|
|
- 'image-dired-display-thumbnail-original-image' has been renamed to
|
|
|
|
|
'image-dired-display-this'.
|
|
|
|
|
- 'image-dired-display-next-thumbnail-original' has been renamed to
|
|
|
|
|
'image-dired-display-next'.
|
|
|
|
|
- 'image-dired-display-previous-thumbnail-original' has been renamed
|
|
|
|
|
to 'image-dired-display-previous'.
|
|
|
|
|
The old names are now obsolete aliases.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'image-dired-thumb-{height,width}' are now obsolete.
|
|
|
|
|
Customize 'image-dired-thumb-size' instead, which will set both the
|
|
|
|
|
height and width.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** HTML image gallery generation is now obsolete.
|
|
|
|
|
The 'image-dired-gallery-generate' command and these user options are
|
|
|
|
|
now obsolete: 'image-dired-gallery-thumb-image-root-url',
|
|
|
|
|
'image-dired-gallery-hidden-tags', 'image-dired-gallery-dir',
|
|
|
|
|
'image-dired-gallery-image-root-url'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'image-dired-rotate-thumbnail-{left,right}' are now 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Some commands and user options are now obsolete.
|
|
|
|
|
Since 'image-dired-display-image-mode' is now based on 'image-mode',
|
|
|
|
|
some commands and user options are no longer needed and 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'.
|
|
|
|
|
|
|
|
|
|
** Dired
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'dired-omit-lines'.
|
|
|
|
|
This is used by 'dired-omit-mode', and now allows you to hide based on
|
|
|
|
|
other things than just the file names.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Search and replace in Dired/Wdired supports more regexps.
|
|
|
|
|
For example, the regexp ".*" will match only characters that are part
|
|
|
|
|
of the file name. Also "^.*$" can be used to match at the beginning
|
|
|
|
|
of the file name and at the end of the file name. This is used only
|
|
|
|
|
when searching on file names. In Wdired this can be used when the new
|
|
|
|
|
user option 'wdired-search-replace-filenames' is non-nil (which is the
|
|
|
|
|
default).
|
|
|
|
|
|
|
|
|
|
** Bookmarks
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'list-bookmarks' now includes a type column.
|
|
|
|
|
Types are registered via a 'bookmark-handler-type' symbol property on
|
|
|
|
|
the jumping function.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'bookmark-sort-flag' can now be set to 'last-modified'.
|
|
|
|
|
This will display bookmark list from most recently set to least
|
|
|
|
|
recently set.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** When editing a bookmark annotation, 'C-c C-k' will now cancel.
|
|
|
|
|
It is bound to the new command 'bookmark-edit-annotation-cancel'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'bookmark-fringe-mark'.
|
|
|
|
|
This option controls the bitmap used to indicate bookmarks in the
|
|
|
|
|
fringe (or nil to disable showing this marker).
|
|
|
|
|
|
|
|
|
|
** 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'.
|
|
|
|
|
This option controls how xwidget-webkit buffers are named.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'xwidget-webkit-cookie-file'.
|
|
|
|
|
This option controls 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 X, 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
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New connection methods "docker", "podman" and "kubernetes".
|
|
|
|
|
They allow accessing environments provided by Docker and similar
|
|
|
|
|
programs.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'tramp-completion-use-cache'.
|
|
|
|
|
During user and host name completion in the minibuffer, results from
|
|
|
|
|
Tramp's connection cache are taken into account. This can be disabled
|
|
|
|
|
by setting the user option 'tramp-completion-use-cache' to nil.
|
|
|
|
|
|
|
|
|
|
** Browse URL
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'browse-url-default-scheme'.
|
|
|
|
|
This user option decides which URL scheme that 'browse-url' and
|
|
|
|
|
related functions will use by default. For example, you could
|
|
|
|
|
customize this to "https" to always prefer HTTPS URLs.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'browse-url-irc-function'.
|
|
|
|
|
This option specifies a function for opening "irc://" links. It
|
|
|
|
|
defaults to the new function 'browse-url-irc'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New function 'browse-url-irc'.
|
|
|
|
|
This multipurpose autoloaded function can be used for opening "irc://"
|
|
|
|
|
and "ircs://" URLS by any caller that passes a URL string as an initial
|
|
|
|
|
arg.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Support for the Mozilla web browser is now obsolete.
|
|
|
|
|
Note that this historical web browser is different from Mozilla
|
|
|
|
|
Firefox; it is its predecessor.
|
|
|
|
|
|
|
|
|
|
** Python Mode
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Project shells and a new user option 'python-shell-dedicated'.
|
|
|
|
|
When called with a prefix argument, 'run-python' now offers the choice
|
|
|
|
|
of creating a shell dedicated to the current project. This shell runs
|
|
|
|
|
in the project root directory and is shared among all project buffers.
|
|
|
|
|
|
|
|
|
|
Without a prefix argument, the kind of shell (buffer-dedicated,
|
|
|
|
|
project-dedicated or global) is specified by the new
|
|
|
|
|
'python-shell-dedicated' user option.
|
|
|
|
|
|
|
|
|
|
** 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 the "(eshell) Electric forward slash" node in the
|
|
|
|
|
Eshell manual for details.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Improved support for redirection operators in Eshell.
|
|
|
|
|
Eshell now supports a wider variety of redirection operators. For
|
|
|
|
|
example, you can now redirect both stdout and stderr via '&>' or
|
|
|
|
|
duplicate one output handle to another via 'NEW-FD>&OLD-FD'. For more
|
|
|
|
|
information, see the "(eshell) Redirection" node in the Eshell manual.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New eshell built-in command 'doas'.
|
|
|
|
|
The privilege-escalation program 'doas' has been added to the existing
|
|
|
|
|
'su' and 'sudo' commands from the 'eshell-tramp' module. The external
|
|
|
|
|
command may still be accessed by using '*doas'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Eshell globs ending with '/' now match only directories.
|
|
|
|
|
Additionally, globs ending with '**/' or '***/' no longer raise an
|
|
|
|
|
error, and now expand to all directories recursively (following
|
|
|
|
|
symlinks in the latter case).
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Lisp forms in Eshell now treat a nil result as a failed exit status.
|
|
|
|
|
When executing a command that looks like '(lisp form)' and returns
|
|
|
|
|
nil, Eshell will set the exit status (available in the '$?'
|
|
|
|
|
variable) to 2. This allows commands like that to be used in
|
|
|
|
|
conditionals. To change this behavior, customize the new
|
|
|
|
|
'eshell-lisp-form-nil-is-failure' user option.
|
|
|
|
|
|
|
|
|
|
** Shell
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'shell-kill-buffer-on-exit'.
|
|
|
|
|
Enabling this will automatically kill a "*shell*" buffer as soon as
|
|
|
|
|
the shell session terminates.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New minor mode 'shell-highlight-undef-mode'.
|
|
|
|
|
Customize 'shell-highlight-undef-enable' to t if you want to enable
|
|
|
|
|
this minor mode in "*shell*" buffers. It will highlight undefined
|
|
|
|
|
commands with a warning face as you type.
|
|
|
|
|
|
|
|
|
|
** Calc
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'calc-kill-line-numbering'.
|
|
|
|
|
Set it to nil to exclude line numbering from kills and copies.
|
|
|
|
|
|
|
|
|
|
** Hierarchy
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** Tree Display can delay computation of children.
|
|
|
|
|
'hierarchy-add-tree' and 'hierarchy-add-trees' have an optional
|
|
|
|
|
argument which allows tree-widget display to be activated and computed
|
|
|
|
|
only when the user expands the node.
|
|
|
|
|
|
|
|
|
|
** Miscellaneous
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'webjump-use-internal-browser'.
|
|
|
|
|
When non-nil, WebJump will use an internal browser to open web pages,
|
|
|
|
|
instead of the default external browser.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'font-lock-ignore'.
|
|
|
|
|
This option provides a mechanism to selectively disable font-lock
|
|
|
|
|
keyword-driven fontifications.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'auto-save-visited-predicate'.
|
|
|
|
|
This user option is a predicate function which is called by
|
|
|
|
|
'auto-save-visited-mode' to decide whether or not to save a buffer.
|
|
|
|
|
You can use it to automatically save only specific buffers, for
|
|
|
|
|
example buffers using a particular mode or in some directory.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New user option 'remote-file-name-inhibit-auto-save-visited'.
|
|
|
|
|
If this user option is non-nil, 'auto-save-visited-mode' will not
|
|
|
|
|
auto-save remote buffers. The default is nil.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
*** New package ansi-osc.el.
|
|
|
|
|
Support for OSC ("Operating System Command") escape sequences has been
|
|
|
|
|
extracted from comint.el in order to provide interpretation of OSC
|
|
|
|
|
sequences in compilation buffers.
|
|
|
|
|
|
|
|
|
|
Adding the new function 'ansi-osc-compilation-filter' to
|
|
|
|
|
'compilation-filter-hook' enables interpretation of OSC escape
|
|
|
|
|
sequences in compilation buffers. By default, all sequences are
|
|
|
|
|
filtered out.
|
|
|
|
|
|
|
|
|
|
The list of handlers (already covering OSC 7 and 8) has been extended
|
|
|
|
|
with a handler for OSC 2, the command to set a window title.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New user option 'project-vc-include-untracked'.
|
|
|
|
|
If non-nil, files untracked by a VCS are considered to be part of
|
|
|
|
|
the project by a VC project based on that VCS.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'recentf-mode' now uses abbreviated file names by default.
|
|
|
|
|
This means that e.g. "/home/foo/bar" is now displayed as "~/bar".
|
|
|
|
|
Customize the user option 'recentf-filename-handlers' to nil to get
|
|
|
|
|
back the old behavior.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'recentf-open'.
|
|
|
|
|
This command prompts for a recently opened file in the minibuffer, and
|
|
|
|
|
visits it.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'ffap-machine-at-point' no longer pings hosts by default.
|
|
|
|
|
It will now simply look at a hostname to determine if it is valid,
|
|
|
|
|
instead of also trying to ping it. Customize the user option
|
|
|
|
|
'ffap-machine-p-known' to 'ping' to get the old behavior back.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** The 'run-dig' command is now obsolete; use 'dig' instead.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Some 'bib-mode' commands and variables have been renamed.
|
|
|
|
|
To respect Emacs naming conventions, the variable 'unread-bib-file'
|
|
|
|
|
has been renamed to 'bib-unread-file'. The following commands have
|
|
|
|
|
also been renamed:
|
|
|
|
|
'addbib' to 'bib-add'
|
|
|
|
|
'return-key-bib' to 'bib-return-key'
|
|
|
|
|
'mark-bib' to 'bib-mark'
|
|
|
|
|
'unread-bib' to 'bib-unread'
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'.
|
|
|
|
|
The old name is still available as an obsolete function alias.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** The url-irc library now understands "ircs://" links.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New command 'world-clock-copy-time-as-kill' for 'M-x world-clock'.
|
|
|
|
|
It copies the current line into the kill ring.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 'edit-abbrevs' now uses font-locking.
|
|
|
|
|
The new face 'abbrev-table-name' is used to display the abbrev table
|
|
|
|
|
name.
|
|
|
|
|
|
|
|
|
|
---
|
2022-11-30 15:10:39 +00:00
|
|
|
|
*** New key binding 'O' in 'M-x list-buffers'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
This key is now bound to 'Buffer-menu-view-other-window', which will
|
|
|
|
|
view this line's buffer in View mode in another window.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* New Modes and Packages in Emacs 29.1
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Eglot: Emacs Client for the Language Server Protocol.
|
|
|
|
|
Emacs now comes with the Eglot package, which enhances various Emacs
|
|
|
|
|
features, such as completion, documentation, error detection, etc.,
|
|
|
|
|
based on data provided by language servers using the Language Server
|
|
|
|
|
Protocol (LSP).
|
|
|
|
|
|
|
|
|
|
+++
|
2022-11-30 15:10:39 +00:00
|
|
|
|
** New commands 'image-crop' and 'image-cut'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
These commands allow interactively cropping/cutting the image at
|
|
|
|
|
point. The commands are bound to keys 'i c' and 'i x' (respectively)
|
|
|
|
|
in the local keymap over images. They rely on external programs, by
|
|
|
|
|
default "convert" from ImageMagick, to do the actual cropping/eliding
|
|
|
|
|
of the image file.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New package 'wallpaper'.
|
|
|
|
|
This package provides the command 'wallpaper-set', which sets the
|
|
|
|
|
desktop background image. Depending on the system and the desktop,
|
|
|
|
|
this may require an external program (such as "swaybg", "gm",
|
|
|
|
|
"display" or "xloadimage"). If so, a suitable command should be
|
|
|
|
|
detected automatically in most cases. It can also be customized
|
|
|
|
|
manually if needed, using the new user options 'wallpaper-command' and
|
|
|
|
|
'wallpaper-command-args'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
---
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'js-json-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
This is a lightweight variant of 'js-mode' that is used by default
|
|
|
|
|
when visiting JSON files.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'typescript-ts-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on the tree-sitter library for editing programs
|
|
|
|
|
in the TypeScript language. It includes support for font-locking,
|
|
|
|
|
indentation, and navigation.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'c-ts-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on the tree-sitter library for editing programs
|
|
|
|
|
in the C language. It includes support for font-locking,
|
|
|
|
|
indentation, Imenu, which-func, and navigation.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'c++-ts-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on the tree-sitter library for editing programs
|
|
|
|
|
in the C++ language. It includes support for font-locking,
|
|
|
|
|
indentation, Imenu, which-func, and navigation.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'java-ts-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on the tree-sitter library for editing programs
|
|
|
|
|
in the Java language. It includes support for font-locking,
|
|
|
|
|
indentation, Imenu, which-func, and navigation.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'python-ts-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on the tree-sitter library for editing programs
|
2022-12-01 06:24:43 +00:00
|
|
|
|
in the Python language. It includes support for font-locking,
|
|
|
|
|
indentation, Imenu, which-func, and navigation.
|
|
|
|
|
|
|
|
|
|
** New major mode 'css-ts-mode'.
|
|
|
|
|
A major mode based on the tree-sitter library for editing CSS
|
|
|
|
|
(Cascading Style Sheets). It includes support for font-locking,
|
2022-11-28 18:03:07 +00:00
|
|
|
|
indentation, Imenu, which-func, and navigation.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'json-ts-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on the tree-sitter library for editing programs
|
|
|
|
|
in the JSON language. It includes support for font-locking,
|
|
|
|
|
indentation, Imenu, which-func, and navigation.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'csharp-ts-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on the tree-sitter library for editing programs
|
|
|
|
|
in the C# language. It includes support for font-locking,
|
|
|
|
|
indentation, Imenu, which-func, and navigation.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'csharp-mode'.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
A major mode based on CC Mode for editing programs in the C# language.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
** New major mode 'bash-ts-mode'.
|
|
|
|
|
A major mode based on the tree-sitter library for editing Bash shell
|
|
|
|
|
scripts. It includes support for font-locking, indentation, Imenu,
|
|
|
|
|
which-func, and navigation.
|
|
|
|
|
|
2022-11-28 18:03:07 +00:00
|
|
|
|
|
|
|
|
|
* Incompatible Lisp Changes in Emacs 29.1
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'format-prompt' now uses 'substitute-command-keys'.
|
|
|
|
|
This means that both the prompt and 'minibuffer-default-prompt-format'
|
|
|
|
|
will have key definitions and single quotes handled specially.
|
|
|
|
|
|
2022-12-01 06:24:43 +00:00
|
|
|
|
+++
|
|
|
|
|
** New function 'substitute-quotes'.
|
|
|
|
|
This function works like 'substitute-command-keys' but only
|
|
|
|
|
substitutes quote characters.
|
|
|
|
|
|
2022-11-28 18:03:07 +00:00
|
|
|
|
---
|
|
|
|
|
** 'find-image' now uses 'create-image'.
|
|
|
|
|
This means that images found through 'find-image' also have
|
|
|
|
|
auto-scaling applied. (This only makes a difference on HiDPI
|
|
|
|
|
displays.)
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Changes to "raw" in-memory xbm images are specified.
|
|
|
|
|
Some years back Emacs gained the ability to scale images, and you
|
|
|
|
|
could then specify ':width' and ':height' when using 'create-image' on all
|
|
|
|
|
image types -- except xbm images, because this format already used the
|
|
|
|
|
':width' and ':height' arguments to specify the width/height of the "raw"
|
|
|
|
|
in-memory format. This meant that if you used these specifications
|
|
|
|
|
on, for instance, xbm files, Emacs would refuse to display them. This
|
|
|
|
|
has been changed, and ':width'/':height' now works as with all other image
|
|
|
|
|
formats, and the way to specify the width/height of the "raw"
|
|
|
|
|
in-memory format is now by using ':data-width' and ':data-height'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** "loaddefs.el" generation has been reimplemented.
|
|
|
|
|
The various "loaddefs.el" files in the Emacs tree (which contain
|
|
|
|
|
information about autoloads, built-in packages and package prefixes)
|
|
|
|
|
used to be generated by functions in autoloads.el. These are now
|
|
|
|
|
generated by loaddefs-gen.el instead. This leads to functionally
|
|
|
|
|
equivalent "loaddef.el" files, but they do not use exactly the same
|
|
|
|
|
syntax, so using 'M-x update-file-autoloads' no longer works. (This
|
|
|
|
|
didn't work well in most files in the past, either, but it will now
|
|
|
|
|
signal an error in any file.)
|
|
|
|
|
|
|
|
|
|
In addition, files are scanned in a slightly different way.
|
|
|
|
|
Previously, ';;;###' specs inside a top-level form (i.e., something
|
|
|
|
|
like '(when ... ;;;### ...)' would be ignored. They are now parsed as
|
|
|
|
|
normal.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Themes have special autoload cookies.
|
|
|
|
|
All built-in themes are scraped for ';;;###theme-autoload' cookies
|
|
|
|
|
that are loaded along with the regular auto-loaded code.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** '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'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'make-process' has been extended to support ptys when ':stderr' is set.
|
|
|
|
|
Previously, setting ':stderr' to a non-nil value would force the
|
|
|
|
|
process's connection to use pipes. Now, Emacs will use a pty for
|
|
|
|
|
stdin and stdout if requested no matter the value of ':stderr'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 'compilation-last-buffer' is (finally) declared obsolete.
|
|
|
|
|
It's been obsolete since Emacs-22.1, actually.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Calling 'lsh' now elicits a byte-compiler warning.
|
|
|
|
|
'lsh' behaves in somewhat surprising and platform-dependent ways for
|
|
|
|
|
negative arguments, and is generally slower than 'ash', which should be
|
|
|
|
|
used instead. This warning can be suppressed by surrounding calls to
|
|
|
|
|
'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)',
|
|
|
|
|
but switching to 'ash' is generally much preferable.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Some functions and variables obsolete since Emacs 24 have been removed:
|
|
|
|
|
'Buffer-menu-buffer+size-width', 'Electric-buffer-menu-mode',
|
|
|
|
|
'Info-edit-map', 'allout-abbreviate-flattened-numbering',
|
|
|
|
|
'allout-exposure-change-hook', 'allout-mode-deactivate-hook',
|
|
|
|
|
'allout-structure-added-hook', 'allout-structure-deleted-hook',
|
|
|
|
|
'allout-structure-shifted-hook', 'ansi-color-unfontify-region',
|
|
|
|
|
'archive-extract-hooks', 'auth-source-forget-user-or-password',
|
|
|
|
|
'auth-source-hide-passwords', 'auth-source-user-or-password',
|
|
|
|
|
'automatic-hscrolling', 'automount-dir-prefix', 'bibtex-complete',
|
|
|
|
|
'bibtex-entry-field-alist', 'buffer-has-markers-at',
|
|
|
|
|
'buffer-substring-filters', 'byte-compile-disable-print-circle',
|
|
|
|
|
'c-prepare-bug-report-hooks', 'cfengine-mode-abbrevs',
|
|
|
|
|
'change-log-acknowledgement', 'chart-map',
|
|
|
|
|
'checkdoc-comment-style-hooks', 'comint--unquote&expand-filename',
|
|
|
|
|
'comint-dynamic-complete', 'comint-dynamic-complete-as-filename',
|
|
|
|
|
'comint-dynamic-simple-complete', 'comint-unquote-filename',
|
|
|
|
|
'command-history-map', 'compilation-parse-errors-function',
|
|
|
|
|
'completion-annotate-function', 'condition-case-no-debug',
|
|
|
|
|
'count-lines-region', 'crisp-mode-modeline-string',
|
|
|
|
|
'custom-print-functions', 'custom-print-functions',
|
|
|
|
|
'cvs-string-prefix-p', 'data-debug-map', 'deferred-action-function',
|
|
|
|
|
'deferred-action-list', 'dired-pop-to-buffer', 'dired-shrink-to-fit',
|
|
|
|
|
'dired-sort-set-modeline', 'dired-x-submit-report',
|
|
|
|
|
'display-buffer-function',
|
|
|
|
|
'ediff-choose-window-setup-function-automatically',
|
|
|
|
|
'eieio-defgeneric', 'eieio-defmethod', 'emacs-lock-from-exiting',
|
|
|
|
|
'erc-complete-word', 'erc-dcc-chat-filter-hook',
|
|
|
|
|
'eshell-add-to-window-buffer-names', 'eshell-cmpl-suffix-list',
|
|
|
|
|
'eshell-for', 'eshell-remove-from-window-buffer-names',
|
|
|
|
|
'eshell-status-in-modeline', 'filesets-cache-fill-content-hooks',
|
|
|
|
|
'font-list-limit', 'font-lock-maximum-size',
|
|
|
|
|
'font-lock-reference-face', 'gnus-carpal',
|
|
|
|
|
'gnus-debug-exclude-variables', 'gnus-debug-files',
|
|
|
|
|
'gnus-local-domain', 'gnus-outgoing-message-group',
|
|
|
|
|
'gnus-registry-user-format-function-M', 'gnus-secondary-servers',
|
|
|
|
|
'gnus-subscribe-newsgroup-hooks', 'gud-inhibit-global-bindings',
|
|
|
|
|
'hangul-input-method-inactivate', 'hfy-post-html-hooks',
|
|
|
|
|
'image-extension-data', 'image-library-alist',
|
|
|
|
|
'inactivate-current-input-method-function', 'inactivate-input-method',
|
|
|
|
|
'inhibit-first-line-modes-regexps',
|
|
|
|
|
'inhibit-first-line-modes-suffixes', 'input-method-inactivate-hook',
|
|
|
|
|
'intdos', 'javascript-generic-mode', 'javascript-generic-mode-hook',
|
|
|
|
|
'latex-string-prefix-p', 'macro-declaration-function' (function),
|
|
|
|
|
'macro-declaration-function' (variable), 'mail-complete-function',
|
|
|
|
|
'mail-completion-at-point-function',
|
|
|
|
|
'mail-mailer-swallows-blank-line', 'mail-sent-via', 'make-register',
|
|
|
|
|
'makefile-complete', 'menu-bar-kill-ring-save',
|
|
|
|
|
'meta-complete-symbol', 'meta-mode-map',
|
|
|
|
|
'mh-kill-folder-suppress-prompt-hooks',
|
|
|
|
|
'minibuffer-completing-symbol',
|
|
|
|
|
'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350',
|
|
|
|
|
'mpc-string-prefix-p', 'msb-after-load-hooks',
|
|
|
|
|
'nndiary-request-accept-article-hooks',
|
|
|
|
|
'nndiary-request-create-group-hooks',
|
|
|
|
|
'nndiary-request-update-info-hooks', 'nnimap-split-rule',
|
|
|
|
|
'nntp-authinfo-file', 'ns-alternatives-map',
|
|
|
|
|
'ns-store-cut-buffer-internal', 'package-menu-view-commentary',
|
|
|
|
|
'pascal-last-completions', 'pascal-show-completions',
|
|
|
|
|
'pascal-toggle-completions', 'pcomplete-arg-quote-list',
|
|
|
|
|
'pcomplete-quote-argument', 'prolog-char-quote-workaround',
|
|
|
|
|
'python-buffer', 'python-guess-indent', 'python-indent',
|
|
|
|
|
'python-info-ppss-comment-or-string-p', 'python-info-ppss-context',
|
|
|
|
|
'python-info-ppss-context-type', 'python-preoutput-result',
|
|
|
|
|
'python-proc', 'python-send-receive', 'python-send-string',
|
|
|
|
|
'python-use-skeletons', 'quail-inactivate', 'quail-inactivate-hook',
|
|
|
|
|
'query-replace-interactive', 'rcirc-activity-hooks',
|
|
|
|
|
'rcirc-print-hooks', 'rcirc-receive-message-hooks',
|
|
|
|
|
'rcirc-sentinel-hooks', 'read-filename-at-point', 'redraw-modeline',
|
|
|
|
|
'reftex-index-map', 'reftex-index-phrases-map',
|
|
|
|
|
'reftex-select-bib-map', 'reftex-select-label-map', 'reftex-toc-map',
|
|
|
|
|
'register-name-alist', 'register-value', 'report-emacs-bug-info',
|
|
|
|
|
'report-emacs-bug-pretest-address',
|
|
|
|
|
'rmail-default-dont-reply-to-names', 'rmail-dont-reply-to',
|
|
|
|
|
'rmail-dont-reply-to-names', 'robin-inactivate',
|
|
|
|
|
'robin-inactivate-hook', 'rst-block-face', 'rst-comment-face',
|
|
|
|
|
'rst-definition-face', 'rst-directive-face', 'rst-emphasis1-face',
|
|
|
|
|
'rst-emphasis2-face', 'rst-external-face', 'rst-literal-face',
|
|
|
|
|
'rst-reference-face', 'semantic-change-hooks',
|
|
|
|
|
'semantic-edits-delete-change-hooks',
|
|
|
|
|
'semantic-edits-new-change-hooks',
|
|
|
|
|
'semantic-edits-reparse-change-hooks', 'semantic-grammar-map',
|
|
|
|
|
'semantic-grammar-syntax-table', 'semantic-lex-reset-hooks',
|
|
|
|
|
'semanticdb-elisp-sym-function-arglist',
|
|
|
|
|
'semanticdb-save-database-hooks', 'set-face-underline-p',
|
|
|
|
|
'set-register-value', 'sh-maybe-here-document', 'speedbar-key-map',
|
|
|
|
|
'speedbar-syntax-table', 'starttls-any-program-available',
|
|
|
|
|
'strokes-modeline-string', 'strokes-report-bug',
|
|
|
|
|
'term-default-bg-color', 'term-default-fg-color',
|
|
|
|
|
'tex-string-prefix-p', 'timeclock-modeline-display',
|
|
|
|
|
'timeclock-modeline-display', 'timeclock-update-modeline',
|
|
|
|
|
'toggle-emacs-lock', 'tooltip-use-echo-area', 'turn-on-cwarn-mode',
|
|
|
|
|
'turn-on-iimage-mode', 'ucs-input-inactivate', 'ucs-insert',
|
|
|
|
|
'url-recreate-url-attributes', 'user-variable-p',
|
|
|
|
|
'vc-string-prefix-p', 'vc-toggle-read-only', 'view-return-to-alist',
|
|
|
|
|
'view-return-to-alist-update', 'w32-default-color-map' (function),
|
|
|
|
|
'which-func-mode' (function), 'window-system-version',
|
|
|
|
|
'winner-mode-leave-hook', 'x-cut-buffer-or-selection-value'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Some functions and variables obsolete since Emacs 23 have been removed:
|
|
|
|
|
'find-emacs-lisp-shadows', 'newsticker-cache-filename',
|
|
|
|
|
'process-filter-multibyte-p', 'redisplay-end-trigger-functions',
|
|
|
|
|
'set-process-filter-multibyte', 'set-window-redisplay-end-trigger',
|
|
|
|
|
'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode',
|
|
|
|
|
'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Some functions and variables obsolete since Emacs 21 or 22 have been removed:
|
|
|
|
|
'c-toggle-auto-state', 'find-file-not-found-hooks',
|
|
|
|
|
'ls-lisp-dired-ignore-case', 'query-replace-regexp-eval'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New generic function 'function-documentation'.
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** '?\' at the end of a line now signals an error.
|
|
|
|
|
Previously, it produced a nonsense value, -1, that was never intended.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed:
|
|
|
|
|
abbrevlist.el, assoc.el, complete.el, cust-print.el,
|
|
|
|
|
erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el,
|
|
|
|
|
patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Many seldom-used generalized variables have been made obsolete.
|
|
|
|
|
Emacs has a number of rather obscure generalized variables defined,
|
|
|
|
|
that, for instance, allowed you to say things like:
|
|
|
|
|
|
|
|
|
|
(setf (point-min) 4)
|
|
|
|
|
|
|
|
|
|
These never caught on and have been made obsolete. The form above,
|
|
|
|
|
for instance, is the same as saying
|
|
|
|
|
|
|
|
|
|
(narrow-to-region 4 (point-max))
|
|
|
|
|
|
|
|
|
|
The following generalized variables have been made obsolete:
|
|
|
|
|
'buffer-file-name', 'buffer-local-value', 'buffer-modified-p',
|
|
|
|
|
'buffer-name', 'buffer-string', 'buffer-substring', 'current-buffer',
|
|
|
|
|
'current-column', 'current-global-map', 'current-input-mode',
|
|
|
|
|
'current-local-map', 'current-window-configuration',
|
|
|
|
|
'default-file-modes', 'documentation-property', 'eq', 'frame-height',
|
|
|
|
|
'frame-width', 'frame-visible-p', 'global-key-binding',
|
|
|
|
|
'local-key-binding', 'mark', 'mark-marker', 'marker-position',
|
|
|
|
|
'mouse-position', 'point', 'point-marker', 'point-max', 'point-min',
|
|
|
|
|
'read-mouse-position', 'screen-height', 'screen-width',
|
|
|
|
|
'selected-frame', 'selected-screen', 'selected-window',
|
|
|
|
|
'standard-case-table', 'syntax-table', 'visited-file-modtime',
|
|
|
|
|
'window-height', 'window-width', and 'x-get-secondary-selection'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Lisp Changes in Emacs 29.1
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Interpreted closures are "safe for space".
|
|
|
|
|
As was already the case for byte-compiled closures, instead of capturing
|
|
|
|
|
the whole current lexical environment, interpreted closures now only
|
|
|
|
|
capture the part of the environment that they need.
|
|
|
|
|
The previous behavior could occasionally lead to memory leaks or
|
|
|
|
|
to problems where a printed closure would not be 'read'able because
|
|
|
|
|
of an un'read'able value in an unrelated lexical variable.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New accessor function 'file-attribute-file-identifier'.
|
|
|
|
|
It returns the list of the inode number and device identifier
|
|
|
|
|
retrieved by 'file-attributes'. This value can be used to identify a
|
|
|
|
|
file uniquely. The device identifier can be a single number or (for
|
|
|
|
|
remote files) a cons of 2 numbers.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New macro 'while-let'.
|
|
|
|
|
This is like 'when-let', but repeats until a binding form is nil.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New function 'make-obsolete-generalized-variable'.
|
|
|
|
|
This can be used to mark setters used by 'setf' as obsolete, and the
|
|
|
|
|
byte-compiler will then warn about using them.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New functions 'pos-eol' and 'pos-bol'.
|
|
|
|
|
These are like 'line-end-position' and 'line-beginning-position'
|
|
|
|
|
(respectively), but ignore fields (and are more efficient).
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New function 'compiled-function-p'.
|
|
|
|
|
This returns non-nil if its argument is either a built-in, or a
|
|
|
|
|
byte-compiled, or a natively-compiled function object, or a function
|
|
|
|
|
loaded from a dynamic module.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 'deactivate-mark' can have new value 'dont-save'.
|
|
|
|
|
This value means that Emacs should deactivate the mark as usual, but
|
|
|
|
|
without setting the primary selection, if 'select-active-regions' is
|
|
|
|
|
enabled.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New 'declare' form 'interactive-args'.
|
|
|
|
|
This can be used to specify what forms to put into 'command-history'
|
|
|
|
|
when executing commands interactively.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** The FORM arg of 'time-convert' is mandatory.
|
|
|
|
|
'time-convert' can still be called without it, as before, but the
|
|
|
|
|
compiler now emits a warning about this deprecated usage.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Emacs now supports user-customizable and themable icons.
|
|
|
|
|
These can be used for buttons in buffers and the like. See the
|
|
|
|
|
"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New arguments MESSAGE and TIMEOUT of 'set-transient-map'.
|
|
|
|
|
MESSAGE specifies a message to display after activating the transient
|
|
|
|
|
map, including a special formatting spec to list available keys.
|
|
|
|
|
TIMEOUT is the idle time after which to deactivate the transient map.
|
|
|
|
|
The default timeout value can be defined by the new variable
|
|
|
|
|
'set-transient-map-timeout'.
|
|
|
|
|
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New function 'connection-local-update-profile-variables'.
|
|
|
|
|
This function allows to modify the settings of an existing
|
|
|
|
|
connection-local profile.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New macro 'with-connection-local-application-variables'.
|
|
|
|
|
This macro works like 'with-connection-local-variables', but it allows
|
|
|
|
|
to use another application but 'tramp'. This is useful when running
|
|
|
|
|
code in a buffer where Tramp has already set some connection-local
|
|
|
|
|
variables.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New macro 'setq-connection-local'.
|
|
|
|
|
This allows dynamically setting variable values for a particular
|
|
|
|
|
connection within the body of 'with-connection-local-{application-}variables'.
|
|
|
|
|
See the "(elisp) Connection Local Variables" node in the Lisp
|
|
|
|
|
Reference manual for more information.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'.
|
|
|
|
|
These function now take an optional comparison predicate argument.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'read-multiple-choice' can now use long-form answers.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'M-c' in 'read-regexp' now toggles case folding.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'completing-read' now allows a function as its REQUIRE-MATCH argument.
|
|
|
|
|
This function is called to see whether what the user has typed in is a
|
|
|
|
|
match. This is also available from functions that call
|
|
|
|
|
'completing-read', like 'read-file-name'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'posn-col-row' can now give position data based on windows.
|
|
|
|
|
Previously, it reported data only based on the frame.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'file-expand-wildcards' can now also take a regexp as PATTERN argument.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** vc-mtn (the backend for Monotone) has been made obsolete.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'gui-set-selection' can now specify different values for different data types.
|
|
|
|
|
If DATA is a string, then its text properties are searched for values
|
|
|
|
|
for each specific data type while the selection is being converted.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New eldoc function 'elisp-eldoc-var-docstring-with-value'.
|
|
|
|
|
This function includes the current value of the variable in eldoc display
|
|
|
|
|
and can be used as a more detailed alternative to 'elisp-eldoc-var-docstring'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'save-some-buffers' can now be extended to save other things.
|
|
|
|
|
Traditionally, 'save-some-buffers' saved buffers, and also saved
|
|
|
|
|
abbrevs. This has been generalized via the
|
|
|
|
|
'save-some-buffers-functions' variable, and packages can now register
|
|
|
|
|
things to be saved.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New function 'string-equal-ignore-case'.
|
|
|
|
|
This compares strings ignoring case differences.
|
|
|
|
|
|
|
|
|
|
** 'symbol-file' can now report natively-compiled ".eln" files.
|
|
|
|
|
If Emacs was built with native-compilation enabled, Lisp programs can
|
|
|
|
|
now call 'symbol-file' with the new optional 3rd argument non-nil to
|
|
|
|
|
request the name of the ".eln" file which defined a given symbol.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New macro 'with-memoization' provides a very primitive form of memoization.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'max-char' can now report the maximum codepoint according to Unicode.
|
|
|
|
|
When called with a new optional argument UNICODE non-nil, 'max-char'
|
|
|
|
|
will now report the maximum valid codepoint defined by the Unicode
|
|
|
|
|
Standard.
|
|
|
|
|
|
|
|
|
|
** seq
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New function 'seq-split'.
|
|
|
|
|
This returns a list of sub-sequences of the specified sequence.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New function 'seq-remove-at-position'.
|
|
|
|
|
This function returns a copy of the specified sequence where the
|
|
|
|
|
element at a given (zero-based) index got removed.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New function 'seq-positions'.
|
|
|
|
|
This returns a list of the (zero-based) indices of elements matching a
|
|
|
|
|
given predicate in the specified sequence.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New function 'seq-keep'.
|
|
|
|
|
This is like 'seq-map', but removes all nil results from the returned
|
|
|
|
|
list.
|
|
|
|
|
|
|
|
|
|
** Themes
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New hooks 'enable-theme-functions' and 'disable-theme-functions'.
|
|
|
|
|
These are run after enabling and disabling a theme, respectively.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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 hook 'display-monitors-changed-functions'.
|
|
|
|
|
It is called whenever the configuration of different monitors on a
|
|
|
|
|
display changes.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES parameter.
|
|
|
|
|
This parameter can be used to override values of print-related settings.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New minor mode 'header-line-indent-mode'.
|
|
|
|
|
This is meant to be used in modes that have a header line that should
|
|
|
|
|
be kept aligned with the buffer contents when the user switches
|
|
|
|
|
'display-line-numbers-mode' on or off.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New minor mode 'lost-selection-mode'.
|
|
|
|
|
This minor mode makes Emacs deactivate the mark in all buffers when
|
|
|
|
|
the primary selection is obtained by another program.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** On X, Emacs will try to preserve selection ownership when a frame is deleted.
|
|
|
|
|
This means that if you make Emacs the owner of a selection, such as by
|
|
|
|
|
selecting some text into the clipboard or primary selection, and then
|
|
|
|
|
delete the current frame, you will still be able to insert the
|
|
|
|
|
contents of that selection into other programs as long as another
|
|
|
|
|
frame is open on the same display. This behavior can be disabled by
|
|
|
|
|
setting the user option 'x-auto-preserve-selections' to nil.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New predicate 'char-uppercase-p'.
|
|
|
|
|
This returns non-nil if its argument its an uppercase character.
|
|
|
|
|
|
|
|
|
|
** Byte compilation
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** Byte compilation will now warn about some quoting mistakes in docstrings.
|
|
|
|
|
When writing code snippets that contains the "'" character (APOSTROPHE),
|
|
|
|
|
that quote character has to be escaped to avoid Emacs displaying it as
|
|
|
|
|
"’" (LEFT SINGLE QUOTATION MARK), which would make code examples like
|
|
|
|
|
|
|
|
|
|
(setq foo '(1 2 3))
|
|
|
|
|
|
|
|
|
|
invalid. Emacs will now warn during byte compilation if it seems
|
|
|
|
|
something like that, and also warn about when using RIGHT/LEFT SINGLE
|
|
|
|
|
QUOTATION MARK directly. In both these cases, if these characters
|
|
|
|
|
should really be present in the docstring, they should be quoted with
|
|
|
|
|
"\=".
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** 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 call the
|
|
|
|
|
lower level function directly.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
2022-11-30 15:10:39 +00:00
|
|
|
|
** The local variables section now supports defining fallback modes.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
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 to 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 functions for dragging items from Emacs to other programs.
|
|
|
|
|
The new functions 'x-begin-drag', 'dnd-begin-file-drag',
|
|
|
|
|
'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents
|
|
|
|
|
(such as files and text) from Emacs to other programs.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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
|
2022-11-30 15:10:39 +00:00
|
|
|
|
of plain variables, and uses 'custom-set'/'set-default' to set them.
|
2022-11-28 18:03:07 +00:00
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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-display-text-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 hook 'post-select-region-hook'.
|
|
|
|
|
This hook is run immediately after 'select-active-regions' causes the
|
|
|
|
|
region to be set as the primary selection.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New optional arguments 'text-face' and 'default-face' for 'tooltip-show'.
|
|
|
|
|
They allow changing the faces used for the tooltip text and frame
|
|
|
|
|
colors of the resulting tooltip frame from the default 'tooltip' face.
|
|
|
|
|
|
|
|
|
|
** 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
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 'where-is-internal' can now filter events marked as non key events.
|
|
|
|
|
If a command maps to a key binding like '[some-event]', and 'some-event'
|
|
|
|
|
has a symbol plist containing a non-nil 'non-key-event' property, then
|
|
|
|
|
that binding is ignored by 'where-is-internal'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** 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 function 'file-name-parent-directory'.
|
|
|
|
|
This returns the parent directory 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 variable 'yank-transform-functions'.
|
|
|
|
|
This variable allows the user to alter the string to be inserted.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New command 'yank-in-context'.
|
|
|
|
|
This command tries to preserve string/comment syntax when yanking.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'window-body-width' and 'window-body-height' can use remapped faces.
|
|
|
|
|
Specifying 'remap' as the PIXELWISE argument now checks if the default
|
|
|
|
|
face was remapped, and if so, uses the remapped face to determine the
|
|
|
|
|
character width/height.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** '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'.
|
|
|
|
|
It returns the new 'XDG_STATE_HOME' environment variable. It should
|
|
|
|
|
point to a file name that "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".
|
|
|
|
|
(This variable was introduced in the XDG Base Directory Specification
|
|
|
|
|
version 0.8 released on May 8, 2021.)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New function 'xdg-current-desktop'.
|
|
|
|
|
It returns a list of strings, corresponding to the colon-separated
|
|
|
|
|
list of names in the 'XDG_CURRENT_DESKTOP' environment variable, which
|
|
|
|
|
identify the current desktop environment.
|
|
|
|
|
(This variable was introduced in XDG Desktop Entry Specification
|
|
|
|
|
version 1.2.)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
*** New function 'xdg-session-type'.
|
|
|
|
|
It returns the 'XDG_SESSION_TYPE' environment variable. (This is not
|
|
|
|
|
part of any official standard; see the man page pam_systemd(8) for
|
|
|
|
|
more information.)
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
|
|
** 'defvar-keymap' can specify 'repeat-mode' behavior for the keymap.
|
|
|
|
|
Use ':repeat t' to have all bindings be repeatable or for more
|
|
|
|
|
advanced usage:
|
|
|
|
|
|
|
|
|
|
':repeat (:enter (commands ...) :exit (commands ...))'
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** '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 'buffer-text-pixel-size'.
|
|
|
|
|
This is similar to 'window-text-pixel-size', but can be used when the
|
|
|
|
|
buffer isn't displayed.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 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 returns the history of page-loads in a WebKit xwidget.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New function 'xwidget-webkit-estimated-load-progress'.
|
|
|
|
|
This function returns the estimated progress of page loading in a
|
|
|
|
|
WebKit xwidget.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
*** New function 'xwidget-webkit-stop-loading'.
|
|
|
|
|
This function terminates all data transfer during page loads in a
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** New hook 'save-place-after-find-file-hook'.
|
|
|
|
|
This is called at the end of 'save-place-find-file-hook'.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** '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.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'make-process' can set connection type independently for input and output.
|
|
|
|
|
When calling 'make-process', communication via pty can be enabled
|
|
|
|
|
selectively for just input or output by passing a cons cell for
|
|
|
|
|
':connection-type', e.g. '(pipe . pty)'. When examining a process
|
|
|
|
|
later, you can determine whether a particular stream for a process
|
|
|
|
|
uses a pty by passing one of 'stdin', 'stdout', or 'stderr' as the
|
|
|
|
|
second argument to 'process-tty-name'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** '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 'internal-default-signal-process'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** Some system information functions honor remote systems now.
|
|
|
|
|
'list-system-processes' returns remote process IDs.
|
|
|
|
|
'memory-info' returns memory information of remote systems.
|
|
|
|
|
'process-attributes' expects a remote process ID.
|
|
|
|
|
This happens only when the current buffer's 'default-directory' is
|
|
|
|
|
remote. In order to preserve the old behavior, bind
|
|
|
|
|
'default-directory' to a local directory, like
|
|
|
|
|
|
|
|
|
|
(let ((default-directory temporary-file-directory))
|
|
|
|
|
(list-system-processes))
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** New functions 'take' and 'ntake'.
|
|
|
|
|
'(take N LIST)' returns the first N elements of LIST; 'ntake' does
|
|
|
|
|
the same but works by modifying LIST destructively.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
** 'string-split' is now an alias for 'split-string'.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** 'format-spec' now accepts functions in the replacement.
|
|
|
|
|
The function is called only when used in the format string. This is
|
|
|
|
|
useful to avoid side-effects such as prompting, when the value is not
|
|
|
|
|
actually being used for anything.
|
|
|
|
|
|
|
|
|
|
+++
|
|
|
|
|
** The variable 'max-specpdl-size' has been made obsolete.
|
|
|
|
|
Now 'max-lisp-eval-depth' alone is used for limiting Lisp recursion
|
|
|
|
|
and stack usage. 'max-specpdl-size' is still present as a plain
|
|
|
|
|
variable for compatibility but its limiting powers have been taken away.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 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/>.
|
2022-12-01 15:08:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Local variables:
|
|
|
|
|
coding: utf-8
|
|
|
|
|
mode: outline
|
|
|
|
|
mode: emacs-news
|
|
|
|
|
paragraph-separate: "[ ]"
|
|
|
|
|
end:
|