NEWS 126 KB
Newer Older
1
GNU Emacs NEWS -- history of user-visible changes.
2

Paul Eggert's avatar
Paul Eggert committed
3
Copyright (C) 2017-2021 Free Software Foundation, Inc.
4
See the end of the file for license conditions.
Dave Love's avatar
#  
Dave Love committed
5

6 7
Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
If possible, use 'M-x report-emacs-bug'.
8

Eli Zaretskii's avatar
Eli Zaretskii committed
9
This file is about changes in Emacs version 28.
10

Paul Eggert's avatar
Paul Eggert committed
11
See file HISTORY for a list of GNU Emacs versions and release dates.
Eli Zaretskii's avatar
Eli Zaretskii committed
12
See files NEWS.27, NEWS.26, ..., NEWS.18, and NEWS.1-17 for changes
13
in older Emacs versions.
14

Paul Eggert's avatar
Paul Eggert committed
15
You can narrow news to a specific version by calling 'view-emacs-news'
16
with a prefix argument or by typing 'C-u C-h C-n'.
17

18
Temporary note:
19
+++ indicates that all relevant manuals in doc/ have been updated.
20
--- means no change in the manuals is needed.
21 22
When you add a new item, use the appropriate mark if you are sure it
applies, and please also update docstrings as needed.
Eli Zaretskii's avatar
Eli Zaretskii committed
23

Michael Albinus's avatar
Michael Albinus committed
24

Eli Zaretskii's avatar
Eli Zaretskii committed
25
* Installation Changes in Emacs 28.1
26

27
** Emacs now optionally supports native compilation of Lisp files.
Glenn Morris's avatar
Glenn Morris committed
28
To enable this, configure Emacs with the '--with-native-compilation' option.
Eli Zaretskii's avatar
Eli Zaretskii committed
29 30 31 32
This requires the libgccjit library to be installed and functional,
and also requires GCC and Binutils to be available when Lisp code is
natively compiled.  See the Info node "(elisp) Native Compilation" for
more details.
33

Glenn Morris's avatar
Glenn Morris committed
34
---
Robert Pluim's avatar
Robert Pluim committed
35 36
** Support for building with Motif has been removed.

Glenn Morris's avatar
Glenn Morris committed
37
** The Cairo graphics library is now used by default if present.
Robert Pluim's avatar
Robert Pluim committed
38
'--with-cairo' is now the default, if the appropriate development files
39 40 41 42 43
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.

44 45 46 47 48 49 50
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
Michael Albinus's avatar
Michael Albinus committed
51
default.  We strongly recommend building with HarBuzz support.  'x' is
52
still a valid backend.
Robert Pluim's avatar
Robert Pluim committed
53

54 55
---
** Building without double buffering support.
56
'configure --with-xdbe=no' can now be used to disable double buffering
57 58
at build time.

59 60 61 62 63 64 65 66 67 68
---
** '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
69 70
available, and this is the Cairo graphics library + HarfBuzz for font
shaping, so 'configure' now recommends that combination.
71

72 73 74 75
---
** The ftx font backend driver has been removed.
It was declared obsolete in Emacs 27.1.

76 77 78
---
** The configure option '--without-makeinfo' has been removed.
This was only ever relevant when building from a repository checkout.
Glenn Morris's avatar
Glenn Morris committed
79
This now requires makeinfo, which is part of the texinfo package.
80

81 82 83 84 85
---
** 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.

86 87 88 89 90
---
** 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.

91

Eli Zaretskii's avatar
Eli Zaretskii committed
92
* Startup Changes in Emacs 28.1
Eli Zaretskii's avatar
Eli Zaretskii committed
93

94 95 96
** 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
Michael Albinus's avatar
Michael Albinus committed
97 98
true color by setting 'COLORTERM=truecolor' in the environment.  This is
useful on systems such as FreeBSD which ships only with "etc/termcap".
99

100
** Emacs now supports loading a Secure Computing filter.
Eli Zaretskii's avatar
Eli Zaretskii committed
101 102 103
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'
104 105 106 107 108
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
109 110
filters.

