NEWS 138 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 97
---
** File names given on the command line will now be pushed onto
'file-name-history'.

98 99 100 101 102 103
---
** In GTK builds, Emacs now supports startup notification.
This means that Emacs won't steal keyboard focus upon startup
(when started via the Desktop) if the user is typing into another
application.

104 105 106
** 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
107 108
true color by setting 'COLORTERM=truecolor' in the environment.  This is
useful on systems such as FreeBSD which ships only with "etc/termcap".
109

110
** Emacs now supports loading a Secure Computing filter.
Eli Zaretskii's avatar
Eli Zaretskii committed
111 112 113
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'
114 115 116 117 118
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
119 120
filters.

121
** Setting 'fill-column' to nil is obsolete.
122 123
This undocumented use of 'fill-column' is now obsolete.  To disable
auto filling, turn off 'auto-fill-mode' instead.
124 125 126 127 128 129

For instance, you could add something like the following to your init
file:

    (add-hook 'foo-mode-hook (lambda () (auto-fill-mode -1))

Glenn Morris's avatar
Glenn Morris committed
130

Eli Zaretskii's avatar
Eli Zaretskii committed
131
* Changes in Emacs 28.1
132

133 134 135 136
** '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.

137
+++
Eli Zaretskii's avatar
Eli Zaretskii committed
138 139 140 141
** Etags now supports the Mercury programming language.
See https://mercurylang.org.

+++
Michael Albinus's avatar
Michael Albinus committed
142
** Etags command line option '--declarations' now has Mercury-specific behavior.
Eli Zaretskii's avatar
Eli Zaretskii committed
143 144 145 146
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.
147

148 149 150 151
+++
** New command 'font-lock-update', bound to 'C-x x f'.
This command updates the syntax highlighting in this buffer.

152 153
** The new NonGNU ELPA archive is enabled by default alongside GNU ELPA.

154 155 156 157
+++
** New command 'recenter-other-window', bound to 'S-M-C-l'.
Like 'recenter-top-bottom' acting in the other window.

158 159 160
** Minibuffer scrolling is now conservative by default.
This is controlled by the new variable 'scroll-minibuffer-conservatively'.

161
In addition, there is a new variable
162
'redisplay-adhoc-scroll-in-resize-mini-windows' to disable the
163 164 165 166 167
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.

168 169
+++
** Improved handling of minibuffers on switching frames.
170 171 172
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
173 174 175 176 177 178 179
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.
180

181
+++
182
** New system for displaying documentation for groups of functions.
183
This can either be used by saying 'M-x shortdoc-display-group' and
184
choosing a group, or clicking a button in the "*Help*" buffers when
185 186 187
looking at the doc string of a function that belongs to one of these
groups.

188
---
Michael Albinus's avatar
Michael Albinus committed
189
** Improved "find definition" feature of "*Help*" buffers.
190 191 192 193
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.

194
** New variable 'redisplay-skip-initial-frame' to enable batch redisplay tests.
195 196 197
Setting it to nil forces the redisplay to do its job even in the
initial frame used in batch mode.

198 199 200 201 202 203 204
---
** 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.

205
+++
Stefan Kangas's avatar
Stefan Kangas committed
206
** Emacs now defaults to UTF-8 instead of ISO-8859-1.
207
This is only for the default, where the user has set no 'LANG' (or
208 209 210
similar) variable or environment.  This change should lead to no
user-visible changes for normal usage.

211
+++
212 213
** New variables that hold default buffer names for shell output.
The new constants 'shell-command-buffer-name' and
214
'shell-command-buffer-name-async' store the default buffer names
215 216
for the output of, respectively, synchronous and async shell
commands.
217

Michael Albinus's avatar
Michael Albinus committed
218
** Support for '(box . SIZE)' 'cursor-type'.
Eli Zaretskii's avatar
Eli Zaretskii committed
219
By default, 'box' cursor always has a filled box shape.  But if you
Michael Albinus's avatar
Michael Albinus committed
220
specify 'cursor-type' to be '(box . SIZE)', the cursor becomes a hollow
Michael Albinus's avatar
Michael Albinus committed
221
box if the point is on an image larger than SIZE pixels in any
Eli Zaretskii's avatar
Eli Zaretskii committed
222
dimension.
223

Eli Zaretskii's avatar
Eli Zaretskii committed
224
+++
225
** New user option 'word-wrap-by-category'.
Eli Zaretskii's avatar
Eli Zaretskii committed
226 227 228 229
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.
230

Stefan Kangas's avatar
Stefan Kangas committed
231 232 233 234
---
** Rudimentary support for the 'st' terminal emulator.
Emacs now supports 256 color display on the 'st' terminal emulator.

235 236 237 238 239 240 241
---
** 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.)

