mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-11 09:20:51 +00:00
3083 lines
116 KiB
Plaintext
3083 lines
116 KiB
Plaintext
GNU Emacs NEWS -- history of user-visible changes.
|
||
|
||
Copyright (C) 2017-2021 Free Software Foundation, Inc.
|
||
See the end of the file for license conditions.
|
||
|
||
Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
|
||
If possible, use 'M-x report-emacs-bug'.
|
||
|
||
This file is about changes in Emacs version 28.
|
||
|
||
See file HISTORY for a list of GNU Emacs versions and release dates.
|
||
See files NEWS.27, NEWS.26, ..., 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 28.1
|
||
|
||
---
|
||
** Support for building with Motif has been removed.
|
||
|
||
** Cairo graphics library is now used by default if found.
|
||
'--with-cairo' is now the default, if the appropriate development files
|
||
are found by 'configure'. Note that building with Cairo means using
|
||
Pango instead of libXFT for font support. Since Pango 1.44 has
|
||
removed support for bitmapped fonts, this may require you to adjust
|
||
your font settings.
|
||
|
||
Note also that 'FontBackend' settings in ".Xdefaults" or
|
||
".Xresources", or 'font-backend' frame parameter settings in your init
|
||
files, may need to be adjusted, as 'xft' is no longer a valid backend
|
||
when using Cairo. Use 'ftcrhb' if your Emacs was built with HarfBuzz
|
||
text shaping support, and 'ftcr' otherwise. You can determine this by
|
||
checking 'system-configuration-features'. The 'ftcr' backend will
|
||
still be available when HarfBuzz is supported, but will not be used by
|
||
default. We strongly recommend building with HarBuzz support. 'x' is
|
||
still a valid backend.
|
||
|
||
---
|
||
** Building without double buffering support.
|
||
'configure --with-xdbe=no' can now be used to disable double buffering
|
||
at build time.
|
||
|
||
---
|
||
** 'configure' now warns about building with libXft support.
|
||
libXft is unmaintained, and causes a number of problems with modern
|
||
fonts including but not limited to crashes; support for it may be
|
||
removed in a future version of Emacs. Please consider using
|
||
Cairo + HarfBuzz instead.
|
||
|
||
---
|
||
** 'configure' now warns about not using HarfBuzz if using Cairo.
|
||
We want to encourage people to use the most modern font features
|
||
available, and this is the Cairo graphics library + HarfBuzz for font
|
||
shaping, so 'configure' now recommends that combination.
|
||
|
||
---
|
||
** The ftx font backend driver has been removed.
|
||
It was declared obsolete in Emacs 27.1.
|
||
|
||
---
|
||
** The configure option '--without-makeinfo' has been removed.
|
||
This was only ever relevant when building from a repository checkout.
|
||
This now requires makeinfo, which is part of the texinfo package.
|
||
|
||
---
|
||
** Support for building with '-fcheck-pointer-bounds' has been removed.
|
||
GCC has withdrawn the '-fcheck-pointer-bounds' option and support for
|
||
its implementation has been removed from the Linux kernel.
|
||
|
||
---
|
||
** Emacs no longer supports old OpenBSD systems.
|
||
OpenBSD 5.3 and older releases are no longer supported, as they lack
|
||
proper pty support that Emacs needs.
|
||
|
||
|
||
* Startup Changes in Emacs 28.1
|
||
|
||
** Emacs can support 24-bit color TTY without terminfo database.
|
||
If your text-mode terminal supports 24-bit true color, but your system
|
||
lacks the terminfo database, you can instruct Emacs to support 24-bit
|
||
true color by setting 'COLORTERM=truecolor' in the environment. This is
|
||
useful on systems such as FreeBSD which ships only with "etc/termcap".
|
||
|
||
** Emacs now supports loading a Secure Computing filter.
|
||
This is supported only on capable GNU/Linux systems. To activate,
|
||
invoke Emacs with the '--seccomp=FILE' command-line option. FILE must
|
||
name a binary file containing an array of 'struct sock_filter'
|
||
structures. Emacs will then install that list of Secure Computing
|
||
filters into its own process early during the startup process. You
|
||
can use this functionality to put an Emacs process in a sandbox to
|
||
avoid security issues when executing untrusted code. See the manual
|
||
page for 'seccomp' system call, for details about Secure Computing
|
||
filters.
|
||
|
||
|
||
* Changes in Emacs 28.1
|
||
|
||
+++
|
||
** New command 'font-lock-update', bound to 'C-x x f'.
|
||
This command updates the syntax highlighting in this buffer.
|
||
|
||
** The new NonGNU ELPA archive is enabled by default alongside GNU ELPA.
|
||
|
||
+++
|
||
** New command 'recenter-other-window', bound to 'S-M-C-l'.
|
||
Like 'recenter-top-bottom' acting in the other window.
|
||
|
||
** Minibuffer scrolling is now conservative by default.
|
||
This is controlled by the new variable 'scroll-minibuffer-conservatively'.
|
||
|
||
In addition, there is a new variable
|
||
'redisplay-adhoc-scroll-in-resize-mini-windows' to disable the
|
||
ad-hoc auto-scrolling when resizing minibuffer windows. It has been
|
||
found that its heuristic can be counter productive in some corner
|
||
cases, tho the cure may be worse than the disease. This said, the
|
||
effect should be negligible in the vast majority of cases anyway.
|
||
|
||
+++
|
||
** Improved handling of minibuffers on switching frames.
|
||
By default, when you switch to another frame, an active minibuffer now
|
||
moves to the newly selected frame. Nevertheless, the effect of what
|
||
you type in the minibuffer happens in the frame where the minibuffer
|
||
was first activated. An alternative behavior is available by
|
||
customizing 'minibuffer-follows-selected-frame' to nil. Here, the
|
||
minibuffer stays in the frame where you first opened it, and you must
|
||
switch back to this frame to continue or abort its command. The old
|
||
behavior, which mixed these two, can be approximated by customizing
|
||
'minibuffer-follows-selected-frame' to a value which is neither nil
|
||
nor t.
|
||
|
||
+++
|
||
** New system for displaying documentation for groups of functions.
|
||
This can either be used by saying 'M-x shortdoc-display-group' and
|
||
choosing a group, or clicking a button in the "*Help*" buffers when
|
||
looking at the doc string of a function that belongs to one of these
|
||
groups.
|
||
|
||
---
|
||
** Improved "find definition" feature of *Help* buffers.
|
||
Now clicking on the link to find the definition of functions generated
|
||
by 'cl-defstruct', or variables generated by 'define-derived-mode',
|
||
for example, will go to the exact place where they are defined.
|
||
|
||
** New variable 'redisplay-skip-initial-frame' to enable batch redisplay tests.
|
||
Setting it to nil forces the redisplay to do its job even in the
|
||
initial frame used in batch mode.
|
||
|
||
---
|
||
** Support for the 'strike-through' face attribute on TTY frames.
|
||
If your terminal's termcap or terminfo database entry has the 'smxx'
|
||
capability defined, Emacs will now emit the prescribed escape
|
||
sequences necessary to render faces with the 'strike-through'
|
||
attribute on TTY frames.
|
||
|
||
+++
|
||
** Emacs now defaults to UTF-8 instead of ISO-8859-1.
|
||
This is only for the default, where the user has set no 'LANG' (or
|
||
similar) variable or environment. This change should lead to no
|
||
user-visible changes for normal usage.
|
||
|
||
+++
|
||
** New variables that hold default buffer names for shell output.
|
||
The new constants 'shell-command-buffer-name' and
|
||
'shell-command-buffer-name-async' store the default buffer names
|
||
for the output of, respectively, synchronous and async shell
|
||
commands.
|
||
|
||
** Support for '(box . SIZE)' 'cursor-type'.
|
||
By default, 'box' cursor always has a filled box shape. But if you
|
||
specify 'cursor-type' to be '(box . SIZE)', the cursor becomes a hollow
|
||
box if the point is on an image larger than 'SIZE' pixels in any
|
||
dimension.
|
||
|
||
+++
|
||
** New user option 'word-wrap-by-category'.
|
||
When word-wrap is enabled, and this option is non-nil, that allows
|
||
Emacs to break lines after more characters than just whitespace
|
||
characters. In particular, this significantly improves word-wrapping
|
||
for CJK text mixed with Latin text.
|
||
|
||
---
|
||
** Rudimentary support for the 'st' terminal emulator.
|
||
Emacs now supports 256 color display on the 'st' terminal emulator.
|
||
|
||
---
|
||
** Mouse wheel scrolling now works on more parts of frame's display.
|
||
When using 'mwheel-mode', the mouse wheel will now scroll also when
|
||
the mouse cursor is on the scroll bars, fringes, margins, header line,
|
||
and mode line. ('mwheel-mode' is enabled by default on most graphical
|
||
displays.)
|
||
|
||
---
|
||
** Mouse wheel scrolling now defaults to one line at a time.
|
||
|
||
+++
|
||
** Mouse wheel scrolling with Shift modifier now scrolls horizontally.
|
||
This works in text buffers and over images. Typing a numeric prefix arg
|
||
(e.g. 'M-5') before starting horizontal scrolling changes its step value.
|
||
The value is saved in the user option 'mouse-wheel-scroll-amount-horizontal'.
|
||
|
||
---
|
||
** The default value of 'frame-title-format' and 'icon-title-format' has changed.
|
||
These variables are used to display the title bar of visible frames
|
||
and the title bar of an iconified frame. They now show the name of
|
||
the current buffer and the text "GNU Emacs" instead of the value of
|
||
'invocation-name'. To get the old behavior back, add the following to
|
||
your init file:
|
||
|
||
(setq frame-title-format '(multiple-frames "%b"
|
||
("" invocation-name "@" system-name)))
|
||
|
||
+++
|
||
** 'nobreak-char-display' now also affects all non-ASCII space characters.
|
||
Previously, this was limited only to NO-BREAK-SPACE and hyphen
|
||
characters. Now it also covers the rest of the non-ASCII Unicode
|
||
space characters.
|
||
|
||
---
|
||
** Prefer "chat.freenode.net" to "irc.freenode.net".
|
||
"chat.freenode.net" has been the preferred address for connecting to the
|
||
freenode IRC network for years now. Occurrences of "irc.freenode.net"
|
||
have been replaced with "chat.freenode.net" throughout Emacs.
|
||
|
||
+++
|
||
** New functions 'null-device' and 'path-separator'.
|
||
These functions return the connection local value of the respective
|
||
variables. This can be used for remote hosts.
|
||
|
||
** Emacs now prints a backtrace when signaling an error in batch mode.
|
||
This makes debugging Emacs Lisp scripts run in batch mode easier. To
|
||
get back the old behavior, set the new variable
|
||
'backtrace-on-error-noninteractive' to a nil value.
|
||
|
||
** 'redisplay-skip-fontification-on-input' helps Emacs keep up with fast input.
|
||
This is another attempt to solve the problem of handling high key repeat rate
|
||
and other "slow scrolling" situations. It is hoped it behaves better
|
||
than 'fast-but-imprecise-scrolling' and 'jit-lock-defer-time'.
|
||
It is not enabled by default.
|
||
|
||
+++
|
||
** Modifiers now go outside angle brackets in pretty-printed key bindings.
|
||
For example, 'RET' with Control and Meta modifiers is now shown as
|
||
'C-M-<return>' instead of '<C-M-return>'. Either variant can be used
|
||
as input; functions such as 'kbd' and 'read-kbd-macro' accept both
|
||
styles as equivalent (they have done so for a long time).
|
||
|
||
+++
|
||
** New user option 'lazy-highlight-no-delay-length'.
|
||
Lazy highlighting of matches in Isearch now starts immediately if the
|
||
search string is at least this long. 'lazy-highlight-initial-delay'
|
||
still applies for shorter search strings, which avoids flicker in the
|
||
search buffer due to too many matches being highlighted.
|
||
|
||
+++
|
||
** A new keymap for buffer actions has been added.
|
||
The 'C-x x' keymap now holds keystrokes for various buffer-oriented
|
||
commands. The new keystrokes are 'C-x x g' ('revert-buffer'),
|
||
'C-x x r' ('rename-buffer'), 'C-x x u' ('rename-uniquely'), 'C-x x n'
|
||
('clone-buffer'), 'C-x x i' ('insert-buffer'), 'C-x x t'
|
||
('toggle-truncate-lines') and 'C-x x f' ('font-lock-update').
|
||
|
||
---
|
||
** Commands 'set-frame-width' and 'set-frame-height' can now get their
|
||
input using the minibuffer.
|
||
|
||
|
||
* Editing Changes in Emacs 28.1
|
||
|
||
+++
|
||
** A prefix arg now causes 'delete-other-frames' to only iconify frames
|
||
|
||
+++
|
||
** New command 'execute-extended-command-for-buffer'.
|
||
This new command, bound to 'M-S-x', works like
|
||
'execute-extended-command', but limits the set of commands to the
|
||
commands that have been determined to be particularly useful with the
|
||
current mode.
|
||
|
||
+++
|
||
** New user option 'read-extended-command-predicate'.
|
||
This user option controls how 'M-x' performs completion of commands when
|
||
you type 'TAB'. By default, any command that matches what you have
|
||
typed is considered a completion candidate, but you can customize this
|
||
option to exclude commands that are not applicable to the current
|
||
buffer's major and minor modes, and respect the command's completion
|
||
predicate (if any).
|
||
|
||
---
|
||
** 'eval-expression' now no longer signals an error on incomplete expressions.
|
||
Previously, typing 'M-: ( RET' would result in Emacs saying "End of
|
||
file during parsing" and dropping out of the minibuffer. The user
|
||
would have to type 'M-: M-p' to edit and redo the expression. Now
|
||
Emacs will echo the message and allow the user to continue editing.
|
||
|
||
+++
|
||
** 'eval-last-sexp' now handles 'defvar'/'defcustom'/'defface' specially.
|
||
This command would previously not redefine values defined by these
|
||
forms, but this command has now been changed to work more like
|
||
'eval-defun', and reset the values as specified.
|
||
|
||
+++
|
||
** Standalone 'M-y' uses the minibuffer to complete previous kills.
|
||
When 'M-y' is typed not after a yank command, it activates the minibuffer
|
||
where you can browse previous kills using the minibuffer history or
|
||
completion. In Isearch, you can bind 'C-s M-y' to the command
|
||
'isearch-yank-pop' that uses the minibuffer with completion on
|
||
previous kills to read a string and append it to the search string.
|
||
|
||
---
|
||
** New user options 'copy-region-blink-delay' and 'delete-pair-blink-delay'.
|
||
'copy-region-blink-delay' specifies a delay to indicate the region
|
||
copied by 'kill-ring-save'. 'delete-pair-blink-delay' specifies
|
||
a delay to show a paired character to delete.
|
||
|
||
+++
|
||
** New command 'undo-redo'.
|
||
It undoes previous undo commands, but doesn't record itself as an
|
||
undoable command.
|
||
|
||
+++
|
||
** 'read-number' now has its own history variable.
|
||
Additionally, the function now accepts a HIST argument which can be
|
||
used to specify a custom history variable.
|
||
|
||
+++
|
||
** Input history for 'goto-line' can now be made local to every buffer.
|
||
In any event, line numbers used with 'goto-line' are kept in their own
|
||
history list. This should help make faster the process of finding
|
||
line numbers that were previously jumped to. By default, all buffers
|
||
share a single history list. To make every buffer have its own
|
||
history list, customize the user option 'goto-line-history-local'.
|
||
|
||
+++
|
||
** New command 'goto-line-relative' to use in a narrowed buffer.
|
||
It moves point to the line relative to the accessible portion of the
|
||
narrowed buffer. 'M-g M-g' in Info is rebound to this command.
|
||
When 'widen-automatically' is non-nil, 'goto-line' widens the narrowed
|
||
buffer to be able to move point to the inaccessible portion.
|
||
'goto-line-relative' is bound to 'C-x n g'.
|
||
|
||
+++
|
||
** When called interactively, 'goto-char' now offers the number at
|
||
point as default.
|
||
|
||
+++
|
||
** When 'suggest-key-bindings' is non-nil, the completion list of 'M-x'
|
||
shows equivalent key bindings for all commands that have them.
|
||
|
||
** Autosaving via 'auto-save-visited-mode' can now be inhibited by
|
||
setting the variable 'auto-save-visited-mode' buffer-locally to nil.
|
||
|
||
** New commands to describe buttons and widgets have been added.
|
||
'widget-describe' (on a widget) will pop up a help buffer and give a
|
||
description of the properties. Likewise 'button-describe' does the
|
||
same for a button.
|
||
|
||
** Obsolete commands are no longer hidden from command completion.
|
||
Completion of command names now considers obsolete aliases as
|
||
candidates. Invoking a command via an obsolete alias now mentions the
|
||
obsolescence fact and shows the new name of the command.
|
||
|
||
+++
|
||
** New command 'revert-buffer-with-fine-grain'.
|
||
Revert a buffer trying to be as non-destructive as possible,
|
||
preserving markers, properties and overlays. The new variable
|
||
'revert-buffer-with-fine-grain-max-seconds' specifies the maximum
|
||
number of seconds that 'revert-buffer-with-fine-grain' should spend
|
||
trying to be non-destructive.
|
||
|
||
+++
|
||
** New command 'memory-report'.
|
||
This command opens a new buffer called "*Memory Report*" and gives a
|
||
summary of where Emacs is using memory currently.
|
||
|
||
+++
|
||
** New user option 'isearch-repeat-on-direction-change'.
|
||
When this option is set, direction changes in Isearch move to another
|
||
search match, if there is one, instead of moving point to the other
|
||
end of the current match.
|
||
|
||
** Outline
|
||
|
||
+++
|
||
*** New commands to cycle heading visibility.
|
||
Typing 'TAB' on a heading line cycles the current section between
|
||
"hide all", "subheadings", and "show all" states. Typing 'S-TAB'
|
||
anywhere in the buffer cycles the whole buffer between "only top-level
|
||
headings", "all headings and subheadings", and "show all" states.
|
||
|
||
*** New user option 'outline-minor-mode-cycle'.
|
||
This user option customizes 'outline-minor-mode', with the difference
|
||
that 'TAB' and 'S-TAB' on heading lines cycle heading visibility.
|
||
Typing 'TAB' on a heading line cycles the current section between
|
||
"hide all", "subheadings", and "show all" states. Typing 'S-TAB' on a
|
||
heading line cycles the whole buffer between "only top-level
|
||
headings", "all headings and subheadings", and "show all" states.
|
||
|
||
*** New user option 'outline-minor-mode-highlight'.
|
||
This user option customizes 'outline-minor-mode'. It puts
|
||
highlighting on heading lines using standard outline faces. This
|
||
works well only when there are no conflicts with faces used by the
|
||
major mode.
|
||
|
||
|
||
* Changes in Specialized Modes and Packages in Emacs 28.1
|
||
|
||
** Benchmark
|
||
*** New function 'benchmark-call' to measure the execution time of a function.
|
||
Additionally, the number of repetitions can be expressed as a minimal duration
|
||
in seconds.
|
||
|
||
** Macroexp
|
||
---
|
||
*** New function 'macroexp-file-name' to know the name of the current file.
|
||
---
|
||
*** New function 'macroexp-compiling-p' to know if we're compiling.
|
||
---
|
||
*** New function 'macroexp-warn-and-return' to help emit warnings.
|
||
This used to be named 'macroexp--warn-and-return' and has proved useful
|
||
and well-behaved enough to lose the "internal" marker.
|
||
|
||
** 'blink-cursor-mode' is now enabled by default regardless of the UI.
|
||
It used to be enabled when Emacs is started in GUI mode but not when started
|
||
in text mode. The cursor still only actually blinks in GUI frames.
|
||
|
||
** Bindat
|
||
|
||
+++
|
||
*** New 'Bindat type expression' description language.
|
||
This new system is provided by the new macro 'bindat-type' and
|
||
obsoletes the old data layout specifications. It supports
|
||
arbitrary-size integers, recursive types, and more. See the Info node
|
||
"(elisp) Byte Packing" in the ELisp manual for more details.
|
||
|
||
** pcase
|
||
|
||
+++
|
||
*** The 'or' pattern now binds the union of the vars of its sub-patterns.
|
||
If a variable is not bound by the subpattern that matched, it gets bound
|
||
to nil. This was already sometimes the case, but it is now guaranteed.
|
||
|
||
+++
|
||
*** The 'pred' pattern can now take the form '(pred (not FUN))'.
|
||
This is like '(pred (lambda (x) (not (FUN x))))' but results
|
||
in better code.
|
||
|
||
---
|
||
*** New function 'pcase-compile-patterns' to write other macros.
|
||
|
||
+++
|
||
** profiler.el
|
||
The results displayed by 'profiler-report' now have the usage figures
|
||
at the left hand side followed by the function name. This is intended
|
||
to make better use of the horizontal space, in particular eliminating
|
||
the truncation of function names. There is no way to get the former
|
||
layout back.
|
||
|
||
** Loading dunnet.el in batch mode doesn't start the game any more.
|
||
Instead you need to do "emacs -f dun-batch" to start the game in
|
||
batch mode.
|
||
|
||
** Emacs Server
|
||
|
||
+++
|
||
*** New user option 'server-client-instructions'.
|
||
When emacsclient connects, Emacs will (by default) output a message
|
||
about how to exit the client frame. If 'server-client-instructions'
|
||
is set to nil, this message is inhibited.
|
||
|
||
** Perl mode
|
||
|
||
---
|
||
*** New face 'perl-non-scalar-variable'.
|
||
This is used to fontify non-scalar variables.
|
||
|
||
** Python mode
|
||
|
||
*** 'python-shell-interpreter' now defaults to python3 on systems with python3.
|
||
|
||
*** 'C-c C-r' can now be used on arbitrary regions.
|
||
The command previously extended the start of the region to the start
|
||
of the line, but will now actually send the marked region, as
|
||
documented.
|
||
|
||
** Ruby mode
|
||
|
||
*** 'ruby-use-smie' is declared obsolete.
|
||
SMIE is now always enabled and 'ruby-use-smie' only controls whether
|
||
indentation is done using SMIE or with the old ad-hoc code.
|
||
|
||
** Icomplete
|
||
|
||
+++
|
||
*** New minor mode Icomplete-Vertical mode.
|
||
This mode is intended to be used with Icomplete or Fido, to display the
|
||
list of completions candidates vertically instead of horizontally.
|
||
|
||
---
|
||
** Specific warnings can now be disabled from the warning buffer.
|
||
When a warning is displayed to the user, the resulting buffer now has
|
||
buttons which allow making permanent changes to the treatment of that
|
||
warning. Automatic showing of the warning can be disabled (although
|
||
it is still logged to the "*Messages*" buffer), or the warning can be
|
||
disabled entirely.
|
||
|
||
** mspool.el
|
||
|
||
---
|
||
*** Autoload the main entry point 'mspool-show'.
|
||
|
||
** Windows
|
||
|
||
+++
|
||
*** New 'display-buffer' function 'display-buffer-use-least-recent-window'.
|
||
This is like 'display-buffer-use-some-window', but won't reuse the
|
||
current window, and when called repeatedly will try not to reuse a
|
||
previously selected window.
|
||
|
||
*** New function 'window-bump-use-time'.
|
||
This updates the use time of a window.
|
||
|
||
*** The key prefix 'C-x 4 1' displays next command buffer in the same window.
|
||
It's bound to the command 'same-window-prefix' that requests the buffer
|
||
of the next command to be displayed in the same window.
|
||
|
||
*** The key prefix 'C-x 4 4' displays next command buffer in a new window.
|
||
It's bound to the command 'other-window-prefix' that requests the buffer
|
||
of the next command to be displayed in a new window.
|
||
|
||
** Frames
|
||
|
||
*** The key prefix 'C-x 5 5' displays next command buffer in a new frame.
|
||
It's bound to the command 'other-frame-prefix' that requests the buffer
|
||
of the next command to be displayed in a new frame.
|
||
|
||
** Tab Bars
|
||
|
||
*** The key prefix 'C-x t t' displays next command buffer in a new tab.
|
||
It's bound to the command 'other-tab-prefix' that requests the buffer
|
||
of the next command to be displayed in a new tab.
|
||
|
||
+++
|
||
*** New command 'C-x t C-r' to open file read-only in other tab.
|
||
|
||
---
|
||
*** The tab bar is frame-local when 'tab-bar-show' is a number.
|
||
Show/hide the tab bar independently for each frame, according to the
|
||
value of 'tab-bar-show'.
|
||
|
||
---
|
||
*** New command 'toggle-frame-tab-bar'.
|
||
It can be used to enable/disable the tab bar individually on each frame
|
||
independently from the value of 'tab-bar-mode' and 'tab-bar-show'.
|
||
|
||
---
|
||
*** New user option 'tab-bar-format' defines a list of tab bar items.
|
||
When it contains 'tab-bar-format-global' (possibly appended after
|
||
'tab-bar-format-align-right'), then after enabling 'display-time-mode'
|
||
(or any other mode that uses 'global-mode-string') it displays time
|
||
aligned to the right on the tab bar instead of the mode line.
|
||
When 'tab-bar-format-tabs' is replaced with 'tab-bar-format-tabs-groups',
|
||
then the tab bar displays tab groups.
|
||
|
||
---
|
||
*** 'Mod-9' bound to 'tab-last' now switches to the last tab.
|
||
It also supports a negative argument.
|
||
|
||
---
|
||
*** New command 'tab-duplicate' bound to 'C-x t n'.
|
||
|
||
---
|
||
*** 'C-x t N' creates a new tab at the specified absolute position.
|
||
It also supports a negative argument.
|
||
|
||
---
|
||
*** 'C-x t M' moves the current tab to the specified absolute position.
|
||
It also supports a negative argument.
|
||
|
||
---
|
||
*** 'C-x t G' assigns a group name to the tab.
|
||
'tab-close-group' can close all tabs that belong to the selected group.
|
||
The user option 'tab-bar-new-tab-group' defines the default group of a
|
||
new tab. After customizing 'tab-bar-tab-post-change-group-functions'
|
||
to 'tab-bar-move-tab-to-group', changing the tab group will also move it
|
||
closer to other tabs in the same group.
|
||
|
||
---
|
||
*** New user option 'tab-bar-tab-name-format-function'.
|
||
|
||
---
|
||
*** New user option 'tab-line-tab-name-format-function'.
|
||
|
||
---
|
||
*** The tabs in the tab line can now be scrolled using horizontal scroll.
|
||
If your mouse or trackpad supports it, you can now scroll tabs when
|
||
the mouse pointer is in the tab line by scrolling left or right.
|
||
|
||
---
|
||
*** New tab-line faces and options.
|
||
The face 'tab-line-tab-special' is used for tabs whose buffers are
|
||
special, i.e. not file-backed. The face
|
||
'tab-line-tab-inactive-alternate' is used to display inactive tabs
|
||
with an alternating background color, making them easier to
|
||
distinguish between, especially if the face 'tab-line-tab' is
|
||
configured to not display with a box; this alternate face is only
|
||
applied when the option 'tab-line-tab-face-functions' is
|
||
so-configured. That option may also be used to customize tab-line
|
||
faces in other ways.
|
||
|
||
** Occur mode
|
||
|
||
*** New bindings in occur-mode, 'next-error-no-select' bound to 'n' and
|
||
'previous-error-no-select' bound to 'p'.
|
||
|
||
*** The new command 'recenter-current-error', bound to 'l' in Occur or
|
||
compilation buffers, recenters the current displayed occurrence/error.
|
||
|
||
** EIEIO
|
||
|
||
+++
|
||
*** The macro 'oref-default' can now be used with 'setf'.
|
||
It is now defined as a generalized variable that can be used with
|
||
'setf' to modify the value stored in a given class slot.
|
||
|
||
** New minor mode 'cl-font-lock-built-in-mode' for 'lisp-mode'.
|
||
The mode provides refined highlighting of built-in functions, types,
|
||
and variables.
|
||
|
||
** Archive mode
|
||
|
||
---
|
||
*** Archive Mode can now parse ".squashfs" files.
|
||
|
||
*** Can now modify members of 'ar' archives.
|
||
|
||
*** Display of summaries unified between backends.
|
||
|
||
*** New user option 'archive-hidden-columns' and command
|
||
'archive-hideshow-column'. These let you control which columns are
|
||
displayed and which are kept hidden.
|
||
|
||
---
|
||
*** New command bound to 'C': 'archive-copy-file'.
|
||
This command extracts the file under point and writes the data to a
|
||
file.
|
||
|
||
** Emacs Lisp mode
|
||
|
||
*** The mode-line now indicates whether we're using lexical or dynamic scoping.
|
||
|
||
*** A space between an open paren and a symbol changes the indentation rule.
|
||
The presence of a space between an open paren and a symbol now is
|
||
taken as a statement by the programmer that this should be indented
|
||
as a data list rather than as a piece of code.
|
||
|
||
** Calendar
|
||
|
||
+++
|
||
*** New user option 'calendar-time-zone-style'.
|
||
If 'numeric', calendar functions (eg 'calendar-sunrise-sunset') that display
|
||
time zones will use a form like "+0100" instead of "CET".
|
||
|
||
** Dired
|
||
|
||
---
|
||
*** Behavior change on 'dired-clean-confirm-killing-deleted-buffers'.
|
||
Previously, if 'dired-clean-up-buffers-too' was non-nil, and
|
||
'dired-clean-confirm-killing-deleted-buffers' was nil, the buffers
|
||
wouldn't be killed. This combination will now kill the buffers.
|
||
|
||
+++
|
||
*** New user option 'dired-switches-in-mode-line'.
|
||
This user option controls how 'ls' switches are displayed in the mode
|
||
line, and allows truncating them (to preserve space on the mode line)
|
||
or showing them literally, either instead of, or in addition to,
|
||
displaying "by name" or "by date" sort order.
|
||
|
||
---
|
||
*** Broken and circular links are shown with the 'dired-broken-symlink' face.
|
||
|
||
*** '=' ('dired-diff') will now put all backup files into the 'M-n' history.
|
||
When using '=' on a file with backup files, the default file to use
|
||
for diffing is the newest backup file. You can now use 'M-n' to quickly
|
||
select a different backup file instead.
|
||
|
||
+++
|
||
*** New user option 'dired-maybe-use-globstar'.
|
||
If set, enables globstar (recursive globbing) in shells that support
|
||
this feature, but turn it off by default. This allows producing
|
||
directory listings with files matching a wildcard in all the
|
||
subdirectories of a given directory. The new variable
|
||
'dired-enable-globstar-in-shell' lists which shells can have globstar
|
||
enabled, and how to enable it.
|
||
|
||
+++
|
||
*** New user option 'dired-copy-dereference'.
|
||
If set to non-nil, Dired will dereference symbolic links when copying.
|
||
This can be switched off on a per-usage basis by providing
|
||
'dired-do-copy' with a 'C-u' prefix.
|
||
|
||
*** New user option 'dired-mark-region' affects all Dired commands
|
||
that mark files. When non-nil and the region is active in Transient
|
||
Mark mode, then Dired commands operate only on files in the active
|
||
region. The values 'file' and 'line' of this user option define the
|
||
details of marking the file at the end of the region.
|
||
|
||
*** State changing VC operations are supported in Dired on files and
|
||
directories with the help of new command 'dired-vc-next-action'.
|
||
|
||
+++
|
||
*** 'dired-jump' and 'dired-jump-other-window' moved from 'dired-x' to 'dired'.
|
||
The 'dired-jump' and 'dired-jump-other-window' commands have been
|
||
moved from the 'dired-x' package to 'dired'. The user option
|
||
'dired-bind-jump' no longer has any effect and is now obsolete.
|
||
The commands are now bound to 'C-x C-j' and 'C-x 4 C-j' by default.
|
||
|
||
To get the old behavior of 'dired-bind-jump' back and unbind the above
|
||
keys, add the following to your init file:
|
||
|
||
(global-set-key "\C-x\C-j" nil)
|
||
(global-set-key "\C-x4\C-j" nil)
|
||
|
||
** Change Logs and VC
|
||
|
||
*** More VC commands can be used from non-file buffers.
|
||
The relevant commands are those that don't change the VC state.
|
||
The non-file buffers which can use VC commands are those that have
|
||
their 'default-directory' under VC.
|
||
|
||
*** New command 'vc-dir-root' uses the root directory without asking.
|
||
|
||
---
|
||
*** New face 'log-view-commit-body'.
|
||
This is used when expanding commit messages from 'vc-print-root-log'
|
||
and similar commands.
|
||
|
||
---
|
||
*** New faces for 'vc-dir' buffers.
|
||
Those are: 'vc-dir-header', 'vc-dir-header-value', 'vc-dir-directory',
|
||
'vc-dir-file', 'vc-dir-mark-indicator', 'vc-dir-status-warning',
|
||
'vc-dir-status-edited', 'vc-dir-status-up-to-date',
|
||
'vc-dir-status-ignored'.
|
||
|
||
---
|
||
*** The responsible VC backend is now the most specific one.
|
||
'vc-responsible-backend' loops over the backends in
|
||
'vc-handled-backends' to determine which backend is responsible for a
|
||
specific (unregistered) file. Previously the first matching backend
|
||
was chosen, but now the one with the most specific path is chosen (in
|
||
case there's a directory handled by one backend inside another).
|
||
|
||
*** New commands 'vc-dir-mark-registered-files' (bound to '* r') and
|
||
'vc-dir-mark-unregistered-files'.
|
||
|
||
*** Support for bookmark.el.
|
||
Bookmark locations can refer to VC directory buffers.
|
||
|
||
---
|
||
*** New user option 'vc-hg-create-bookmark'.
|
||
It controls whether a bookmark or branch will be created when you
|
||
invoke 'C-u C-x v s' ('vc-create-tag').
|
||
|
||
---
|
||
*** 'vc-hg' now uses 'hg summary' to populate extra 'vc-dir' headers.
|
||
|
||
---
|
||
*** New user option 'vc-git-revision-complete-only-branches'.
|
||
If non-nil, only branches and remotes are considered when doing
|
||
completion over Git branch names. The default is nil, which causes
|
||
tags to be considered as well.
|
||
|
||
** Gnus
|
||
|
||
+++
|
||
*** New user option 'gnus-registry-register-all'.
|
||
If non-nil (the default), create registry entries for all messages.
|
||
If nil, don't automatically create entries, they must be created
|
||
manually.
|
||
|
||
+++
|
||
*** New user options to customise the summary line specs "%[" and "%]".
|
||
Four new options introduced in customisation group
|
||
'gnus-summary-format'. These are 'gnus-sum-opening-bracket',
|
||
'gnus-sum-closing-bracket', 'gnus-sum-opening-bracket-adopted', and
|
||
'gnus-sum-closing-bracket-adopted'. Their default values are "[", "]",
|
||
"<", ">" respectively. These options control the appearance of "%["
|
||
and "%]" specs in the summary line format. "%[" will normally display
|
||
the value of 'gnus-sum-opening-bracket', but can also be
|
||
'gnus-sum-opening-bracket-adopted' for the adopted articles. "%]" will
|
||
normally display the value of 'gnus-sum-closing-bracket', but can also
|
||
be 'gnus-sum-closing-bracket-adopted' for the adopted articles.
|
||
|
||
+++
|
||
*** New user option 'gnus-paging-select-next'.
|
||
This controls what happens when using commands like 'SPC' and 'DEL' to
|
||
page the current article. If non-nil (the default), go to the
|
||
next/prev article, but if nil, do nothing at the end/start of the article.
|
||
|
||
+++
|
||
*** New gnus-search library.
|
||
A new unified search syntax which can be used across multiple
|
||
supported search engines. Set 'gnus-search-use-parsed-queries' to
|
||
non-nil to enable.
|
||
|
||
+++
|
||
*** New value for user option 'smiley-style'.
|
||
Smileys can now be rendered with emojis instead of small images when
|
||
using the new 'emoji' value in 'smiley-style'.
|
||
|
||
+++
|
||
*** New user option 'gnus-agent-eagerly-store-articles'.
|
||
If non-nil (which is the default), the Gnus Agent will store all read
|
||
articles in the Agent cache.
|
||
|
||
+++
|
||
*** New user option 'gnus-global-groups'.
|
||
Gnus handles private groups differently from public (i.e., NNTP-like)
|
||
groups. Most importantly, Gnus doesn't download external images from
|
||
mail-like groups. This can be overridden by putting group names in
|
||
'gnus-global-groups': Any group present in that list will be treated
|
||
like a public group.
|
||
|
||
+++
|
||
*** New scoring types for the Date header.
|
||
You can now score based on the relative age of an article with the new
|
||
'<' and '>' date scoring types.
|
||
|
||
+++
|
||
*** User-defined scoring is now possible.
|
||
The new type is 'score-fn'. More information in the Gnus manual node
|
||
"(gnus) Score File Format".
|
||
|
||
+++
|
||
*** New backend 'nnselect'.
|
||
The newly added 'nnselect' backend allows creating groups from an
|
||
arbitrary list of articles that may come from multiple groups and
|
||
servers. These groups generally behave like any other group: they may
|
||
be ephemeral or persistent, and allow article marking, moving,
|
||
deletion, etc. 'nnselect' groups may be created like any other group,
|
||
but there are three convenience functions for the common case of
|
||
obtaining the list of articles as a result of a search:
|
||
'gnus-group-make-search-group' ('G g') that will prompt for an 'nnir'
|
||
search query and create a persistent group for that search;
|
||
'gnus-group-read-ephemeral-search-group' ('G G') that will prompt for
|
||
an 'nnir' search query and create an ephemeral group for that search;
|
||
and 'gnus-summary-make-group-from-search' ('C-c C-p') that will create
|
||
a persistent group with the search parameters of a current ephemeral
|
||
search group.
|
||
|
||
As part of this addition, the user option 'nnir-summary-line-format'
|
||
has been removed; its functionality is now available directly in the
|
||
'gnus-summary-line-format' specs '%G' and '%g'. The user option
|
||
'gnus-refer-thread-use-nnir' has been renamed to
|
||
'gnus-refer-thread-use-search'.
|
||
|
||
+++
|
||
*** New user option 'gnus-dbus-close-on-sleep'.
|
||
On systems with D-Bus support, it is now possible to register a signal
|
||
to close all Gnus servers before the system sleeps.
|
||
|
||
+++
|
||
*** The key binding of 'gnus-summary-search-article-forward' has changed.
|
||
This command was previously on 'M-s' and shadowed the global 'M-s'
|
||
search prefix. The command has now been moved to 'M-s M-s'. (For
|
||
consistency, the 'M-s M-r' key binding has been added for the
|
||
'gnus-summary-search-article-backward' command.)
|
||
|
||
---
|
||
*** The value of "all" in the 'large-newsgroup-initial' group parameter changes.
|
||
It was previously nil, which didn't work, because nil is
|
||
indistinguishable from not being present. The new value for "all" is
|
||
the symbol 'all'.
|
||
|
||
+++
|
||
*** The name of dependent Gnus sessions has changed from "slave" to "child".
|
||
The names of the commands 'gnus-slave', 'gnus-slave-no-server' and
|
||
'gnus-slave-unplugged' have changed to 'gnus-child',
|
||
'gnus-child-no-server' and 'gnus-child-unplugged' respectively.
|
||
|
||
+++
|
||
*** The 'W Q' summary mode command now takes a numerical prefix to
|
||
allow adjusting the fill width.
|
||
|
||
+++
|
||
*** New variable 'mm-inline-font-lock'.
|
||
This variable is supposed to be bound by callers to determine whether
|
||
inline MIME parts (that support it) are supposed to be font-locked or
|
||
not.
|
||
|
||
** Message
|
||
|
||
---
|
||
*** Respect 'message-forward-ignored-headers' more.
|
||
Previously, this user option would not be consulted if
|
||
'message-forward-show-mml' was nil and forwarding as MIME.
|
||
|
||
+++
|
||
*** New user option 'message-forward-included-mime-headers'.
|
||
This is used when forwarding messages as MIME, but not using MML.
|
||
|
||
+++
|
||
*** Message now supports the OpenPGP header.
|
||
To generate these headers, add the new function
|
||
'message-add-openpgp-header' to 'message-send-hook'. The header will
|
||
be generated according to the new 'message-openpgp-header' variable.
|
||
|
||
---
|
||
*** A change to how "Mail-Copies-To: never" is handled.
|
||
If a user has specified "Mail-Copies-To: never", and Message was asked
|
||
to do a "wide reply", some other arbitrary recipient would end up in
|
||
the resulting "To" header, while the remaining recipients would be put
|
||
in the "Cc" header. This is somewhat misleading, as it looks like
|
||
you're responding to a specific person in particular. This has been
|
||
changed so that all the recipients are put in the "To" header in these
|
||
instances.
|
||
|
||
+++
|
||
*** New command to start Emacs in Message mode to send an email.
|
||
Emacs can be defined as a handler for the "x-scheme-handler/mailto"
|
||
MIME type with the following command: "emacs -f message-mailto %u".
|
||
An "emacs-mail.desktop" file has been included, suitable for
|
||
installing in desktop directories like "/usr/share/applications" or
|
||
"~/.local/share/applications".
|
||
Clicking on a 'mailto:' link in other applications will then open
|
||
Emacs with headers filled out according to the link, e.g.
|
||
"mailto:larsi@gnus.org?subject=This+is+a+test". If you prefer
|
||
emacsclient, use "emacsclient -e '(message-mailto "%u")'"
|
||
|
||
---
|
||
*** Change to default value of 'message-draft-headers' user option.
|
||
The 'Date' symbol has been removed from the default value, meaning that
|
||
draft or delayed messages will get a date reflecting when the message
|
||
was sent. To restore the original behavior of dating a message
|
||
from when it is first saved or delayed, add the symbol 'Date' back to
|
||
this user option.
|
||
|
||
+++
|
||
*** New command to take screenshots.
|
||
In Message mode buffers, the 'C-c C-p' ('message-insert-screenshot')
|
||
command has been added. It depends on using an external program to
|
||
take the actual screenshot, and defaults to "ImageMagick import".
|
||
|
||
** Smtpmail
|
||
|
||
+++
|
||
*** Allow direct selection of smtp authentication mechanism.
|
||
A server entry retrieved by auth-source can request a desired smtp
|
||
authentication mechanism by setting a value for the key 'smtp-auth'.
|
||
|
||
** Search and Replace
|
||
|
||
*** New key 'M-s M-.' starts isearch with the thing found at point.
|
||
This key is bound to the new command 'isearch-forward-thing-at-point'.
|
||
The new user option 'isearch-forward-thing-at-point' defines
|
||
a list of symbols to try to get the "thing" at point. By default,
|
||
the first element of the list is 'region' that tries to yank
|
||
the currently active region to the search string.
|
||
|
||
*** New user option 'isearch-wrap-pause' defines how to wrap the search.
|
||
There are choices to disable wrapping completely and to wrap immediately.
|
||
When wrapping immediately, it consistently handles the numeric arguments
|
||
of 'C-s' ('isearch-repeat-forward') and 'C-r' ('isearch-repeat-backward'),
|
||
continuing with the remaining count after wrapping.
|
||
|
||
** Grep
|
||
|
||
+++
|
||
*** New user option 'grep-match-regexp' matches grep markers to highlight.
|
||
Grep emits SGR ANSI escape sequences to color its output. The new
|
||
user option 'grep-match-regexp' holds the regular expression to match
|
||
the appropriate markers in order to provide highlighting in the source
|
||
buffer. The user option can be customized to accommodate other
|
||
grep-like tools.
|
||
|
||
---
|
||
*** The 'lgrep' command now ignores directories.
|
||
On systems where the grep command supports it, directories will be
|
||
skipped.
|
||
|
||
** Help
|
||
|
||
---
|
||
*** Keybindings in 'help-mode' use the new 'help-key-binding' face.
|
||
This face is added by 'substitute-command-keys' to any "\[command]"
|
||
substitution. The return value of that function should consequently
|
||
be assumed to be a propertized string.
|
||
|
||
Note that the new face will also be used in tooltips. When using the
|
||
GTK toolkit, this is only true if 'x-gtk-use-system-tooltips' is t.
|
||
|
||
---
|
||
*** 'g' ('revert-buffer') in 'help-mode' no longer requires confirmation.
|
||
|
||
+++
|
||
*** New command 'describe-keymap' describes keybindings in a keymap.
|
||
|
||
---
|
||
*** New keybinding 'C-h R' prompts for a manual to display and displays it.
|
||
|
||
+++
|
||
** New command 'lossage-size'.
|
||
It allows users to set the maximum number of keystrokes and commands
|
||
recorded for the purpose of 'view-lossage'.
|
||
|
||
---
|
||
*** The command 'view-lossage' can now be invoked from the menu bar.
|
||
The menu bar "Help" menu now has a "Show Recent Inputs" item under the
|
||
"Describe" sub-menu.
|
||
|
||
** Input methods
|
||
|
||
+++
|
||
*** Emacs now supports "transient" input methods.
|
||
A transient input method is enabled for inserting a single character,
|
||
and is then automatically disabled. 'C-x \' temporarily enables the
|
||
selected transient input method. Use 'C-u C-x \' to select a
|
||
transient input method (which can be different from the input method
|
||
enabled by 'C-\'). For example, 'C-u C-x \ compose RET' selects the
|
||
'compose' input method; then typing 'C-x \ 1 2' will insert the
|
||
character '½', and disable the 'compose' input method afterwards.
|
||
You can use 'C-x \' in incremental search to insert a single character
|
||
to the search string.
|
||
|
||
---
|
||
*** New input method 'compose' based on X Multi_key sequences.
|
||
|
||
---
|
||
*** New input method 'iso-transl' with the same keys as 'C-x 8'.
|
||
After selecting it as a transient input method with 'C-u C-x \
|
||
iso-transl RET', it supports the same key sequences as 'C-x 8',
|
||
so e.g. like 'C-x 8 [' inserts a left single quotation mark,
|
||
'C-x \ [' does the same.
|
||
|
||
---
|
||
*** New user options 'read-char-by-name-sort' and 'read-char-by-name-group'.
|
||
'read-char-by-name-sort' defines the sorting order of characters for
|
||
completion of 'C-x 8 RET TAB' and can be customized to sort them
|
||
by codepoints instead of character names by default. The 't' value of
|
||
'read-char-by-name-group' groups the characters for completion of
|
||
'C-x 8 RET TAB' by Unicode blocks.
|
||
|
||
---
|
||
*** Improved language transliteration in Malayalam input methods.
|
||
Added a new Mozhi scheme. The inapplicable ITRANS scheme is now
|
||
deprecated. Errors in the Inscript method were corrected.
|
||
|
||
---
|
||
*** New input method 'cham'.
|
||
There's also a Cham greeting in "etc/HELLO".
|
||
|
||
** Ispell
|
||
|
||
+++
|
||
*** 'ispell-comments-and-strings' now accepts START and END arguments,
|
||
defaulting to active region when used interactively.
|
||
|
||
+++
|
||
*** New command 'ispell-comment-or-string-at-point' is provided.
|
||
|
||
---
|
||
** The old non-SMIE indentation of 'sh-mode' has been removed.
|
||
|
||
---
|
||
** The 'list-bookmark' menu is now based on 'tabulated-list-mode'.
|
||
The interactive bookmark list will now benefit from features in
|
||
'tabulated-list-mode' like sorting columns or changing column width.
|
||
|
||
Support for the optional "inline" header line, allowing for a header
|
||
without using 'header-line-format', has been dropped. Consequently,
|
||
the variables 'bookmark-bmenu-use-header-line' and
|
||
'bookmark-bmenu-inline-header-height' are now declared obsolete.
|
||
|
||
---
|
||
** The sb-image.el library is now marked obsolete.
|
||
This file was a compatibility kludge which is no longer needed.
|
||
|
||
---
|
||
** Lisp mode now uses 'common-lisp-indent-function'.
|
||
To revert to the previous behavior,
|
||
'(setq lisp-indent-function 'lisp-indent-function)' from 'lisp-mode-hook'.
|
||
|
||
** Customize
|
||
|
||
*** Most customize commands now hide obsolete user options.
|
||
Obsolete user options are no longer shown in the listings produced by
|
||
the commands 'customize', 'customize-group', 'customize-apropos' and
|
||
'customize-changed'.
|
||
|
||
To customize obsolete user options, use 'customize-option' or
|
||
'customize-saved'.
|
||
|
||
*** New SVG icons for checkboxes and arrows.
|
||
They will be used automatically instead of the old icons. If Emacs is
|
||
built without SVG support, the old icons will be used instead.
|
||
|
||
** Edebug
|
||
|
||
*** Obsoletions
|
||
---
|
||
**** 'get-edebug-spec' is obsolete, replaced by 'edebug-get-spec'.
|
||
+++
|
||
**** The spec operator ':name NAME' is obsolete, use '&name' instead.
|
||
+++
|
||
**** The spec element 'function-form' is obsolete, use 'form' instead.
|
||
|
||
+++
|
||
*** New function 'def-edebug-elem-spec' to define Edebug spec elements.
|
||
These used to be defined with 'def-edebug-spec' thus conflating the
|
||
two name spaces, which lead to name collisions.
|
||
The use of 'def-edebug-spec' to define Edebug spec elements is
|
||
declared obsolete.
|
||
|
||
*** Edebug specification lists can use some new keywords:
|
||
|
||
+++
|
||
**** '&interpose SPEC FUN ARGS..' lets FUN control parsing after SPEC.
|
||
More specifically, FUN is called with 'HEAD PF ARGS..' where
|
||
PF is a parsing function that expects a single argument (the specs to
|
||
use) and HEAD is the code that matched SPEC.
|
||
|
||
+++
|
||
**** '&error MSG' unconditionally aborts the current edebug instrumentation.
|
||
|
||
+++
|
||
**** '&name SPEC FUN' extracts the current name from the code matching SPEC.
|
||
|
||
** ElDoc
|
||
|
||
+++
|
||
*** New user option 'eldoc-echo-area-display-truncation-message'.
|
||
If non-nil (the default), eldoc will display a message saying
|
||
something like "(Documentation truncated. Use `M-x eldoc-doc-buffer'
|
||
to see rest)" when a message has been truncated. If nil, truncated
|
||
messages will be marked with just "..." at the end.
|
||
|
||
+++
|
||
*** New hook 'eldoc-documentation-functions'.
|
||
This hook is intended to be used for registering doc string functions.
|
||
These functions don't need to produce the doc string right away, they
|
||
may arrange for it to be produced asynchronously. The results of all
|
||
doc string functions are accessible to the user through the user
|
||
option 'eldoc-documentation-strategy'.
|
||
|
||
*** New hook 'eldoc-display-functions'.
|
||
This hook is intended to be used for displaying doc strings. The
|
||
functions receive the doc string composed according to
|
||
'eldoc-documentation-strategy' and are tasked with displaying it to
|
||
the user. Examples of such functions would use the echo area, a
|
||
separate buffer, or a tooltip.
|
||
|
||
+++
|
||
*** New user option 'eldoc-documentation-strategy'.
|
||
The built-in choices available for this user option let users compose
|
||
the results of 'eldoc-documentation-functions' in various ways, even
|
||
if some of those functions are synchronous and some asynchronous.
|
||
The user option replaces 'eldoc-documentation-function', which is now
|
||
obsolete.
|
||
|
||
*** 'eldoc-echo-area-use-multiline-p' is now handled by ElDoc.
|
||
The user option 'eldoc-echo-area-use-multiline-p' is now handled
|
||
by the ElDoc library itself. Functions in
|
||
'eldoc-documentation-functions' don't need to worry about consulting
|
||
it when producing a doc string.
|
||
|
||
** Shell
|
||
|
||
---
|
||
*** New command in 'shell-mode': 'narrow-to-prompt'.
|
||
This is bound to 'C-x n d' in 'shell-mode' buffers, and narrows to the
|
||
command line under point (and any following output).
|
||
|
||
** Eshell
|
||
|
||
---
|
||
*** 'eshell-hist-ignoredups' can now also be used to mimic "erasedups" in bash.
|
||
|
||
---
|
||
*** Environment variable 'INSIDE_EMACS' is now copied to subprocesses.
|
||
Its value equals the result of evaluating '(format "%s,eshell" emacs-version)'.
|
||
|
||
---
|
||
*** Eshell no longer re-initializes its keymap every call.
|
||
This allows users to use (define-key eshell-mode-map ...) as usual.
|
||
Some modules have their own minor mode now to account for these
|
||
changes.
|
||
|
||
** EUDC
|
||
|
||
+++
|
||
*** New macOS Contacts backend.
|
||
This backend works on newer versions of macOS and is generally
|
||
preferred over the eudcb-mab.el backend.
|
||
|
||
** Tramp
|
||
|
||
+++
|
||
*** New connection method "mtp", which allows accessing media devices
|
||
like cell phones, tablets or cameras.
|
||
|
||
+++
|
||
*** New connection method "sshfs", which allows accessing remote files
|
||
via a file system mounted with 'sshfs'.
|
||
|
||
+++
|
||
*** Trashed remote files are moved to the local trash directory.
|
||
All remote files, which are trashed, are moved to the local trash
|
||
directory. Except remote encrypted files, which are always deleted.
|
||
|
||
+++
|
||
*** New command 'tramp-crypt-add-directory'.
|
||
This command marks a remote directory to contain only encrypted files.
|
||
See the "(tramp) Keeping files encrypted" node of the Tramp manual for
|
||
details. This feature is experimental.
|
||
|
||
+++
|
||
*** Support of direct asynchronous process invocation.
|
||
When Tramp connection property "direct-async-process" is set to
|
||
non-nil for a given connection, 'make-process' and 'start-file-process'
|
||
calls are performed directly as in "ssh ... <command>". This avoids
|
||
initialization performance penalties. See the "(tramp) Improving
|
||
performance of asynchronous remote processes" node of the Tramp manual
|
||
for details, and also for a discussion or restrictions. This feature
|
||
is experimental.
|
||
|
||
+++
|
||
*** New user option 'tramp-debug-to-file'.
|
||
When non-nil, this user option instructs Tramp to mirror the debug
|
||
buffer to a file under the "/tmp/" directory. This is useful, if (in
|
||
rare cases) Tramp blocks Emacs, and we need further debug information.
|
||
|
||
** Tempo
|
||
|
||
---
|
||
*** 'tempo-define-template' can now re-assign templates to tags.
|
||
Previously, assigning a new template to an already defined tag had no
|
||
effect.
|
||
|
||
** map.el
|
||
|
||
*** Pcase 'map' pattern added keyword symbols abbreviation.
|
||
A pattern like '(map :sym)' binds the map's value for ':sym' to 'sym',
|
||
equivalent to '(map (:sym sym))'.
|
||
|
||
---
|
||
*** The function 'map-copy' now uses 'copy-alist' on alists.
|
||
This is a slightly deeper copy than the previous 'copy-sequence'.
|
||
|
||
---
|
||
*** The function 'map-contains-key' now supports plists.
|
||
|
||
** Package
|
||
|
||
+++
|
||
*** New command 'package-browse-url' and keystroke 'w'.
|
||
|
||
+++
|
||
*** New commands to filter the package list.
|
||
The filter commands are bound to the following keys:
|
||
|
||
key binding
|
||
--- -------
|
||
/ a package-menu-filter-by-archive
|
||
/ d package-menu-filter-by-description
|
||
/ k package-menu-filter-by-keyword
|
||
/ N package-menu-filter-by-name-or-description
|
||
/ n package-menu-filter-by-name
|
||
/ s package-menu-filter-by-status
|
||
/ v package-menu-filter-by-version
|
||
/ m package-menu-filter-marked
|
||
/ u package-menu-filter-upgradable
|
||
/ / package-menu-filter-clear
|
||
|
||
---
|
||
*** Column widths in 'list-packages' display can now be customized.
|
||
See the new user options 'package-name-column-width',
|
||
'package-version-column-width', 'package-status-column-width', and
|
||
'package-archive-column-width'.
|
||
|
||
** gdb-mi
|
||
|
||
+++
|
||
*** gdb-mi can now store and restore window configurations.
|
||
Use 'gdb-save-window-configuration' to save window configuration to a
|
||
file and 'gdb-load-window-configuration' to load from a file. These
|
||
commands can also be accessed through the menu bar under 'Gud --
|
||
GDB-Windows'. 'gdb-default-window-configuration-file', when non-nil,
|
||
is loaded when GDB starts up.
|
||
|
||
+++
|
||
*** gdb-mi can now restore window configuration after quit.
|
||
Set 'gdb-restore-window-configuration-after-quit' to non-nil and Emacs
|
||
will remember the window configuration before GDB started and restore
|
||
it after GDB quits. A toggle button is also provided under 'Gud --
|
||
GDB-Windows'.
|
||
|
||
+++
|
||
*** gdb-mi now has a better logic for displaying source buffers.
|
||
Now GDB only uses one source window to display source file by default.
|
||
Customize 'gdb-max-source-window-count' to use more than one window.
|
||
Control source file display by 'gdb-display-source-buffer-action'.
|
||
|
||
+++
|
||
*** The default value of 'gdb-mi-decode-strings' is now t.
|
||
This means that the default coding-system is now used to decode strings
|
||
and source file names from GDB.
|
||
|
||
** Gravatar
|
||
|
||
---
|
||
*** New user option 'gravatar-service' for host to query for gravatars.
|
||
Defaults to 'libravatar', with 'unicornify' and 'gravatar' as options.
|
||
|
||
** Compilation mode
|
||
|
||
*** Regexp matching of messages is now case-sensitive by default.
|
||
The variable 'compilation-error-case-fold-search' can be set for
|
||
case-insensitive matching of messages when the old behavior is
|
||
required, but the recommended solution is to use a correctly matching
|
||
regexp instead.
|
||
|
||
---
|
||
*** Messages from ShellCheck are now recognized.
|
||
|
||
---
|
||
*** Messages from Visual Studio that mention column numbers are now recognized.
|
||
|
||
** Hi Lock mode
|
||
|
||
---
|
||
*** Matching in 'hi-lock-mode' is case-sensitive when regexp contains
|
||
upper case characters and 'search-upper-case' is non-nil.
|
||
'highlight-phrase' also uses 'search-whitespace-regexp'
|
||
to substitute spaces in regexp search.
|
||
|
||
---
|
||
*** The default value of 'hi-lock-highlight-range' was enlarged.
|
||
The new default value is 2000000 (2 megabytes).
|
||
|
||
** Whitespace mode
|
||
|
||
+++
|
||
*** New style 'missing-newline-at-eof'.
|
||
If present in 'whitespace-style' (as it is by default), the final
|
||
character in the buffer will be highlighted if the buffer doesn't end
|
||
with a newline.
|
||
|
||
---
|
||
*** The default 'whitespace-enable-predicate' predicate has changed.
|
||
It used to check elements in the list version of
|
||
'whitespace-global-modes' with 'eq', but now uses 'derived-mode-p'.
|
||
|
||
** Texinfo
|
||
|
||
---
|
||
*** New user option 'texinfo-texi2dvi-options'.
|
||
This is used when invoking 'texi2dvi' from 'texinfo-tex-buffer'.
|
||
|
||
---
|
||
*** New commands for moving in and between environments.
|
||
An "environment" is something that ends with '@end'. The commands are
|
||
'C-c C-c C-f' (next end), 'C-c C-c C-b' (previous end),
|
||
'C-c C-c C-n' (next start) and 'C-c C-c C-p' (previous start), as well
|
||
as 'C-c .', which will alternate between the start and the end of the
|
||
current environment.
|
||
|
||
** Rmail
|
||
|
||
---
|
||
*** New user option 'rmail-re-abbrevs'.
|
||
Its default value matches localized abbreviations of the "reply"
|
||
prefix on the Subject line in various languages.
|
||
|
||
---
|
||
*** New user option 'shr-offer-extend-specpdl'.
|
||
If this is nil, rendering of HTML in the email message body that
|
||
requires to enlarge 'max-specpdl-size', the number of Lisp variable
|
||
bindings, will be aborted, and Emacs will not ask you whether to
|
||
enlarge 'max-specpdl-size' to complete the rendering. The default is
|
||
t, which preserves the original behavior.
|
||
|
||
---
|
||
*** New user option 'rmail-show-message-set-modified'.
|
||
If set non-nil, showing an unseen message will set the Rmail buffer's
|
||
modified flag.
|
||
|
||
** Apropos
|
||
|
||
*** New commands 'apropos-next-symbol' and 'apropos-previous-symbol'.
|
||
These new navigation commands are bound to 'n' and 'p' in
|
||
'apropos-mode'.
|
||
|
||
*** New command 'apropos-function'.
|
||
This works like 'C-u M-x apropos-command' but is more discoverable.
|
||
|
||
** CC Mode
|
||
|
||
*** Added support for Doxygen documentation style.
|
||
'doxygen' is now a valid 'c-doc-comment-style' which recognises all
|
||
comment styles supported by Doxygen (namely '///', '//!', '/** … */'
|
||
and '/*! … */'. 'gtkdoc' remains the default for C and C++ modes; to
|
||
use 'doxygen' by default one might evaluate:
|
||
|
||
(setq-default c-doc-comment-style
|
||
'((java-mode . javadoc)
|
||
(pike-mode . autodoc)
|
||
(c-mode . doxygen)
|
||
(c++-mode . doxygen)))
|
||
|
||
or use it in a custom 'c-style'.
|
||
|
||
*** Added support to line up '?' and ':' of a ternary operator.
|
||
The new 'c-lineup-ternary-bodies' function can be used as a lineup
|
||
function to align question mark and colon which are part of a ternary
|
||
operator ('?:'). For example:
|
||
|
||
return arg % 2 == 0 ? arg / 2
|
||
: (3 * arg + 1);
|
||
|
||
To enable, add it to appropriate entries in 'c-offsets-alist', e.g.:
|
||
|
||
(c-set-offset 'arglist-cont '(c-lineup-ternary-bodies
|
||
c-lineup-gcc-asm-reg))
|
||
(c-set-offset 'arglist-cont-nonempty '(c-lineup-ternary-bodies
|
||
c-lineup-gcc-asm-reg
|
||
c-lineup-arglist))
|
||
(c-set-offset 'statement-cont '(c-lineup-ternary-bodies +))
|
||
|
||
** browse-url
|
||
|
||
*** Added support for custom URL handlers.
|
||
There is a new variable 'browse-url-default-handlers' and a user
|
||
option 'browse-url-handlers' being alists with '(REGEXP-OR-PREDICATE
|
||
. FUNCTION)' entries allowing to define different browsing FUNCTIONs
|
||
depending on the URL to be browsed. The variable is for default
|
||
handlers provided by Emacs itself or external packages, the user
|
||
option is for the user (and allows for overriding the default
|
||
handlers).
|
||
|
||
Formerly, one could do the same by setting
|
||
'browse-url-browser-function' to such an alist. This usage is still
|
||
supported but deprecated.
|
||
|
||
*** Categorization of browsing commands in internal vs. external.
|
||
All standard browsing commands such as 'browse-url-firefox',
|
||
'browse-url-mail', or 'eww' have been categorized into internal (URL
|
||
is browsed in Emacs) or external (an external application is spawned
|
||
with the URL). This is done by adding a 'browse-url-browser-kind'
|
||
symbol property to the browsing commands. With a new command
|
||
'browse-url-with-browser-kind', an URL can explicitly be browsed with
|
||
either an internal or external browser.
|
||
|
||
*** Support for the conkeror browser is now obsolete.
|
||
|
||
*** Support for the Mosaic browser has been removed.
|
||
This support has been obsolete since 25.1.
|
||
|
||
** SHR
|
||
|
||
---
|
||
*** The command 'shr-browse-url' now supports custom mailto handlers.
|
||
Clicking on or otherwise following a 'mailto:' link in a HTML buffer
|
||
rendered by SHR previously invoked the command 'browse-url-mailto'.
|
||
This is still the case by default, but if you customize
|
||
'browse-url-mailto-function' or 'browse-url-handlers' to call some
|
||
other function, it will now be called instead of the default.
|
||
|
||
+++
|
||
*** New user option 'shr-max-width'.
|
||
If this user option is non-nil, and 'shr-width' is nil, then SHR will
|
||
use the value of 'shr-max-width' to limit the width of the rendered
|
||
HTML. The default is 120 characters, so even if you have very wide
|
||
frames, HTML text will be rendered more narrowly, which usually leads
|
||
to a more readable text. Set this user option to nil to get the
|
||
previous behavior of rendering as wide as the 'window-width' allows.
|
||
If 'shr-width' is non-nil, it overrides this variable.
|
||
|
||
** Images
|
||
|
||
---
|
||
*** You can explicitly specify base_uri for svg images.
|
||
':base-uri' image property can be used to explicitly specify base_uri
|
||
for embedded images into svg. ':base-uri' is supported for both file
|
||
and data svg images.
|
||
|
||
+++
|
||
*** 'svg-embed-base-uri-image' added to embed images.
|
||
'svg-embed-base-uri-image' can be used to embed images located
|
||
relatively to 'file-name-directory' of the ':base-uri' svg image property.
|
||
This works much faster then 'svg-embed'.
|
||
|
||
+++
|
||
*** New function 'image-cache-size'.
|
||
This function returns the size of the current image cache, in bytes.
|
||
|
||
---
|
||
*** Animated images stop automatically under high CPU pressure sooner.
|
||
Previously, an animated image would stop animating if any single image
|
||
took more than two seconds to display. The new algorithm maintains a
|
||
decaying average of delays, and if this number gets too high, the
|
||
animation is stopped.
|
||
|
||
+++
|
||
*** The 'n' and 'p' commands (next/previous image) now respect Dired order.
|
||
These commands would previously display the next/previous image in
|
||
lexicographic order, but will now find the "parent" Dired buffer and
|
||
select the next/previous image file according to how the files are
|
||
sorted there. The commands have also been extended to work when the
|
||
"parent" buffer is an archive mode (i.e., zip file or the like) or tar
|
||
mode buffer.
|
||
|
||
---
|
||
*** 'image-converter' is now restricted to formats in 'auto-mode-alist'.
|
||
When using external image converters, the external program is queried
|
||
for what formats it supports. This list may contain formats that are
|
||
problematic in some contexts (like PDFs), so this list is now filtered
|
||
based on 'auto-mode-alist'. Only file names that map to 'image-mode'
|
||
are now supported.
|
||
|
||
---
|
||
*** The background and foreground of images now default to face colors.
|
||
When an image doesn't specify a foreground or background color, Emacs
|
||
now uses colors from the face used to draw the surrounding text
|
||
instead of the frame's default colors.
|
||
|
||
To load images with the default frame colors use the ':foreground' and
|
||
':background' image attributes, for example:
|
||
|
||
(create-image "filename" nil nil
|
||
:foreground (face-attribute 'default :foreground)
|
||
:background (face-attribute 'default :background))
|
||
|
||
This change only affects image types that support foreground and
|
||
background colors or transparency, such as xbm, pbm, svg, png and gif.
|
||
|
||
+++
|
||
*** Image smoothing can now be explicitly enabled or disabled.
|
||
Smoothing applies a bilinear filter while scaling or rotating an image
|
||
to prevent aliasing and other unwanted effects. The new image
|
||
property ':transform-smoothing' can be set to t to force smoothing
|
||
and nil to disable smoothing.
|
||
|
||
The default behaviour of smoothing on down-scaling and not smoothing
|
||
on up-scaling remains unchanged.
|
||
|
||
+++
|
||
*** New user option 'image-transform-smoothing'.
|
||
This controls whether to use smoothing or not for an image. Values
|
||
include nil (no smoothing), t (do smoothing) or a predicate function
|
||
that's called with the image object and should return nil/t.
|
||
|
||
+++
|
||
*** SVG images now support user stylesheets.
|
||
The ':css' image attribute can be used to override the default CSS
|
||
stylesheet for an image. The default sets 'font-family' and
|
||
'font-size' to match the current face, so an image with 'height="1em"'
|
||
will match the font size in use where it is embedded.
|
||
|
||
This feature relies on librsvg 2.48 or above being available.
|
||
|
||
+++
|
||
*** Image properties support 'em' sizes.
|
||
Size image properties, for example ':height', ':max-height', etc., can
|
||
be given a cons of the form '(SIZE . em)', where SIZE is an integer or
|
||
float which is multiplied by the font size to calculate the image
|
||
size, and em is a symbol.
|
||
|
||
** EWW
|
||
|
||
+++
|
||
*** New user option 'eww-use-browse-url'.
|
||
This is a regexp that can be set to alter how links are followed in eww.
|
||
|
||
+++
|
||
*** New user option 'eww-retrieve-command'.
|
||
This can be used to download data via an external command. If nil
|
||
(the default), then 'url-retrieve' is used.
|
||
|
||
+++
|
||
*** New Emacs command line convenience command.
|
||
The 'eww-browse' command has been added, which allows you to register
|
||
Emacs as a MIME handler for "text/x-uri", and will call 'eww' on the
|
||
supplied URL. Usage example: "emacs -f eww-browse https://gnu.org".
|
||
|
||
+++
|
||
*** 'eww-download-directory' will now use the XDG location, if defined.
|
||
However, if "~/Downloads/" already exists, that will continue to be
|
||
used.
|
||
|
||
---
|
||
*** The command 'eww-follow-link' now supports custom mailto handlers.
|
||
The function that is invoked when clicking on or otherwise following a
|
||
'mailto:' link in an EWW buffer can now be customized. For more
|
||
information, see the related entry about 'shr-browse-url' above.
|
||
|
||
** Project
|
||
|
||
*** New user option 'project-vc-merge-submodules'.
|
||
|
||
*** Project commands now have their own history.
|
||
Previously used project directories are now suggested by all commands
|
||
that prompt for a project directory.
|
||
|
||
+++
|
||
*** New prefix keymap 'project-prefix-map'.
|
||
Key sequences that invoke project-related commands start with the
|
||
prefix 'C-x p'. Type "C-x p C-h" to show the full list.
|
||
|
||
+++
|
||
*** New commands 'project-dired', 'project-vc-dir', 'project-shell',
|
||
'project-eshell'. These commands run Dired/VC-Dir and Shell/Eshell in
|
||
a project's root directory, respectively.
|
||
|
||
+++
|
||
*** New command 'project-compile'.
|
||
This command runs compilation in the current project's root
|
||
directory.
|
||
|
||
+++
|
||
*** New command 'project-switch-project'.
|
||
This command lets you "switch" to another project and run a project
|
||
command chosen from a dispatch menu.
|
||
|
||
+++
|
||
*** New commands 'project-shell-command' and 'project-async-shell-command'.
|
||
These commands run 'shell-command' and 'async-shell-command' in a
|
||
project's root directory, respectively.
|
||
|
||
+++
|
||
*** New user option 'project-list-file'.
|
||
|
||
+++
|
||
*** New command 'project-remove-known-project'.
|
||
This command lets you interactively remove an entry from the list of projects
|
||
in 'project-list-file'.
|
||
|
||
** xref
|
||
|
||
---
|
||
*** Prefix arg of 'xref-goto-xref' quits the "*xref*" buffer.
|
||
So typing 'C-u RET' in the "*xref*" buffer quits its window
|
||
before navigating to the selected location.
|
||
|
||
*** New user options 'xref-search-program' and 'xref-search-program-alist'.
|
||
So far 'grep' and 'ripgrep' are supported. 'ripgrep' seems to offer better
|
||
performance in certain cases, in particular for case-insensitive
|
||
searches.
|
||
|
||
+++
|
||
*** New commands 'xref-prev-group' and 'xref-next-group'.
|
||
These commands are bound respectively to 'P' and 'N', and navigate to
|
||
the first item of the previous or next group in the "*xref*" buffer.
|
||
|
||
*** New alternative value for 'xref-show-definitions-function':
|
||
'xref-show-definitions-completing-read'.
|
||
|
||
*** The two existing alternatives for 'xref-show-definitions-function'
|
||
have been renamed to have "proper" public names and documented
|
||
('xref-show-definitions-buffer' and
|
||
'xref-show-definitions-buffer-at-bottom').
|
||
|
||
*** New command 'xref-quit-and-pop-marker-stack' and a binding for it
|
||
in "*xref*" buffers ('M-,'). This combination is easy to press
|
||
semi-accidentally if the user wants to go back in the middle of
|
||
choosing the exact definition to go to, and this should do TRT.
|
||
|
||
---
|
||
*** New value 'project-relative' for 'xref-file-name-display'.
|
||
If chosen, file names in "*xref*" buffers will be displayed relative
|
||
to the 'project-root' of the current project, when available.
|
||
|
||
** json.el
|
||
|
||
---
|
||
*** JSON number parsing is now stricter.
|
||
Numbers with a leading plus sign, leading zeros, or a missing integer
|
||
component are now rejected by 'json-read' and friends. This makes
|
||
them more compliant with the JSON specification and consistent with
|
||
the native JSON parsing functions.
|
||
|
||
---
|
||
*** Some JSON encoding functions are now obsolete.
|
||
The functions 'json-encode-number', 'json-encode-hash-table',
|
||
'json-encode-key', and 'json-encode-list' are now obsolete.
|
||
|
||
The first two are kept as aliases of 'json-encode', which should be
|
||
used instead. Uses of 'json-encode-list' should be changed to call
|
||
one of 'json-encode', 'json-encode-alist', 'json-encode-plist', or
|
||
'json-encode-array' instead.
|
||
|
||
** xml.el
|
||
|
||
*** XML serialization functions now reject invalid characters.
|
||
Previously 'xml-print' would produce invalid XML when given a string
|
||
with characters that are not valid in XML (see
|
||
https://www.w3.org/TR/xml/#charsets). Now it rejects such strings.
|
||
|
||
** erc
|
||
|
||
---
|
||
*** erc-services.el now supports NickServ passwords from auth-source.
|
||
The 'erc-use-auth-source-for-nickserv-password' user option enables
|
||
querying auth-source for NickServ passwords. To enable this, add the
|
||
following to your init file:
|
||
|
||
(setq erc-prompt-for-nickserv-password nil
|
||
erc-use-auth-source-for-nickserv-password t)
|
||
|
||
---
|
||
*** The '/ignore' command will now ask for a timeout to stop ignoring the user.
|
||
Allowed inputs are seconds or ISO8601-like periods like "1h" or "4h30m".
|
||
|
||
---
|
||
*** ERC now recognizes 'C-]' for italic text.
|
||
Italic text is displayed in the new 'erc-italic-face'.
|
||
|
||
---
|
||
*** The erc-compat.el library is now marked obsolete.
|
||
This file contained ERC compatibility code for Emacs 21 and XEmacs
|
||
which is no longer needed.
|
||
|
||
---
|
||
*** erc-match.el now supports 'message' highlight type (not including the nick).
|
||
The 'erc-current-nick-highlight-type', 'erc-pal-highlight-type',
|
||
'erc-fool-highlight-type', 'erc-keyword-highlight-type', and
|
||
'erc-dangerous-host-highlight-type' variables now support a 'message'
|
||
type for highlighting the entire message but not the sender's nick.
|
||
|
||
*** erc-status-sidebar.el is now part of ERC.
|
||
The 'erc-status-sidebar' package which provides a HexChat-like
|
||
activity overview sidebar for joined IRC channels is now part of ERC.
|
||
|
||
+++
|
||
*** erc-tls now supports specifying a TLS client certificate.
|
||
The 'erc-tls' function has been updated to allow specifying a TLS
|
||
client certificate for authentication, as an alternative to NickServ
|
||
password-based authentication. This is referred to as "CertFP" (short
|
||
for Certificate Fingerprint) by several IRC networks.
|
||
|
||
To use a certificate with 'erc-tls', specify the ':client-certificate'
|
||
optional parameter, whose value should be as described in the
|
||
documentation of 'open-network-stream': if non-nil, it should either
|
||
be a list where the first element is the file name of the private key
|
||
corresponding to a client certificate and the second element is the
|
||
file name of the client certificate itself to use when connecting over
|
||
TLS, or t, which means that 'auth-source' will be queried for the
|
||
private key and the certificate.
|
||
|
||
Examples of use:
|
||
|
||
(erc-tls :server "chat.freenode.net" :port 6697
|
||
:client-certificate
|
||
'("/home/bandali/my-cert.key"
|
||
"/home/bandali/my-cert.crt"))
|
||
|
||
(erc-tls :server "chat.freenode.net" :port 6697
|
||
:client-certificate
|
||
`(,(expand-file-name "~/cert-freenode.key")
|
||
,(expand-file-name "~/cert-freenode.crt")))
|
||
|
||
(erc-tls :server "chat.freenode.net" :port 6697
|
||
:client-certificate t)
|
||
|
||
In the case of ':client-certificate t', you will need to add a line
|
||
like the following to your authinfo file (e.g. "~/.authinfo.gpg"):
|
||
|
||
machine chat.freenode.net key /home/bandali/my-cert.key cert /home/bandali/my-cert.crt
|
||
|
||
** Battery
|
||
|
||
---
|
||
*** UPower is now the default battery status backend when available.
|
||
UPower support via the function 'battery-upower' was added in Emacs
|
||
26.1, but was disabled by default. It is now the default value of
|
||
'battery-status-function' when the system provides a UPower D-Bus
|
||
service. The user options 'battery-upower-device' and
|
||
'battery-upower-subscribe' control which power sources to query and
|
||
whether to respond to status change notifications in addition to
|
||
polling, respectively.
|
||
|
||
---
|
||
*** A richer syntax can be used to format battery status information.
|
||
The user options 'battery-mode-line-format' and
|
||
'battery-echo-area-format' now support the full formatting syntax of
|
||
the function 'format-spec' documented under node "(elisp) Custom Format
|
||
Strings". The new syntax includes specifiers for padding and
|
||
truncation, amongst other things.
|
||
|
||
** bug-reference.el
|
||
|
||
---
|
||
*** Bug reference mode auto-setup. If 'bug-reference-mode' or
|
||
'bug-reference-prog-mode' have been activated, their respective hook
|
||
has been run and still 'bug-reference-bug-regexp' and
|
||
'bug-reference-url-format' aren't both set, it tries to guess
|
||
appropriate values for those two variables. There are three guessing
|
||
mechanisms so far: based on version control information of the current
|
||
buffer's file, based on newsgroup/mail-folder name and several news
|
||
and mail message headers in Gnus buffers, and based on IRC channel and
|
||
network in rcirc and ERC buffers. All mechanisms are extensible with
|
||
custom rules, see the variables 'bug-reference-setup-from-vc-alist',
|
||
'bug-reference-setup-from-mail-alist', and
|
||
'bug-reference-setup-from-irc-alist'.
|
||
|
||
** HTML Mode
|
||
|
||
---
|
||
*** A new skeleton for adding relative URLs has been added.
|
||
It's bound to the 'C-c C-c f' keystroke, and prompts for a local file
|
||
name.
|
||
|
||
** Recentf
|
||
|
||
---
|
||
*** The recentf files are no longer backed up.
|
||
|
||
---
|
||
*** 'recentf-auto-cleanup' time string now repeats.
|
||
When 'recentf-auto-cleanup' is set to a time string, it now repeats
|
||
every day, rather than only running once after the mode is turned on.
|
||
|
||
** Calc
|
||
|
||
---
|
||
*** The behavior when doing forward-delete has been changed.
|
||
Previously, using the 'C-d' command would delete the final number in
|
||
the input field, no matter where point was. This has been changed to
|
||
work more traditionally, with 'C-d' deleting the next character.
|
||
Likewise, point isn't moved to the end of the string before inserting
|
||
digits.
|
||
|
||
+++
|
||
*** Setting the word size to zero disables word clipping.
|
||
The word size normally clips the results of certain bit-oriented
|
||
operations such as shifts and bitwise XOR. A word size of zero, set
|
||
by 'b w', makes the operation have effect on the whole argument values
|
||
and the result is not truncated in any way.
|
||
|
||
---
|
||
*** The '/' operator now has higher precedence in (La)TeX input mode.
|
||
It no longer has lower precedence than '+' and '-'.
|
||
|
||
---
|
||
*** Calc now marks its windows dedicated.
|
||
The new user option 'calc-make-windows-dedicated' controls this. It
|
||
is t by default; set to nil to get back the old behavior.
|
||
|
||
** term-mode
|
||
|
||
---
|
||
*** New user option 'term-scroll-snap-to-bottom'.
|
||
By default, 'term' and 'ansi-term' will now recenter the buffer so
|
||
that the prompt is on the final line in the window. Setting this new
|
||
user option to nil inhibits this behavior.
|
||
|
||
---
|
||
*** New user option 'term-set-terminal-size'
|
||
If non-nil, the 'LINES' and 'COLUMNS' environment variables will be set
|
||
based on the current window size. In previous versions of Emacs, this
|
||
was always done (and that could lead to odd displays when resizing the
|
||
window after starting). This variable defaults to nil.
|
||
|
||
** Widget
|
||
|
||
+++
|
||
*** 'widget-choose' now supports menus in extended format.
|
||
|
||
---
|
||
*** The 'editable-list' widget now supports moving items up and down.
|
||
You can now move items up and down by deleting and then reinserting
|
||
them, using the 'DEL' and 'INS' buttons respectively. This is useful
|
||
in Custom buffers, for example, to change the order of the elements in
|
||
a list.
|
||
|
||
** Diff
|
||
|
||
---
|
||
*** New 'diff-mode' font locking face 'diff-error'.
|
||
This face is used for error messages from 'diff'.
|
||
|
||
+++
|
||
*** New command 'diff-refresh-hunk'.
|
||
This new command (bound to 'C-c C-l') regenerates the current hunk.
|
||
|
||
** Buttons
|
||
|
||
+++
|
||
*** New minor mode 'button-mode'.
|
||
This minor mode does nothing else than install 'button-buffer-map' as
|
||
a minor mode map (which binds the 'TAB' / 'S-TAB' key bindings to navigate
|
||
to buttons), and can be used in any view-mode-like buffer that has
|
||
buttons in it.
|
||
|
||
+++
|
||
*** New utility function 'button-buttonize'.
|
||
This function takes a string and returns a string propertized in a way
|
||
that makes it a valid button.
|
||
|
||
** subr-x
|
||
+++
|
||
*** A number of new string manipulation functions have been added.
|
||
'string-clean-whitespace', 'string-fill', 'string-limit',
|
||
'string-lines', 'string-pad' and 'string-chop-newline'.
|
||
|
||
*** New macro 'named-let' that provides Scheme's "named let" looping construct.
|
||
|
||
** thingatpt
|
||
|
||
+++
|
||
*** New variable 'thing-at-point-provider-alist'.
|
||
This allows mode-specific alterations to how 'thing-at-point' works.
|
||
|
||
** Enriched mode
|
||
|
||
---
|
||
*** 'C-a' is by default no longer bound to 'beginning-of-line-text'.
|
||
This is so 'C-a' works as in other modes, and in particular holding
|
||
Shift while typing 'C-a', i.e. 'C-S-a', will now highlight the text.
|
||
|
||
** Miscellaneous
|
||
|
||
+++
|
||
*** New command 'C-x C-k Q' to force redisplay in keyboard macros.
|
||
|
||
---
|
||
*** New user option 'remember-diary-regexp'.
|
||
|
||
---
|
||
*** New user option 'remember-text-format-function'.
|
||
|
||
*** New function 'buffer-line-statistics'.
|
||
This function returns some statistics about the line lengths in a buffer.
|
||
|
||
+++
|
||
*** New variable 'inhibit-interaction' to make user prompts signal an error.
|
||
If this is bound to something non-nil, functions like
|
||
'read-from-minibuffer', 'read-char' (and related) will signal an
|
||
'inhibited-interaction' error.
|
||
|
||
---
|
||
*** 'process-attributes' now works under OpenBSD, too.
|
||
|
||
+++
|
||
*** New button face 'flat-button'.
|
||
This is a plain 2D button, but uses the background color instead of
|
||
the foreground color.
|
||
|
||
---
|
||
*** New face 'shortdoc-heading'.
|
||
Applies to headings of shortdoc sections.
|
||
|
||
+++
|
||
*** New predicate functions 'length<', 'length>' and 'length='.
|
||
Using these functions may be more efficient than using 'length' (if
|
||
the length of a (long) list is being computed just to compare this
|
||
length to a number).
|
||
|
||
---
|
||
*** 'remove-hook' is now an interactive command.
|
||
|
||
---
|
||
*** New user option 'authinfo-hide-elements'.
|
||
This can be set to nil to inhibit hiding passwords in ".authinfo" files.
|
||
|
||
+++
|
||
*** New variable 'current-minibuffer-command'.
|
||
This is like 'this-command', but it is bound recursively when entering
|
||
the minibuffer.
|
||
|
||
+++
|
||
*** New function 'object-intervals'.
|
||
This function returns a copy of the list of intervals (i.e., text
|
||
properties) in the object in question (which must either be a string
|
||
or a buffer).
|
||
|
||
---
|
||
*** 'hexl-mode' scrolling commands now heed 'next-screen-context-lines'.
|
||
Previously, 'hexl-scroll-down' and 'hexl-scroll-up' would scroll
|
||
up/down an entire window, but they now work more like the standard
|
||
scrolling commands.
|
||
|
||
---
|
||
*** Errors in 'kill-emacs-hook' no longer prevent Emacs from shutting down.
|
||
If a function in that hook signals an error in an interactive Emacs,
|
||
the user will be prompted on whether to continue. If the user doesn't
|
||
answer within five seconds, Emacs will continue shutting down anyway.
|
||
|
||
---
|
||
*** iso-transl is now preloaded.
|
||
This means that keystrokes like 'Alt-[' are defined by default,
|
||
instead of only becoming available after doing (for instance)
|
||
'C-x 8 <letter>'.
|
||
|
||
*** New user option 'completions-detailed'.
|
||
When non-nil, some commands like 'describe-symbol' show more detailed
|
||
completions with more information in completion prefix and suffix.
|
||
|
||
---
|
||
*** User option 'completions-format' supports a new value 'one-column'.
|
||
|
||
---
|
||
*** New user option 'bibtex-unify-case-function'.
|
||
This new option allows the user to customize how case is converted
|
||
when unifying entries.
|
||
|
||
---
|
||
*** The user option 'bibtex-maintain-sorted-entries' now permits
|
||
user-defined sorting schemes.
|
||
|
||
+++
|
||
*** 'format-seconds' can now be used for sub-second times.
|
||
The new optional "," parameter has been added, and
|
||
'(format-seconds "%mm %,1ss" 66.4)' will now result in "1m 6.4s".
|
||
|
||
---
|
||
*** 'global-display-fill-column-indicator-mode' skips some buffers.
|
||
By default, turning on 'global-display-fill-column-indicator-mode'
|
||
doesn't turn on 'display-fill-column-indicator-mode' in special-mode
|
||
buffers. This can be controlled by customizing the variable
|
||
'global-display-fill-column-indicator-modes'.
|
||
|
||
---
|
||
*** New user option 'compilation-search-all-directories'.
|
||
When doing parallel builds, directories and compilation errors may
|
||
arrive in the "*compilation*" buffer out-of-order. If this variable is
|
||
non-nil (the default), Emacs will now search backwards in the buffer
|
||
for any directory the file with errors may be in. If nil, this won't
|
||
be done (and this restores how this previously worked).
|
||
|
||
+++
|
||
*** New user option 'next-error-message-highlight'.
|
||
In addition to a fringe arrow, 'next-error' error may now optionally
|
||
highlight the current error message in the 'next-error' buffer.
|
||
This user option can be also customized to keep highlighting on all
|
||
visited errors, so you can have an overview what errors were already visited.
|
||
|
||
---
|
||
*** New choice 'next-error-quit-window' for 'next-error-found-function'.
|
||
When 'next-error-found-function' is customized to 'next-error-quit-window',
|
||
then typing the numeric prefix argument 0 before the command 'next-error'
|
||
will quit the source window after visiting the next occurrence.
|
||
|
||
+++
|
||
*** New user option 'tab-first-completion'.
|
||
If 'tab-always-indent' is 'complete', this new user option can be used to
|
||
further tweak whether to complete or indent.
|
||
|
||
---
|
||
*** 'dired-query' now uses 'read-char-from-minibuffer'.
|
||
Using it instead of 'read-char-choice' allows using 'C-x o'
|
||
to switch to the help window displayed after typing 'C-h'.
|
||
|
||
---
|
||
*** 'zap-up-to-char' now uses 'read-char-from-minibuffer'.
|
||
This allows navigating through the history of characters that have
|
||
been input. This is mostly useful for characters that have complex
|
||
input methods where inputting the character again may involve many
|
||
keystrokes.
|
||
|
||
+++
|
||
*** Interactive regular expression search now uses faces for sub-groups.
|
||
E.g., 'C-M-s foo-\([0-9]+\)' will now use the 'isearch-group-1' face
|
||
on the part of the regexp that matches the sub-expression "[0-9]+".
|
||
By default, there are two faces for sub-group highlighting, but you
|
||
can define more faces whose names are of the form 'isearch-group-N',
|
||
where N are successive numbers above 2.
|
||
|
||
This is controlled by the 'search-highlight-submatches' user option.
|
||
This feature is available only on terminals that have enough colors to
|
||
distinguish between sub-expression highlighting.
|
||
|
||
+++
|
||
*** Interactive regular expression replace now uses faces for sub-groups.
|
||
Like 'search-highlight-submatches', this is controlled by the new user option
|
||
'query-replace-highlight-submatches'.
|
||
|
||
---
|
||
*** New user option 'reveal-auto-hide'.
|
||
If non-nil (the default), revealed text is automatically hidden when
|
||
point leaves the text. If nil, the text is not hidden again. Instead
|
||
'M-x reveal-hide-revealed' can be used to hide all the revealed text.
|
||
|
||
+++
|
||
*** New user options to control the look of line/column numbers in the mode line.
|
||
'mode-line-position-line-format' is the line number format (when
|
||
'line-number-mode' is on), 'mode-line-position-column-format' is
|
||
the column number format (when 'column-number-mode' is on), and
|
||
'mode-line-position-column-line-format' is the combined format (when
|
||
both modes are on).
|
||
|
||
+++
|
||
*** New user option 'mode-line-compact'.
|
||
If non-nil, repeating spaces are compressed into a single space. If
|
||
'long', this is only done when the mode line is longer than the
|
||
current window width (in characters).
|
||
|
||
+++
|
||
*** New command 'submit-emacs-patch'.
|
||
This works like 'report-emacs-bug', but is more geared towards sending
|
||
patches to the Emacs issue tracker.
|
||
|
||
+++
|
||
*** The user can now customize how "default" values are prompted for.
|
||
The new utility function 'format-prompt' has been added which uses the
|
||
new 'minibuffer-default-prompt-format' user option to format "default"
|
||
prompts. This means that prompts that look like "Enter a number
|
||
(default 10)" can be customized to look like, for instance, "Enter a
|
||
number [10]", or not have the default displayed at all, like "Enter a
|
||
number". (This requires that all callers are altered to use
|
||
'format-prompt', though.)
|
||
|
||
+++
|
||
*** New global mode 'global-goto-address-mode'.
|
||
This will enable 'goto-address-mode' in all buffers.
|
||
|
||
---
|
||
*** 'C-s' in 'M-x' now searches over completions again.
|
||
In Emacs 23, typing 'M-x' ('read-extended-command') and then 'C-s' (to
|
||
do an interactive search) would search over possible completions.
|
||
This was lost in Emacs 24, but is now back again.
|
||
|
||
---
|
||
*** 'M-x report-emacs-bug' will no longer include "Recent messages" section.
|
||
These were taken from the "*Messages*" buffer, and may inadvertently
|
||
leak information from the reporting user.
|
||
|
||
---
|
||
*** 'count-windows' now takes an optional parameter ALL-FRAMES.
|
||
The semantics are as with 'walk-windows'.
|
||
|
||
---
|
||
*** Killing virtual ido buffers interactively will make them go away.
|
||
Previously, killing a virtual ido buffer with 'ido-kill-buffer' didn't
|
||
do anything. This has now been changed, and killing virtual buffers
|
||
with that command will remove the buffer from recentf.
|
||
|
||
---
|
||
*** New variable 'ffap-file-name-with-spaces'.
|
||
If non-nil, 'find-file-at-point' and friends will try to guess more
|
||
expansively to identify a file name with spaces.
|
||
|
||
---
|
||
*** Two new commands for centering in 'doc-view-mode'.
|
||
The new commands 'doc-view-center-page-horizontally' (bound to 'c h')
|
||
and 'doc-view-center-page-vertically' (bound to 'c v') center the page
|
||
horizontally and vertically, respectively.
|
||
|
||
---
|
||
*** Change in meaning of 'icomplete-show-matches-on-no-input'.
|
||
Previously, choosing a different completion with commands like 'C-.'
|
||
and then hitting 'RET' would choose the default completion. Doing this
|
||
will now choose the completion under point instead. Also when this option
|
||
is nil, completions are not shown when the minibuffer reads a file name
|
||
with initial input as the default directory.
|
||
|
||
---
|
||
*** The width of the buffer-name column in 'list-buffers' is now dynamic.
|
||
The width now depends of the width of the window, but will never be
|
||
wider than the length of the longest buffer name, except that it will
|
||
never be narrower than 19 characters.
|
||
|
||
*** Bookmarks can now be targets for new tabs.
|
||
When the bookmark.el library is loaded, a customize choice is added
|
||
to 'tab-bar-new-tab-choice' for new tabs to show the bookmark list.
|
||
|
||
---
|
||
*** Movement commands in 'gomoku-mode' are fixed.
|
||
'gomoku-move-sw' and 'gomoku-move-ne' now work correctly, and
|
||
horizontal movements now stop at the edge of the board.
|
||
|
||
** xterm-mouse mode
|
||
|
||
---
|
||
*** TTY menu navigation is now supported in 'xterm-mouse-mode'.
|
||
TTY menus support mouse navigation and selection when 'xterm-mouse-mode'
|
||
is active. When run on a terminal, clicking on the menu bar with the
|
||
mouse now pops up a TTY menu by default instead of running the command
|
||
'tmm-menubar'. To restore the old behavior, set the user option
|
||
'tty-menu-open-use-tmm' to non-nil.
|
||
|
||
** text-scale-mode
|
||
|
||
---
|
||
*** 'text-scale-mode' can now adjust font size of the header line.
|
||
When the new buffer local variable 'text-scale-remap-header-line'
|
||
is non-nil, 'text-scale-adjust' will also scale the text in the header
|
||
line when displaying that buffer.
|
||
|
||
This is useful for major modes that arrange their display in a tabular
|
||
form below the header line. It is enabled by default in
|
||
'tabulated-list-mode' and its derived modes.
|
||
|
||
** xwidget-webkit mode
|
||
|
||
*** New xwidget commands.
|
||
'xwidget-webkit-uri' (return the current URL), 'xwidget-webkit-title'
|
||
(return the current title), and 'xwidget-webkit-goto-history' (goto a
|
||
point in history).
|
||
|
||
*** Pixel-based scrolling.
|
||
The 'xwidget-webkit-scroll-up', 'xwidget-webkit-scroll-down' commands
|
||
now supports scrolling arbitrary pixel values. It now treats the
|
||
optional 2nd argument as the pixel values to scroll.
|
||
|
||
*** New commands for scrolling.
|
||
The new commands 'xwidget-webkit-scroll-up-line',
|
||
'xwidget-webkit-scroll-down-line', 'xwidget-webkit-scroll-forward',
|
||
'xwidget-webkit-scroll-backward' can be used to scroll webkit by the
|
||
height of lines or width of chars.
|
||
|
||
*** New user option 'xwidget-webkit-bookmark-jump-new-session'.
|
||
When non-nil, use a new xwidget webkit session after bookmark jump.
|
||
Otherwise, it will use 'xwidget-webkit-last-session'.
|
||
|
||
** Flymake mode
|
||
|
||
+++
|
||
*** New user options to customize Flymake's mode-line.
|
||
The new user option 'flymake-mode-line-format' is a mix of strings and
|
||
symbols like 'flymake-mode-line-title', 'flymake-mode-line-exception'
|
||
and 'flymake-mode-line-counters'. The new user option
|
||
'flymake-mode-line-counter-format' is a mix of strings and symbols
|
||
like 'flymake-mode-line-error-counter',
|
||
'flymake-mode-line-warning-counter' and 'flymake-mode-line-note-counter'.
|
||
|
||
** Flyspell mode
|
||
|
||
+++
|
||
*** Corrections and actions menu can be optionally bound to 'mouse-3'.
|
||
When Flyspell mode highlights a word as misspelled, you can click on
|
||
it to display a menu of possible corrections and actions. You can now
|
||
easily bind this menu to 'down-mouse-3' (usually the right mouse button)
|
||
instead of 'mouse-2' (the default) by customizing the new user option
|
||
'flyspell-use-mouse-3-for-menu'.
|
||
|
||
---
|
||
*** The current dictionary is now displayed in the minor mode lighter.
|
||
Clicking the dictionary name changes the current dictionary.
|
||
|
||
** Time
|
||
|
||
---
|
||
*** 'display-time-world' has been renamed to 'world-clock'.
|
||
'world-clock' creates a buffer with an updating time display using
|
||
several time zones. It is hoped that the new names are more
|
||
discoverable.
|
||
|
||
The following commands have been renamed:
|
||
|
||
'display-time-world' to 'world-clock'
|
||
'display-time-world-mode' to 'world-clock-mode'
|
||
'display-time-world-display' to 'world-clock-display'
|
||
'display-time-world-timer' to 'world-clock-update'
|
||
|
||
The following user options have been renamed:
|
||
|
||
'display-time-world-list' to 'world-clock-list'
|
||
'display-time-world-time-format' to 'world-clock-time-format'
|
||
'display-time-world-buffer-name' to 'world-clock-buffer-name'
|
||
'display-time-world-timer-enable' to 'world-clock-timer-enable'
|
||
'display-time-world-timer-second' to 'world-clock-timer-second'
|
||
|
||
The old names are now obsolete.
|
||
|
||
---
|
||
*** 'world-clock-mode' can no longer be turned on interactively.
|
||
Use `world-clock' to turn on that mode.
|
||
|
||
** D-Bus
|
||
|
||
+++
|
||
*** Property values can be typed explicitly.
|
||
'dbus-register-property' and 'dbus-set-property' accept now optional
|
||
type symbols. Both functions propagate D-Bus errors.
|
||
|
||
+++
|
||
*** Registered properties can have the new access type ':write'.
|
||
|
||
+++
|
||
*** In case of problems, handlers can emit proper D-Bus error messages now.
|
||
|
||
+++
|
||
*** D-Bus errors, which have been converted from incoming D-Bus error
|
||
messages, contain the error name of that message now.
|
||
|
||
+++
|
||
*** D-Bus messages can be monitored with the new command 'dbus-monitor'.
|
||
|
||
+++
|
||
*** D-Bus events have changed their internal structure.
|
||
They carry now the destination and the error-name of an event. They
|
||
also keep the type information of their arguments. Use the
|
||
'dbus-event-*' accessor functions.
|
||
|
||
** CPerl Mode
|
||
|
||
---
|
||
*** New face 'perl-heredoc', used for heredoc elements.
|
||
|
||
---
|
||
*** The command 'cperl-set-style' offers the new value "PBP".
|
||
This value customizes Emacs to use the style recommended in Damian
|
||
Conway's book "Perl Best Practices" for indentation and formatting
|
||
of conditionals.
|
||
|
||
** Abbrev mode
|
||
|
||
+++
|
||
*** Emacs can now suggest to use an abbrev based on text you type.
|
||
A new user option, 'abbrev-suggest', enables the new abbrev suggestion
|
||
feature. When enabled, if a user manually types a piece of text that
|
||
could have saved enough typing by using an abbrev, a hint will be
|
||
displayed in the echo area, mentioning the abbrev that could have been
|
||
used instead.
|
||
|
||
** Octave Mode
|
||
|
||
+++
|
||
*** Line continuations in double-quoted strings now use a backslash.
|
||
Typing 'C-M-j' (bound to 'octave-indent-new-comment-line') now follows
|
||
the behavior introduced in Octave 3.8 of using a backslash as a line
|
||
continuation marker within double-quoted strings, and an ellipsis
|
||
everywhere else.
|
||
|
||
** Repeat
|
||
|
||
+++
|
||
*** New transient mode 'repeat-mode' to allow shorter key sequences.
|
||
You can type 'C-x u u' instead of 'C-x u C-x u' to undo many changes,
|
||
'C-x o o' instead of 'C-x o C-x o' to switch several windows,
|
||
'C-x { { } } ^ ^ v v' to resize the selected window interactively,
|
||
'M-g n n p p' to navigate next-error matches. Any other key exits
|
||
transient mode and then is executed normally. 'repeat-exit-key'
|
||
defines an additional key to exit mode like 'isearch-exit' ('RET').
|
||
With 'repeat-keep-prefix' you can keep the prefix arg of the previous command.
|
||
For example, this can help to reverse the window navigation direction
|
||
with e.g. 'C-x o M-- o o'. Also it can help to set a new step with
|
||
e.g. 'C-x { C-5 { { {' will set the window resizing step to 5 columns.
|
||
|
||
|
||
* New Modes and Packages in Emacs 28.1
|
||
|
||
** Lisp Data mode
|
||
The new command 'lisp-data-mode' enables a major mode for buffers
|
||
composed of Lisp symbolic expressions that do not form a computer
|
||
program. The ".dir-locals.el" file is automatically set to use this
|
||
mode, as are other data files produced by Emacs.
|
||
|
||
** hierarchy.el
|
||
It's a library to create, query, navigate and display hierarchy structures.
|
||
|
||
** New themes 'modus-vivendi' and 'modus-operandi'.
|
||
These themes are designed to conform with the highest standard for
|
||
color-contrast accessibility (WCAG AAA). You can load either of them
|
||
using 'M-x customize-themes' or 'load-theme' from your init file.
|
||
Consult the Modus Themes Info manual for more information on the user
|
||
options they provide.
|
||
|
||
** Dictionary mode
|
||
This is a mode for searching a RFC 2229 dictionary server.
|
||
'dictionary' opens a buffer for starting operations.
|
||
'dictionary-search' performs a lookup for a word. It also supports a
|
||
'dictionary-tooltip-mode' which performs a lookup of the word under
|
||
the mouse in 'dictionary-tooltip-dictionary' (which must be customized
|
||
first).
|
||
|
||
** transient.el
|
||
|
||
This library implements support for powerful keyboard-driven menus.
|
||
Such menus can be used as simple visual command dispatchers. More
|
||
complex menus take advantage of infix arguments, which are somewhat
|
||
similar to prefix arguments, but are more flexible and discoverable.
|
||
|
||
|
||
* Incompatible Editing Changes in Emacs 28.1
|
||
|
||
** The 'M-o' ('facemenu-keymap') global binding has been removed.
|
||
To restore the old binding, say something like:
|
||
|
||
(require 'facemenu)
|
||
(define-key global-map "\M-o" 'facemenu-keymap)
|
||
(define-key facemenu-keymap "\es" 'center-line)
|
||
(define-key facemenu-keymap "\eS" 'center-paragraph)
|
||
|
||
The last two lines are not strictly necessary if you don't care about
|
||
having those two commands on the 'M-o' keymap; see the next section.
|
||
|
||
** The 'M-o M-s' and 'M-o M-S' global bindings have been removed.
|
||
Use 'M-x center-line' and 'M-x center-paragraph' instead. See the
|
||
previous section for how to get back the old bindings. Alternatively,
|
||
if you only want these two commands to have global bindings they had
|
||
before, you can add the following to your init file:
|
||
|
||
(define-key global-map "\M-o\M-s" 'center-line)
|
||
(define-key global-map "\M-o\M-S" 'center-paragraph)
|
||
|
||
** The 'M-o M-o' global binding has been removed.
|
||
Use 'M-x font-lock-fontify-block' instead, or the new 'C-x x f'
|
||
command, which updates the syntax highlighting in the current buffer.
|
||
|
||
** In 'f90-mode', the backslash character ('\') no longer escapes.
|
||
For about a decade, the backslash character has no longer had a
|
||
special escape syntax in Fortran F90. To get the old behaviour back,
|
||
say something like:
|
||
|
||
(modify-syntax-entry ?\\ "\\" f90-mode-syntax-table)
|
||
|
||
** In 'nroff-mode', 'center-line' is now bound to 'M-o M-s'.
|
||
The original key binding was 'M-s', which interfered with I-search,
|
||
since the latter uses 'M-s' as a prefix key of the search prefix map.
|
||
|
||
** 'vc-print-branch-log' shows the change log for BRANCH from its root
|
||
directory instead of the default directory.
|
||
|
||
---
|
||
** 'project-shell' and 'shell' now use 'pop-to-buffer-same-window'.
|
||
This is to keep the same behavior as Eshell.
|
||
|
||
|
||
* Incompatible Lisp Changes in Emacs 28.1
|
||
|
||
+++
|
||
** The use of positional arguments in 'define-minor-mode' is obsolete.
|
||
These were actually rendered obsolete in Emacs-21 but were never
|
||
marked as such.
|
||
|
||
** 'facemenu-color-alist' is now obsolete, and is not used.
|
||
|
||
** 'facemenu.el' is no longer preloaded.
|
||
To use functions/variables from the package, you now have to say
|
||
'(require 'facemenu)' or similar.
|
||
|
||
** 'pcomplete-ignore-case' is now an obsolete alias of 'completion-ignore-case'.
|
||
|
||
** 'completions-annotations' face is not used when the caller puts own face.
|
||
This affects the suffix specified by completion 'annotation-function'.
|
||
|
||
** 'set-process-buffer' now updates the process mark.
|
||
The mark will be set to point to the end of the new buffer.
|
||
|
||
+++
|
||
** An active minibuffer now has major mode 'minibuffer-mode', not the
|
||
erroneous 'minibuffer-inactive-mode' it formerly had.
|
||
|
||
+++
|
||
** Some properties from completion tables are now preserved.
|
||
If 'minibuffer-allow-text-properties' is non-nil, doing completion
|
||
over a table of strings with properties will no longer remove all the
|
||
properties before returning. This affects things like 'completing-read'.
|
||
|
||
** 'equal' no longer examines some contents of window configurations.
|
||
Instead, it considers window configurations to be equal only if they
|
||
are 'eq'. To compare contents, use 'compare-window-configurations'
|
||
instead. This change helps fix a bug in 'sxhash-equal', which returned
|
||
incorrect hashes for window configurations and some other objects.
|
||
|
||
** When its first argument is a string, 'make-text-button' no longer
|
||
modifies the string's text properties; instead, it uses and returns
|
||
a copy of the string. This helps avoid trouble when strings are
|
||
shared or constants.
|
||
|
||
+++
|
||
** Temporary buffers no longer run certain buffer hooks.
|
||
The macros 'with-temp-buffer' and 'with-temp-file' no longer run the
|
||
hooks 'kill-buffer-hook', 'kill-buffer-query-functions', and
|
||
'buffer-list-update-hook' for the temporary buffers they create. This
|
||
avoids slowing them down when a lot of these hooks are defined.
|
||
|
||
** New face 'child-frame-border' and frame parameter 'child-frame-border-width'.
|
||
The face and width of child frames borders can now be determined
|
||
separately from those of normal frames. To minimize backward
|
||
incompatibility, child frames without a 'child-frame-border-width'
|
||
parameter will fall back to using 'internal-border-width'. However,
|
||
the new 'child-frame-border' face does constitute a breaking change
|
||
since child frames' borders no longer use the 'internal-border' face.
|
||
|
||
---
|
||
** The obsolete function 'thread-alive-p' has been removed.
|
||
|
||
** 'dns-query' now consistently uses Lisp integers to represent integers.
|
||
Formerly it made an exception for integer components of SOA records,
|
||
because SOA serial numbers can exceed fixnum ranges on 32-bit platforms.
|
||
Emacs now supports bignums so this old glitch is no longer needed.
|
||
|
||
---
|
||
** The new function 'dns-query-asynchronous' has been added.
|
||
It takes the same parameters as 'dns-query', but adds a callback
|
||
parameter.
|
||
|
||
** The Lisp variables 'previous-system-messages-locale' and
|
||
'previous-system-time-locale' have been removed, as they were created
|
||
by mistake and were not useful to Lisp code.
|
||
|
||
---
|
||
** The 'load-dangerous-libraries' variable is now obsolete.
|
||
It was used to allow loading Lisp libraries compiled by XEmacs, a
|
||
modified version of Emacs which is no longer actively maintained.
|
||
This is no longer supported, and setting this variable has no effect.
|
||
|
||
+++
|
||
** The macro 'with-displayed-buffer-window' is now obsolete.
|
||
Use macro 'with-current-buffer-window' with action alist entry 'body-function'.
|
||
|
||
---
|
||
** The inversion.el library is now obsolete.
|
||
|
||
---
|
||
** The metamail.el library is now obsolete.
|
||
|
||
---
|
||
** Some obsolete variable and function aliases in dbus.el have been removed.
|
||
In Emacs 24.3, the variable 'dbus-event-error-hooks' was renamed to
|
||
'dbus-event-error-functions' and the function
|
||
'dbus-call-method-non-blocking' was renamed to 'dbus-call-method'.
|
||
The old names, which were kept as obsolete aliases of the new names,
|
||
have now been removed.
|
||
|
||
---
|
||
** Some libraries obsolete since Emacs 23 have been removed:
|
||
ledit.el, lmenu.el, lucid.el and old-whitespace.el.
|
||
|
||
---
|
||
** Some functions and variables obsolete since Emacs 23 have been removed:
|
||
'GOLD-map', 'advertised-xscheme-send-previous-expression',
|
||
'allout-init', 'bookmark-jump-noselect',
|
||
'bookmark-read-annotation-text-func', 'buffer-menu-mode-hook',
|
||
'c-forward-into-nomenclature', 'char-coding-system-table',
|
||
'char-valid-p', 'charset-bytes', 'charset-id', 'charset-list',
|
||
'choose-completion-delete-max-match', 'complete-in-turn',
|
||
'completion-base-size', 'completion-common-substring',
|
||
'crm-minibuffer-complete', 'crm-minibuffer-complete-and-exit',
|
||
'crm-minibuffer-completion-help', 'custom-mode', 'custom-mode-hook',
|
||
'define-key-rebound-commands', 'define-mode-overload-implementation',
|
||
'detect-coding-with-priority', 'dirtrack-debug',
|
||
'dirtrack-debug-toggle', 'dynamic-completion-table',
|
||
'easy-menu-precalculate-equivalent-keybindings',
|
||
'epa-display-verify-result', 'epg-passphrase-callback-function',
|
||
'erc-announced-server-name', 'erc-default-coding-system',
|
||
'erc-process', 'erc-send-command', 'eshell-report-bug',
|
||
'eval-next-after-load', 'exchange-dot-and-mark', 'ffap-bug',
|
||
'ffap-submit-bug', 'ffap-version', 'file-cache-choose-completion',
|
||
'forward-point', 'generic-char-p', 'global-highlight-changes',
|
||
'hi-lock-face-history', 'hi-lock-regexp-history',
|
||
'highlight-changes-active-string', 'highlight-changes-initial-state',
|
||
'highlight-changes-passive-string',
|
||
'icalendar--datetime-to-noneuropean-date', 'image-mode-maybe',
|
||
'imenu-example--name-and-position', 'ispell-aspell-supports-utf8',
|
||
'lisp-mode-auto-fill', 'locate-file-completion', 'make-coding-system',
|
||
'minibuffer-local-must-match-filename-map', 'mouse-choose-completion',
|
||
'mouse-major-mode-menu', 'mouse-popup-menubar',
|
||
'mouse-popup-menubar-stuff', 'newsticker-groups-filename',
|
||
'nnir-swish-e-index-file', 'nnmail-fix-eudora-headers',
|
||
'non-iso-charset-alist', 'nonascii-insert-offset',
|
||
'nonascii-translation-table', 'password-read-and-add',
|
||
'pre-abbrev-expand-hook', 'princ-list', 'print-help-return-message',
|
||
'process-filter-multibyte-p', 'read-file-name-predicate',
|
||
'remember-buffer', 'rmail-highlight-face', 'rmail-message-filter',
|
||
'semantic-after-idle-scheduler-reparse-hooks',
|
||
'semantic-after-toplevel-bovinate-hook',
|
||
'semantic-before-idle-scheduler-reparse-hooks',
|
||
'semantic-before-toplevel-bovination-hook',
|
||
'semantic-bovinate-from-nonterminal-full',
|
||
'semantic-bovinate-region-until-error', 'semantic-bovinate-toplevel',
|
||
'semantic-bovination-working-type',
|
||
'semantic-decorate-pending-decoration-hooks',
|
||
'semantic-edits-incremental-reparse-failed-hooks',
|
||
'semantic-eldoc-current-symbol-info', 'semantic-expand-nonterminal',
|
||
'semantic-file-token-stream', 'semantic-find-dependency',
|
||
'semantic-find-nonterminal', 'semantic-flex', 'semantic-flex-buffer',
|
||
'semantic-flex-keyword-get', 'semantic-flex-keyword-p',
|
||
'semantic-flex-keyword-put', 'semantic-flex-keywords',
|
||
'semantic-flex-list', 'semantic-flex-make-keyword-table',
|
||
'semantic-flex-map-keywords', 'semantic-flex-token-end',
|
||
'semantic-flex-token-start', 'semantic-flex-token-text',
|
||
'semantic-imenu-bucketize-type-parts',
|
||
'semantic-imenu-expand-type-parts', 'semantic-imenu-expandable-token',
|
||
'semantic-init-db-hooks', 'semantic-init-hooks',
|
||
'semantic-init-mode-hooks', 'semantic-java-prototype-nonterminal',
|
||
'semantic-nonterminal-abstract', 'semantic-nonterminal-full-name',
|
||
'semantic-nonterminal-leaf', 'semantic-nonterminal-protection',
|
||
'semantic-something-to-stream', 'semantic-tag-make-assoc-list',
|
||
'semantic-token-type-parent', 'semantic-toplevel-bovine-cache',
|
||
'semantic-toplevel-bovine-table', 'semanticdb-mode-hooks',
|
||
'set-coding-priority', 'set-process-filter-multibyte',
|
||
'shadows-compare-text-p', 'shell-dirtrack-toggle',
|
||
'speedbar-navigating-speed', 'speedbar-update-speed', 't-mouse-mode',
|
||
'term-dynamic-simple-complete', 'tooltip-hook', 'tpu-have-ispell',
|
||
'url-generate-unique-filename', 'url-temporary-directory',
|
||
'vc-arch-command', 'vc-default-working-revision' (variable),
|
||
'vc-mtn-command', 'vc-revert-buffer', 'vc-workfile-version',
|
||
'vcursor-toggle-vcursor-map', 'w32-focus-frame', 'w32-select-font',
|
||
'wisent-lex-make-token-table'.
|
||
|
||
---
|
||
** Some functions and variables obsolete since Emacs 22 have been removed:
|
||
'gnus-article-hide-pgp-hook', 'gnus-inews-mark-gcc-as-read',
|
||
'gnus-treat-display-xface', 'gnus-treat-strip-pgp',
|
||
'nnmail-spool-file'.
|
||
|
||
** The WHEN argument of 'make-obsolete' and related functions is mandatory.
|
||
The use of those functions without a WHEN argument was marked obsolete
|
||
back in Emacs 23.1. The affected functions are: 'make-obsolete',
|
||
'define-obsolete-function-alias', 'make-obsolete-variable',
|
||
'define-obsolete-variable-alias'.
|
||
|
||
** The variable 'keyboard-type' is obsolete and not dynamically scoped any more.
|
||
|
||
** The 'values' variable is now obsolete.
|
||
|
||
+++
|
||
** The '&define' keyword in an Edebug specification now disables backtracking.
|
||
The implementation was buggy, and multiple &define forms in an &or
|
||
form should be exceedingly rare. See the Info node 'Backtracking' in
|
||
the Emacs Lisp reference manual for background.
|
||
|
||
|
||
* Lisp Changes in Emacs 28.1
|
||
|
||
+++
|
||
** 'unlock-buffer' displays warnings instead of signaling.
|
||
Instead of signaling 'file-error' conditions for file system level
|
||
errors, the function now calls 'display-warning' and continues as if
|
||
the error did not occur.
|
||
|
||
+++
|
||
** New function 'always'.
|
||
This is identical to 'ignore', but returns t instead.
|
||
|
||
+++
|
||
** New forms to declare how completion should happen has been added.
|
||
'(declare (completion PREDICATE))' can be used as a general predicate
|
||
to say whether the command should be present when completing with
|
||
'M-x TAB'. '(declare (modes MODE...))' can be used as a short-hand
|
||
way of saying that the command should be present when completing from
|
||
buffers in major modes derived from MODE..., or, if it's a minor mode,
|
||
whether that minor mode is enabled in the current buffer.
|
||
|
||
+++
|
||
** The 'interactive' syntax has been extended to allow listing applicable modes.
|
||
Forms like '(interactive "p" dired-mode)' can be used to annotate the
|
||
commands as being applicable for modes derived from 'dired-mode',
|
||
or if the mode is a minor mode, that the current buffer has that
|
||
minor mode activated. Note that using this form will create byte code
|
||
that is not compatible with byte code in previous Emacs versions.
|
||
|
||
+++
|
||
** New buffer-local variable 'local-minor-modes'.
|
||
This permanently buffer-local variable holds a list of currently
|
||
enabled non-global minor modes in the current buffer (as a list of
|
||
symbols).
|
||
|
||
+++
|
||
** New variable 'global-minor-modes'.
|
||
This variable holds a list of currently enabled global minor modes (as
|
||
a list of symbols).
|
||
|
||
+++
|
||
** 'define-minor-mode' now takes an ':interactive' argument.
|
||
This can be used for specifying which modes this minor mode is meant
|
||
for, or to make the new minor mode non-interactive. The default value
|
||
is t.
|
||
|
||
+++
|
||
** 'define-derived-mode' now takes an ':interactive' argument.
|
||
This can be used to control whether the defined mode is a command
|
||
or not, and is useful when defining commands that aren't meant to be
|
||
used by users directly.
|
||
|
||
---
|
||
** The 'easymenu' library is now preloaded.
|
||
|
||
---
|
||
** New variable 'indent-line-ignored-functions'.
|
||
This allows modes to cycle through a set of indentation functions
|
||
appropriate for those modes.
|
||
|
||
** New function 'garbage-collect-maybe' to trigger GC early.
|
||
|
||
---
|
||
** 'defvar' detects the error of defining a variable currently lexically bound.
|
||
Such mixes are always signs that the outer lexical binding was an
|
||
error and should have used dynamic binding instead.
|
||
|
||
+++
|
||
** New completion function 'affixation-function' to add prefix/suffix.
|
||
It accepts a list of completions and should return a list where
|
||
each element is a list with three elements: a completion,
|
||
a prefix string, and a suffix string.
|
||
|
||
+++
|
||
** 'read-char-from-minibuffer' and 'y-or-n-p' support 'help-form'.
|
||
If you bind 'help-form' to a non-nil value while calling these functions,
|
||
then pressing 'C-h' ('help-char') causes the function to evaluate 'help-form'
|
||
and display the result.
|
||
|
||
---
|
||
** New variables 'read-char-choice-use-read-key' and 'y-or-n-p-use-read-key'.
|
||
When non-nil, then functions 'read-char-choice' and 'y-or-n-p' (respectively)
|
||
use the function 'read-key' to read a character instead of using the minibuffer.
|
||
|
||
---
|
||
** New user option 'use-short-answers'.
|
||
When non-nil, the function 'y-or-n-p' is used instead of
|
||
'yes-or-no-p'. This eliminates the need to define an alias that maps
|
||
one to another in the init file. The same user option also controls
|
||
whether the function 'read-answer' accepts short answers.
|
||
|
||
+++
|
||
** 'set-window-configuration' now takes two optional parameters,
|
||
'dont-set-frame' and 'dont-set-miniwindow'. The first of these, when
|
||
non-nil, instructs the function not to select the frame recorded in
|
||
the configuration. The second prevents the current minibuffer being
|
||
replaced by the one stored in the configuration.
|
||
|
||
+++
|
||
** 'define-globalized-minor-mode' now takes a ':predicate' parameter.
|
||
This can be used to control which major modes the minor mode should be
|
||
used in.
|
||
|
||
+++
|
||
** 'truncate-string-ellipsis' now uses '…' by default.
|
||
Modes that use 'truncate-string-to-width' with non-nil, non-string
|
||
argument ELLIPSIS, will now indicate truncation using '…' when
|
||
the selected frame can display it, and using "..." otherwise.
|
||
|
||
+++
|
||
** 'string-width' now accepts two optional arguments FROM and TO.
|
||
This allows calculating the width of a substring without consing a
|
||
new string.
|
||
|
||
+++
|
||
** New command 'make-directory-autoloads'.
|
||
This does the same as the old command 'update-directory-autoloads',
|
||
but has different semantics: Instead of passing in the output file via
|
||
the dynamically bound 'generated-autoload-file' variable, the output
|
||
file is now a explicit parameter.
|
||
|
||
+++
|
||
** New function 'string-search'.
|
||
This function takes two string parameters and returns the position of
|
||
the first instance of the former string in the latter.
|
||
|
||
+++
|
||
** New function 'string-replace'.
|
||
This function works along the line of 'replace-regexp-in-string', but
|
||
matching on strings instead of regexps, and does not change the global
|
||
match state.
|
||
|
||
+++
|
||
** New function 'process-lines-ignore-status'.
|
||
This is like 'process-lines', but does not signal an error if the
|
||
return status is non-zero. 'process-lines-handling-status' has also
|
||
been added, and takes a callback to handle the return status.
|
||
|
||
---
|
||
** 'ascii' is now a coding system alias for 'us-ascii'.
|
||
|
||
+++
|
||
** New function 'file-backup-file-names'.
|
||
This function returns the list of file names of all the backup files
|
||
of its file argument.
|
||
|
||
+++
|
||
** New utility function 'directory-empty-p'.
|
||
This predicate tests whether a given file name is an accessible
|
||
directory and whether it contains no other directories or files.
|
||
|
||
+++
|
||
** 'directory-files' now takes an additional COUNT parameter.
|
||
The parameter makes 'directory-files' return COUNT first file names
|
||
from a directory. If MATCH is also given, the function will return
|
||
first COUNT file names that match the expression. The same COUNT
|
||
parameter has been added to 'directory-files-and-attributes'.
|
||
|
||
+++
|
||
** The 'count-lines' function now takes an optional parameter to
|
||
ignore invisible lines.
|
||
|
||
---
|
||
** 'count-words' now crosses field boundaries.
|
||
Originally, 'count-words' would stop counting at the first field
|
||
boundary it encountered; now it keeps counting all the way to the
|
||
region's (or buffer's) end.
|
||
|
||
---
|
||
** New function 'custom-add-choice'.
|
||
This function can be used by modes to add elements to the
|
||
'choice' customization type of a variable.
|
||
|
||
+++
|
||
** New function 'require-theme'.
|
||
This function is like 'require', but searches 'custom-theme-load-path'
|
||
instead of 'load-path'. It can be used by Custom themes to load
|
||
supporting Lisp files when 'require' is unsuitable.
|
||
|
||
+++
|
||
** New function 'file-modes-number-to-symbolic' to convert a numeric
|
||
file mode specification into symbolic form.
|
||
|
||
** New macro 'dlet' to dynamically bind variables.
|
||
|
||
** The variable 'force-new-style-backquotes' has been removed.
|
||
This removes the final remaining trace of old-style backquotes.
|
||
|
||
** Changes in handling dynamic modules
|
||
|
||
*** The module header 'emacs-module.h' now contains type aliases
|
||
'emacs_function' and 'emacs_finalizer' for module functions and
|
||
finalizers, respectively.
|
||
|
||
*** Module functions can now be made interactive.
|
||
Use 'make_interactive' to give a module function an interactive
|
||
specification.
|
||
|
||
*** Module functions can now install an optional finalizer that is
|
||
called when the function object is garbage-collected. Use
|
||
'set_function_finalizer' to set the finalizer and
|
||
'get_function_finalizer' to retrieve it.
|
||
|
||
*** Modules can now open a channel to an existing pipe process using
|
||
the new module function 'open_channel'. Modules can use this
|
||
functionality to asynchronously send data back to Emacs.
|
||
|
||
*** A new module API 'make_unibyte_string' is provided.
|
||
It can be used to create Lisp strings with arbitrary byte sequences
|
||
(a.k.a. "raw bytes").
|
||
|
||
** 'file-modes', 'set-file-modes', and 'set-file-times' now have an
|
||
optional argument specifying whether to follow symbolic links.
|
||
|
||
** 'parse-time-string' can now parse ISO 8601 format strings,
|
||
such as "2020-01-15T16:12:21-08:00".
|
||
|
||
---
|
||
** The new function 'decoded-time-period' has been added.
|
||
It interprets a decoded time structure as a period and returns the
|
||
equivalent period in seconds.
|
||
|
||
+++
|
||
** The new function 'dom-remove-attribute' has been added.
|
||
|
||
+++
|
||
** The new function 'dom-print' has been added.
|
||
|
||
---
|
||
** 'make-network-process', 'make-serial-process' ':coding' behavior change.
|
||
Previously, passing ':coding nil' to either of these functions would
|
||
override any non-nil binding for 'coding-system-for-read' and
|
||
'coding-system-for-write'. For consistency with 'make-process' and
|
||
'make-pipe-process', passing ':coding nil' is now ignored. No code in
|
||
Emacs depended on the previous behavior; if you really want the
|
||
process' coding-system to be nil, use 'set-process-coding-system'
|
||
after the process has been created, or pass in ':coding '(nil nil)'.
|
||
|
||
+++
|
||
** 'open-network-stream' now accepts a ':coding' argument.
|
||
This allows specifying the coding systems used by a network process
|
||
for encoding and decoding without having to bind
|
||
'coding-system-for-{read,write}' or call 'set-process-coding-system'.
|
||
|
||
+++
|
||
** 'open-network-stream' can now take a ':capability-command' that's a function.
|
||
The function is called with the greeting from the server as its only
|
||
parameter, and allows sending different TLS capability commands to the
|
||
server based on that greeting.
|
||
|
||
+++
|
||
** 'open-gnutls-stream' now also accepts a ':coding' argument.
|
||
|
||
+++
|
||
** New user option 'process-file-return-signal-string'.
|
||
It controls, whether 'process-file' returns a string when a remote
|
||
process is interrupted by a signal.
|
||
|
||
+++
|
||
** The behavior of 'format-spec' is now closer to that of 'format'.
|
||
In order for the two functions to behave more consistently,
|
||
'format-spec' now pads and truncates based on string width rather than
|
||
length, and also supports format specifications that include a
|
||
truncating precision field, such as "%.2a".
|
||
|
||
+++
|
||
** 'format-spec' now takes an optional SPLIT parameter.
|
||
If non-nil, 'format-spec' will split the resulting string into a list
|
||
of strings, based on where the format specs (and expansions) were.
|
||
|
||
---
|
||
** New function 'color-values-from-color-spec'.
|
||
This can be used to parse RGB color specs in several formats and
|
||
convert them to a list '(R G B)' of primary color values.
|
||
|
||
---
|
||
** User option 'uniquify-buffer-name-style' can now be a function.
|
||
This user option can be one of the predefined styles or a function to
|
||
personalize the uniquified buffer name.
|
||
|
||
+++
|
||
** New variable 'tty-menu-calls-mouse-position-function'.
|
||
This controls whether 'mouse-position-function' is called by functions
|
||
that retrieve the mouse position when that happens during TTY menu
|
||
handling. Lisp programs that set 'mouse-position-function' should
|
||
also set this variable non-nil if they are compatible with the tty
|
||
menu handling.
|
||
|
||
+++
|
||
** 'inhibit-nul-byte-detection' is renamed to 'inhibit-null-byte-detection'.
|
||
|
||
** Byte compiler
|
||
|
||
+++
|
||
*** New byte-compiler check for missing dynamic variable declarations.
|
||
It is meant as an (experimental) aid for converting Emacs Lisp code
|
||
to lexical binding, where dynamic (special) variables bound in one
|
||
file can affect code in another. For details, see the manual section
|
||
"(elisp) Converting to Lexical Binding".
|
||
|
||
+++
|
||
*** 'byte-recompile-directory' can now compile symlinked ".el" files.
|
||
This is achieved by giving a non-nil FOLLOW-SYMLINKS parameter.
|
||
|
||
*** The byte-compiler now warns about too wide documentation strings.
|
||
By default, it will warn if a documentation string is wider than the
|
||
largest of 80 characters or 'fill-column'. This is controlled by the
|
||
new user option 'byte-compile-docstring-max-column'.
|
||
|
||
+++
|
||
*** 'byte-compile-file' optional argument LOAD is now obsolete.
|
||
To load the file after byte-compiling, add a call to 'load' from Lisp
|
||
or use 'M-x emacs-lisp-byte-compile-and-load' interactively.
|
||
|
||
---
|
||
** 'unload-feature' now also tries to undo additions to buffer-local hooks.
|
||
|
||
---
|
||
** Some functions are no longer considered safe by 'unsafep':
|
||
'replace-regexp-in-string', 'catch', 'throw', 'error', 'signal'
|
||
and 'play-sound-file'.
|
||
|
||
+++
|
||
** New variable 'print-integers-as-characters' modifies integer printing.
|
||
If this variable is non-nil, character syntax is used for printing
|
||
numbers when this makes sense, such as '?A' for 65.
|
||
|
||
+++
|
||
** New error 'remote-file-error', a subcategory of 'file-error'.
|
||
It is signaled if a remote file operation fails due to internal
|
||
reasons, and could block Emacs. It does not replace 'file-error'
|
||
signals for the usual cases. Timers, process filters and process
|
||
functions, which run remote file operations, shall protect themselves
|
||
against this error.
|
||
|
||
If such an error occurs, please report this as bug via 'M-x report-emacs-bug'.
|
||
Until it is solved you could ignore such errors by performing
|
||
|
||
(setq debug-ignored-errors (cons 'remote-file-error debug-ignored-errors))
|
||
|
||
+++
|
||
** The error 'ftp-error' belongs also to category 'remote-file-error'.
|
||
|
||
+++
|
||
** Buffers can now be created with certain hooks disabled.
|
||
The functions 'get-buffer-create' and 'generate-new-buffer' accept a
|
||
new optional argument INHIBIT-BUFFER-HOOKS. If non-nil, the new
|
||
buffer does not run the hooks 'kill-buffer-hook',
|
||
'kill-buffer-query-functions', and 'buffer-list-update-hook'. This
|
||
avoids slowing down internal or temporary buffers that are never
|
||
presented to users or passed on to other applications.
|
||
|
||
---
|
||
** 'start-process-shell-command' and 'start-file-process-shell-command'
|
||
do not support the old calling conventions any longer.
|
||
|
||
** Functions operating on local file names now check that the file names
|
||
don't contain any NUL bytes. This avoids subtle bugs caused by
|
||
silently using only the part of the file name until the first NUL byte.
|
||
|
||
** New coding-systems for EBCDIC variants.
|
||
New coding-systems 'ibm256', 'ibm273', 'ibm274', 'ibm277', 'ibm278',
|
||
'ibm280', 'ibm281', 'ibm284', 'ibm285', 'ibm290', 'ibm297'. These are
|
||
variants of the EBCDIC encoding tailored to some European and Japanese
|
||
locales. They are also available as aliases 'ebcdic-cp-*' (e.g.,
|
||
'ebcdic-cp-fi' for the Finnish variant 'ibm278'), and 'cp2xx' (e.g.,
|
||
'cp278' for 'ibm278'). There are also new charsets 'ibm2xx' to
|
||
support these coding-systems.
|
||
|
||
** The JSON functions 'json-serialize', 'json-insert',
|
||
'json-parse-string', and 'json-parse-buffer' now implement some of the
|
||
semantics of RFC 8259 instead of the earlier RFC 4627. In particular,
|
||
these functions now accept top-level JSON values that are neither
|
||
arrays nor objects.
|
||
|
||
---
|
||
** 'while-no-input-ignore-events' accepts more special events.
|
||
The special events 'dbus-event' and 'file-notify' are now ignored in
|
||
'while-no-input' when added to this variable.
|
||
|
||
+++
|
||
** 'condition-case' now allows for a success handler.
|
||
It is written as (:success BODY...) where BODY is executed whenever
|
||
the protected form terminates without error, with the specified
|
||
variable bound to the the value of the protected form.
|
||
|
||
|
||
* Changes in Emacs 28.1 on Non-Free Operating Systems
|
||
|
||
---
|
||
** On macOS, Xwidget is now supported.
|
||
If Emacs was built with xwidget support, you can access the embedded
|
||
webkit browser with 'M-x xwidget-webkit-browse-url'. Viewing two
|
||
instances of xwidget webkit is not supported.
|
||
|
||
*** Downloading files from xwidget-webkit is now supported.
|
||
The new variable 'xwidget-webkit-download-dir' says where to download to.
|
||
|
||
*** New functions for xwidget-webkit mode
|
||
'xwidget-webkit-clone-and-split-below',
|
||
'xwidget-webkit-clone-and-split-right'.
|
||
|
||
*** New variable 'xwidget-webkit-enable-plugins'.
|
||
|
||
+++
|
||
** On macOS, Emacs can now load dynamic modules with a ".dylib" suffix.
|
||
'module-file-suffix' now has the value ".dylib" on macOS, but the
|
||
".so" suffix is supported as well.
|
||
|
||
+++
|
||
** On MS-Windows, Emacs can now toggle the IME.
|
||
A new function 'w32-set-ime-open-status' can now be used to disable
|
||
and enable the MS-Windows native Input Method Editor (IME) at run
|
||
time. A companion function 'w32-get-ime-open-status' returns the
|
||
current IME activation status.
|
||
|
||
+++
|
||
** On MS-Windows, Emacs can now use the native image API to display images.
|
||
Emacs can now use the MS-Windows GDI+ library to load and display
|
||
images in JPEG, PNG, GIF and TIFF formats. This support is enabled
|
||
unless Emacs was configured '--without-native-image-api'.
|
||
|
||
This feature is experimental, and needs to be turned on to be used.
|
||
To turn this on, set the variable 'w32-use-native-image-API' to a
|
||
non-nil value. Please report any bugs you find while using the native
|
||
image API via 'M-x report-emacs-bug'.
|
||
|
||
---
|
||
** The user option 'make-pointer-invisible' is now honored on macOS.
|
||
|
||
--
|
||
** On macOS, 's-<left>' and 's-<right>' are now bound to
|
||
'move-beginning-of-line' and 'move-end-of-line' respectively. The commands
|
||
to select previous/next frame are still bound to 's-~' and 's-`'.
|
||
|
||
|
||
----------------------------------------------------------------------
|
||
This file is part of GNU Emacs.
|
||
|
||
GNU Emacs is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
GNU Emacs is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||
|
||
|
||
Local variables:
|
||
coding: utf-8
|
||
mode: outline
|
||
paragraph-separate: "[ ]*$"
|
||
end:
|