Glenn Morris's avatar
Glenn Morris committed
111

Eli Zaretskii's avatar
Eli Zaretskii committed
112
* Changes in Emacs 28.1
113

114
+++
Eli Zaretskii's avatar
Eli Zaretskii committed
115 116 117 118
** Etags now supports the Mercury programming language.
See https://mercurylang.org.

+++
Michael Albinus's avatar
Michael Albinus committed
119
** Etags command line option '--declarations' now has Mercury-specific behavior.
Eli Zaretskii's avatar
Eli Zaretskii committed
120 121 122 123
All Mercury declarations are tagged by default.  However, for
compatibility with 'etags' support for Prolog, predicates and
functions appearing first in clauses will also be tagged if 'etags' is
invoked with the '--declarations' command-line option.
124

125 126 127 128
+++
** New command 'font-lock-update', bound to 'C-x x f'.
This command updates the syntax highlighting in this buffer.

129 130
** The new NonGNU ELPA archive is enabled by default alongside GNU ELPA.

131 132 133 134
+++
** New command 'recenter-other-window', bound to 'S-M-C-l'.
Like 'recenter-top-bottom' acting in the other window.

135 136 137
** Minibuffer scrolling is now conservative by default.
This is controlled by the new variable 'scroll-minibuffer-conservatively'.

138
In addition, there is a new variable
139
'redisplay-adhoc-scroll-in-resize-mini-windows' to disable the
140 141 142 143 144
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.

145 146
+++
** Improved handling of minibuffers on switching frames.
147 148 149
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
150 151 152 153 154 155 156
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.
157

158
+++
159
** New system for displaying documentation for groups of functions.
160
This can either be used by saying 'M-x shortdoc-display-group' and
161
choosing a group, or clicking a button in the "*Help*" buffers when
162 163 164
looking at the doc string of a function that belongs to one of these
groups.

165 166 167 168 169 170
---
** 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.

171
** New variable 'redisplay-skip-initial-frame' to enable batch redisplay tests.
172 173 174
Setting it to nil forces the redisplay to do its job even in the
initial frame used in batch mode.

175 176 177 178 179 180 181
---
** 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.

182
+++
Stefan Kangas's avatar
Stefan Kangas committed
183
** Emacs now defaults to UTF-8 instead of ISO-8859-1.
184
This is only for the default, where the user has set no 'LANG' (or
185 186 187
similar) variable or environment.  This change should lead to no
user-visible changes for normal usage.

188
+++
189 190
** New variables that hold default buffer names for shell output.
The new constants 'shell-command-buffer-name' and
191
'shell-command-buffer-name-async' store the default buffer names
192 193
for the output of, respectively, synchronous and async shell
commands.
194

Michael Albinus's avatar
Michael Albinus committed
195
** Support for '(box . SIZE)' 'cursor-type'.
Eli Zaretskii's avatar
Eli Zaretskii committed
196
By default, 'box' cursor always has a filled box shape.  But if you
Michael Albinus's avatar
Michael Albinus committed
197
specify 'cursor-type' to be '(box . SIZE)', the cursor becomes a hollow
Michael Albinus's avatar
Michael Albinus committed
198
box if the point is on an image larger than SIZE pixels in any
Eli Zaretskii's avatar
Eli Zaretskii committed
199
dimension.
200

Eli Zaretskii's avatar
Eli Zaretskii committed
201
+++
202
** New user option 'word-wrap-by-category'.
Eli Zaretskii's avatar
Eli Zaretskii committed
203 204 205 206
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.
207

Stefan Kangas's avatar
Stefan Kangas committed
208 209 210 211
---
** Rudimentary support for the 'st' terminal emulator.
Emacs now supports 256 color display on the 'st' terminal emulator.

212 213 214 215 216 217 218
---
** 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.)

219 220
---
** Mouse wheel scrolling now defaults to one line at a time.
221 222 223

+++
** Mouse wheel scrolling with Shift modifier now scrolls horizontally.
224 225 226
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'.
227