242 243
---
** Mouse wheel scrolling now defaults to one line at a time.
244 245 246

+++
** Mouse wheel scrolling with Shift modifier now scrolls horizontally.
247 248 249
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'.
250

251
---
252
** The default value of 'frame-title-format' and 'icon-title-format' has changed.
253 254 255 256
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
257
your init file:
258 259 260 261

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

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

268
---
269 270 271 272
** 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.
273

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

279 280 281 282
** 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.
283

284 285 286 287 288 289
** '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.

290 291
+++
** Modifiers now go outside angle brackets in pretty-printed key bindings.
Michael Albinus's avatar
Michael Albinus committed
292 293 294 295
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).
296

297 298 299 300 301 302 303
+++
** 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.

304
+++
305 306 307
** 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
308
'C-x x r' ('rename-buffer'), 'C-x x u' ('rename-uniquely'), 'C-x x n'
309 310
('clone-buffer'), 'C-x x i' ('insert-buffer'), 'C-x x t'
('toggle-truncate-lines') and 'C-x x f' ('font-lock-update').
311

312 313 314 315
---
** Commands 'set-frame-width' and 'set-frame-height' can now get their
input using the minibuffer.

316 317 318 319 320 321 322 323
---
** 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.

324 325 326
+++
** New user option 'query-about-changed-file'.
If non-nil (the default), users are prompted as before when
327 328 329 330
re-visiting a file that has changed externally after it was visited
the first time.  If nil, the user is not prompted, but instead the
buffer is opened with its contents before the change, and the user is
given instructions how to revert the buffer.
331

Eli Zaretskii's avatar
Eli Zaretskii committed
332 333 334 335 336
+++
** 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
337
was to set up the terminal emulator to use the 'ESC' characters to send
Eli Zaretskii's avatar
Eli Zaretskii committed
338 339 340 341 342
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.

343 344 345 346
+++
** New frame parameter 'drag-with-tab-line'.
This parameter, similar to 'drag-with-header-line', allows moving frames
by dragging the tab lines of their topmost windows with the mouse.
347

348

Eli Zaretskii's avatar
Eli Zaretskii committed
349
* Editing Changes in Emacs 28.1
350

351 352 353 354
---
** Dragging a file to Emacs will now also push the name of the file
onto 'file-name-history'.

355
+++
Michael Albinus's avatar
Michael Albinus committed
356
** A prefix arg now causes 'delete-other-frames' to only iconify frames.
357

358
+++
Michael Albinus's avatar
Michael Albinus committed
359
** The "Edit => Clear" menu item now obeys a rectangular region.
360

361 362 363 364
+++
** 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
365
commands that have been determined to be particularly useful with the
366 367
current mode.

368 369
+++
** New user option 'read-extended-command-predicate'.
Michael Albinus's avatar
Michael Albinus committed
370 371
This user option controls how 'M-x' performs completion of commands when
you type 'TAB'.  By default, any command that matches what you have
372 373 374
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
375
predicate (if any).
376

377 378 379 380 381 382 383
---
** '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.

384 385 386 387 388 389
+++
** '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.

390
+++
391 392 393 394 395 396
** 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
397 398
'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'.
399

400 401 402 403 404 405
---
** 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.

406
+++
407 408 409
** New command 'undo-redo'.
It undoes previous undo commands, but doesn't record itself as an
undoable command.
410

Michael Albinus's avatar
Michael Albinus committed
411 412 413 414 415 416
+++
** '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.

+++
417 418 419 420 421 422
** 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
423

424 425 426 427 428 429
+++
** 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.
430
'goto-line-relative' is bound to 'C-x n g'.
431

432 433 434 435
+++
** When called interactively, 'goto-char' now offers the number at
point as default.