228
---
229
** The default value of 'frame-title-format' and 'icon-title-format' has changed.
230 231 232 233
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
234
your init file:
235 236 237 238

    (setq frame-title-format '(multiple-frames "%b"
                              ("" invocation-name "@" system-name)))

239 240 241 242 243 244
+++
** '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.

245
---
246 247 248 249
** 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.
250

251 252 253 254 255
+++
** 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.

256 257 258 259
** 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.
260

261 262 263 264 265 266
** '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.

267 268
+++
** Modifiers now go outside angle brackets in pretty-printed key bindings.
Michael Albinus's avatar
Michael Albinus committed
269 270 271 272
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).
273

274 275 276 277 278 279 280
+++
** 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.

281
+++
282 283 284
** 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'),
Sean Whitton's avatar
Sean Whitton committed
285
'C-x x r' ('rename-buffer'), 'C-x x u' ('rename-uniquely'), 'C-x x n'
286 287
('clone-buffer'), 'C-x x i' ('insert-buffer'), 'C-x x t'
('toggle-truncate-lines') and 'C-x x f' ('font-lock-update').
288

289 290 291 292
---
** Commands 'set-frame-width' and 'set-frame-height' can now get their
input using the minibuffer.

293
---
Michael Albinus's avatar
Michael Albinus committed
294
** New user option 'bookmark-menu-confirm-deletion'.
295 296 297 298 299 300
In Bookmark Menu mode, Emacs by default does not prompt for
confirmation when you type 'x' to execute the deletion of bookmarks
that have been marked for deletion.  However, if this new option is
non-nil then Emacs will require confirmation with 'yes-or-no-p' before
deleting.

301 302 303 304 305 306 307 308
---
** New help window when Emacs prompts before opening a large file.
Commands like 'find-file' or 'visit-tags-table' ask to visit a file
normally or literally when the file is larger than a certain size (by
default, 9.5 MiB).  Press '?' or 'C-h' in that prompt to read more
about the different options to visit a file, how you can disable the
prompt, and how you can tweak the file size threshold.

Eli Zaretskii's avatar
Eli Zaretskii committed
309 310 311 312 313
+++
** Improved support for terminal emulators that encode the Meta flag.
Some terminal emulators set the 8th bit of Meta characters, and then
encode the resulting character code as if it were non-ASCII character
above codepoint 127.  Previously, the only way of using these in Emacs
Michael Albinus's avatar
Michael Albinus committed
314
was to set up the terminal emulator to use the 'ESC' characters to send
Eli Zaretskii's avatar
Eli Zaretskii committed
315 316 317 318 319
Meta characters to Emacs, e.g., send "ESC x" when the user types
'M-x'.  You can now avoid the need for this setup of such terminal
emulators by using the new input-meta-mode with the special value
'encoded' with these terminal emulators.

320

Eli Zaretskii's avatar
Eli Zaretskii committed
321
* Editing Changes in Emacs 28.1
322

323
+++
Michael Albinus's avatar
Michael Albinus committed
324
** A prefix arg now causes 'delete-other-frames' to only iconify frames.
325

326
+++
Michael Albinus's avatar
Michael Albinus committed
327
** The "Edit => Clear" menu item now obeys a rectangular region.
328

329 330 331 332
+++
** 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
Eli Zaretskii's avatar
Eli Zaretskii committed
333
commands that have been determined to be particularly useful with the
334 335
current mode.

336 337
+++
** New user option 'read-extended-command-predicate'.
Michael Albinus's avatar
Michael Albinus committed
338 339
This user option controls how 'M-x' performs completion of commands when
you type 'TAB'.  By default, any command that matches what you have
340 341 342
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
343
predicate (if any).
344

345 346 347 348 349 350 351
---
** '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.

352 353 354 355 356 357
+++
** '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.

358
+++
359 360 361 362 363 364
** Standalone 'M-y' allows interactive selection from previous kills.
'M-y' can now be typed after a command that is not a yank command.
When invoked like that, it prompts in the minibuffer for one of the
previous kills, offering completion and minibuffer-history navigation
through previous kills recorded in the kill ring.  A similar feature
in Isearch can be invoked if you bind 'C-s M-y' to the command
365 366
'isearch-yank-pop'.  When the user option 'yank-from-kill-ring-rotate'
is nil the kill ring is not rotated after 'yank-from-kill-ring'.
367

368 369 370 371 372 373
---
** 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.

374
+++
375 376 377
** New command 'undo-redo'.
It undoes previous undo commands, but doesn't record itself as an
undoable command.
378

Michael Albinus's avatar
Michael Albinus committed
379 380 381 382 383 384
+++
** '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.

+++
385 386 387 388 389 390
** 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'.
Michael Albinus's avatar
Michael Albinus committed
391

392 393 394 395 396 397
+++
** 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.
398
'goto-line-relative' is bound to 'C-x n g'.
399

400 401 402 403
+++
** When called interactively, 'goto-char' now offers the number at
point as default.

404 405 406 407
+++
** When 'suggest-key-bindings' is non-nil, the completion list of 'M-x'
shows equivalent key bindings for all commands that have them.

408 409 410
** Autosaving via 'auto-save-visited-mode' can now be inhibited by
setting the variable 'auto-save-visited-mode' buffer-locally to nil.

411
** New commands to describe buttons and widgets have been added.
412 413
'widget-describe' (on a widget) will pop up a help buffer and give a
description of the properties.  Likewise 'button-describe' does the
414 415
same for a button.

416
** Obsolete aliases are no longer hidden from command completion.
417
Completion of command names now considers obsolete aliases as
418 419
candidates, if they were marked obsolete in the current major version
of Emacs.  Invoking a command via an obsolete alias now mentions the
420 421
obsolescence fact and shows the new name of the command.

422 423 424 425 426 427 428 429
+++
** 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.

430 431 432 433 434
+++
** New command 'memory-report'.
This command opens a new buffer called "*Memory Report*" and gives a
summary of where Emacs is using memory currently.

435 436 437 438 439 440
+++
** 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.

Yuan Fu's avatar
Yuan Fu committed
441 442 443 444
** Outline

+++
*** New commands to cycle heading visibility.
445 446 447 448
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.
Yuan Fu's avatar
Yuan Fu committed
449

Michael Albinus's avatar
Michael Albinus committed
450 451
*** New user option 'outline-minor-mode-cycle'.
This user option customizes 'outline-minor-mode', with the difference
452 453 454 455 456 457
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.

Michael Albinus's avatar
Michael Albinus committed
458 459 460 461 462
*** 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.
463

464

Eli Zaretskii's avatar
Eli Zaretskii committed
465
* Changes in Specialized Modes and Packages in Emacs 28.1
466

467 468
** Completion List Mode
New key bindings have been added: 'n' and 'p' to navigate completions,
469 470
and 'M-g M-c' to switch to the minibuffer, and you can also switch back
to the completion list buffer with 'M-g M-c'.
471

472 473 474 475 476
** 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.

477 478
** Macroexp
---
Michael Albinus's avatar
Michael Albinus committed
479
*** New function 'macroexp-file-name' to know the name of the current file.
480 481
---
*** New function 'macroexp-compiling-p' to know if we're compiling.
482 483 484 485
---
*** 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.
486

487 488 489 490
** '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.

491
** Bindat
Michael Albinus's avatar
Michael Albinus committed
492

493
+++
494 495 496
*** 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
497
arbitrary-size integers, recursive types, and more.  See the Info node
Michael Albinus's avatar
Michael Albinus committed
498
"(elisp) Byte Packing" in the ELisp manual for more details.
499

500
** pcase
Michael Albinus's avatar
Michael Albinus committed
501

502
+++
Michael Albinus's avatar
Michael Albinus committed
503
*** The 'or' pattern now binds the union of the vars of its sub-patterns.
504 505 506
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.