436 437 438 439
+++
** When 'suggest-key-bindings' is non-nil, the completion list of 'M-x'
shows equivalent key bindings for all commands that have them.

440 441 442
** Autosaving via 'auto-save-visited-mode' can now be inhibited by
setting the variable 'auto-save-visited-mode' buffer-locally to nil.

443
** New commands to describe buttons and widgets have been added.
444 445
'widget-describe' (on a widget) will pop up a help buffer and give a
description of the properties.  Likewise 'button-describe' does the
446 447
same for a button.

448
** Obsolete aliases are no longer hidden from command completion.
449
Completion of command names now considers obsolete aliases as
450 451
candidates, if they were marked obsolete in the current major version
of Emacs.  Invoking a command via an obsolete alias now mentions the
452 453
obsolescence fact and shows the new name of the command.

454 455 456 457 458 459 460 461
+++
** 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.

462 463 464 465 466
+++
** New command 'memory-report'.
This command opens a new buffer called "*Memory Report*" and gives a
summary of where Emacs is using memory currently.

467 468 469 470 471 472
+++
** 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
473 474 475 476
** Outline

+++
*** New commands to cycle heading visibility.
477 478 479 480
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
481

482
+++
Michael Albinus's avatar
Michael Albinus committed
483 484
*** New user option 'outline-minor-mode-cycle'.
This user option customizes 'outline-minor-mode', with the difference
485 486 487 488 489 490
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
491 492 493 494 495
*** 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.
496

497 498 499 500 501
** New commands 'copy-matching-lines' and 'kill-matching-lines'.
These commands are similar to the command 'flush-lines',
but add the matching lines to the kill ring as a single string,
including the newlines that separate the lines.

502

Eli Zaretskii's avatar
Eli Zaretskii committed
503
* Changes in Specialized Modes and Packages in Emacs 28.1
504

505 506
** Completion List Mode
New key bindings have been added: 'n' and 'p' to navigate completions,
507 508
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'.
509

510 511 512 513 514
** 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.

515 516
** Macroexp
---
Michael Albinus's avatar
Michael Albinus committed
517
*** New function 'macroexp-file-name' to know the name of the current file.
518 519
---
*** New function 'macroexp-compiling-p' to know if we're compiling.
520 521 522 523
---
*** 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.
524

525
** Bindat
Michael Albinus's avatar
Michael Albinus committed
526

527
+++
528 529 530
*** 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
531
arbitrary-size integers, recursive types, and more.  See the Info node
Michael Albinus's avatar
Michael Albinus committed
532
"(elisp) Byte Packing" in the ELisp manual for more details.
533

534
** pcase
Michael Albinus's avatar
Michael Albinus committed
535

536
+++
Michael Albinus's avatar
Michael Albinus committed
537
*** The 'or' pattern now binds the union of the vars of its sub-patterns.
538 539 540
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.

541
+++
Michael Albinus's avatar
Michael Albinus committed
542 543
*** The 'pred' pattern can now take the form '(pred (not FUN))'.
This is like '(pred (lambda (x) (not (FUN x))))' but results
544 545
in better code.

546 547 548
---
*** New function 'pcase-compile-patterns' to write other macros.

549 550 551 552 553
*** Added 'cl-type' pattern.
The new 'cl-type' pattern compares types using 'cl-typep', which allows
comparing simple types like '(cl-type integer)', as well as forms like
'(cl-type (integer 0 10))'.

554 555 556 557 558 559 560 561
+++
** 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.

562 563
** 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
564 565
batch mode.

566 567 568 569 570 571 572 573
** 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.

574 575 576 577
+++
*** 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
578 579
does).  The 'emacsclient' program exits with an abnormal status as
result of this command.
580

581 582 583 584 585 586 587 588
+++
*** New desktop integration for connecting to the server.
If your operating system’s desktop environment is
freedesktop.org-compatible (which is true of most GNU/Linux and other
recent Unix-like GUIs), you may use the new "Emacs (Client)" desktop
menu entry to open files in an existing Emacs instance rather than
starting a new one.  The daemon starts if not already running.

589 590 591 592 593 594
** Perl mode

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

595 596
** Python mode

597 598 599 600 601
---
*** New user option 'python-forward-sexp-function'.
This allows the user to easier customize whether to use block-based
navigation or not.