507
+++
Michael Albinus's avatar
Michael Albinus committed
508 509
*** The 'pred' pattern can now take the form '(pred (not FUN))'.
This is like '(pred (lambda (x) (not (FUN x))))' but results
510 511
in better code.

512 513 514
---
*** New function 'pcase-compile-patterns' to write other macros.

515 516 517 518 519 520 521 522
+++
** 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.

523 524
** 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
525 526
batch mode.

527 528 529 530 531 532 533 534
** 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.

535 536 537 538
+++
*** New command 'server-edit-abort'.
This command (not bound to any key by default) can be used to abort
an edit instead of marking it as "Done" (which the 'C-x #' command
539 540
does).  The 'emacsclient' program exits with an abnormal status as
result of this command.
541

542 543 544 545 546 547
** Perl mode

---
*** New face 'perl-non-scalar-variable'.
This is used to fontify non-scalar variables.

548 549
** Python mode

550 551
*** 'python-shell-interpreter' now defaults to python3 on systems with python3.

552 553 554 555 556
*** '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.

557
** Ruby mode
558 559 560 561

*** '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.
562

563 564 565
** Icomplete

+++
566
*** New minor mode 'icomplete-vertical-mode', alias 'fido-vertical-mode'.
567 568 569 570 571 572
This mode is intended to be used with Icomplete ('M-x icomplete-mode')
or Fido ('M-x fido-mode'), to display the list of completions
candidates vertically instead of horizontally.  When used with
Icomplete, completions are rotated and selection kept at the top.
When used with Fido, completions scroll like a typical dropdown
widget.
573

Michael Albinus's avatar
Michael Albinus committed
574
*** Default value of 'icomplete-compute-delay' has been changed to 0.15 s.
575 576 577 578 579 580

*** Default value of 'icomplete-max-delay-chars' has been changed to 2.

*** Reduced blinking while completing the next completions set.
Icomplete doesn't hide the hint with the previously computed
completions anymore when compute delay is in effect, or the previous
Michael Albinus's avatar
Michael Albinus committed
581
computation has been aborted by input.  Instead it shows the previous
582 583
completions until the new ones are ready.

584 585 586 587 588
---
** 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
589
it is still logged to the "*Messages*" buffer), or the warning can be
590 591
disabled entirely.

592
** mspool.el
593

594
---
595 596
*** Autoload the main entry point 'mspool-show'.

597 598
** Windmove

599 600
*** New user options to customize windmove keybindings.
These options include 'windmove-default-keybindings',
601 602 603 604
'windmove-display-default-keybindings',
'windmove-delete-default-keybindings',
'windmove-swap-states-default-keybindings'.

605 606
** Windows

607
+++
608
*** New option 'delete-window-choose-selected'.
609 610 611 612 613 614
This allows to choose a frame's selected window after deleting the
previously selected one.

+++
*** New argument NO-OTHER for some window functions.
'get-lru-window', ‘get-mru-window’ and 'get-largest-window' now accept a
615
new optional argument NO-OTHER which, if non-nil, avoids returning a
616 617
window whose 'no-other-window' parameter is non-nil.

618
+++
Michael Albinus's avatar
Michael Albinus committed
619
*** New 'display-buffer' function 'display-buffer-use-least-recent-window'.
620 621 622 623 624 625 626
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.

627 628 629 630
*** 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.

631
*** The key prefix 'C-x 4 4' displays next command buffer in a new window.
632 633
It's bound to the command 'other-window-prefix' that requests the buffer
of the next command to be displayed in a new window.
634 635 636 637

** Frames

*** The key prefix 'C-x 5 5' displays next command buffer in a new frame.
638 639
It's bound to the command 'other-frame-prefix' that requests the buffer
of the next command to be displayed in a new frame.
640

641 642 643
** Tab Bars

*** The key prefix 'C-x t t' displays next command buffer in a new tab.
644 645
It's bound to the command 'other-tab-prefix' that requests the buffer
of the next command to be displayed in a new tab.
646

Earl's avatar
Earl committed
647 648 649
+++
*** New command 'C-x t C-r' to open file read-only in other tab.

650
---
651 652 653 654
*** 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'.

655 656
---
*** New command 'toggle-frame-tab-bar'.
657 658
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'.
659

660
---
661
*** New user option 'tab-bar-format' defines a list of tab bar items.
662 663 664 665
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.
666 667
When 'tab-bar-format-tabs' is replaced with 'tab-bar-format-tabs-groups',
then the tab bar displays tab groups.
668

669 670
---
*** 'Mod-9' bound to 'tab-last' now switches to the last tab.
671 672
It also supports a negative argument.

673 674 675
---
*** New command 'tab-duplicate' bound to 'C-x t n'.

676 677 678 679
---
*** 'C-x t N' creates a new tab at the specified absolute position.
It also supports a negative argument.

680 681 682
---
*** 'C-x t M' moves the current tab to the specified absolute position.
It also supports a negative argument.
683

684 685
---
*** 'C-x t G' assigns a group name to the tab.
686
'tab-close-group' can close all tabs that belong to the selected group.
687
The user option 'tab-bar-new-tab-group' defines the default group of a
688 689 690
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.
691

692 693 694
---
*** New user option 'tab-bar-tab-name-format-function'.

695 696 697
---
*** New user option 'tab-line-tab-name-format-function'.

698 699 700 701 702
---
*** 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.

703
---
704
*** New tab-line faces and options.
705 706 707 708 709 710 711 712 713 714
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.

715 716 717
** Occur mode

*** New bindings in occur-mode, 'next-error-no-select' bound to 'n' and
718 719
'previous-error-no-select' bound to 'p'.

720 721 722
*** The new command 'recenter-current-error', bound to 'l' in Occur or
compilation buffers, recenters the current displayed occurrence/error.

723 724 725 726 727 728
** 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.
729

Michael Albinus's avatar
Michael Albinus committed
730
** New minor mode 'cl-font-lock-built-in-mode' for 'lisp-mode'.
731 732 733
The mode provides refined highlighting of built-in functions, types,
and variables.

734 735
** Archive mode

736
---
737
*** Archive Mode can now parse ".squashfs" files.
738

739 740
*** Can now modify members of 'ar' archives.

741 742 743 744 745 746
*** 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.

747
---
Michael Albinus's avatar
Michael Albinus committed
748
*** New command bound to 'C': 'archive-copy-file'.
749 750 751
This command extracts the file under point and writes the data to a
file.

752
** Emacs Lisp mode
Michael Albinus's avatar
Michael Albinus committed
753

754
*** The mode-line now indicates whether we're using lexical or dynamic scoping.
755

756 757 758 759
*** 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.
760

761 762
** Calendar

763
+++
764
*** New user option 'calendar-time-zone-style'.
Michael Albinus's avatar
Michael Albinus committed
765
If 'numeric', calendar functions (eg 'calendar-sunrise-sunset') that display
766
time zones will use a form like "+0100" instead of "CET".
767

768 769
** Dired

770
---
771
*** Behavior change on 'dired-clean-confirm-killing-deleted-buffers'.
772 773 774 775
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.

776 777
+++
*** New user option 'dired-switches-in-mode-line'.
778
This user option controls how 'ls' switches are displayed in the mode
Eli Zaretskii's avatar
Eli Zaretskii committed
779 780 781
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.
782

783 784 785 786 787 788 789 790 791 792 793 794
+++
*** New user option 'dired-compress-directory-default-suffix'.
This user option controls default suffix for compressing a directory.
If it's nil, ".tar.gz" will be used.  Refer to
'dired-compress-files-alist' for a list of supported suffixes.

+++
*** New user option 'dired-compress-file-default-suffix'.
This user option controls the default suffix for compressing files.
If it's nil, ".gz" will be used.  Refer to 'dired-compress-file-alist'
for a list of supported suffixes.

795
---
796
*** Broken and circular links are shown with the 'dired-broken-symlink' face.
797