602 603
*** 'python-shell-interpreter' now defaults to python3 on systems with python3.

604 605 606 607 608
*** '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.

609
** Ruby mode
610 611 612 613

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

615 616
** Icomplete

617 618 619 620 621
---
*** New user option 'icomplete-matches-format'.
This allows controlling the current/total number of matches for the
prompt prefix.

622
+++
623
*** New minor mode 'icomplete-vertical-mode', alias 'fido-vertical-mode'.
624 625 626 627 628 629
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.
630

Michael Albinus's avatar
Michael Albinus committed
631
*** Default value of 'icomplete-compute-delay' has been changed to 0.15 s.
632 633 634 635 636 637

*** 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
638
computation has been aborted by input.  Instead it shows the previous
639 640
completions until the new ones are ready.

641 642 643 644 645
---
** 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
646
it is still logged to the "*Messages*" buffer), or the warning can be
647 648
disabled entirely.

649
** mspool.el
650

651
---
652 653
*** Autoload the main entry point 'mspool-show'.

654 655
** Windmove

656 657
*** New user options to customize windmove keybindings.
These options include 'windmove-default-keybindings',
658 659 660 661
'windmove-display-default-keybindings',
'windmove-delete-default-keybindings',
'windmove-swap-states-default-keybindings'.

662 663
** Windows

664
+++
665
*** New user option 'delete-window-choose-selected'.
666 667 668 669 670 671
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
672
new optional argument NO-OTHER which, if non-nil, avoids returning a
673 674
window whose 'no-other-window' parameter is non-nil.

675
+++
Michael Albinus's avatar
Michael Albinus committed
676
*** New 'display-buffer' function 'display-buffer-use-least-recent-window'.
677 678 679 680 681 682 683
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.

684 685 686 687
*** 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.

688
*** The key prefix 'C-x 4 4' displays next command buffer in a new window.
689 690
It's bound to the command 'other-window-prefix' that requests the buffer
of the next command to be displayed in a new window.
691 692 693 694

** Frames

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

698 699 700
** Tab Bars

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

Earl's avatar
Earl committed
704 705 706
+++
*** New command 'C-x t C-r' to open file read-only in other tab.

707
---
708 709 710 711
*** 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'.

712 713
---
*** New command 'toggle-frame-tab-bar'.
714 715
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'.
716

717
---
718
*** New user option 'tab-bar-format' defines a list of tab bar items.
719 720 721 722
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.
723 724
When 'tab-bar-format-tabs' is replaced with 'tab-bar-format-tabs-groups',
then the tab bar displays tab groups.
725

726 727
---
*** 'Mod-9' bound to 'tab-last' now switches to the last tab.
728 729
It also supports a negative argument.

730 731 732
---
*** New command 'tab-duplicate' bound to 'C-x t n'.

733 734 735 736
---
*** 'C-x t N' creates a new tab at the specified absolute position.
It also supports a negative argument.

737 738 739
---
*** 'C-x t M' moves the current tab to the specified absolute position.
It also supports a negative argument.
740

741 742
---
*** 'C-x t G' assigns a group name to the tab.
743
'tab-close-group' can close all tabs that belong to the selected group.
744
The user option 'tab-bar-new-tab-group' defines the default group of a
745 746 747
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.
748

749 750 751
---
*** New user option 'tab-bar-tab-name-format-function'.

752 753 754
---
*** New user option 'tab-line-tab-name-format-function'.

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

760
---
761
*** New tab-line faces and options.
762 763 764 765 766 767 768 769 770 771
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.

772 773 774
** Occur mode

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

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

780 781 782
---
*** Occur mode may use a different type for 'occur-target' property values.
The value was previously always a marker set to the start of the first
783
match on the line but can now also be a list of '(BEGIN . END)' pairs
784 785 786 787 788
of markers delimiting each match on the line.
This is a fully compatible change to the internal occur-mode
implementation, and code creating their own occur-mode buffers will
work as before.

789 790 791 792 793 794
** 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.
795

Michael Albinus's avatar
Michael Albinus committed
796
** New minor mode 'cl-font-lock-built-in-mode' for 'lisp-mode'.
797 798 799
The mode provides refined highlighting of built-in functions, types,
and variables.

800 801
** Archive mode