798 799
*** '=' ('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
800
for diffing is the newest backup file.  You can now use 'M-n' to quickly
801 802
select a different backup file instead.

Tino Calancha's avatar
Tino Calancha committed
803 804
+++
*** New user option 'dired-maybe-use-globstar'.
805 806 807 808 809 810
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.
Tino Calancha's avatar
Tino Calancha committed
811

812
+++
813
*** New user option 'dired-copy-dereference'.
Michael Albinus's avatar
Michael Albinus committed
814 815 816
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.
817

818
*** New user option 'dired-do-revert-buffer'.
819
Non-nil reverts the destination Dired buffer after performing one
820 821 822
of these operations: 'dired-do-copy', 'dired-do-rename',
'dired-do-symlink', 'dired-do-hardlink'.

Michael Albinus's avatar
Michael Albinus committed
823 824 825 826 827
*** 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.
828

829 830
*** State changing VC operations are supported in Dired on files and
directories with the help of new command 'dired-vc-next-action'.
831

832
+++
833
*** 'dired-jump' and 'dired-jump-other-window' moved from 'dired-x' to 'dired'.
834 835 836 837 838 839
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
840
keys, add the following to your init file:
841 842 843 844

(global-set-key "\C-x\C-j" nil)
(global-set-key "\C-x4\C-j" nil)

845 846
** Change Logs and VC

847 848 849 850 851
*** 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.

852 853
*** New command 'vc-dir-root' uses the root directory without asking.

854 855 856 857 858
---
*** New face 'log-view-commit-body'.
This is used when expanding commit messages from 'vc-print-root-log'
and similar commands.

859
---
860
*** New faces for 'vc-dir' buffers.
861 862
Those are: 'vc-dir-header', 'vc-dir-header-value', 'vc-dir-directory',
'vc-dir-file', 'vc-dir-mark-indicator', 'vc-dir-status-warning',
863 864
'vc-dir-status-edited', 'vc-dir-status-up-to-date',
'vc-dir-status-ignored'.
865

866 867 868 869 870 871 872 873
---
*** 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).

874 875 876
*** New commands 'vc-dir-mark-registered-files' (bound to '* r') and
'vc-dir-mark-unregistered-files'.

877 878 879
*** Support for bookmark.el.
Bookmark locations can refer to VC directory buffers.

880
---
881 882 883
*** 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').
884

885
---
886
*** 'vc-hg' now uses 'hg summary' to populate extra 'vc-dir' headers.
887

888
---
889
*** New user option 'vc-git-revision-complete-only-branches'.
890
If non-nil, only branches and remotes are considered when doing
891 892
completion over Git branch names.  The default is nil, which causes
tags to be considered as well.
893

894 895 896 897
---
*** New user option 'vc-git-log-switches'.
String or list of strings specifying switches for Git log under VC.

898
** Gnus
899

900 901 902 903
+++
*** The '#' command in the Group and Summary buffer now toggles,
instead of sets, the process mark.

904 905
+++
*** New user option 'gnus-process-mark-toggle'.
906
If non-nil (the default), the '#' command in the Group and Summary
907 908
buffers will toggle, instead of set, the process mark.

909

910 911 912 913 914 915
+++
*** 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.

916
+++
917
*** New user options to customise the summary line specs "%[" and "%]".
918 919 920
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
921 922 923
'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
924
the value of 'gnus-sum-opening-bracket', but can also be
925
'gnus-sum-opening-bracket-adopted' for the adopted articles.  "%]" will
926 927 928
normally display the value of 'gnus-sum-closing-bracket', but can also
be 'gnus-sum-closing-bracket-adopted' for the adopted articles.

929 930
+++
*** New user option 'gnus-paging-select-next'.
931
This controls what happens when using commands like 'SPC' and 'DEL' to
932 933 934
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.

935
+++
936
*** New gnus-search library.
Eric Abrahamsen's avatar
Eric Abrahamsen committed
937 938 939 940 941
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.

+++
942
*** New value for user option 'smiley-style'.
943 944 945
Smileys can now be rendered with emojis instead of small images when
using the new 'emoji' value in 'smiley-style'.

946 947 948 949 950
+++
*** 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.

951
+++