802
---
803
*** Archive Mode can now parse ".squashfs" files.
804

805 806
*** Can now modify members of 'ar' archives.

807 808 809 810 811 812
*** 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.

813
---
Michael Albinus's avatar
Michael Albinus committed
814
*** New command bound to 'C': 'archive-copy-file'.
815 816 817
This command extracts the file under point and writes the data to a
file.

818
** Emacs Lisp mode
Michael Albinus's avatar
Michael Albinus committed
819

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

822 823 824 825
*** 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.
826

827 828
** Calendar

829
+++
830
*** New user option 'calendar-time-zone-style'.
Michael Albinus's avatar
Michael Albinus committed
831
If 'numeric', calendar functions (eg 'calendar-sunrise-sunset') that display
832
time zones will use a form like "+0100" instead of "CET".
833

834 835
** Dired

836 837 838 839 840
+++
*** New user option 'dired-kill-when-opening-new-dired-buffer'.
If non-nil, Dired will kill the current buffer when selecting a new
directory to display.

841
---
842
*** Behavior change on 'dired-clean-confirm-killing-deleted-buffers'.
843 844 845 846
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.

847 848
+++
*** New user option 'dired-switches-in-mode-line'.
849
This user option controls how 'ls' switches are displayed in the mode
Eli Zaretskii's avatar
Eli Zaretskii committed
850 851 852
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.
853

854 855 856 857 858 859 860 861 862 863 864 865
+++
*** 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.

866
---
867
*** Broken and circular links are shown with the 'dired-broken-symlink' face.
868

869 870
*** '=' ('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
871
for diffing is the newest backup file.  You can now use 'M-n' to quickly
872 873
select a different backup file instead.

Tino Calancha's avatar
Tino Calancha committed
874 875
+++
*** New user option 'dired-maybe-use-globstar'.
876 877 878 879 880 881
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
882

883
+++
884
*** New user option 'dired-copy-dereference'.
Michael Albinus's avatar
Michael Albinus committed
885 886 887
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.
888

889
*** New user option 'dired-do-revert-buffer'.
890
Non-nil reverts the destination Dired buffer after performing one
891 892 893
of these operations: 'dired-do-copy', 'dired-do-rename',
'dired-do-symlink', 'dired-do-hardlink'.

Michael Albinus's avatar
Michael Albinus committed
894 895 896 897 898
*** 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.
899

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

903
+++
904
*** 'dired-jump' and 'dired-jump-other-window' moved from 'dired-x' to 'dired'.
905 906 907 908 909 910
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
911
keys, add the following to your init file:
912 913 914 915

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

916 917
** Change Logs and VC

918
*** vc-git now sets the 'GIT_LITERAL_PATHSPECS' environment variable.
919 920 921 922 923
This ensures that Git operations on files containing wildcard
characters work as they're supposed to.  However, this also affects
scripts running from Git hooks, and these have to "unset
GIT_LITERAL_PATHSPECS" to work as before.

924 925 926 927 928
*** 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.

929 930
*** New command 'vc-dir-root' uses the root directory without asking.

931 932 933 934 935
---
*** New face 'log-view-commit-body'.
This is used when expanding commit messages from 'vc-print-root-log'
and similar commands.

936
---
937
*** New faces for 'vc-dir' buffers.
938 939
Those are: 'vc-dir-header', 'vc-dir-header-value', 'vc-dir-directory',
'vc-dir-file', 'vc-dir-mark-indicator', 'vc-dir-status-warning',
940 941
'vc-dir-status-edited', 'vc-dir-status-up-to-date',
'vc-dir-status-ignored'.
942

943 944 945 946 947 948 949 950
---
*** 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).

951 952 953
*** New commands 'vc-dir-mark-registered-files' (bound to '* r') and
'vc-dir-mark-unregistered-files'.

954 955 956
*** Support for bookmark.el.
Bookmark locations can refer to VC directory buffers.

957
---
958 959 960
*** 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').
961

962
---
963
*** 'vc-hg' now uses 'hg summary' to populate extra 'vc-dir' headers.
964

965
---
966
*** New user option 'vc-git-revision-complete-only-branches'.
967
If non-nil, only branches and remotes are considered when doing
968 969
completion over Git branch names.  The default is nil, which causes
tags to be considered as well.
<