aboutsummaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorEli Zaretskii2022-04-13 16:52:50 +0300
committerEli Zaretskii2022-04-13 16:52:50 +0300
commit5a14406ecfbd1efd03a00c49a84c19d31bb77f48 (patch)
tree0ef3345816636a1530806b2585ba1f40c30c84de /etc
parentbe42fdc6dc60bec1d14065d04dc43b693398c591 (diff)
parentf2ae39829812098d8269eafbc0fcb98959ee5bb7 (diff)
downloademacs-5a14406ecfbd1efd03a00c49a84c19d31bb77f48.tar.gz
emacs-5a14406ecfbd1efd03a00c49a84c19d31bb77f48.zip
Merge from origin/emacs-28
# Conflicts: # etc/NEWS # lisp/desktop.el # lisp/dired.el
Diffstat (limited to 'etc')
-rw-r--r--etc/NEWS.28691
1 files changed, 0 insertions, 691 deletions
diff --git a/etc/NEWS.28 b/etc/NEWS.28
index 84041d79c20..995de8d3177 100644
--- a/etc/NEWS.28
+++ b/etc/NEWS.28
@@ -15,12 +15,6 @@ in older Emacs versions.
15You can narrow news to a specific version by calling 'view-emacs-news' 15You can narrow news to a specific version by calling 'view-emacs-news'
16with a prefix argument or by typing 'C-u C-h C-n'. 16with a prefix argument or by typing 'C-u C-h C-n'.
17 17
18Temporary note:
19+++ indicates that all relevant manuals in doc/ have been updated.
20--- means no change in the manuals is needed.
21When you add a new item, use the appropriate mark if you are sure it
22applies, and please also update docstrings as needed.
23
24 18
25* Installation Changes in Emacs 28.1 19* Installation Changes in Emacs 28.1
26 20
@@ -58,30 +52,25 @@ still be available when HarfBuzz is supported, but will not be used by
58default. We strongly recommend building with HarfBuzz support. 'x' is 52default. We strongly recommend building with HarfBuzz support. 'x' is
59still a valid backend. 53still a valid backend.
60 54
61---
62** 'configure' now warns about building with libXft support. 55** 'configure' now warns about building with libXft support.
63libXft is unmaintained, and causes a number of problems with modern 56libXft is unmaintained, and causes a number of problems with modern
64fonts including but not limited to crashes; support for it may be 57fonts including but not limited to crashes; support for it may be
65removed in a future version of Emacs. Please consider using 58removed in a future version of Emacs. Please consider using
66Cairo + HarfBuzz instead. 59Cairo + HarfBuzz instead.
67 60
68---
69** 'configure' now warns about not using HarfBuzz if using Cairo. 61** 'configure' now warns about not using HarfBuzz if using Cairo.
70We want to encourage people to use the most modern font features 62We want to encourage people to use the most modern font features
71available, and this is the Cairo graphics library + HarfBuzz for font 63available, and this is the Cairo graphics library + HarfBuzz for font
72shaping, so 'configure' now recommends that combination. 64shaping, so 'configure' now recommends that combination.
73 65
74---
75** Building without double buffering support. 66** Building without double buffering support.
76'configure --with-xdbe=no' can now be used to disable double buffering 67'configure --with-xdbe=no' can now be used to disable double buffering
77at build time. 68at build time.
78 69
79---
80** The configure option '--without-makeinfo' has been removed. 70** The configure option '--without-makeinfo' has been removed.
81This was only ever relevant when building from a repository checkout. 71This was only ever relevant when building from a repository checkout.
82This now requires makeinfo, which is part of the texinfo package. 72This now requires makeinfo, which is part of the texinfo package.
83 73
84---
85** New configure option '--disable-year2038'. 74** New configure option '--disable-year2038'.
86This causes Emacs to use only 32-bit time_t on platforms that have 75This causes Emacs to use only 32-bit time_t on platforms that have
87both 32- and 64-bit time_t. This may help when linking Emacs with a 76both 32- and 64-bit time_t. This may help when linking Emacs with a
@@ -90,16 +79,13 @@ currently affects only 32-bit ARM and x86 running GNU/Linux with glibc
902.34 and later. Emacs now defaults to 64-bit time_t on these 792.34 and later. Emacs now defaults to 64-bit time_t on these
91platforms. 80platforms.
92 81
93---
94** Support for building with '-fcheck-pointer-bounds' has been removed. 82** Support for building with '-fcheck-pointer-bounds' has been removed.
95GCC has withdrawn the '-fcheck-pointer-bounds' option and support for 83GCC has withdrawn the '-fcheck-pointer-bounds' option and support for
96its implementation has been removed from the Linux kernel. 84its implementation has been removed from the Linux kernel.
97 85
98---
99** The ftx font backend driver has been removed. 86** The ftx font backend driver has been removed.
100It was declared obsolete in Emacs 27.1. 87It was declared obsolete in Emacs 27.1.
101 88
102---
103** Emacs no longer supports old OpenBSD systems. 89** Emacs no longer supports old OpenBSD systems.
104OpenBSD 5.3 and older releases are no longer supported, as they lack 90OpenBSD 5.3 and older releases are no longer supported, as they lack
105proper pty support that Emacs needs. 91proper pty support that Emacs needs.
@@ -107,13 +93,11 @@ proper pty support that Emacs needs.
107 93
108* Startup Changes in Emacs 28.1 94* Startup Changes in Emacs 28.1
109 95
110---
111** In GTK builds, Emacs now supports startup notification. 96** In GTK builds, Emacs now supports startup notification.
112This means that Emacs won't steal keyboard focus upon startup 97This means that Emacs won't steal keyboard focus upon startup
113(when started via the Desktop) if the user is typing into another 98(when started via the Desktop) if the user is typing into another
114application. 99application.
115 100
116---
117** Errors in 'kill-emacs-hook' no longer prevent Emacs from shutting down. 101** Errors in 'kill-emacs-hook' no longer prevent Emacs from shutting down.
118If a function in that hook signals an error in an interactive Emacs, 102If a function in that hook signals an error in an interactive Emacs,
119the user will be prompted on whether to continue. If the user doesn't 103the user will be prompted on whether to continue. If the user doesn't
@@ -136,7 +120,6 @@ lacks the terminfo database, you can instruct Emacs to support 24-bit
136true color by setting 'COLORTERM=truecolor' in the environment. This is 120true color by setting 'COLORTERM=truecolor' in the environment. This is
137useful on systems such as FreeBSD which ships only with "etc/termcap". 121useful on systems such as FreeBSD which ships only with "etc/termcap".
138 122
139---
140** File names given on the command line are now be pushed onto history. 123** File names given on the command line are now be pushed onto history.
141The file names will be pushed onto 'file-name-history', like the names 124The file names will be pushed onto 'file-name-history', like the names
142of files visited via 'C-x C-f' and other commands. 125of files visited via 'C-x C-f' and other commands.
@@ -144,10 +127,8 @@ of files visited via 'C-x C-f' and other commands.
144 127
145* Changes in Emacs 28.1 128* Changes in Emacs 28.1
146 129
147---
148** Emacs now supports Unicode Standard version 14.0. 130** Emacs now supports Unicode Standard version 14.0.
149 131
150+++
151** Improved support for Emoji. 132** Improved support for Emoji.
152On capable systems, Emacs now correctly displays Emoji and Emoji 133On capable systems, Emacs now correctly displays Emoji and Emoji
153sequences by default, provided that a suitable font is available to 134sequences by default, provided that a suitable font is available to
@@ -171,20 +152,17 @@ the above example. (Previously, the Emoji characters were assigned to
171the 'symbol' script, together with other symbol and punctuation 152the 'symbol' script, together with other symbol and punctuation
172characters.) 153characters.)
173 154
174+++
175** 'glyphless-char-display-control' now applies to Variation Selectors. 155** 'glyphless-char-display-control' now applies to Variation Selectors.
176VS-1 through VS-16 are now displayed as 'thin-space' by default when 156VS-1 through VS-16 are now displayed as 'thin-space' by default when
177not composed with previous characters (typically, as part of Emoji 157not composed with previous characters (typically, as part of Emoji
178sequences). 158sequences).
179 159
180+++
181** New command 'execute-extended-command-for-buffer'. 160** New command 'execute-extended-command-for-buffer'.
182This new command, bound to 'M-S-x', works like 161This new command, bound to 'M-S-x', works like
183'execute-extended-command', but limits the set of commands to the 162'execute-extended-command', but limits the set of commands to the
184commands that have been determined to be particularly useful with the 163commands that have been determined to be particularly useful with the
185current mode. 164current mode.
186 165
187+++
188** New user option 'read-extended-command-predicate'. 166** New user option 'read-extended-command-predicate'.
189This user option controls how 'M-x' performs completion of commands when 167This user option controls how 'M-x' performs completion of commands when
190you type 'TAB'. By default, any command that matches what you have 168you type 'TAB'. By default, any command that matches what you have
@@ -193,36 +171,30 @@ option to exclude commands that are not applicable to the current
193buffer's major and minor modes, and respect the command's completion 171buffer's major and minor modes, and respect the command's completion
194predicate (if any). 172predicate (if any).
195 173
196+++
197** Completion on 'M-x' shows key bindings for commands. 174** Completion on 'M-x' shows key bindings for commands.
198When 'suggest-key-bindings' is non-nil (as it is by default), the 175When 'suggest-key-bindings' is non-nil (as it is by default), the
199completion list popped up by 'M-x' shows the key bindings for all the 176completion list popped up by 'M-x' shows the key bindings for all the
200commands shown in the list of candidate completions that have a key 177commands shown in the list of candidate completions that have a key
201binding. 178binding.
202 179
203+++
204** New user option 'completions-detailed'. 180** New user option 'completions-detailed'.
205When non-nil, some commands like 'describe-symbol' show more detailed 181When non-nil, some commands like 'describe-symbol' show more detailed
206completions with more information in completion prefix and suffix. 182completions with more information in completion prefix and suffix.
207The default is nil. 183The default is nil.
208 184
209---
210** 'C-s' in 'M-x' now once again searches over completions. 185** 'C-s' in 'M-x' now once again searches over completions.
211In Emacs 23, typing 'M-x' ('read-extended-command') and then 'C-s' (to 186In Emacs 23, typing 'M-x' ('read-extended-command') and then 'C-s' (to
212do an interactive search) would search over possible completions. 187do an interactive search) would search over possible completions.
213This was lost in Emacs 24, but is now back again. 188This was lost in Emacs 24, but is now back again.
214 189
215+++
216** User option 'completions-format' supports a new value 'one-column'. 190** User option 'completions-format' supports a new value 'one-column'.
217 191
218+++
219** New system for displaying documentation for groups of functions. 192** New system for displaying documentation for groups of functions.
220This can either be used by saying 'M-x shortdoc-display-group' and 193This can either be used by saying 'M-x shortdoc-display-group' and
221choosing a group, or clicking a button in the "*Help*" buffers when 194choosing a group, or clicking a button in the "*Help*" buffers when
222looking at the doc string of a function that belongs to one of these 195looking at the doc string of a function that belongs to one of these
223groups. 196groups.
224 197
225+++
226** New minor mode 'context-menu-mode' for context menus popped by 'mouse-3'. 198** New minor mode 'context-menu-mode' for context menus popped by 'mouse-3'.
227When this mode is enabled, clicking 'down-mouse-3' (usually, the 199When this mode is enabled, clicking 'down-mouse-3' (usually, the
228right mouse button) anywhere in the buffer pops up a menu whose 200right mouse button) anywhere in the buffer pops up a menu whose
@@ -232,7 +204,6 @@ by customizing the user option 'context-menu-functions'. You can also
232invoke the context menu by pressing 'S-<F10>' or, on macOS, by 204invoke the context menu by pressing 'S-<F10>' or, on macOS, by
233clicking 'C-down-mouse-1'. 205clicking 'C-down-mouse-1'.
234 206
235+++
236** A new keymap for buffer actions has been added. 207** A new keymap for buffer actions has been added.
237The 'C-x x' keymap now holds keystrokes for various buffer-oriented 208The 'C-x x' keymap now holds keystrokes for various buffer-oriented
238commands. The new keystrokes are 'C-x x g' ('revert-buffer-quick'), 209commands. The new keystrokes are 'C-x x g' ('revert-buffer-quick'),
@@ -240,34 +211,29 @@ commands. The new keystrokes are 'C-x x g' ('revert-buffer-quick'),
240('clone-buffer'), 'C-x x i' ('insert-buffer'), 'C-x x t' 211('clone-buffer'), 'C-x x i' ('insert-buffer'), 'C-x x t'
241('toggle-truncate-lines') and 'C-x x f' ('font-lock-update'). 212('toggle-truncate-lines') and 'C-x x f' ('font-lock-update').
242 213
243+++
244** Modifiers now go outside angle brackets in pretty-printed key bindings. 214** Modifiers now go outside angle brackets in pretty-printed key bindings.
245For example, 'RET' with Control and Meta modifiers is now shown as 215For example, 'RET' with Control and Meta modifiers is now shown as
246'C-M-<return>' instead of '<C-M-return>'. Either variant can be used 216'C-M-<return>' instead of '<C-M-return>'. Either variant can be used
247as input; functions such as 'kbd' and 'read-kbd-macro' accept both 217as input; functions such as 'kbd' and 'read-kbd-macro' accept both
248styles as equivalent (they have done so for a long time). 218styles as equivalent (they have done so for a long time).
249 219
250---
251** 'eval-expression' no longer signals an error on incomplete expressions. 220** 'eval-expression' no longer signals an error on incomplete expressions.
252Previously, typing 'M-: ( RET' would result in Emacs saying "End of 221Previously, typing 'M-: ( RET' would result in Emacs saying "End of
253file during parsing" and dropping out of the minibuffer. The user 222file during parsing" and dropping out of the minibuffer. The user
254would have to type 'M-: M-p' to edit and redo the expression. Now 223would have to type 'M-: M-p' to edit and redo the expression. Now
255Emacs will echo the message and allow the user to continue editing. 224Emacs will echo the message and allow the user to continue editing.
256 225
257+++
258** 'eval-last-sexp' now handles 'defvar'/'defcustom'/'defface' specially. 226** 'eval-last-sexp' now handles 'defvar'/'defcustom'/'defface' specially.
259This command would previously not redefine values defined by these 227This command would previously not redefine values defined by these
260forms, but this command has now been changed to work more like 228forms, but this command has now been changed to work more like
261'eval-defun', and reset the values as specified. 229'eval-defun', and reset the values as specified.
262 230
263---
264** New user option 'use-short-answers'. 231** New user option 'use-short-answers'.
265When non-nil, the function 'y-or-n-p' is used instead of 232When non-nil, the function 'y-or-n-p' is used instead of
266'yes-or-no-p'. This eliminates the need to define an alias that maps 233'yes-or-no-p'. This eliminates the need to define an alias that maps
267one to another in the init file. The same user option also controls 234one to another in the init file. The same user option also controls
268whether the function 'read-answer' accepts short answers. 235whether the function 'read-answer' accepts short answers.
269 236
270+++
271** New user option 'kill-buffer-delete-auto-save-files'. 237** New user option 'kill-buffer-delete-auto-save-files'.
272If non-nil, killing a buffer that has an auto-save file will prompt 238If non-nil, killing a buffer that has an auto-save file will prompt
273the user for whether that auto-save file should be deleted. (Note 239the user for whether that auto-save file should be deleted. (Note
@@ -277,37 +243,31 @@ unsaved changes, but this has apparently not worked for several
277decades, so the documented semantics of this variable has been changed 243decades, so the documented semantics of this variable has been changed
278to match the behavior.) 244to match the behavior.)
279 245
280+++
281** New user option 'next-error-message-highlight'. 246** New user option 'next-error-message-highlight'.
282In addition to a fringe arrow, 'next-error' error may now optionally 247In addition to a fringe arrow, 'next-error' error may now optionally
283highlight the current error message in the 'next-error' buffer. 248highlight the current error message in the 'next-error' buffer.
284This user option can be also customized to keep highlighting on all 249This user option can be also customized to keep highlighting on all
285visited errors, so you can have an overview what errors were already visited. 250visited errors, so you can have an overview what errors were already visited.
286 251
287---
288** New choice 'next-error-quit-window' for 'next-error-found-function'. 252** New choice 'next-error-quit-window' for 'next-error-found-function'.
289When 'next-error-found-function' is customized to 'next-error-quit-window', 253When 'next-error-found-function' is customized to 'next-error-quit-window',
290then typing the numeric prefix argument 0 before the command 'next-error' 254then typing the numeric prefix argument 0 before the command 'next-error'
291will quit the source window after visiting the next occurrence. 255will quit the source window after visiting the next occurrence.
292 256
293+++
294** New user option 'file-preserve-symlinks-on-save'. 257** New user option 'file-preserve-symlinks-on-save'.
295This controls what Emacs does when saving buffers that visit files via 258This controls what Emacs does when saving buffers that visit files via
296symbolic links, and 'file-precious-flag' is non-nil. 259symbolic links, and 'file-precious-flag' is non-nil.
297 260
298+++
299** New user option 'copy-directory-create-symlink'. 261** New user option 'copy-directory-create-symlink'.
300If non-nil, will make 'copy-directory' (when used on a symbolic 262If non-nil, will make 'copy-directory' (when used on a symbolic
301link) copy the link instead of following the link. The default is 263link) copy the link instead of following the link. The default is
302nil, so the default behavior is unchanged. 264nil, so the default behavior is unchanged.
303 265
304+++
305** New user option 'ignored-local-variable-values'. 266** New user option 'ignored-local-variable-values'.
306This is the opposite of 'safe-local-variable-values' -- it's an alist 267This is the opposite of 'safe-local-variable-values' -- it's an alist
307of variable-value pairs that are to be ignored when reading a 268of variable-value pairs that are to be ignored when reading a
308local-variables section of a file. 269local-variables section of a file.
309 270
310---
311** Specific warnings can now be disabled from the warning buffer. 271** Specific warnings can now be disabled from the warning buffer.
312When a warning is displayed to the user, the resulting buffer now has 272When a warning is displayed to the user, the resulting buffer now has
313buttons which allow making permanent changes to the treatment of that 273buttons which allow making permanent changes to the treatment of that
@@ -315,21 +275,17 @@ warning. Automatic showing of the warning can be disabled (although
315it is still logged to the "*Messages*" buffer), or the warning can be 275it is still logged to the "*Messages*" buffer), or the warning can be
316disabled entirely. 276disabled entirely.
317 277
318+++
319** ".dir-locals.el" now supports setting 'auto-mode-alist'. 278** ".dir-locals.el" now supports setting 'auto-mode-alist'.
320The new 'auto-mode-alist' specification in ".dir-locals.el" files can 279The new 'auto-mode-alist' specification in ".dir-locals.el" files can
321now be used to override the global 'auto-mode-alist' in the current 280now be used to override the global 'auto-mode-alist' in the current
322directory tree. 281directory tree.
323 282
324---
325** User option 'uniquify-buffer-name-style' can now be a function. 283** User option 'uniquify-buffer-name-style' can now be a function.
326This user option can be one of the predefined styles or a function to 284This user option can be one of the predefined styles or a function to
327personalize the uniquified buffer name. 285personalize the uniquified buffer name.
328 286
329---
330** 'remove-hook' is now an interactive command. 287** 'remove-hook' is now an interactive command.
331 288
332---
333** 'expand-file-name' now checks for null bytes in filenames. 289** 'expand-file-name' now checks for null bytes in filenames.
334The function will now check for null bytes in both NAME and 290The function will now check for null bytes in both NAME and
335DEFAULT-DIRECTORY arguments, as well as in the 'default-directory' 291DEFAULT-DIRECTORY arguments, as well as in the 'default-directory'
@@ -339,22 +295,18 @@ This means that practically all file-related operations will now check
339file names for null bytes, thus avoiding subtle bugs with silently 295file names for null bytes, thus avoiding subtle bugs with silently
340using only the part of file name up to the first null byte. 296using only the part of file name up to the first null byte.
341 297
342---
343** Frames 298** Frames
344 299
345+++
346*** The key prefix 'C-x 5 5' displays next command buffer in a new frame. 300*** The key prefix 'C-x 5 5' displays next command buffer in a new frame.
347It's bound to the command 'other-frame-prefix' that requests the buffer 301It's bound to the command 'other-frame-prefix' that requests the buffer
348of the next command to be displayed in a new frame. 302of the next command to be displayed in a new frame.
349 303
350+++
351*** New command 'clone-frame' (bound to 'C-x 5 c'). 304*** New command 'clone-frame' (bound to 'C-x 5 c').
352This is like 'C-x 5 2', but uses the window configuration and frame 305This is like 'C-x 5 2', but uses the window configuration and frame
353parameters of the current frame instead of 'default-frame-alist'. 306parameters of the current frame instead of 'default-frame-alist'.
354When called interactively with a prefix arg, the window configuration 307When called interactively with a prefix arg, the window configuration
355is not cloned. 308is not cloned.
356 309
357---
358*** Default values of 'frame-title-format' and 'icon-title-format' have changed. 310*** Default values of 'frame-title-format' and 'icon-title-format' have changed.
359These variables are used to display the title bar of visible frames 311These variables are used to display the title bar of visible frames
360and the title bar of an iconified frame. They now show the name of 312and the title bar of an iconified frame. They now show the name of
@@ -365,68 +317,56 @@ your init file:
365 (setq frame-title-format '(multiple-frames "%b" 317 (setq frame-title-format '(multiple-frames "%b"
366 ("" invocation-name "@" system-name))) 318 ("" invocation-name "@" system-name)))
367 319
368+++
369*** New frame parameter 'drag-with-tab-line'. 320*** New frame parameter 'drag-with-tab-line'.
370This parameter, similar to 'drag-with-header-line', allows moving frames 321This parameter, similar to 'drag-with-header-line', allows moving frames
371by dragging the tab lines of their topmost windows with the mouse. 322by dragging the tab lines of their topmost windows with the mouse.
372 323
373+++
374*** New optional behavior of 'delete-other-frames'. 324*** New optional behavior of 'delete-other-frames'.
375When invoked with a prefix argument, 'delete-other-frames' now 325When invoked with a prefix argument, 'delete-other-frames' now
376iconifies frames, rather than deleting them. 326iconifies frames, rather than deleting them.
377 327
378---
379*** Commands 'set-frame-width' and 'set-frame-height' now prompt for values. 328*** Commands 'set-frame-width' and 'set-frame-height' now prompt for values.
380These commands now prompt for the value via the minibuffer, instead of 329These commands now prompt for the value via the minibuffer, instead of
381requiring the user to specify the value via the prefix argument. 330requiring the user to specify the value via the prefix argument.
382 331
383** Windows 332** Windows
384 333
385+++
386*** The key prefix 'C-x 4 1' displays next command buffer in the same window. 334*** The key prefix 'C-x 4 1' displays next command buffer in the same window.
387It's bound to the command 'same-window-prefix' that requests the buffer 335It's bound to the command 'same-window-prefix' that requests the buffer
388of the next command to be displayed in the same window. 336of the next command to be displayed in the same window.
389 337
390+++
391*** The key prefix 'C-x 4 4' displays next command buffer in a new window. 338*** The key prefix 'C-x 4 4' displays next command buffer in a new window.
392It's bound to the command 'other-window-prefix' that requests the buffer 339It's bound to the command 'other-window-prefix' that requests the buffer
393of the next command to be displayed in a new window. 340of the next command to be displayed in a new window.
394 341
395+++
396*** New command 'recenter-other-window', bound to 'S-M-C-l'. 342*** New command 'recenter-other-window', bound to 'S-M-C-l'.
397Like 'recenter-top-bottom', but acting on the other window. 343Like 'recenter-top-bottom', but acting on the other window.
398 344
399+++
400*** New user option 'delete-window-choose-selected'. 345*** New user option 'delete-window-choose-selected'.
401This allows specifying how Emacs chooses which window will be the 346This allows specifying how Emacs chooses which window will be the
402frame's selected window after the currently selected window is 347frame's selected window after the currently selected window is
403deleted. 348deleted.
404 349
405+++
406*** New argument NO-OTHER for some window functions. 350*** New argument NO-OTHER for some window functions.
407'get-lru-window', 'get-mru-window' and 'get-largest-window' now accept a 351'get-lru-window', 'get-mru-window' and 'get-largest-window' now accept a
408new optional argument NO-OTHER which, if non-nil, avoids returning a 352new optional argument NO-OTHER which, if non-nil, avoids returning a
409window whose 'no-other-window' parameter is non-nil. 353window whose 'no-other-window' parameter is non-nil.
410 354
411+++
412*** New 'display-buffer' function 'display-buffer-use-least-recent-window'. 355*** New 'display-buffer' function 'display-buffer-use-least-recent-window'.
413This is like 'display-buffer-use-some-window', but won't reuse the 356This is like 'display-buffer-use-some-window', but won't reuse the
414current window, and when called repeatedly will try not to reuse a 357current window, and when called repeatedly will try not to reuse a
415previously selected window. 358previously selected window.
416 359
417+++
418*** New function 'window-bump-use-time'. 360*** New function 'window-bump-use-time'.
419This updates the use time of a window. 361This updates the use time of a window.
420 362
421** Minibuffer 363** Minibuffer
422 364
423+++
424*** Minibuffer scrolling is now conservative by default. 365*** Minibuffer scrolling is now conservative by default.
425This is controlled by the new variable 'scroll-minibuffer-conservatively'. 366This is controlled by the new variable 'scroll-minibuffer-conservatively'.
426It is t by default; setting it to nil will cause scrolling in the 367It is t by default; setting it to nil will cause scrolling in the
427minibuffer obey the value of 'scroll-conservatively'. 368minibuffer obey the value of 'scroll-conservatively'.
428 369
429+++
430*** Improved handling of minibuffers on switching frames. 370*** Improved handling of minibuffers on switching frames.
431By default, when you switch to another frame, an active minibuffer now 371By default, when you switch to another frame, an active minibuffer now
432moves to the newly selected frame. Nevertheless, the effect of what 372moves to the newly selected frame. Nevertheless, the effect of what
@@ -439,14 +379,12 @@ behavior, which mixed these two, can be approximated by customizing
439'minibuffer-follows-selected-frame' to a value which is neither nil 379'minibuffer-follows-selected-frame' to a value which is neither nil
440nor t. 380nor t.
441 381
442+++
443*** New user option 'read-minibuffer-restore-windows'. 382*** New user option 'read-minibuffer-restore-windows'.
444When customized to nil, it uses 'minibuffer-restore-windows' in 383When customized to nil, it uses 'minibuffer-restore-windows' in
445'minibuffer-exit-hook' to remove only the window showing the 384'minibuffer-exit-hook' to remove only the window showing the
446"*Completions*" buffer, but keeps all other windows created 385"*Completions*" buffer, but keeps all other windows created
447while the minibuffer was active. 386while the minibuffer was active.
448 387
449---
450*** New variable 'redisplay-adhoc-scroll-in-resize-mini-windows'. 388*** New variable 'redisplay-adhoc-scroll-in-resize-mini-windows'.
451Customizing it to nil will disable the ad-hoc auto-scrolling of 389Customizing it to nil will disable the ad-hoc auto-scrolling of
452minibuffer text shown in mini-windows when resizing those windows. 390minibuffer text shown in mini-windows when resizing those windows.
@@ -457,13 +395,11 @@ cases anyway.
457 395
458** Mode Line 396** Mode Line
459 397
460+++
461*** New user option 'mode-line-compact'. 398*** New user option 'mode-line-compact'.
462If non-nil, repeating spaces are compressed into a single space. If 399If non-nil, repeating spaces are compressed into a single space. If
463'long', this is only done when the mode line is longer than the 400'long', this is only done when the mode line is longer than the
464current window width (in columns). 401current window width (in columns).
465 402
466+++
467*** New user options to control format of line/column numbers in the mode line. 403*** New user options to control format of line/column numbers in the mode line.
468'mode-line-position-line-format' is the line number format (when 404'mode-line-position-line-format' is the line number format (when
469'line-number-mode' is on), 'mode-line-position-column-format' is 405'line-number-mode' is on), 'mode-line-position-column-format' is
@@ -473,16 +409,13 @@ both modes are on).
473 409
474** Tab Bars and Tab Lines 410** Tab Bars and Tab Lines
475 411
476+++
477*** The prefix key 'C-x t t' can be used to display a buffer in a new tab. 412*** The prefix key 'C-x t t' can be used to display a buffer in a new tab.
478Typing 'C-x t t' before a command will cause the buffer shown by that 413Typing 'C-x t t' before a command will cause the buffer shown by that
479command to be displayed in a new tab. 'C-x t t' is bound to the 414command to be displayed in a new tab. 'C-x t t' is bound to the
480command 'other-tab-prefix'. 415command 'other-tab-prefix'.
481 416
482+++
483*** New command 'C-x t C-r' to open file read-only in the other tab. 417*** New command 'C-x t C-r' to open file read-only in the other tab.
484 418
485+++
486*** The tab bar now supports more mouse commands. 419*** The tab bar now supports more mouse commands.
487Clicking 'mouse-2' closes the tab, 'mouse-3' displays the context menu 420Clicking 'mouse-2' closes the tab, 'mouse-3' displays the context menu
488with items that operate on the clicked tab. Dragging the tab with 421with items that operate on the clicked tab. Dragging the tab with
@@ -490,20 +423,17 @@ with items that operate on the clicked tab. Dragging the tab with
490scrolling switches to the previous/next tab, and holding the Shift key 423scrolling switches to the previous/next tab, and holding the Shift key
491during scrolling moves the tab to the left/right. 424during scrolling moves the tab to the left/right.
492 425
493+++
494*** Frame-specific appearance of the tab bar when 'tab-bar-show' is a number. 426*** Frame-specific appearance of the tab bar when 'tab-bar-show' is a number.
495When 'tab-bar-show' is a number, the tab bar on different frames can 427When 'tab-bar-show' is a number, the tab bar on different frames can
496be shown or hidden independently, as determined by the number of tabs 428be shown or hidden independently, as determined by the number of tabs
497on each frame compared to the numerical value of 'tab-bar-show'. 429on each frame compared to the numerical value of 'tab-bar-show'.
498 430
499+++
500*** New command 'toggle-frame-tab-bar'. 431*** New command 'toggle-frame-tab-bar'.
501It can be used to enable/disable the tab bar on the currently selected 432It can be used to enable/disable the tab bar on the currently selected
502frame regardless of the values of 'tab-bar-mode' and 'tab-bar-show'. 433frame regardless of the values of 'tab-bar-mode' and 'tab-bar-show'.
503This allows enabling/disabling the tab bar independently on different 434This allows enabling/disabling the tab bar independently on different
504frames. 435frames.
505 436
506+++
507*** New user option 'tab-bar-format' defines a list of tab bar items. 437*** New user option 'tab-bar-format' defines a list of tab bar items.
508When it contains 'tab-bar-format-global' (possibly appended after 438When it contains 'tab-bar-format-global' (possibly appended after
509'tab-bar-format-align-right'), then after enabling 'display-time-mode' 439'tab-bar-format-align-right'), then after enabling 'display-time-mode'
@@ -512,7 +442,6 @@ aligned to the right on the tab bar instead of on the mode line.
512When 'tab-bar-format-tabs' is replaced with 'tab-bar-format-tabs-groups', 442When 'tab-bar-format-tabs' is replaced with 'tab-bar-format-tabs-groups',
513the tab bar displays tab groups. 443the tab bar displays tab groups.
514 444
515+++
516*** New optional key binding for 'tab-last'. 445*** New optional key binding for 'tab-last'.
517If you customize the user option 'tab-bar-select-tab-modifiers' to 446If you customize the user option 'tab-bar-select-tab-modifiers' to
518allow selecting tabs using their index numbers, the '<MODIFIER>-9' key 447allow selecting tabs using their index numbers, the '<MODIFIER>-9' key
@@ -522,20 +451,16 @@ is any of the modifiers in the list that is the value of
522which count from the last tab: 1 is the last tab, 2 the one before 451which count from the last tab: 1 is the last tab, 2 the one before
523that, etc. 452that, etc.
524 453
525---
526*** New command 'tab-duplicate' bound to 'C-x t n'. 454*** New command 'tab-duplicate' bound to 'C-x t n'.
527 455
528---
529*** 'C-x t N' creates a new tab at the specified absolute position. 456*** 'C-x t N' creates a new tab at the specified absolute position.
530The position is provided as prefix arg, and specifies an index that 457The position is provided as prefix arg, and specifies an index that
531starts at 1. Negative values count from the end of the tab bar. 458starts at 1. Negative values count from the end of the tab bar.
532 459
533---
534*** 'C-x t M' moves the current tab to the specified absolute position. 460*** 'C-x t M' moves the current tab to the specified absolute position.
535The position is provided as prefix arg, whose interpretation is as in 461The position is provided as prefix arg, whose interpretation is as in
536'C-x t N'. 462'C-x t N'.
537 463
538---
539*** 'C-x t G' assigns a tab to a named group of tabs. 464*** 'C-x t G' assigns a tab to a named group of tabs.
540'tab-close-group' closes all tabs that belong to the selected group. 465'tab-close-group' closes all tabs that belong to the selected group.
541The user option 'tab-bar-new-tab-group' defines the default group of 466The user option 'tab-bar-new-tab-group' defines the default group of
@@ -543,18 +468,14 @@ new tabs. After customizing 'tab-bar-tab-post-change-group-functions'
543to 'tab-bar-move-tab-to-group', changing the group of a tab will also 468to 'tab-bar-move-tab-to-group', changing the group of a tab will also
544move it closer to other tabs in the same group. 469move it closer to other tabs in the same group.
545 470
546---
547*** New user option 'tab-bar-tab-name-format-function'. 471*** New user option 'tab-bar-tab-name-format-function'.
548 472
549---
550*** New user option 'tab-line-tab-name-format-function'. 473*** New user option 'tab-line-tab-name-format-function'.
551 474
552---
553*** The tabs in the tab line can now be scrolled using horizontal scroll. 475*** The tabs in the tab line can now be scrolled using horizontal scroll.
554If your mouse or trackpad supports it, you can now scroll tabs when 476If your mouse or trackpad supports it, you can now scroll tabs when
555the mouse pointer is in the tab line by scrolling left or right. 477the mouse pointer is in the tab line by scrolling left or right.
556 478
557---
558*** New tab-line faces and user options. 479*** New tab-line faces and user options.
559The face 'tab-line-tab-special' is used for tabs whose buffers are 480The face 'tab-line-tab-special' is used for tabs whose buffers are
560special, i.e. buffers that don't visit a file. The face 481special, i.e. buffers that don't visit a file. The face
@@ -569,17 +490,14 @@ in other ways.
569 490
570** Mouse wheel 491** Mouse wheel
571 492
572---
573*** Mouse wheel scrolling now defaults to one line at a time. 493*** Mouse wheel scrolling now defaults to one line at a time.
574 494
575---
576*** Mouse wheel scrolling now works on more parts of frame's display. 495*** Mouse wheel scrolling now works on more parts of frame's display.
577When using 'mouse-wheel-mode', the mouse wheel will now scroll also when 496When using 'mouse-wheel-mode', the mouse wheel will now scroll also when
578the mouse cursor is on the scroll bars, fringes, margins, header line, 497the mouse cursor is on the scroll bars, fringes, margins, header line,
579and mode line. ('mouse-wheel-mode' is enabled by default on most graphical 498and mode line. ('mouse-wheel-mode' is enabled by default on most graphical
580displays.) 499displays.)
581 500
582+++
583*** Mouse wheel scrolling with Shift modifier now scrolls horizontally. 501*** Mouse wheel scrolling with Shift modifier now scrolls horizontally.
584This works in text buffers and over images. Typing a numeric prefix arg 502This works in text buffers and over images. Typing a numeric prefix arg
585(e.g. 'M-5') before starting horizontal scrolling changes its step value. 503(e.g. 'M-5') before starting horizontal scrolling changes its step value.
@@ -587,10 +505,8 @@ The value is saved in the user option 'mouse-wheel-scroll-amount-horizontal'.
587 505
588** Customize 506** Customize
589 507
590---
591*** Customize buffers can now be reverted with 'C-x x g'. 508*** Customize buffers can now be reverted with 'C-x x g'.
592 509
593---
594*** Most customize commands now hide obsolete user options. 510*** Most customize commands now hide obsolete user options.
595Obsolete user options are no longer shown in the listings produced by 511Obsolete user options are no longer shown in the listings produced by
596the commands 'customize', 'customize-group', 'customize-apropos' and 512the commands 'customize', 'customize-group', 'customize-apropos' and
@@ -599,35 +515,28 @@ the commands 'customize', 'customize-group', 'customize-apropos' and
599To customize obsolete user options, use 'customize-option' or 515To customize obsolete user options, use 'customize-option' or
600'customize-saved'. 516'customize-saved'.
601 517
602---
603*** New SVG icons for checkboxes and arrows. 518*** New SVG icons for checkboxes and arrows.
604They will be used automatically instead of the old icons. If Emacs is 519They will be used automatically instead of the old icons. If Emacs is
605built without SVG support, the old icons will be used instead. 520built without SVG support, the old icons will be used instead.
606 521
607** Help 522** Help
608 523
609---
610*** The order of things displayed in the "*Help*" buffer has been changed. 524*** The order of things displayed in the "*Help*" buffer has been changed.
611The indented "administrative" block (containing the "probably 525The indented "administrative" block (containing the "probably
612introduced" and "other relevant functions" (and similar things) has 526introduced" and "other relevant functions" (and similar things) has
613been moved to after the doc string. 527been moved to after the doc string.
614 528
615+++
616*** New command 'describe-command' shows help for a command. 529*** New command 'describe-command' shows help for a command.
617This can be used instead of 'describe-function' for interactive 530This can be used instead of 'describe-function' for interactive
618commands and is globally bound to 'C-h x'. 531commands and is globally bound to 'C-h x'.
619 532
620+++
621*** New command 'describe-keymap' describes keybindings in a keymap. 533*** New command 'describe-keymap' describes keybindings in a keymap.
622 534
623---
624*** New command 'apropos-function'. 535*** New command 'apropos-function'.
625This works like 'C-u M-x apropos-command' but is more discoverable. 536This works like 'C-u M-x apropos-command' but is more discoverable.
626 537
627---
628*** New keybinding 'C-h R' prompts for an Info manual and displays it. 538*** New keybinding 'C-h R' prompts for an Info manual and displays it.
629 539
630---
631*** Keybindings in 'help-mode' use the new 'help-key-binding' face. 540*** Keybindings in 'help-mode' use the new 'help-key-binding' face.
632This face is added by 'substitute-command-keys' to any "\[command]" 541This face is added by 'substitute-command-keys' to any "\[command]"
633substitution. The return value of that function should consequently 542substitution. The return value of that function should consequently
@@ -638,17 +547,14 @@ with the new optional argument NO-FACE non-nil.
638Note that the new face will also be used in tooltips. When using the 547Note that the new face will also be used in tooltips. When using the
639GTK toolkit, this is only true if 'x-gtk-use-system-tooltips' is t. 548GTK toolkit, this is only true if 'x-gtk-use-system-tooltips' is t.
640 549
641+++
642*** New user option 'help-enable-symbol-autoload'. 550*** New user option 'help-enable-symbol-autoload'.
643If non-nil, displaying help for an autoloaded function whose 551If non-nil, displaying help for an autoloaded function whose
644'autoload' form provides no documentation string will try to load the 552'autoload' form provides no documentation string will try to load the
645file it's from. This will give more extensive help for such 553file it's from. This will give more extensive help for such
646functions. 554functions.
647 555
648---
649*** The 'help-for-help' ('C-h C-h') screen has been redesigned. 556*** The 'help-for-help' ('C-h C-h') screen has been redesigned.
650 557
651+++
652*** New convenience commands with short keys in the "*Help*" buffer. 558*** New convenience commands with short keys in the "*Help*" buffer.
653New command 'help-view-source' ('s') will view the source file (if 559New command 'help-view-source' ('s') will view the source file (if
654any) of the current help topic. New command 'help-goto-info' ('i') 560any) of the current help topic. New command 'help-goto-info' ('i')
@@ -656,79 +562,65 @@ will look up the current symbol (if any) in Info. New command
656'help-customize' ('c') will customize the user option or the face 562'help-customize' ('c') will customize the user option or the face
657(if any) whose doc string is being shown in the "*Help*" buffer. 563(if any) whose doc string is being shown in the "*Help*" buffer.
658 564
659---
660*** New user option 'describe-bindings-outline'. 565*** New user option 'describe-bindings-outline'.
661It enables outlines in the output buffer of 'describe-bindings' that 566It enables outlines in the output buffer of 'describe-bindings' that
662can provide a better overview in a long list of available bindings. 567can provide a better overview in a long list of available bindings.
663 568
664+++
665*** New commands to describe buttons and widgets. 569*** New commands to describe buttons and widgets.
666'widget-describe' (on a widget) will pop up the "*Help*" buffer and 570'widget-describe' (on a widget) will pop up the "*Help*" buffer and
667give a description of the properties. Likewise 'button-describe' does 571give a description of the properties. Likewise 'button-describe' does
668the same for a button. 572the same for a button.
669 573
670---
671*** Improved "find definition" feature of "*Help*" buffers. 574*** Improved "find definition" feature of "*Help*" buffers.
672Now clicking on the link to find the definition of functions generated 575Now clicking on the link to find the definition of functions generated
673by 'cl-defstruct', or variables generated by 'define-derived-mode', 576by 'cl-defstruct', or variables generated by 'define-derived-mode',
674for example, will go to the exact place where they are defined. 577for example, will go to the exact place where they are defined.
675 578
676---
677*** New commands 'apropos-next-symbol' and 'apropos-previous-symbol'. 579*** New commands 'apropos-next-symbol' and 'apropos-previous-symbol'.
678These new navigation commands are bound to 'n' and 'p' in 580These new navigation commands are bound to 'n' and 'p' in
679'apropos-mode'. 581'apropos-mode'.
680 582
681---
682*** The command 'view-lossage' can now be invoked from the menu bar. 583*** The command 'view-lossage' can now be invoked from the menu bar.
683The menu bar "Help" menu now has a "Show Recent Inputs" item under the 584The menu bar "Help" menu now has a "Show Recent Inputs" item under the
684"Describe" sub-menu. 585"Describe" sub-menu.
685 586
686+++
687*** New command 'lossage-size'. 587*** New command 'lossage-size'.
688It allows users to change the maximum number of keystrokes and 588It allows users to change the maximum number of keystrokes and
689commands recorded for the purpose of 'view-lossage'. 589commands recorded for the purpose of 'view-lossage'.
690 590
691---
692*** Closing the "*Help*" buffer from the toolbar now buries the buffer. 591*** Closing the "*Help*" buffer from the toolbar now buries the buffer.
693In previous Emacs versions, the "*Help*" buffer was killed instead when 592In previous Emacs versions, the "*Help*" buffer was killed instead when
694clicking the "X" icon in the tool bar. 593clicking the "X" icon in the tool bar.
695 594
696---
697*** 'g' ('revert-buffer') in 'help-mode' no longer requires confirmation. 595*** 'g' ('revert-buffer') in 'help-mode' no longer requires confirmation.
698 596
699** File Locks 597** File Locks
700 598
701+++
702*** New user option 'lock-file-name-transforms'. 599*** New user option 'lock-file-name-transforms'.
703This option allows controlling where lock files are written. It uses 600This option allows controlling where lock files are written. It uses
704the same syntax as 'auto-save-file-name-transforms'. 601the same syntax as 'auto-save-file-name-transforms'.
705 602
706+++
707*** New user option 'remote-file-name-inhibit-locks'. 603*** New user option 'remote-file-name-inhibit-locks'.
708When non-nil, this option suppresses lock files for remote files. 604When non-nil, this option suppresses lock files for remote files.
709Default is nil. 605Default is nil.
710 606
711+++
712*** New minor mode 'lock-file-mode'. 607*** New minor mode 'lock-file-mode'.
713This command, called interactively, toggles the local value of 608This command, called interactively, toggles the local value of
714'create-lockfiles' in the current buffer. 609'create-lockfiles' in the current buffer.
715 610
716** Emacs Server 611** Emacs Server
717 612
718+++
719*** New user option 'server-client-instructions'. 613*** New user option 'server-client-instructions'.
720When emacsclient connects, Emacs will (by default) output a message 614When emacsclient connects, Emacs will (by default) output a message
721about how to exit the client frame. If 'server-client-instructions' 615about how to exit the client frame. If 'server-client-instructions'
722is set to nil, this message is inhibited. 616is set to nil, this message is inhibited.
723 617
724+++
725*** New command 'server-edit-abort'. 618*** New command 'server-edit-abort'.
726This command (not bound to any key by default) can be used to abort 619This command (not bound to any key by default) can be used to abort
727an edit instead of marking it as "Done" (which the 'C-x #' command 620an edit instead of marking it as "Done" (which the 'C-x #' command
728does). The 'emacsclient' program exits with an abnormal status as 621does). The 'emacsclient' program exits with an abnormal status as
729result of this command. 622result of this command.
730 623
731+++
732*** New desktop integration for connecting to the server. 624*** New desktop integration for connecting to the server.
733If your operating system's desktop environment is 625If your operating system's desktop environment is
734freedesktop.org-compatible (which is true of most GNU/Linux and other 626freedesktop.org-compatible (which is true of most GNU/Linux and other
@@ -739,25 +631,20 @@ running.
739 631
740** Miscellaneous 632** Miscellaneous
741 633
742+++
743*** New command 'font-lock-update', bound to 'C-x x f'. 634*** New command 'font-lock-update', bound to 'C-x x f'.
744This command updates the syntax highlighting in this buffer. 635This command updates the syntax highlighting in this buffer.
745 636
746+++
747*** New command 'memory-report'. 637*** New command 'memory-report'.
748This command opens a new buffer called "*Memory Report*" and gives a 638This command opens a new buffer called "*Memory Report*" and gives a
749summary of where Emacs is using memory currently. 639summary of where Emacs is using memory currently.
750 640
751+++
752*** New command 'submit-emacs-patch'. 641*** New command 'submit-emacs-patch'.
753This works like 'report-emacs-bug', but is more geared towards sending 642This works like 'report-emacs-bug', but is more geared towards sending
754patches to the Emacs issue tracker. 643patches to the Emacs issue tracker.
755 644
756---
757*** New face 'apropos-button'. 645*** New face 'apropos-button'.
758Applies to buttons that indicate a face. 646Applies to buttons that indicate a face.
759 647
760+++
761*** New face 'font-lock-doc-markup-face'. 648*** New face 'font-lock-doc-markup-face'.
762Intended for documentation mark-up syntax and tags inside text that 649Intended for documentation mark-up syntax and tags inside text that
763uses 'font-lock-doc-face', which it should appropriately stand out 650uses 'font-lock-doc-face', which it should appropriately stand out
@@ -766,41 +653,34 @@ documentation comments in program source code by language-specific
766modes, for mark-up conventions like Haddock, Javadoc or Doxygen. By 653modes, for mark-up conventions like Haddock, Javadoc or Doxygen. By
767default this face inherits from 'font-lock-constant-face'. 654default this face inherits from 'font-lock-constant-face'.
768 655
769+++
770*** New face box style 'flat-button'. 656*** New face box style 'flat-button'.
771This is a plain 2D button, but uses the background color instead of 657This is a plain 2D button, but uses the background color instead of
772the foreground color. 658the foreground color.
773 659
774---
775*** New faces 'shortdoc-heading' and 'shortdoc-section'. 660*** New faces 'shortdoc-heading' and 'shortdoc-section'.
776Applied to shortdoc headings and sections. 661Applied to shortdoc headings and sections.
777 662
778---
779*** New face 'separator-line'. 663*** New face 'separator-line'.
780This is used by 'make-separator-line' (see below). 664This is used by 'make-separator-line' (see below).
781 665
782+++
783*** 'redisplay-skip-fontification-on-input' helps Emacs keep up with fast input. 666*** 'redisplay-skip-fontification-on-input' helps Emacs keep up with fast input.
784This is another attempt to solve the problem of handling high key repeat rate 667This is another attempt to solve the problem of handling high key repeat rate
785and other "slow scrolling" situations. It is hoped it behaves better 668and other "slow scrolling" situations. It is hoped it behaves better
786than 'fast-but-imprecise-scrolling' and 'jit-lock-defer-time'. 669than 'fast-but-imprecise-scrolling' and 'jit-lock-defer-time'.
787It is not enabled by default. 670It is not enabled by default.
788 671
789---
790*** Obsolete aliases are no longer hidden from command completion. 672*** Obsolete aliases are no longer hidden from command completion.
791Completion of command names now considers obsolete aliases as 673Completion of command names now considers obsolete aliases as
792candidates, if they were marked obsolete in the current major version 674candidates, if they were marked obsolete in the current major version
793of Emacs. Invoking a command via an obsolete alias now mentions the 675of Emacs. Invoking a command via an obsolete alias now mentions the
794obsolescence fact and shows the new name of the command. 676obsolescence fact and shows the new name of the command.
795 677
796+++
797*** Support for '(box . SIZE)' 'cursor-type'. 678*** Support for '(box . SIZE)' 'cursor-type'.
798By default, 'box' cursor always has a filled box shape. But if you 679By default, 'box' cursor always has a filled box shape. But if you
799specify 'cursor-type' to be '(box . SIZE)', the cursor becomes a hollow 680specify 'cursor-type' to be '(box . SIZE)', the cursor becomes a hollow
800box if the point is on an image larger than SIZE pixels in any 681box if the point is on an image larger than SIZE pixels in any
801dimension. 682dimension.
802 683
803+++
804*** The user can now customize how "default" values are prompted for. 684*** The user can now customize how "default" values are prompted for.
805The new utility function 'format-prompt' has been added which uses the 685The new utility function 'format-prompt' has been added which uses the
806new 'minibuffer-default-prompt-format' user option to format "default" 686new 'minibuffer-default-prompt-format' user option to format "default"
@@ -810,7 +690,6 @@ number [10]", or not have the default displayed at all, like "Enter a
810number". (This only affects callers that were altered to use 690number". (This only affects callers that were altered to use
811'format-prompt'.) 691'format-prompt'.)
812 692
813---
814*** New help window when Emacs prompts before opening a large file. 693*** New help window when Emacs prompts before opening a large file.
815Commands like 'find-file' or 'visit-tags-table' ask to visit a file 694Commands like 'find-file' or 'visit-tags-table' ask to visit a file
816normally or literally when the file is larger than a certain size (by 695normally or literally when the file is larger than a certain size (by
@@ -818,20 +697,17 @@ default, 9.5 MiB). Press '?' or 'C-h' in that prompt to read more
818about the different options to visit a file, how you can disable the 697about the different options to visit a file, how you can disable the
819prompt, and how you can tweak the file size threshold. 698prompt, and how you can tweak the file size threshold.
820 699
821+++
822*** Emacs now defaults to UTF-8 instead of ISO-8859-1. 700*** Emacs now defaults to UTF-8 instead of ISO-8859-1.
823This is only for the default, where the user has set no 'LANG' (or 701This is only for the default, where the user has set no 'LANG' (or
824similar) variable or environment. This change should lead to no 702similar) variable or environment. This change should lead to no
825user-visible changes for normal usage. 703user-visible changes for normal usage.
826 704
827---
828*** 'global-display-fill-column-indicator-mode' skips some buffers. 705*** 'global-display-fill-column-indicator-mode' skips some buffers.
829By default, turning on 'global-display-fill-column-indicator-mode' 706By default, turning on 'global-display-fill-column-indicator-mode'
830doesn't turn on 'display-fill-column-indicator-mode' in special-mode 707doesn't turn on 'display-fill-column-indicator-mode' in special-mode
831buffers. This can be controlled by customizing the user option 708buffers. This can be controlled by customizing the user option
832'global-display-fill-column-indicator-modes'. 709'global-display-fill-column-indicator-modes'.
833 710
834+++
835*** 'nobreak-char-display' now also affects all non-ASCII space characters. 711*** 'nobreak-char-display' now also affects all non-ASCII space characters.
836Previously, this was limited only to 'NO-BREAK SPACE' and hyphen 712Previously, this was limited only to 'NO-BREAK SPACE' and hyphen
837characters. Now it also covers the rest of the non-ASCII Unicode 713characters. Now it also covers the rest of the non-ASCII Unicode
@@ -840,7 +716,6 @@ non-ASCII characters are displayed as themselves when
840'nobreak-char-display' is t, i.e. they are not replaced on display 716'nobreak-char-display' is t, i.e. they are not replaced on display
841with the ASCII space and hyphen characters. 717with the ASCII space and hyphen characters.
842 718
843---
844*** New backward compatibility variable 'nobreak-char-ascii-display'. 719*** New backward compatibility variable 'nobreak-char-ascii-display'.
845This variable is nil by default, and non-ASCII space and hyphen 720This variable is nil by default, and non-ASCII space and hyphen
846characters are displayed as themselves, even if 'nobreak-char-display' 721characters are displayed as themselves, even if 'nobreak-char-display'
@@ -854,7 +729,6 @@ t. You may need this on text-mode terminals that produce messed up
854display when non-ASCII spaces and hyphens are written to the display. 729display when non-ASCII spaces and hyphens are written to the display.
855(This variable is only effective when 'nobreak-char-display' is t.) 730(This variable is only effective when 'nobreak-char-display' is t.)
856 731
857+++
858*** Improved support for terminal emulators that encode the Meta flag. 732*** Improved support for terminal emulators that encode the Meta flag.
859Some terminal emulators set the 8th bit of Meta characters, and then 733Some terminal emulators set the 8th bit of Meta characters, and then
860encode the resulting character code as if it were non-ASCII character 734encode the resulting character code as if it were non-ASCII character
@@ -865,7 +739,6 @@ Meta characters to Emacs, e.g., send "ESC x" when the user types
865emulators by using the new input-meta-mode with the special value 739emulators by using the new input-meta-mode with the special value
866'encoded' with these terminal emulators. 740'encoded' with these terminal emulators.
867 741
868---
869*** 'auto-composition-mode' can now be selectively disabled on some TTYs. 742*** 'auto-composition-mode' can now be selectively disabled on some TTYs.
870Some text-mode terminals produce display glitches trying to compose 743Some text-mode terminals produce display glitches trying to compose
871characters. The 'auto-composition-mode' can now have a string value 744characters. The 'auto-composition-mode' can now have a string value
@@ -874,14 +747,12 @@ function compares equal with that string, automatic composition will
874be disabled in windows shown on that terminal. The Linux terminal 747be disabled in windows shown on that terminal. The Linux terminal
875sets this up by default. 748sets this up by default.
876 749
877---
878*** Support for the 'strike-through' face attribute on TTY frames. 750*** Support for the 'strike-through' face attribute on TTY frames.
879If your terminal's termcap or terminfo database entry has the 'smxx' 751If your terminal's termcap or terminfo database entry has the 'smxx'
880capability defined, Emacs will now emit the prescribed escape 752capability defined, Emacs will now emit the prescribed escape
881sequences necessary to render faces with the 'strike-through' 753sequences necessary to render faces with the 'strike-through'
882attribute on TTY frames. 754attribute on TTY frames.
883 755
884---
885*** TTY menu navigation is now supported in 'xterm-mouse-mode'. 756*** TTY menu navigation is now supported in 'xterm-mouse-mode'.
886TTY menus support mouse navigation and selection when 'xterm-mouse-mode' 757TTY menus support mouse navigation and selection when 'xterm-mouse-mode'
887is active. When run on a terminal, clicking on the menu bar with the 758is active. When run on a terminal, clicking on the menu bar with the
@@ -889,19 +760,15 @@ mouse now pops up a TTY menu by default instead of running the command
889'tmm-menubar'. To restore the old behavior, set the user option 760'tmm-menubar'. To restore the old behavior, set the user option
890'tty-menu-open-use-tmm' to non-nil. 761'tty-menu-open-use-tmm' to non-nil.
891 762
892---
893*** 'M-x report-emacs-bug' will no longer include "Recent messages" section. 763*** 'M-x report-emacs-bug' will no longer include "Recent messages" section.
894These were taken from the "*Messages*" buffer, and may inadvertently 764These were taken from the "*Messages*" buffer, and may inadvertently
895leak information from the reporting user. 765leak information from the reporting user.
896 766
897---
898*** 'C-u M-x dig' will now prompt for a query type to use. 767*** 'C-u M-x dig' will now prompt for a query type to use.
899 768
900---
901*** Rudimentary support for the 'st' terminal emulator. 769*** Rudimentary support for the 'st' terminal emulator.
902Emacs now supports 256 color display on the 'st' terminal emulator. 770Emacs now supports 256 color display on the 'st' terminal emulator.
903 771
904+++
905*** Update IRC-related references to point to Libera.Chat. 772*** Update IRC-related references to point to Libera.Chat.
906The Free Software Foundation and the GNU Project have moved their 773The Free Software Foundation and the GNU Project have moved their
907official IRC channels from the Freenode network to Libera.Chat. For the 774official IRC channels from the Freenode network to Libera.Chat. For the
@@ -921,12 +788,10 @@ https://lists.gnu.org/archive/html/info-gnu-emacs/2021-06/msg00000.html
921 788
922* Incompatible Editing Changes in Emacs 28.1 789* Incompatible Editing Changes in Emacs 28.1
923 790
924---
925** 'toggle-truncate-lines' now disables 'visual-line-mode'. 791** 'toggle-truncate-lines' now disables 'visual-line-mode'.
926This is for symmetry with 'visual-line-mode', which disables 792This is for symmetry with 'visual-line-mode', which disables
927'truncate-lines'. 793'truncate-lines'.
928 794
929---
930** 'electric-indent-mode' now also indents inside strings and comments. 795** 'electric-indent-mode' now also indents inside strings and comments.
931(This only happens when indentation function also supports this.) 796(This only happens when indentation function also supports this.)
932 797
@@ -935,7 +800,6 @@ To recover the previous behavior you can use:
935 (add-hook 'electric-indent-functions 800 (add-hook 'electric-indent-functions
936 (lambda (_) (if (nth 8 (syntax-ppss)) 'no-indent))) 801 (lambda (_) (if (nth 8 (syntax-ppss)) 'no-indent)))
937 802
938---
939** The 'M-o' ('facemenu-keymap') global binding has been removed. 803** The 'M-o' ('facemenu-keymap') global binding has been removed.
940To restore the old binding, say something like: 804To restore the old binding, say something like:
941 805
@@ -947,7 +811,6 @@ To restore the old binding, say something like:
947The last two lines are not strictly necessary if you don't care about 811The last two lines are not strictly necessary if you don't care about
948having those two commands on the 'M-o' keymap; see the next section. 812having those two commands on the 'M-o' keymap; see the next section.
949 813
950---
951** The 'M-o M-s' and 'M-o M-S' global bindings have been removed. 814** The 'M-o M-s' and 'M-o M-S' global bindings have been removed.
952Use 'M-x center-line' and 'M-x center-paragraph' instead. See the 815Use 'M-x center-line' and 'M-x center-paragraph' instead. See the
953previous section for how to get back the old bindings. Alternatively, 816previous section for how to get back the old bindings. Alternatively,
@@ -957,12 +820,10 @@ had before, you can add the following to your init file:
957 (define-key global-map "\M-o\M-s" 'center-line) 820 (define-key global-map "\M-o\M-s" 'center-line)
958 (define-key global-map "\M-o\M-S" 'center-paragraph) 821 (define-key global-map "\M-o\M-S" 'center-paragraph)
959 822
960---
961** The 'M-o M-o' global binding has been removed. 823** The 'M-o M-o' global binding has been removed.
962Use 'M-x font-lock-fontify-block' instead, or the new 'C-x x f' 824Use 'M-x font-lock-fontify-block' instead, or the new 'C-x x f'
963command, which updates the syntax highlighting in the current buffer. 825command, which updates the syntax highlighting in the current buffer.
964 826
965---
966** The escape sequence '\e[29~' in Xterm is now mapped to 'menu'. 827** The escape sequence '\e[29~' in Xterm is now mapped to 'menu'.
967Xterm sends this sequence for both 'F16' and 'Menu' keys 828Xterm sends this sequence for both 'F16' and 'Menu' keys
968It used to be mapped to 'print' but we couldn't find a terminal 829It used to be mapped to 'print' but we couldn't find a terminal
@@ -970,26 +831,21 @@ that uses this sequence for any kind of 'Print' key.
970This makes the Menu key (see https://en.wikipedia.org/wiki/Menu_key) 831This makes the Menu key (see https://en.wikipedia.org/wiki/Menu_key)
971work for 'context-menu-mode' in Xterm. 832work for 'context-menu-mode' in Xterm.
972 833
973---
974** New user option 'xterm-store-paste-on-kill-ring'. 834** New user option 'xterm-store-paste-on-kill-ring'.
975If non-nil (the default), Emacs pushes pasted text onto the kill ring 835If non-nil (the default), Emacs pushes pasted text onto the kill ring
976(if using an xterm-like terminal that supports bracketed paste). 836(if using an xterm-like terminal that supports bracketed paste).
977Setting this to nil inhibits that. 837Setting this to nil inhibits that.
978 838
979---
980** 'vc-print-branch-log' shows the change log from its root directory. 839** 'vc-print-branch-log' shows the change log from its root directory.
981It previously used to use the default directory. 840It previously used to use the default directory.
982 841
983---
984** 'project-shell' and 'shell' now use 'pop-to-buffer-same-window'. 842** 'project-shell' and 'shell' now use 'pop-to-buffer-same-window'.
985This is to keep the same behavior as Eshell. 843This is to keep the same behavior as Eshell.
986 844
987---
988** In 'nroff-mode', 'center-line' is no longer bound to a key. 845** In 'nroff-mode', 'center-line' is no longer bound to a key.
989The original key binding was 'M-s', which interfered with Isearch, 846The original key binding was 'M-s', which interfered with Isearch,
990since the latter uses 'M-s' as a prefix key of the search prefix map. 847since the latter uses 'M-s' as a prefix key of the search prefix map.
991 848
992---
993** In 'f90-mode', the backslash character ('\') no longer escapes. 849** In 'f90-mode', the backslash character ('\') no longer escapes.
994For about a decade, the backslash character has no longer had a 850For about a decade, the backslash character has no longer had a
995special escape syntax in Fortran F90. To get the old behavior back, 851special escape syntax in Fortran F90. To get the old behavior back,
@@ -997,7 +853,6 @@ say something like:
997 853
998 (modify-syntax-entry ?\\ "\\" f90-mode-syntax-table) 854 (modify-syntax-entry ?\\ "\\" f90-mode-syntax-table)
999 855
1000+++
1001** Setting 'fill-column' to nil is obsolete. 856** Setting 'fill-column' to nil is obsolete.
1002This undocumented use of 'fill-column' is now obsolete. To disable 857This undocumented use of 'fill-column' is now obsolete. To disable
1003auto filling, turn off 'auto-fill-mode' instead. 858auto filling, turn off 'auto-fill-mode' instead.
@@ -1012,7 +867,6 @@ file:
1012 867
1013** Input methods 868** Input methods
1014 869
1015+++
1016*** Emacs now supports "transient" input methods. 870*** Emacs now supports "transient" input methods.
1017A transient input method is enabled for inserting a single character, 871A transient input method is enabled for inserting a single character,
1018and is then automatically disabled. 'C-x \' temporarily enables the 872and is then automatically disabled. 'C-x \' temporarily enables the
@@ -1024,33 +878,27 @@ character '½', and disable the 'compose' input method afterwards.
1024You can use 'C-x \' in incremental search to insert a single character 878You can use 'C-x \' in incremental search to insert a single character
1025to the search string. 879to the search string.
1026 880
1027---
1028*** New input method 'compose' based on X Multi_key sequences. 881*** New input method 'compose' based on X Multi_key sequences.
1029 882
1030---
1031*** New input method 'iso-transl' with the same keys as 'C-x 8'. 883*** New input method 'iso-transl' with the same keys as 'C-x 8'.
1032After selecting it as a transient input method with 'C-u C-x \ 884After selecting it as a transient input method with 'C-u C-x \
1033iso-transl RET', it supports the same key sequences as 'C-x 8', 885iso-transl RET', it supports the same key sequences as 'C-x 8',
1034so e.g. like 'C-x 8 [' inserts a left single quotation mark, 886so e.g. like 'C-x 8 [' inserts a left single quotation mark,
1035'C-x \ [' does the same. 887'C-x \ [' does the same.
1036 888
1037---
1038*** New user option 'read-char-by-name-sort'. 889*** New user option 'read-char-by-name-sort'.
1039It defines the sorting order of characters for completion of 'C-x 8 RET TAB' 890It defines the sorting order of characters for completion of 'C-x 8 RET TAB'
1040and can be customized to sort them by codepoints instead of character names. 891and can be customized to sort them by codepoints instead of character names.
1041Additionally, you can group characters by Unicode blocks after customizing 892Additionally, you can group characters by Unicode blocks after customizing
1042'completions-group' and 'completions-group-sort'. 893'completions-group' and 'completions-group-sort'.
1043 894
1044---
1045*** Improved language transliteration in Malayalam input methods. 895*** Improved language transliteration in Malayalam input methods.
1046Added a new Mozhi scheme. The inapplicable ITRANS scheme is now 896Added a new Mozhi scheme. The inapplicable ITRANS scheme is now
1047deprecated. Errors in the Inscript method were corrected. 897deprecated. Errors in the Inscript method were corrected.
1048 898
1049---
1050*** New input method 'cham'. 899*** New input method 'cham'.
1051There's also a Cham greeting in "etc/HELLO". 900There's also a Cham greeting in "etc/HELLO".
1052 901
1053---
1054*** New input methods for Lakota language orthographies. 902*** New input methods for Lakota language orthographies.
1055Two orthographies are represented here, the Suggested Lakota 903Two orthographies are represented here, the Suggested Lakota
1056Orthography and what is known as the White Hat Orthography. Input 904Orthography and what is known as the White Hat Orthography. Input
@@ -1058,7 +906,6 @@ methods 'lakota-slo-prefix', 'lakota-slo-postfix', and
1058'lakota-white-hat-postfix' have been added. There is also a Lakota 906'lakota-white-hat-postfix' have been added. There is also a Lakota
1059greeting in "etc/HELLO". 907greeting in "etc/HELLO".
1060 908
1061+++
1062** Standalone 'M-y' allows interactive selection from previous kills. 909** Standalone 'M-y' allows interactive selection from previous kills.
1063'M-y' can now be typed after a command that is not a yank command. 910'M-y' can now be typed after a command that is not a yank command.
1064When invoked like that, it prompts in the minibuffer for one of the 911When invoked like that, it prompts in the minibuffer for one of the
@@ -1068,14 +915,12 @@ in Isearch can be invoked if you bind 'C-s M-y' to the command
1068'isearch-yank-pop'. When the user option 'yank-from-kill-ring-rotate' 915'isearch-yank-pop'. When the user option 'yank-from-kill-ring-rotate'
1069is nil the kill ring is not rotated after 'yank-from-kill-ring'. 916is nil the kill ring is not rotated after 'yank-from-kill-ring'.
1070 917
1071+++
1072** New user option 'word-wrap-by-category'. 918** New user option 'word-wrap-by-category'.
1073When word-wrap is enabled, and this option is non-nil, that allows 919When word-wrap is enabled, and this option is non-nil, that allows
1074Emacs to break lines after more characters than just whitespace 920Emacs to break lines after more characters than just whitespace
1075characters. In particular, this significantly improves word-wrapping 921characters. In particular, this significantly improves word-wrapping
1076for CJK text mixed with Latin text. 922for CJK text mixed with Latin text.
1077 923
1078+++
1079** New command 'undo-redo'. 924** New command 'undo-redo'.
1080It undoes previous undo commands, but doesn't record itself as an 925It undoes previous undo commands, but doesn't record itself as an
1081undoable command. It is bound to 'C-?' and 'C-M-_', the first binding 926undoable command. It is bound to 'C-?' and 'C-M-_', the first binding
@@ -1084,43 +929,35 @@ works well in graphical mode, and the second one is easy to hit on tty.
1084For full conventional undo/redo behavior, you can also customize the 929For full conventional undo/redo behavior, you can also customize the
1085user option 'undo-no-redo' to t. 930user option 'undo-no-redo' to t.
1086 931
1087+++
1088** New commands 'copy-matching-lines' and 'kill-matching-lines'. 932** New commands 'copy-matching-lines' and 'kill-matching-lines'.
1089These commands are similar to the command 'flush-lines', 933These commands are similar to the command 'flush-lines',
1090but add the matching lines to the kill ring as a single string, 934but add the matching lines to the kill ring as a single string,
1091including the newlines that separate the lines. 935including the newlines that separate the lines.
1092 936
1093+++
1094** New user option 'kill-transform-function'. 937** New user option 'kill-transform-function'.
1095This can be used to transform (and suppress) strings from entering the 938This can be used to transform (and suppress) strings from entering the
1096kill ring. 939kill ring.
1097 940
1098+++
1099** 'save-interprogram-paste-before-kill' can now be a number. 941** 'save-interprogram-paste-before-kill' can now be a number.
1100In that case, it's interpreted as a limit on the size of the clipboard 942In that case, it's interpreted as a limit on the size of the clipboard
1101data that will be saved to the 'kill-ring' prior to killing text: if 943data that will be saved to the 'kill-ring' prior to killing text: if
1102the size of the clipboard data is greater than or equal to the limit, 944the size of the clipboard data is greater than or equal to the limit,
1103it will not be saved. 945it will not be saved.
1104 946
1105+++
1106** New user option 'tab-first-completion'. 947** New user option 'tab-first-completion'.
1107If 'tab-always-indent' is 'complete', this new user option can be used to 948If 'tab-always-indent' is 'complete', this new user option can be used to
1108further tweak whether to complete or indent. 949further tweak whether to complete or indent.
1109 950
1110---
1111** 'indent-tabs-mode' is now a global minor mode instead of just a variable. 951** 'indent-tabs-mode' is now a global minor mode instead of just a variable.
1112 952
1113+++
1114** New choice 'permanent' for 'shift-select-mode'. 953** New choice 'permanent' for 'shift-select-mode'.
1115When the mark was activated by shifted motion keys, non-shifted motion 954When the mark was activated by shifted motion keys, non-shifted motion
1116keys don't deactivate the mark after customizing 'shift-select-mode' 955keys don't deactivate the mark after customizing 'shift-select-mode'
1117to 'permanent'. Similarly, the active mark will not be deactivated by 956to 'permanent'. Similarly, the active mark will not be deactivated by
1118typing shifted motion keys. 957typing shifted motion keys.
1119 958
1120+++
1121** The "Edit => Clear" menu item now obeys a rectangular region. 959** The "Edit => Clear" menu item now obeys a rectangular region.
1122 960
1123+++
1124** New command 'revert-buffer-with-fine-grain'. 961** New command 'revert-buffer-with-fine-grain'.
1125Revert a buffer trying to be as non-destructive as possible, 962Revert a buffer trying to be as non-destructive as possible,
1126preserving markers, properties and overlays. The new variable 963preserving markers, properties and overlays. The new variable
@@ -1128,18 +965,15 @@ preserving markers, properties and overlays. The new variable
1128number of seconds that 'revert-buffer-with-fine-grain' should spend 965number of seconds that 'revert-buffer-with-fine-grain' should spend
1129trying to be non-destructive, with a default value of 2 seconds. 966trying to be non-destructive, with a default value of 2 seconds.
1130 967
1131+++
1132** New command 'revert-buffer-quick'. 968** New command 'revert-buffer-quick'.
1133This is bound to 'C-x x g' and is like 'revert-buffer', but prompts 969This is bound to 'C-x x g' and is like 'revert-buffer', but prompts
1134less. 970less.
1135 971
1136+++
1137** New user option 'revert-buffer-quick-short-answers'. 972** New user option 'revert-buffer-quick-short-answers'.
1138This controls how the new 'revert-buffer-quick' ('C-x x g') command 973This controls how the new 'revert-buffer-quick' ('C-x x g') command
1139prompts. A non-nil value will make it use 'y-or-n-p' rather than 974prompts. A non-nil value will make it use 'y-or-n-p' rather than
1140'yes-or-no-p'. Defaults to nil. 975'yes-or-no-p'. Defaults to nil.
1141 976
1142+++
1143** New user option 'query-about-changed-file'. 977** New user option 'query-about-changed-file'.
1144If non-nil (the default), Emacs prompts as before when re-visiting a 978If non-nil (the default), Emacs prompts as before when re-visiting a
1145file that has changed externally after it was visited the first time. 979file that has changed externally after it was visited the first time.
@@ -1147,30 +981,25 @@ If nil, Emacs does not prompt, but instead shows the buffer with its
1147contents before the change, and provides instructions how to revert 981contents before the change, and provides instructions how to revert
1148the buffer. 982the buffer.
1149 983
1150---
1151** New value 'save-some-buffers-root' of 'save-some-buffers-default-predicate'. 984** New value 'save-some-buffers-root' of 'save-some-buffers-default-predicate'.
1152When using this predicate, only buffers under the current project root 985When using this predicate, only buffers under the current project root
1153will be considered when saving buffers with 'save-some-buffers'. 986will be considered when saving buffers with 'save-some-buffers'.
1154 987
1155---
1156** New user option 'save-place-abbreviate-file-names'. 988** New user option 'save-place-abbreviate-file-names'.
1157This can simplify sharing the 'save-place-file' file across 989This can simplify sharing the 'save-place-file' file across
1158different hosts. 990different hosts.
1159 991
1160---
1161** New user options 'copy-region-blink-delay' and 'delete-pair-blink-delay'. 992** New user options 'copy-region-blink-delay' and 'delete-pair-blink-delay'.
1162'copy-region-blink-delay' specifies a delay to indicate the region 993'copy-region-blink-delay' specifies a delay to indicate the region
1163copied by 'kill-ring-save'. 'delete-pair-blink-delay' specifies 994copied by 'kill-ring-save'. 'delete-pair-blink-delay' specifies
1164a delay to show the paired character to delete. 995a delay to show the paired character to delete.
1165 996
1166---
1167** 'zap-up-to-char' now uses 'read-char-from-minibuffer'. 997** 'zap-up-to-char' now uses 'read-char-from-minibuffer'.
1168This allows navigating through the history of characters that have 998This allows navigating through the history of characters that have
1169been input. This is mostly useful for characters that have complex 999been input. This is mostly useful for characters that have complex
1170input methods where inputting the character again may involve many 1000input methods where inputting the character again may involve many
1171keystrokes. 1001keystrokes.
1172 1002
1173+++
1174** Input history for 'goto-line' can now be made local to every buffer. 1003** Input history for 'goto-line' can now be made local to every buffer.
1175In any event, line numbers used with 'goto-line' are kept in their own 1004In any event, line numbers used with 'goto-line' are kept in their own
1176history list. This should help make faster the process of finding 1005history list. This should help make faster the process of finding
@@ -1178,7 +1007,6 @@ line numbers that were previously jumped to. By default, all buffers
1178share a single history list. To make every buffer have its own 1007share a single history list. To make every buffer have its own
1179history list, customize the user option 'goto-line-history-local'. 1008history list, customize the user option 'goto-line-history-local'.
1180 1009
1181+++
1182** New command 'goto-line-relative' for use in a narrowed buffer. 1010** New command 'goto-line-relative' for use in a narrowed buffer.
1183It moves point to the line relative to the accessible portion of the 1011It moves point to the line relative to the accessible portion of the
1184narrowed buffer. 'M-g M-g' in Info is rebound to this command. 1012narrowed buffer. 'M-g M-g' in Info is rebound to this command.
@@ -1186,7 +1014,6 @@ When 'widen-automatically' is non-nil, 'goto-line' widens the narrowed
1186buffer to be able to move point to the inaccessible portion. 1014buffer to be able to move point to the inaccessible portion.
1187'goto-line-relative' is bound to 'C-x n g'. 1015'goto-line-relative' is bound to 'C-x n g'.
1188 1016
1189+++
1190** 'goto-char' prompts for the character position. 1017** 'goto-char' prompts for the character position.
1191When called interactively, 'goto-char' now offers the position at 1018When called interactively, 'goto-char' now offers the position at
1192point as the default. 1019point as the default.
@@ -1195,11 +1022,9 @@ point as the default.
1195Set the user option 'auto-save-visited-mode' buffer-locally to nil to 1022Set the user option 'auto-save-visited-mode' buffer-locally to nil to
1196achieve that. 1023achieve that.
1197 1024
1198+++
1199** New command 'kdb-macro-redisplay' to force redisplay in keyboard macros. 1025** New command 'kdb-macro-redisplay' to force redisplay in keyboard macros.
1200This command is bound to 'C-x C-k d'. 1026This command is bound to 'C-x C-k d'.
1201 1027
1202---
1203** 'blink-cursor-mode' is now enabled by default regardless of the UI. 1028** 'blink-cursor-mode' is now enabled by default regardless of the UI.
1204It used to be enabled when Emacs is started in GUI mode but not when started 1029It used to be enabled when Emacs is started in GUI mode but not when started
1205in text mode. The cursor still only actually blinks in GUI frames. 1030in text mode. The cursor still only actually blinks in GUI frames.
@@ -1208,7 +1033,6 @@ in text mode. The cursor still only actually blinks in GUI frames.
1208To go back to the previous behavior, customize the user option of the 1033To go back to the previous behavior, customize the user option of the
1209same name to nil. 1034same name to nil.
1210 1035
1211+++
1212** New minor mode 'show-paren-local-mode'. 1036** New minor mode 'show-paren-local-mode'.
1213It serves as a local counterpart for 'show-paren-mode', allowing you 1037It serves as a local counterpart for 'show-paren-mode', allowing you
1214to toggle it separately in different buffers. To use it only in 1038to toggle it separately in different buffers. To use it only in
@@ -1221,7 +1045,6 @@ programming modes, for example, add the following to your init file:
1221 1045
1222** Isearch and Replace 1046** Isearch and Replace
1223 1047
1224+++
1225*** Interactive regular expression search now uses faces for sub-groups. 1048*** Interactive regular expression search now uses faces for sub-groups.
1226E.g., 'C-M-s foo-\([0-9]+\)' will now use the 'isearch-group-1' face 1049E.g., 'C-M-s foo-\([0-9]+\)' will now use the 'isearch-group-1' face
1227on the part of the regexp that matches the sub-expression "[0-9]+". 1050on the part of the regexp that matches the sub-expression "[0-9]+".
@@ -1233,12 +1056,10 @@ This is controlled by the 'search-highlight-submatches' user option.
1233This feature is available only on terminals that have enough colors to 1056This feature is available only on terminals that have enough colors to
1234distinguish between sub-expression highlighting. 1057distinguish between sub-expression highlighting.
1235 1058
1236+++
1237*** Interactive regular expression replace now uses faces for sub-groups. 1059*** Interactive regular expression replace now uses faces for sub-groups.
1238Like 'search-highlight-submatches', this is controlled by the new user option 1060Like 'search-highlight-submatches', this is controlled by the new user option
1239'query-replace-highlight-submatches'. 1061'query-replace-highlight-submatches'.
1240 1062
1241+++
1242*** New key 'M-s M-.' starts isearch looking for the thing at point. 1063*** New key 'M-s M-.' starts isearch looking for the thing at point.
1243This key is bound to the new command 'isearch-forward-thing-at-point'. 1064This key is bound to the new command 'isearch-forward-thing-at-point'.
1244The new user option 'isearch-forward-thing-at-point' defines 1065The new user option 'isearch-forward-thing-at-point' defines
@@ -1246,20 +1067,17 @@ a list of symbols to try to get the "thing" at point. By default,
1246the first element of the list is 'region' that tries to yank 1067the first element of the list is 'region' that tries to yank
1247the currently active region to the search string. 1068the currently active region to the search string.
1248 1069
1249+++
1250*** New user option 'isearch-wrap-pause' defines how to wrap the search. 1070*** New user option 'isearch-wrap-pause' defines how to wrap the search.
1251There are choices to disable wrapping completely and to wrap immediately. 1071There are choices to disable wrapping completely and to wrap immediately.
1252When wrapping immediately, it consistently handles the numeric arguments 1072When wrapping immediately, it consistently handles the numeric arguments
1253of 'C-s' ('isearch-repeat-forward') and 'C-r' ('isearch-repeat-backward'), 1073of 'C-s' ('isearch-repeat-forward') and 'C-r' ('isearch-repeat-backward'),
1254continuing with the remaining count after wrapping. 1074continuing with the remaining count after wrapping.
1255 1075
1256+++
1257*** New user option 'isearch-repeat-on-direction-change'. 1076*** New user option 'isearch-repeat-on-direction-change'.
1258When this option is set, direction changes in Isearch move to another 1077When this option is set, direction changes in Isearch move to another
1259search match, if there is one, instead of moving point to the other 1078search match, if there is one, instead of moving point to the other
1260end of the current match. 1079end of the current match.
1261 1080
1262+++
1263*** New user option 'isearch-allow-motion'. 1081*** New user option 'isearch-allow-motion'.
1264When 'isearch-allow-motion' is set, the commands 'beginning-of-buffer', 1082When 'isearch-allow-motion' is set, the commands 'beginning-of-buffer',
1265'end-of-buffer', 'scroll-up-command' and 'scroll-down-command', when 1083'end-of-buffer', 'scroll-up-command' and 'scroll-down-command', when
@@ -1271,14 +1089,12 @@ during Isearch by using their 'isearch-motion' property. The user
1271option 'isearch-motion-changes-direction' controls whether the 1089option 'isearch-motion-changes-direction' controls whether the
1272direction of the search changes after a motion command. 1090direction of the search changes after a motion command.
1273 1091
1274+++
1275*** New user option 'lazy-highlight-no-delay-length'. 1092*** New user option 'lazy-highlight-no-delay-length'.
1276Lazy highlighting of matches in Isearch now starts immediately if the 1093Lazy highlighting of matches in Isearch now starts immediately if the
1277search string is at least this long. 'lazy-highlight-initial-delay' 1094search string is at least this long. 'lazy-highlight-initial-delay'
1278still applies for shorter search strings, which avoids flicker in the 1095still applies for shorter search strings, which avoids flicker in the
1279search buffer due to too many matches being highlighted. 1096search buffer due to too many matches being highlighted.
1280 1097
1281+++
1282*** The default 'search-whitespace-regexp' value has changed. 1098*** The default 'search-whitespace-regexp' value has changed.
1283This used to be "\\s-+", which meant that it was mode-dependent whether 1099This used to be "\\s-+", which meant that it was mode-dependent whether
1284newlines were included in the whitespace set. This has now been 1100newlines were included in the whitespace set. This has now been
@@ -1286,52 +1102,43 @@ changed to only match spaces and tab characters.
1286 1102
1287** Dired 1103** Dired
1288 1104
1289+++
1290*** New user option 'dired-kill-when-opening-new-dired-buffer'. 1105*** New user option 'dired-kill-when-opening-new-dired-buffer'.
1291If non-nil, Dired will kill the current buffer when selecting a new 1106If non-nil, Dired will kill the current buffer when selecting a new
1292directory to display. 1107directory to display.
1293 1108
1294+++
1295*** Behavior change on 'dired-do-chmod'. 1109*** Behavior change on 'dired-do-chmod'.
1296As a security precaution, Dired's 'M' command no longer follows 1110As a security precaution, Dired's 'M' command no longer follows
1297symbolic links. Instead, it changes the symbolic link's own mode; 1111symbolic links. Instead, it changes the symbolic link's own mode;
1298this always fails on platforms where such modes are immutable. 1112this always fails on platforms where such modes are immutable.
1299 1113
1300---
1301*** Behavior change on 'dired-clean-confirm-killing-deleted-buffers'. 1114*** Behavior change on 'dired-clean-confirm-killing-deleted-buffers'.
1302Previously, if 'dired-clean-up-buffers-too' was non-nil, and 1115Previously, if 'dired-clean-up-buffers-too' was non-nil, and
1303'dired-clean-confirm-killing-deleted-buffers' was nil, the buffers 1116'dired-clean-confirm-killing-deleted-buffers' was nil, the buffers
1304wouldn't be killed. This combination will now kill the buffers. 1117wouldn't be killed. This combination will now kill the buffers.
1305 1118
1306+++
1307*** New user option 'dired-switches-in-mode-line'. 1119*** New user option 'dired-switches-in-mode-line'.
1308This user option controls how 'ls' switches are displayed in the mode 1120This user option controls how 'ls' switches are displayed in the mode
1309line, and allows truncating them (to preserve space on the mode line) 1121line, and allows truncating them (to preserve space on the mode line)
1310or showing them literally, either instead of, or in addition to, 1122or showing them literally, either instead of, or in addition to,
1311displaying "by name" or "by date" sort order. 1123displaying "by name" or "by date" sort order.
1312 1124
1313+++
1314*** New user option 'dired-compress-directory-default-suffix'. 1125*** New user option 'dired-compress-directory-default-suffix'.
1315This user option controls the default suffix for compressing a 1126This user option controls the default suffix for compressing a
1316directory. If it's nil, ".tar.gz" will be used. Refer to 1127directory. If it's nil, ".tar.gz" will be used. Refer to
1317'dired-compress-files-alist' for a list of supported suffixes. 1128'dired-compress-files-alist' for a list of supported suffixes.
1318 1129
1319+++
1320*** New user option 'dired-compress-file-default-suffix'. 1130*** New user option 'dired-compress-file-default-suffix'.
1321This user option controls the default suffix for compressing files. 1131This user option controls the default suffix for compressing files.
1322If it's nil, ".gz" will be used. Refer to 'dired-compress-file-alist' 1132If it's nil, ".gz" will be used. Refer to 'dired-compress-file-alist'
1323for a list of supported suffixes. 1133for a list of supported suffixes.
1324 1134
1325---
1326*** Broken and circular links are shown with the 'dired-broken-symlink' face. 1135*** Broken and circular links are shown with the 'dired-broken-symlink' face.
1327 1136
1328---
1329*** '=' ('dired-diff') will now put all backup files into the 'M-n' history. 1137*** '=' ('dired-diff') will now put all backup files into the 'M-n' history.
1330When using '=' on a file with backup files, the default file to use 1138When using '=' on a file with backup files, the default file to use
1331for diffing is the newest backup file. You can now use 'M-n' to quickly 1139for diffing is the newest backup file. You can now use 'M-n' to quickly
1332select a different backup file instead. 1140select a different backup file instead.
1333 1141
1334+++
1335*** New user option 'dired-maybe-use-globstar'. 1142*** New user option 'dired-maybe-use-globstar'.
1336If set, enables globstar (recursive globbing) in shells that support 1143If set, enables globstar (recursive globbing) in shells that support
1337this feature, but have it turned off by default. This allows producing 1144this feature, but have it turned off by default. This allows producing
@@ -1340,19 +1147,16 @@ subdirectories of a given directory. The new variable
1340'dired-enable-globstar-in-shell' lists which shells can have globstar 1147'dired-enable-globstar-in-shell' lists which shells can have globstar
1341enabled, and how to enable it. 1148enabled, and how to enable it.
1342 1149
1343+++
1344*** New user option 'dired-copy-dereference'. 1150*** New user option 'dired-copy-dereference'.
1345If set to non-nil, Dired will dereference symbolic links when copying. 1151If set to non-nil, Dired will dereference symbolic links when copying.
1346This can be switched off on a per-usage basis by providing 1152This can be switched off on a per-usage basis by providing
1347'dired-do-copy' with a 'C-u' prefix. 1153'dired-do-copy' with a 'C-u' prefix.
1348 1154
1349---
1350*** New user option 'dired-do-revert-buffer'. 1155*** New user option 'dired-do-revert-buffer'.
1351Non-nil reverts the destination Dired buffer after performing one 1156Non-nil reverts the destination Dired buffer after performing one
1352of these operations: 'dired-do-copy', 'dired-do-rename', 1157of these operations: 'dired-do-copy', 'dired-do-rename',
1353'dired-do-symlink', 'dired-do-hardlink'. 1158'dired-do-symlink', 'dired-do-hardlink'.
1354 1159
1355---
1356*** New user option 'dired-mark-region'. 1160*** New user option 'dired-mark-region'.
1357This option affects all Dired commands that mark files. When non-nil 1161This option affects all Dired commands that mark files. When non-nil
1358and the region is active in Transient Mark mode, then Dired commands 1162and the region is active in Transient Mark mode, then Dired commands
@@ -1360,12 +1164,10 @@ operate only on files in the active region. The values 'file' and
1360'line' of this user option define the details of marking the file at 1164'line' of this user option define the details of marking the file at
1361the end of the region. 1165the end of the region.
1362 1166
1363+++
1364*** State changing VC operations are supported in Dired. 1167*** State changing VC operations are supported in Dired.
1365These operations are supported on files and directories via the new 1168These operations are supported on files and directories via the new
1366command 'dired-vc-next-action'. 1169command 'dired-vc-next-action'.
1367 1170
1368+++
1369*** 'dired-jump' and 'dired-jump-other-window' moved from 'dired-x' to 'dired'. 1171*** 'dired-jump' and 'dired-jump-other-window' moved from 'dired-x' to 'dired'.
1370The 'dired-jump' and 'dired-jump-other-window' commands have been 1172The 'dired-jump' and 'dired-jump-other-window' commands have been
1371moved from the 'dired-x' package to 'dired'. The user option 1173moved from the 'dired-x' package to 'dired'. The user option
@@ -1378,25 +1180,21 @@ keys, add the following to your init file:
1378 (global-set-key "\C-x\C-j" nil) 1180 (global-set-key "\C-x\C-j" nil)
1379 (global-set-key "\C-x4\C-j" nil) 1181 (global-set-key "\C-x4\C-j" nil)
1380 1182
1381---
1382*** 'dired-query' now uses 'read-char-from-minibuffer'. 1183*** 'dired-query' now uses 'read-char-from-minibuffer'.
1383Using it instead of 'read-char-choice' allows using 'C-x o' 1184Using it instead of 'read-char-choice' allows using 'C-x o'
1384to switch to the help window displayed after typing 'C-h'. 1185to switch to the help window displayed after typing 'C-h'.
1385 1186
1386+++
1387** Emacs 28.1 comes with Org v9.5. 1187** Emacs 28.1 comes with Org v9.5.
1388See the file ORG-NEWS for user-visible changes in Org. 1188See the file ORG-NEWS for user-visible changes in Org.
1389 1189
1390** Outline 1190** Outline
1391 1191
1392+++
1393*** New commands to cycle heading visibility. 1192*** New commands to cycle heading visibility.
1394Typing 'TAB' on a heading line cycles the current section between 1193Typing 'TAB' on a heading line cycles the current section between
1395"hide all", "subheadings", and "show all" states. Typing 'S-TAB' 1194"hide all", "subheadings", and "show all" states. Typing 'S-TAB'
1396anywhere in the buffer cycles the whole buffer between "only top-level 1195anywhere in the buffer cycles the whole buffer between "only top-level
1397headings", "all headings and subheadings", and "show all" states. 1196headings", "all headings and subheadings", and "show all" states.
1398 1197
1399+++
1400*** New user option 'outline-minor-mode-cycle'. 1198*** New user option 'outline-minor-mode-cycle'.
1401This user option customizes 'outline-minor-mode', with the difference 1199This user option customizes 'outline-minor-mode', with the difference
1402that 'TAB' and 'S-TAB' on heading lines cycle heading visibility. 1200that 'TAB' and 'S-TAB' on heading lines cycle heading visibility.
@@ -1405,7 +1203,6 @@ Typing 'TAB' on a heading line cycles the current section between
1405heading line cycles the whole buffer between "only top-level 1203heading line cycles the whole buffer between "only top-level
1406headings", "all headings and subheadings", and "show all" states. 1204headings", "all headings and subheadings", and "show all" states.
1407 1205
1408---
1409*** New user option 'outline-minor-mode-highlight'. 1206*** New user option 'outline-minor-mode-highlight'.
1410This user option customizes 'outline-minor-mode'. It puts 1207This user option customizes 'outline-minor-mode'. It puts
1411highlighting on heading lines using standard outline faces. This 1208highlighting on heading lines using standard outline faces. This
@@ -1414,27 +1211,22 @@ major mode.
1414 1211
1415** Ispell 1212** Ispell
1416 1213
1417+++
1418*** 'ispell-comments-and-strings' now accepts START and END arguments. 1214*** 'ispell-comments-and-strings' now accepts START and END arguments.
1419These arguments default to the active region when used interactively. 1215These arguments default to the active region when used interactively.
1420 1216
1421+++
1422*** New command 'ispell-comment-or-string-at-point'. 1217*** New command 'ispell-comment-or-string-at-point'.
1423 1218
1424---
1425*** New user option 'ispell-help-timeout'. 1219*** New user option 'ispell-help-timeout'.
1426This controls how long the ispell help (on the '?' key) is displayed. 1220This controls how long the ispell help (on the '?' key) is displayed.
1427 1221
1428** Flyspell mode 1222** Flyspell mode
1429 1223
1430+++
1431*** Corrections and actions menu can be optionally bound to 'mouse-3'. 1224*** Corrections and actions menu can be optionally bound to 'mouse-3'.
1432When Flyspell mode highlights a word as misspelled, you can click on 1225When Flyspell mode highlights a word as misspelled, you can click on
1433it to display a menu of possible corrections and actions. You can now 1226it to display a menu of possible corrections and actions. You can now
1434easily bind this menu to 'down-mouse-3' (usually the right mouse button) 1227easily bind this menu to 'down-mouse-3' (usually the right mouse button)
1435instead of 'mouse-2' (the default) by enabling 'context-menu-mode'. 1228instead of 'mouse-2' (the default) by enabling 'context-menu-mode'.
1436 1229
1437---
1438*** The current dictionary is now displayed in the minor mode lighter. 1230*** The current dictionary is now displayed in the minor mode lighter.
1439Clicking the dictionary name changes the current dictionary. 1231Clicking the dictionary name changes the current dictionary.
1440 1232
@@ -1444,7 +1236,6 @@ Clicking the dictionary name changes the current dictionary.
1444Thus, packages on NonGNU ELPA will appear by default in the list shown 1236Thus, packages on NonGNU ELPA will appear by default in the list shown
1445by 'list-packages'. 1237by 'list-packages'.
1446 1238
1447---
1448*** '/ s' ('package-menu-filter-by-status') changed parameter handling. 1239*** '/ s' ('package-menu-filter-by-status') changed parameter handling.
1449The command was documented to take a comma-separated list of statuses 1240The command was documented to take a comma-separated list of statuses
1450to filter by, but instead it used the parameter as a regexp. The 1241to filter by, but instead it used the parameter as a regexp. The
@@ -1452,10 +1243,8 @@ command has been changed so that it now works as documented, and
1452checks statuses not as a regexp, but instead an exact match from the 1243checks statuses not as a regexp, but instead an exact match from the
1453comma-separated list. 1244comma-separated list.
1454 1245
1455+++
1456*** New command 'package-browse-url' and keystroke 'w'. 1246*** New command 'package-browse-url' and keystroke 'w'.
1457 1247
1458+++
1459*** New commands to filter the package list. 1248*** New commands to filter the package list.
1460The filter commands are bound to the following keys: 1249The filter commands are bound to the following keys:
1461 1250
@@ -1482,7 +1271,6 @@ run the native-compilation of the package files. (Be sure to leave
1482Emacs running until these asynchronous subprocesses exit, or else the 1271Emacs running until these asynchronous subprocesses exit, or else the
1483native-compilation will be aborted when you exit Emacs.) 1272native-compilation will be aborted when you exit Emacs.)
1484 1273
1485---
1486*** Column widths in 'list-packages' display can now be customized. 1274*** Column widths in 'list-packages' display can now be customized.
1487See the new user options 'package-name-column-width', 1275See the new user options 'package-name-column-width',
1488'package-version-column-width', 'package-status-column-width', and 1276'package-version-column-width', 'package-status-column-width', and
@@ -1490,7 +1278,6 @@ See the new user options 'package-name-column-width',
1490 1278
1491** Info 1279** Info
1492 1280
1493---
1494*** New user option 'Info-warn-on-index-alternatives-wrap'. 1281*** New user option 'Info-warn-on-index-alternatives-wrap'.
1495This option affects what happens when using the ',' command after 1282This option affects what happens when using the ',' command after
1496looking up an entry with 'i' in info buffers. If non-nil (the 1283looking up an entry with 'i' in info buffers. If non-nil (the
@@ -1500,7 +1287,6 @@ you to the first match.
1500 1287
1501** Abbrev mode 1288** Abbrev mode
1502 1289
1503+++
1504*** Emacs can now suggest to use an abbrev based on text you type. 1290*** Emacs can now suggest to use an abbrev based on text you type.
1505A new user option, 'abbrev-suggest', enables the new abbrev suggestion 1291A new user option, 'abbrev-suggest', enables the new abbrev suggestion
1506feature. When enabled, if a user manually types a piece of text that 1292feature. When enabled, if a user manually types a piece of text that
@@ -1510,17 +1296,14 @@ used instead.
1510 1296
1511** Bookmarks 1297** Bookmarks
1512 1298
1513---
1514*** Bookmarks can now be targets for new tabs. 1299*** Bookmarks can now be targets for new tabs.
1515When the bookmark.el library is loaded, a customize choice is added 1300When the bookmark.el library is loaded, a customize choice is added
1516to 'tab-bar-new-tab-choice' for new tabs to show the bookmark list. 1301to 'tab-bar-new-tab-choice' for new tabs to show the bookmark list.
1517 1302
1518---
1519*** New user option 'bookmark-set-fringe-mark'. 1303*** New user option 'bookmark-set-fringe-mark'.
1520If non-nil, setting a bookmark will set a fringe mark on the current 1304If non-nil, setting a bookmark will set a fringe mark on the current
1521line, and jumping to a bookmark will also set this mark. 1305line, and jumping to a bookmark will also set this mark.
1522 1306
1523---
1524*** New user option 'bookmark-menu-confirm-deletion'. 1307*** New user option 'bookmark-menu-confirm-deletion'.
1525In Bookmark Menu mode, Emacs by default does not prompt for 1308In Bookmark Menu mode, Emacs by default does not prompt for
1526confirmation when you type 'x' to execute the deletion of bookmarks 1309confirmation when you type 'x' to execute the deletion of bookmarks
@@ -1528,7 +1311,6 @@ that have been marked for deletion. However, if this new option is
1528non-nil then Emacs will require confirmation with 'yes-or-no-p' before 1311non-nil then Emacs will require confirmation with 'yes-or-no-p' before
1529deleting. 1312deleting.
1530 1313
1531---
1532*** The 'list-bookmarks' menu is now based on 'tabulated-list-mode'. 1314*** The 'list-bookmarks' menu is now based on 'tabulated-list-mode'.
1533The interactive bookmark list will now benefit from features in 1315The interactive bookmark list will now benefit from features in
1534'tabulated-list-mode' like sorting columns or changing column width. 1316'tabulated-list-mode' like sorting columns or changing column width.
@@ -1540,17 +1322,14 @@ The variables 'bookmark-bmenu-use-header-line' and
1540 1322
1541** Recentf 1323** Recentf
1542 1324
1543---
1544*** The recentf files are no longer backed up. 1325*** The recentf files are no longer backed up.
1545 1326
1546---
1547*** 'recentf-auto-cleanup' now repeats daily when set to a time string. 1327*** 'recentf-auto-cleanup' now repeats daily when set to a time string.
1548When 'recentf-auto-cleanup' is set to a time string, it now repeats 1328When 'recentf-auto-cleanup' is set to a time string, it now repeats
1549every day, rather than only running once after the mode is turned on. 1329every day, rather than only running once after the mode is turned on.
1550 1330
1551** Calc 1331** Calc
1552 1332
1553---
1554*** The behavior when doing forward-delete has been changed. 1333*** The behavior when doing forward-delete has been changed.
1555Previously, using the 'C-d' command would delete the final number in 1334Previously, using the 'C-d' command would delete the final number in
1556the input field, no matter where point was. This has been changed to 1335the input field, no matter where point was. This has been changed to
@@ -1558,42 +1337,35 @@ work more traditionally, with 'C-d' deleting the next character.
1558Likewise, point isn't moved to the end of the string before inserting 1337Likewise, point isn't moved to the end of the string before inserting
1559digits. 1338digits.
1560 1339
1561+++
1562*** Setting the word size to zero disables word clipping. 1340*** Setting the word size to zero disables word clipping.
1563The word size normally clips the results of certain bit-oriented 1341The word size normally clips the results of certain bit-oriented
1564operations such as shifts and bitwise XOR. A word size of zero, set 1342operations such as shifts and bitwise XOR. A word size of zero, set
1565by 'b w', makes the operation have effect on the whole argument values 1343by 'b w', makes the operation have effect on the whole argument values
1566and the result is not truncated in any way. 1344and the result is not truncated in any way.
1567 1345
1568---
1569*** The '/' operator now has higher precedence in (La)TeX input mode. 1346*** The '/' operator now has higher precedence in (La)TeX input mode.
1570It no longer has lower precedence than '+' and '-'. 1347It no longer has lower precedence than '+' and '-'.
1571 1348
1572---
1573*** New user option 'calc-make-windows-dedicated'. 1349*** New user option 'calc-make-windows-dedicated'.
1574When this user option is non-nil, Calc will mark its windows as 1350When this user option is non-nil, Calc will mark its windows as
1575dedicated. 1351dedicated.
1576 1352
1577** Calendar 1353** Calendar
1578 1354
1579+++
1580*** New user option 'calendar-time-zone-style'. 1355*** New user option 'calendar-time-zone-style'.
1581If 'numeric', calendar functions (eg 'calendar-sunrise-sunset') that display 1356If 'numeric', calendar functions (eg 'calendar-sunrise-sunset') that display
1582time zones will use a form like "+0100" instead of "CET". 1357time zones will use a form like "+0100" instead of "CET".
1583 1358
1584** Imenu 1359** Imenu
1585 1360
1586+++
1587*** New user option 'imenu-max-index-time'. 1361*** New user option 'imenu-max-index-time'.
1588If creating the imenu index takes longer than specified by this 1362If creating the imenu index takes longer than specified by this
1589option (default 5 seconds), imenu indexing is stopped. 1363option (default 5 seconds), imenu indexing is stopped.
1590 1364
1591** Ido 1365** Ido
1592 1366
1593---
1594*** Switching on 'ido-mode' now also overrides 'ffap-file-finder'. 1367*** Switching on 'ido-mode' now also overrides 'ffap-file-finder'.
1595 1368
1596---
1597*** Killing virtual ido buffers interactively will make them go away. 1369*** Killing virtual ido buffers interactively will make them go away.
1598Previously, killing a virtual ido buffer with 'ido-kill-buffer' didn't 1370Previously, killing a virtual ido buffer with 'ido-kill-buffer' didn't
1599do anything. This has now been changed, and killing virtual buffers 1371do anything. This has now been changed, and killing virtual buffers
@@ -1601,13 +1373,11 @@ with that command will remove the buffer from recentf.
1601 1373
1602** So Long 1374** So Long
1603 1375
1604---
1605*** New 'so-long-predicate' function 'so-long-statistics-excessive-p'. 1376*** New 'so-long-predicate' function 'so-long-statistics-excessive-p'.
1606It efficiently detects the presence of a long line anywhere in the 1377It efficiently detects the presence of a long line anywhere in the
1607buffer using 'buffer-line-statistics' (see above). This is now the 1378buffer using 'buffer-line-statistics' (see above). This is now the
1608default predicate (replacing 'so-long-detected-long-line-p'). 1379default predicate (replacing 'so-long-detected-long-line-p').
1609 1380
1610---
1611*** Default values 'so-long-threshold' and 'so-long-max-lines' increased. 1381*** Default values 'so-long-threshold' and 'so-long-max-lines' increased.
1612The values of these user options have been raised to 10000 bytes and 500 1382The values of these user options have been raised to 10000 bytes and 500
1613lines respectively, to reduce the likelihood of false-positives when 1383lines respectively, to reduce the likelihood of false-positives when
@@ -1615,14 +1385,12 @@ lines respectively, to reduce the likelihood of false-positives when
1615by the old predicate, as the new predicate knows the longest line in 1385by the old predicate, as the new predicate knows the longest line in
1616the entire buffer. 1386the entire buffer.
1617 1387
1618---
1619*** 'so-long-target-modes' now includes 'fundamental-mode' by default. 1388*** 'so-long-target-modes' now includes 'fundamental-mode' by default.
1620This means that 'global-so-long-mode' will also process files which were 1389This means that 'global-so-long-mode' will also process files which were
1621not recognised. (This only has an effect if 'set-auto-mode' chooses 1390not recognised. (This only has an effect if 'set-auto-mode' chooses
1622'fundamental-mode'; buffers which are simply in 'fundamental-mode' by 1391'fundamental-mode'; buffers which are simply in 'fundamental-mode' by
1623default are unaffected.) 1392default are unaffected.)
1624 1393
1625---
1626*** New user options to preserve modes and variables. 1394*** New user options to preserve modes and variables.
1627The new options 'so-long-mode-preserved-minor-modes' and 1395The new options 'so-long-mode-preserved-minor-modes' and
1628'so-long-mode-preserved-variables' allow specified mode and variable 1396'so-long-mode-preserved-variables' allow specified mode and variable
@@ -1631,7 +1399,6 @@ mode. By default, these new options support 'view-mode'.
1631 1399
1632** Grep 1400** Grep
1633 1401
1634+++
1635*** New user option 'grep-match-regexp' matches grep markers to highlight. 1402*** New user option 'grep-match-regexp' matches grep markers to highlight.
1636Grep emits SGR ANSI escape sequences to color its output. The new 1403Grep emits SGR ANSI escape sequences to color its output. The new
1637user option 'grep-match-regexp' holds the regular expression to match 1404user option 'grep-match-regexp' holds the regular expression to match
@@ -1639,7 +1406,6 @@ the appropriate markers in order to provide highlighting in the source
1639buffer. The user option can be customized to accommodate other 1406buffer. The user option can be customized to accommodate other
1640grep-like tools. 1407grep-like tools.
1641 1408
1642---
1643*** The 'lgrep' command now ignores directories. 1409*** The 'lgrep' command now ignores directories.
1644On systems where the grep command supports it, directories will be 1410On systems where the grep command supports it, directories will be
1645skipped. 1411skipped.
@@ -1653,19 +1419,16 @@ any directory names on the 'find' command lines end in a slash.
1653This change is for better compatibility with old versions of non-GNU 1419This change is for better compatibility with old versions of non-GNU
1654'find', such as the one used on macOS. 1420'find', such as the one used on macOS.
1655 1421
1656---
1657*** New utility function 'grep-file-at-point'. 1422*** New utility function 'grep-file-at-point'.
1658This returns the name of the file at point (if any) in 'grep-mode' 1423This returns the name of the file at point (if any) in 'grep-mode'
1659buffers. 1424buffers.
1660 1425
1661** Shell 1426** Shell
1662 1427
1663---
1664*** New command in 'shell-mode': 'shell-narrow-to-prompt'. 1428*** New command in 'shell-mode': 'shell-narrow-to-prompt'.
1665This is bound to 'C-x n d' in 'shell-mode' buffers, and narrows to the 1429This is bound to 'C-x n d' in 'shell-mode' buffers, and narrows to the
1666command line under point (and any following output). 1430command line under point (and any following output).
1667 1431
1668---
1669*** New user option 'shell-has-auto-cd'. 1432*** New user option 'shell-has-auto-cd'.
1670If non-nil, 'shell-mode' handles implicit "cd" commands, changing the 1433If non-nil, 'shell-mode' handles implicit "cd" commands, changing the
1671directory if the command is a directory. Useful for shells like "zsh" 1434directory if the command is a directory. Useful for shells like "zsh"
@@ -1673,20 +1436,17 @@ that has this feature.
1673 1436
1674** Term mode 1437** Term mode
1675 1438
1676---
1677*** New user option 'term-scroll-snap-to-bottom'. 1439*** New user option 'term-scroll-snap-to-bottom'.
1678By default, 'term' and 'ansi-term' will now recenter the buffer so 1440By default, 'term' and 'ansi-term' will now recenter the buffer so
1679that the prompt is on the final line in the window. Setting this new 1441that the prompt is on the final line in the window. Setting this new
1680user option to nil inhibits this behavior. 1442user option to nil inhibits this behavior.
1681 1443
1682---
1683*** New user option 'term-set-terminal-size'. 1444*** New user option 'term-set-terminal-size'.
1684If non-nil, the 'LINES' and 'COLUMNS' environment variables will be set 1445If non-nil, the 'LINES' and 'COLUMNS' environment variables will be set
1685based on the current window size. In previous versions of Emacs, this 1446based on the current window size. In previous versions of Emacs, this
1686was always done (and that could lead to odd displays when resizing the 1447was always done (and that could lead to odd displays when resizing the
1687window after starting). This variable defaults to nil. 1448window after starting). This variable defaults to nil.
1688 1449
1689---
1690*** 'term-mode' now supports "bright" color codes. 1450*** 'term-mode' now supports "bright" color codes.
1691"Bright" ANSI color codes are now displayed using the color values 1451"Bright" ANSI color codes are now displayed using the color values
1692defined in 'term-color-bright-*'. In addition, bold text with regular 1452defined in 'term-color-bright-*'. In addition, bold text with regular
@@ -1695,15 +1455,12 @@ is non-nil.
1695 1455
1696** Eshell 1456** Eshell
1697 1457
1698---
1699*** 'eshell-hist-ignoredups' can now also be used to mimic "erasedups" in bash. 1458*** 'eshell-hist-ignoredups' can now also be used to mimic "erasedups" in bash.
1700 1459
1701---
1702*** Environment variable 'INSIDE_EMACS' is now copied to subprocesses. 1460*** Environment variable 'INSIDE_EMACS' is now copied to subprocesses.
1703Its value contains the result of evaluating '(format "%s,eshell" 1461Its value contains the result of evaluating '(format "%s,eshell"
1704emacs-version)'. Other package names, like "tramp", could also be included. 1462emacs-version)'. Other package names, like "tramp", could also be included.
1705 1463
1706---
1707*** Eshell no longer re-initializes its keymap every call. 1464*** Eshell no longer re-initializes its keymap every call.
1708This allows users to use '(define-key eshell-mode-map ...)' as usual. 1465This allows users to use '(define-key eshell-mode-map ...)' as usual.
1709Some modules have their own minor mode now to account for these 1466Some modules have their own minor mode now to account for these
@@ -1715,7 +1472,6 @@ will create a bookmark that opens the current directory in Eshell.
1715 1472
1716** Archive mode 1473** Archive mode
1717 1474
1718---
1719*** Archive mode can now parse ".squashfs" files. 1475*** Archive mode can now parse ".squashfs" files.
1720 1476
1721*** Can now modify members of 'ar' archives. 1477*** Can now modify members of 'ar' archives.
@@ -1727,7 +1483,6 @@ New user option 'archive-hidden-columns' and new command
1727'archive-hideshow-column' let you control which columns are displayed 1483'archive-hideshow-column' let you control which columns are displayed
1728and which are kept hidden. 1484and which are kept hidden.
1729 1485
1730---
1731*** New command bound to 'C': 'archive-copy-file'. 1486*** New command bound to 'C': 'archive-copy-file'.
1732This command extracts the file at point and writes its data to a 1487This command extracts the file at point and writes its data to a
1733file. 1488file.
@@ -1756,15 +1511,12 @@ symbol property to the browsing commands. With a new command
1756'browse-url-with-browser-kind', an URL can explicitly be browsed with 1511'browse-url-with-browser-kind', an URL can explicitly be browsed with
1757either an internal or external browser. 1512either an internal or external browser.
1758 1513
1759---
1760*** Support for browsing of remote files. 1514*** Support for browsing of remote files.
1761If a remote file is specified, a local temporary copy of that file is 1515If a remote file is specified, a local temporary copy of that file is
1762passed to the browser. 1516passed to the browser.
1763 1517
1764---
1765*** Support for the conkeror browser is now obsolete. 1518*** Support for the conkeror browser is now obsolete.
1766 1519
1767---
1768*** Support for the Mosaic browser has been removed. 1520*** Support for the Mosaic browser has been removed.
1769This support has been obsolete since 25.1. 1521This support has been obsolete since 25.1.
1770 1522
@@ -1775,7 +1527,6 @@ New key bindings have been added to 'completion-list-mode': 'n' and
1775'p' now navigate completions, and 'M-g M-c' switches to the 1527'p' now navigate completions, and 'M-g M-c' switches to the
1776minibuffer and back to the completion list buffer. 1528minibuffer and back to the completion list buffer.
1777 1529
1778+++
1779** Profiler 1530** Profiler
1780The results displayed by 'profiler-report' now have the usage figures 1531The results displayed by 'profiler-report' now have the usage figures
1781at the left hand side followed by the function name. This is intended 1532at the left hand side followed by the function name. This is intended
@@ -1785,12 +1536,10 @@ layout back.
1785 1536
1786** Icomplete 1537** Icomplete
1787 1538
1788---
1789*** New user option 'icomplete-matches-format'. 1539*** New user option 'icomplete-matches-format'.
1790This allows controlling the current/total number of matches for the 1540This allows controlling the current/total number of matches for the
1791prompt prefix. 1541prompt prefix.
1792 1542
1793+++
1794*** New minor modes 'icomplete-vertical-mode' and 'fido-vertical-mode'. 1543*** New minor modes 'icomplete-vertical-mode' and 'fido-vertical-mode'.
1795These modes modify Icomplete ('icomplete-mode') and Fido 1544These modes modify Icomplete ('icomplete-mode') and Fido
1796('fido-mode'), to display completion candidates vertically instead of 1545('fido-mode'), to display completion candidates vertically instead of
@@ -1799,20 +1548,16 @@ kept at the top. In Fido, completions scroll like a typical dropdown
1799widget. Both these new minor modes will turn on their non-vertical 1548widget. Both these new minor modes will turn on their non-vertical
1800counterparts first, if they are not on already. 1549counterparts first, if they are not on already.
1801 1550
1802---
1803*** Default value of 'icomplete-compute-delay' has been changed to 0.15 s. 1551*** Default value of 'icomplete-compute-delay' has been changed to 0.15 s.
1804 1552
1805---
1806*** Default value of 'icomplete-max-delay-chars' has been changed to 2. 1553*** Default value of 'icomplete-max-delay-chars' has been changed to 2.
1807 1554
1808---
1809*** Reduced blinking while completing the next completions set. 1555*** Reduced blinking while completing the next completions set.
1810Icomplete doesn't hide the hint with the previously computed 1556Icomplete doesn't hide the hint with the previously computed
1811completions anymore when compute delay is in effect, or the previous 1557completions anymore when compute delay is in effect, or the previous
1812computation has been aborted by input. Instead it shows the previous 1558computation has been aborted by input. Instead it shows the previous
1813completions until the new ones are ready. 1559completions until the new ones are ready.
1814 1560
1815---
1816*** Change in meaning of 'icomplete-show-matches-on-no-input'. 1561*** Change in meaning of 'icomplete-show-matches-on-no-input'.
1817Previously, choosing a different completion with commands like 'C-.' 1562Previously, choosing a different completion with commands like 'C-.'
1818and then hitting 'RET' would choose the default completion. Doing this 1563and then hitting 'RET' would choose the default completion. Doing this
@@ -1822,7 +1567,6 @@ with initial input as the default directory.
1822 1567
1823** Windmove 1568** Windmove
1824 1569
1825+++
1826*** New user options to customize windmove keybindings. 1570*** New user options to customize windmove keybindings.
1827These options include 'windmove-default-keybindings', 1571These options include 'windmove-default-keybindings',
1828'windmove-display-default-keybindings', 1572'windmove-display-default-keybindings',
@@ -1832,25 +1576,20 @@ Also new mode 'windmove-mode' enables the customized keybindings.
1832 1576
1833** Occur mode 1577** Occur mode
1834 1578
1835---
1836*** New bindings in 'occur-mode'. 1579*** New bindings in 'occur-mode'.
1837The command 'next-error-no-select' is now bound to 'n' and 1580The command 'next-error-no-select' is now bound to 'n' and
1838'previous-error-no-select' is bound to 'p'. 1581'previous-error-no-select' is bound to 'p'.
1839 1582
1840---
1841*** New command 'recenter-current-error'. 1583*** New command 'recenter-current-error'.
1842It is bound to 'l' in Occur or compilation buffers, and recenters the 1584It is bound to 'l' in Occur or compilation buffers, and recenters the
1843current displayed occurrence/error. 1585current displayed occurrence/error.
1844 1586
1845---
1846*** Matches in target buffers are now highlighted as in 'compilation-mode'. 1587*** Matches in target buffers are now highlighted as in 'compilation-mode'.
1847The method of highlighting is specified by the user options 1588The method of highlighting is specified by the user options
1848'next-error-highlight' and 'next-error-highlight-no-select'. 1589'next-error-highlight' and 'next-error-highlight-no-select'.
1849 1590
1850---
1851*** A fringe arrow in the "*Occur*" buffer indicates the selected match. 1591*** A fringe arrow in the "*Occur*" buffer indicates the selected match.
1852 1592
1853---
1854*** Occur mode may use a different type for 'occur-target' property values. 1593*** Occur mode may use a different type for 'occur-target' property values.
1855The value was previously always a marker set to the start of the first 1594The value was previously always a marker set to the start of the first
1856match on the line but can now also be a list of '(BEGIN . END)' pairs 1595match on the line but can now also be a list of '(BEGIN . END)' pairs
@@ -1861,10 +1600,8 @@ work as before.
1861 1600
1862** Emacs Lisp mode 1601** Emacs Lisp mode
1863 1602
1864---
1865*** The mode-line now indicates whether we're using lexical or dynamic scoping. 1603*** The mode-line now indicates whether we're using lexical or dynamic scoping.
1866 1604
1867+++
1868*** A space between an open paren and a symbol changes the indentation rule. 1605*** A space between an open paren and a symbol changes the indentation rule.
1869The presence of a space between an open paren and a symbol now is 1606The presence of a space between an open paren and a symbol now is
1870taken as a statement by the programmer that this should be indented 1607taken as a statement by the programmer that this should be indented
@@ -1876,37 +1613,31 @@ as a data list rather than as a piece of code.
1876The mode provides refined highlighting of built-in functions, types, 1613The mode provides refined highlighting of built-in functions, types,
1877and variables. 1614and variables.
1878 1615
1879---
1880*** Lisp mode now uses 'common-lisp-indent-function'. 1616*** Lisp mode now uses 'common-lisp-indent-function'.
1881To revert to the previous behavior, 1617To revert to the previous behavior,
1882'(setq lisp-indent-function 'lisp-indent-function)' from 'lisp-mode-hook'. 1618'(setq lisp-indent-function 'lisp-indent-function)' from 'lisp-mode-hook'.
1883 1619
1884** Change Logs and VC 1620** Change Logs and VC
1885 1621
1886+++
1887*** 'vc-revert-show-diff' now has a third possible value: 'kill'. 1622*** 'vc-revert-show-diff' now has a third possible value: 'kill'.
1888If this user option is 'kill', then the diff buffer will be killed 1623If this user option is 'kill', then the diff buffer will be killed
1889after the 'vc-revert' action instead of buried. 1624after the 'vc-revert' action instead of buried.
1890 1625
1891---
1892*** More VC commands can be used from non-file buffers. 1626*** More VC commands can be used from non-file buffers.
1893The relevant commands are those that don't change the VC state. 1627The relevant commands are those that don't change the VC state.
1894The non-file buffers which can use VC commands are those that have 1628The non-file buffers which can use VC commands are those that have
1895their 'default-directory' under VC. 1629their 'default-directory' under VC.
1896 1630
1897---
1898*** New face 'log-view-commit-body'. 1631*** New face 'log-view-commit-body'.
1899This is used when expanding commit messages from 'vc-print-root-log' 1632This is used when expanding commit messages from 'vc-print-root-log'
1900and similar commands. 1633and similar commands.
1901 1634
1902---
1903*** New faces for 'vc-dir' buffers. 1635*** New faces for 'vc-dir' buffers.
1904Those are: 'vc-dir-header', 'vc-dir-header-value', 'vc-dir-directory', 1636Those are: 'vc-dir-header', 'vc-dir-header-value', 'vc-dir-directory',
1905'vc-dir-file', 'vc-dir-mark-indicator', 'vc-dir-status-warning', 1637'vc-dir-file', 'vc-dir-mark-indicator', 'vc-dir-status-warning',
1906'vc-dir-status-edited', 'vc-dir-status-up-to-date', 1638'vc-dir-status-edited', 'vc-dir-status-up-to-date',
1907'vc-dir-status-ignored'. 1639'vc-dir-status-ignored'.
1908 1640
1909---
1910*** The responsible VC backend is now the most specific one. 1641*** The responsible VC backend is now the most specific one.
1911'vc-responsible-backend' loops over the backends in 1642'vc-responsible-backend' loops over the backends in
1912'vc-handled-backends' to determine which backend is responsible for a 1643'vc-handled-backends' to determine which backend is responsible for a
@@ -1914,41 +1645,32 @@ specific (unregistered) file. Previously, the first matching backend
1914was chosen, but now the one with the most specific path is chosen (in 1645was chosen, but now the one with the most specific path is chosen (in
1915case there's a directory handled by one backend inside another). 1646case there's a directory handled by one backend inside another).
1916 1647
1917---
1918*** New command 'vc-dir-root' uses the root directory without asking. 1648*** New command 'vc-dir-root' uses the root directory without asking.
1919 1649
1920---
1921*** New commands 'vc-dir-mark-registered-files' (bound to '* r') and 1650*** New commands 'vc-dir-mark-registered-files' (bound to '* r') and
1922'vc-dir-mark-unregistered-files'. 1651'vc-dir-mark-unregistered-files'.
1923 1652
1924---
1925*** Support for bookmark.el. 1653*** Support for bookmark.el.
1926Bookmark locations can refer to VC directory buffers. 1654Bookmark locations can refer to VC directory buffers.
1927 1655
1928---
1929*** New user option 'vc-hg-create-bookmark'. 1656*** New user option 'vc-hg-create-bookmark'.
1930It controls whether a bookmark or branch will be created when you 1657It controls whether a bookmark or branch will be created when you
1931invoke 'C-u C-x v s' ('vc-create-tag'). 1658invoke 'C-u C-x v s' ('vc-create-tag').
1932 1659
1933---
1934*** 'vc-hg' now uses 'hg summary' to populate extra 'vc-dir' headers. 1660*** 'vc-hg' now uses 'hg summary' to populate extra 'vc-dir' headers.
1935 1661
1936---
1937*** New user option 'vc-git-revision-complete-only-branches'. 1662*** New user option 'vc-git-revision-complete-only-branches'.
1938If non-nil, only branches and remotes are considered when doing 1663If non-nil, only branches and remotes are considered when doing
1939completion over Git branch names. The default is nil, which causes 1664completion over Git branch names. The default is nil, which causes
1940tags to be considered as well. 1665tags to be considered as well.
1941 1666
1942---
1943*** New user option 'vc-git-log-switches'. 1667*** New user option 'vc-git-log-switches'.
1944String or list of strings specifying switches for Git log under VC. 1668String or list of strings specifying switches for Git log under VC.
1945 1669
1946---
1947*** Command 'vc-switch-backend' is now obsolete. 1670*** Command 'vc-switch-backend' is now obsolete.
1948If you are still using it with any regularity, please file a bug 1671If you are still using it with any regularity, please file a bug
1949report with some details. 1672report with some details.
1950 1673
1951---
1952*** New variable 'vc-git-use-literal-pathspecs'. 1674*** New variable 'vc-git-use-literal-pathspecs'.
1953The Git backend's function now treat all file names "literally", where 1675The Git backend's function now treat all file names "literally", where
1954some of them previously could interpret file names (pathspecs) as 1676some of them previously could interpret file names (pathspecs) as
@@ -1957,35 +1679,28 @@ the aforementioned variable to nil locally to avoid this.
1957 1679
1958** Gnus 1680** Gnus
1959 1681
1960+++
1961*** New user option 'gnus-topic-display-predicate'. 1682*** New user option 'gnus-topic-display-predicate'.
1962This can be used to inhibit the display of some topics completely. 1683This can be used to inhibit the display of some topics completely.
1963 1684
1964+++
1965*** nnimap now supports the oauth2.el library. 1685*** nnimap now supports the oauth2.el library.
1966 1686
1967+++
1968*** New Summary buffer sort options for extra headers. 1687*** New Summary buffer sort options for extra headers.
1969The extra header sort option ('C-c C-s C-x') prompts for a header 1688The extra header sort option ('C-c C-s C-x') prompts for a header
1970and fails if no sort function has been defined. Sorting by 1689and fails if no sort function has been defined. Sorting by
1971Newsgroups ('C-c C-s C-u') has been pre-defined. 1690Newsgroups ('C-c C-s C-u') has been pre-defined.
1972 1691
1973+++
1974*** The '#' command in the Group and Summary buffer now toggles, 1692*** The '#' command in the Group and Summary buffer now toggles,
1975instead of sets, the process mark. 1693instead of sets, the process mark.
1976 1694
1977+++
1978*** New user option 'gnus-process-mark-toggle'. 1695*** New user option 'gnus-process-mark-toggle'.
1979If non-nil (the default), the '#' command in the Group and Summary 1696If non-nil (the default), the '#' command in the Group and Summary
1980buffers will toggle, instead of set, the process mark. 1697buffers will toggle, instead of set, the process mark.
1981 1698
1982+++
1983*** New user option 'gnus-registry-register-all'. 1699*** New user option 'gnus-registry-register-all'.
1984If non-nil (the default), create registry entries for all messages. 1700If non-nil (the default), create registry entries for all messages.
1985If nil, don't automatically create entries, they must be created 1701If nil, don't automatically create entries, they must be created
1986manually. 1702manually.
1987 1703
1988+++
1989*** New user options to customise the summary line specs "%[" and "%]". 1704*** New user options to customise the summary line specs "%[" and "%]".
1990Four new options introduced in customisation group 1705Four new options introduced in customisation group
1991'gnus-summary-format'. These are 'gnus-sum-opening-bracket', 1706'gnus-summary-format'. These are 'gnus-sum-opening-bracket',
@@ -1998,29 +1713,24 @@ the value of 'gnus-sum-opening-bracket', but can also be
1998normally display the value of 'gnus-sum-closing-bracket', but can also 1713normally display the value of 'gnus-sum-closing-bracket', but can also
1999be 'gnus-sum-closing-bracket-adopted' for the adopted articles. 1714be 'gnus-sum-closing-bracket-adopted' for the adopted articles.
2000 1715
2001+++
2002*** New user option 'gnus-paging-select-next'. 1716*** New user option 'gnus-paging-select-next'.
2003This controls what happens when using commands like 'SPC' and 'DEL' to 1717This controls what happens when using commands like 'SPC' and 'DEL' to
2004page the current article. If non-nil (the default), go to the 1718page the current article. If non-nil (the default), go to the
2005next/prev article, but if nil, do nothing at the end/start of the article. 1719next/prev article, but if nil, do nothing at the end/start of the article.
2006 1720
2007+++
2008*** New gnus-search library. 1721*** New gnus-search library.
2009A new unified search syntax which can be used across multiple 1722A new unified search syntax which can be used across multiple
2010supported search engines. Set 'gnus-search-use-parsed-queries' to 1723supported search engines. Set 'gnus-search-use-parsed-queries' to
2011non-nil to enable. 1724non-nil to enable.
2012 1725
2013+++
2014*** New value for user option 'smiley-style'. 1726*** New value for user option 'smiley-style'.
2015Smileys can now be rendered with emojis instead of small images when 1727Smileys can now be rendered with emojis instead of small images when
2016using the new 'emoji' value in 'smiley-style'. 1728using the new 'emoji' value in 'smiley-style'.
2017 1729
2018+++
2019*** New user option 'gnus-agent-eagerly-store-articles'. 1730*** New user option 'gnus-agent-eagerly-store-articles'.
2020If non-nil (which is the default), the Gnus Agent will store all read 1731If non-nil (which is the default), the Gnus Agent will store all read
2021articles in the Agent cache. 1732articles in the Agent cache.
2022 1733
2023+++
2024*** New user option 'gnus-global-groups'. 1734*** New user option 'gnus-global-groups'.
2025Gnus handles private groups differently from public (i.e., NNTP-like) 1735Gnus handles private groups differently from public (i.e., NNTP-like)
2026groups. Most importantly, Gnus doesn't download external images from 1736groups. Most importantly, Gnus doesn't download external images from
@@ -2028,17 +1738,14 @@ mail-like groups. This can be overridden by putting group names in
2028'gnus-global-groups': Any group present in that list will be treated 1738'gnus-global-groups': Any group present in that list will be treated
2029like a public group. 1739like a public group.
2030 1740
2031+++
2032*** New scoring types for the Date header. 1741*** New scoring types for the Date header.
2033You can now score based on the relative age of an article with the new 1742You can now score based on the relative age of an article with the new
2034'<' and '>' date scoring types. 1743'<' and '>' date scoring types.
2035 1744
2036+++
2037*** User-defined scoring is now possible. 1745*** User-defined scoring is now possible.
2038The new type is 'score-fn'. More information in the Gnus manual node 1746The new type is 'score-fn'. More information in the Gnus manual node
2039"(gnus) Score File Format". 1747"(gnus) Score File Format".
2040 1748
2041+++
2042*** New backend 'nnselect'. 1749*** New backend 'nnselect'.
2043The newly added 'nnselect' backend allows creating groups from an 1750The newly added 'nnselect' backend allows creating groups from an
2044arbitrary list of articles that may come from multiple groups and 1751arbitrary list of articles that may come from multiple groups and
@@ -2061,35 +1768,29 @@ has been removed; its functionality is now available directly in the
2061'gnus-refer-thread-use-nnir' has been renamed to 1768'gnus-refer-thread-use-nnir' has been renamed to
2062'gnus-refer-thread-use-search'. 1769'gnus-refer-thread-use-search'.
2063 1770
2064+++
2065*** New user option 'gnus-dbus-close-on-sleep'. 1771*** New user option 'gnus-dbus-close-on-sleep'.
2066On systems with D-Bus support, it is now possible to register a signal 1772On systems with D-Bus support, it is now possible to register a signal
2067to close all Gnus servers before the system sleeps. 1773to close all Gnus servers before the system sleeps.
2068 1774
2069+++
2070*** The key binding of 'gnus-summary-search-article-forward' has changed. 1775*** The key binding of 'gnus-summary-search-article-forward' has changed.
2071This command was previously on 'M-s' and shadowed the global 'M-s' 1776This command was previously on 'M-s' and shadowed the global 'M-s'
2072search prefix. The command has now been moved to 'M-s M-s'. (For 1777search prefix. The command has now been moved to 'M-s M-s'. (For
2073consistency, the 'M-s M-r' key binding has been added for the 1778consistency, the 'M-s M-r' key binding has been added for the
2074'gnus-summary-search-article-backward' command.) 1779'gnus-summary-search-article-backward' command.)
2075 1780
2076---
2077*** The value for "all" in the 'large-newsgroup-initial' group parameter has changed. 1781*** The value for "all" in the 'large-newsgroup-initial' group parameter has changed.
2078It was previously nil, which didn't work, because nil is 1782It was previously nil, which didn't work, because nil is
2079indistinguishable from not being present. The new value for "all" is 1783indistinguishable from not being present. The new value for "all" is
2080the symbol 'all'. 1784the symbol 'all'.
2081 1785
2082+++
2083*** The name of dependent Gnus sessions has changed from "slave" to "child". 1786*** The name of dependent Gnus sessions has changed from "slave" to "child".
2084The names of the commands 'gnus-slave', 'gnus-slave-no-server' and 1787The names of the commands 'gnus-slave', 'gnus-slave-no-server' and
2085'gnus-slave-unplugged' have changed to 'gnus-child', 1788'gnus-slave-unplugged' have changed to 'gnus-child',
2086'gnus-child-no-server' and 'gnus-child-unplugged' respectively. 1789'gnus-child-no-server' and 'gnus-child-unplugged' respectively.
2087 1790
2088+++
2089*** The 'W Q' summary mode command now takes a numerical prefix to 1791*** The 'W Q' summary mode command now takes a numerical prefix to
2090allow adjusting the fill width. 1792allow adjusting the fill width.
2091 1793
2092+++
2093*** New variable 'mm-inline-font-lock'. 1794*** New variable 'mm-inline-font-lock'.
2094This variable is supposed to be bound by callers to determine whether 1795This variable is supposed to be bound by callers to determine whether
2095inline MIME parts (that support it) are supposed to be font-locked or 1796inline MIME parts (that support it) are supposed to be font-locked or
@@ -2097,23 +1798,19 @@ not.
2097 1798
2098** Message 1799** Message
2099 1800
2100---
2101*** Respect 'message-forward-ignored-headers' more. 1801*** Respect 'message-forward-ignored-headers' more.
2102Previously, this user option would not be consulted if 1802Previously, this user option would not be consulted if
2103'message-forward-show-mml' was nil and forwarding as MIME. 1803'message-forward-show-mml' was nil and forwarding as MIME.
2104 1804
2105+++
2106*** New user option 'message-forward-included-mime-headers'. 1805*** New user option 'message-forward-included-mime-headers'.
2107This is used when forwarding messages as MIME, but not using MML. 1806This is used when forwarding messages as MIME, but not using MML.
2108 1807
2109+++
2110*** Message now supports the OpenPGP header. 1808*** Message now supports the OpenPGP header.
2111To generate these headers, add the new function 1809To generate these headers, add the new function
2112'message-add-openpgp-header' to 'message-send-hook'. The header will 1810'message-add-openpgp-header' to 'message-send-hook'. The header will
2113be generated according to the new 'message-openpgp-header' user 1811be generated according to the new 'message-openpgp-header' user
2114option. 1812option.
2115 1813
2116---
2117*** A change to how "Mail-Copies-To: never" is handled. 1814*** A change to how "Mail-Copies-To: never" is handled.
2118If a user has specified "Mail-Copies-To: never", and Message was asked 1815If a user has specified "Mail-Copies-To: never", and Message was asked
2119to do a "wide reply", some other arbitrary recipient would end up in 1816to do a "wide reply", some other arbitrary recipient would end up in
@@ -2123,7 +1820,6 @@ you're responding to a specific person in particular. This has been
2123changed so that all the recipients are put in the "To" header in these 1820changed so that all the recipients are put in the "To" header in these
2124instances. 1821instances.
2125 1822
2126+++
2127*** New command to start Emacs in Message mode to send an email. 1823*** New command to start Emacs in Message mode to send an email.
2128Emacs can be defined as a handler for the "x-scheme-handler/mailto" 1824Emacs can be defined as a handler for the "x-scheme-handler/mailto"
2129MIME type with the following command: "emacs -f message-mailto %u". 1825MIME type with the following command: "emacs -f message-mailto %u".
@@ -2136,7 +1832,6 @@ Emacs with headers filled out according to the link, e.g.
2136emacsclient, use "emacsclient -e '(message-mailto "%u")'" 1832emacsclient, use "emacsclient -e '(message-mailto "%u")'"
2137or "emacsclient-mail.desktop". 1833or "emacsclient-mail.desktop".
2138 1834
2139---
2140*** Change to default value of 'message-draft-headers' user option. 1835*** Change to default value of 'message-draft-headers' user option.
2141The 'Date' symbol has been removed from the default value, meaning that 1836The 'Date' symbol has been removed from the default value, meaning that
2142draft or delayed messages will get a date reflecting when the message 1837draft or delayed messages will get a date reflecting when the message
@@ -2144,7 +1839,6 @@ was sent. To restore the original behavior of dating a message
2144from when it is first saved or delayed, add the symbol 'Date' back to 1839from when it is first saved or delayed, add the symbol 'Date' back to
2145this user option. 1840this user option.
2146 1841
2147+++
2148*** New command to take screenshots. 1842*** New command to take screenshots.
2149In Message mode buffers, the 'C-c C-p' ('message-insert-screenshot') 1843In Message mode buffers, the 'C-c C-p' ('message-insert-screenshot')
2150command has been added. It depends on using an external program to 1844command has been added. It depends on using an external program to
@@ -2152,30 +1846,25 @@ take the actual screenshot, and defaults to "ImageMagick import".
2152 1846
2153** Smtpmail 1847** Smtpmail
2154 1848
2155+++
2156*** smtpmail now supports using the oauth2.el library. 1849*** smtpmail now supports using the oauth2.el library.
2157 1850
2158+++
2159*** New user option 'smtpmail-store-queue-variables'. 1851*** New user option 'smtpmail-store-queue-variables'.
2160If non-nil, SMTP variables will be stored together with the queued 1852If non-nil, SMTP variables will be stored together with the queued
2161messages, and will then be used when sending with command 1853messages, and will then be used when sending with command
2162'smtpmail-send-queued-mail'. 1854'smtpmail-send-queued-mail'.
2163 1855
2164+++
2165*** Allow direct selection of smtp authentication mechanism. 1856*** Allow direct selection of smtp authentication mechanism.
2166A server entry retrieved by auth-source can request a desired smtp 1857A server entry retrieved by auth-source can request a desired smtp
2167authentication mechanism by setting a value for the key 'smtp-auth'. 1858authentication mechanism by setting a value for the key 'smtp-auth'.
2168 1859
2169** ElDoc 1860** ElDoc
2170 1861
2171+++
2172*** New user option 'eldoc-echo-area-display-truncation-message'. 1862*** New user option 'eldoc-echo-area-display-truncation-message'.
2173If non-nil (the default), eldoc will display a message saying 1863If non-nil (the default), eldoc will display a message saying
2174something like "(Documentation truncated. Use `M-x eldoc-doc-buffer' 1864something like "(Documentation truncated. Use `M-x eldoc-doc-buffer'
2175to see rest)" when a message has been truncated. If nil, truncated 1865to see rest)" when a message has been truncated. If nil, truncated
2176messages will be marked with just "..." at the end. 1866messages will be marked with just "..." at the end.
2177 1867
2178+++
2179*** New hook 'eldoc-documentation-functions'. 1868*** New hook 'eldoc-documentation-functions'.
2180This hook is intended to be used for registering doc string functions. 1869This hook is intended to be used for registering doc string functions.
2181These functions don't need to produce the doc string right away, they 1870These functions don't need to produce the doc string right away, they
@@ -2190,7 +1879,6 @@ functions receive the doc string composed according to
2190the user. Examples of such functions would use the echo area, a 1879the user. Examples of such functions would use the echo area, a
2191separate buffer, or a tooltip. 1880separate buffer, or a tooltip.
2192 1881
2193+++
2194*** New user option 'eldoc-documentation-strategy'. 1882*** New user option 'eldoc-documentation-strategy'.
2195The built-in choices available for this user option let users compose 1883The built-in choices available for this user option let users compose
2196the results of 'eldoc-documentation-functions' in various ways, even 1884the results of 'eldoc-documentation-functions' in various ways, even
@@ -2206,33 +1894,27 @@ it when producing a doc string.
2206 1894
2207** Tramp 1895** Tramp
2208 1896
2209+++
2210*** New connection method "mtp". 1897*** New connection method "mtp".
2211It allows accessing media devices like cell phones, tablets or 1898It allows accessing media devices like cell phones, tablets or
2212cameras. 1899cameras.
2213 1900
2214+++
2215*** New connection method "sshfs". 1901*** New connection method "sshfs".
2216It allows accessing remote files via a file system mounted with 1902It allows accessing remote files via a file system mounted with
2217'sshfs'. 1903'sshfs'.
2218 1904
2219+++
2220*** Tramp supports SSH authentication via a hardware security key now. 1905*** Tramp supports SSH authentication via a hardware security key now.
2221This requires at least OpenSSH 8.2, and a FIDO U2F compatible 1906This requires at least OpenSSH 8.2, and a FIDO U2F compatible
2222security key, like yubikey, solokey, or nitrokey. 1907security key, like yubikey, solokey, or nitrokey.
2223 1908
2224+++
2225*** Trashed remote files are moved to the local trash directory. 1909*** Trashed remote files are moved to the local trash directory.
2226All remote files that are trashed are moved to the local trash 1910All remote files that are trashed are moved to the local trash
2227directory, except remote encrypted files, which are always deleted. 1911directory, except remote encrypted files, which are always deleted.
2228 1912
2229+++
2230*** New command 'tramp-crypt-add-directory'. 1913*** New command 'tramp-crypt-add-directory'.
2231This command marks a remote directory to contain only encrypted files. 1914This command marks a remote directory to contain only encrypted files.
2232See the "(tramp) Keeping files encrypted" node of the Tramp manual for 1915See the "(tramp) Keeping files encrypted" node of the Tramp manual for
2233details. This feature is experimental. 1916details. This feature is experimental.
2234 1917
2235+++
2236*** Support of direct asynchronous process invocation. 1918*** Support of direct asynchronous process invocation.
2237When Tramp connection property "direct-async-process" is set to 1919When Tramp connection property "direct-async-process" is set to
2238non-nil for a given connection, 'make-process' and 'start-file-process' 1920non-nil for a given connection, 'make-process' and 'start-file-process'
@@ -2242,24 +1924,20 @@ performance of asynchronous remote processes" node of the Tramp manual
2242for details, and also for a discussion or restrictions. This feature 1924for details, and also for a discussion or restrictions. This feature
2243is experimental. 1925is experimental.
2244 1926
2245+++
2246*** New user option 'tramp-debug-to-file'. 1927*** New user option 'tramp-debug-to-file'.
2247When non-nil, this user option instructs Tramp to mirror the debug 1928When non-nil, this user option instructs Tramp to mirror the debug
2248buffer to a file under the "/tmp/" directory. This is useful, if (in 1929buffer to a file under the "/tmp/" directory. This is useful, if (in
2249rare cases) Tramp blocks Emacs, and we need further debug information. 1930rare cases) Tramp blocks Emacs, and we need further debug information.
2250 1931
2251+++
2252*** Tramp supports lock files now. 1932*** Tramp supports lock files now.
2253In order to deactivate this, set user option 1933In order to deactivate this, set user option
2254'remote-file-name-inhibit-locks' to t. 1934'remote-file-name-inhibit-locks' to t.
2255 1935
2256+++
2257*** Writing sensitive data locally requires confirmation. 1936*** Writing sensitive data locally requires confirmation.
2258Writing auto-save, backup or lock files to the local temporary 1937Writing auto-save, backup or lock files to the local temporary
2259directory must be confirmed. In order to suppress this confirmation, 1938directory must be confirmed. In order to suppress this confirmation,
2260set user option 'tramp-allow-unsafe-temporary-files' to t. 1939set user option 'tramp-allow-unsafe-temporary-files' to t.
2261 1940
2262+++
2263*** 'make-directory' of a remote directory honors the default file modes. 1941*** 'make-directory' of a remote directory honors the default file modes.
2264 1942
2265** GDB/MI 1943** GDB/MI
@@ -2268,7 +1946,6 @@ set user option 'tramp-allow-unsafe-temporary-files' to t.
2268If non-nil, apply a register filter based on 1946If non-nil, apply a register filter based on
2269'gdb-registers-filter-pattern-list'. 1947'gdb-registers-filter-pattern-list'.
2270 1948
2271+++
2272*** gdb-mi can now save and restore window configurations. 1949*** gdb-mi can now save and restore window configurations.
2273Use 'gdb-save-window-configuration' to save window configuration to a 1950Use 'gdb-save-window-configuration' to save window configuration to a
2274file and 'gdb-load-window-configuration' to load from a file. These 1951file and 'gdb-load-window-configuration' to load from a file. These
@@ -2276,31 +1953,26 @@ commands can also be accessed through the menu bar under "Gud =>
2276GDB-Windows". 'gdb-default-window-configuration-file', when non-nil, 1953GDB-Windows". 'gdb-default-window-configuration-file', when non-nil,
2277is loaded when GDB starts up. 1954is loaded when GDB starts up.
2278 1955
2279+++
2280*** gdb-mi can now restore window configuration after quitting. 1956*** gdb-mi can now restore window configuration after quitting.
2281Set 'gdb-restore-window-configuration-after-quit' to non-nil and Emacs 1957Set 'gdb-restore-window-configuration-after-quit' to non-nil and Emacs
2282will remember the window configuration before GDB started and restore 1958will remember the window configuration before GDB started and restore
2283it after GDB quits. A toggle button is also provided under "Gud => 1959it after GDB quits. A toggle button is also provided under "Gud =>
2284GDB-Windows" menu item. 1960GDB-Windows" menu item.
2285 1961
2286+++
2287*** gdb-mi now has a better logic for displaying source buffers. 1962*** gdb-mi now has a better logic for displaying source buffers.
2288Now GDB only uses one source window to display source file by default. 1963Now GDB only uses one source window to display source file by default.
2289Customize 'gdb-max-source-window-count' to use more than one window. 1964Customize 'gdb-max-source-window-count' to use more than one window.
2290Control source file display by 'gdb-display-source-buffer-action'. 1965Control source file display by 'gdb-display-source-buffer-action'.
2291 1966
2292+++
2293*** The default value of 'gdb-mi-decode-strings' is now t. 1967*** The default value of 'gdb-mi-decode-strings' is now t.
2294This means that the default coding-system is now used to decode strings 1968This means that the default coding-system is now used to decode strings
2295and source file names from GDB. 1969and source file names from GDB.
2296 1970
2297** Compilation mode 1971** Compilation mode
2298 1972
2299---
2300*** New function 'ansi-color-compilation-filter'. 1973*** New function 'ansi-color-compilation-filter'.
2301This function is meant to be used in 'compilation-filter-hook'. 1974This function is meant to be used in 'compilation-filter-hook'.
2302 1975
2303---
2304*** New user option 'ansi-color-for-compilation-mode'. 1976*** New user option 'ansi-color-for-compilation-mode'.
2305This controls what 'ansi-color-compilation-filter' does. 1977This controls what 'ansi-color-compilation-filter' does.
2306 1978
@@ -2310,7 +1982,6 @@ case-insensitive matching of messages when the old behavior is
2310required, but the recommended solution is to use a correctly matching 1982required, but the recommended solution is to use a correctly matching
2311regexp instead. 1983regexp instead.
2312 1984
2313---
2314*** New user option 'compilation-search-all-directories'. 1985*** New user option 'compilation-search-all-directories'.
2315When doing parallel builds, directories and compilation errors may 1986When doing parallel builds, directories and compilation errors may
2316arrive in the "*compilation*" buffer out-of-order. If this option is 1987arrive in the "*compilation*" buffer out-of-order. If this option is
@@ -2318,45 +1989,37 @@ non-nil (the default), Emacs will now search backwards in the buffer
2318for any directory the file with errors may be in. If nil, this won't 1989for any directory the file with errors may be in. If nil, this won't
2319be done (and this restores how this previously worked). 1990be done (and this restores how this previously worked).
2320 1991
2321---
2322*** Messages from ShellCheck are now recognized. 1992*** Messages from ShellCheck are now recognized.
2323 1993
2324---
2325*** Messages from Visual Studio that mention column numbers are now recognized. 1994*** Messages from Visual Studio that mention column numbers are now recognized.
2326 1995
2327** Hi Lock mode 1996** Hi Lock mode
2328 1997
2329---
2330*** Matching in 'hi-lock-mode' can be case-sensitive. 1998*** Matching in 'hi-lock-mode' can be case-sensitive.
2331The matching is case-sensitive when a regexp contains upper case 1999The matching is case-sensitive when a regexp contains upper case
2332characters and 'search-upper-case' is non-nil. 'highlight-phrase' 2000characters and 'search-upper-case' is non-nil. 'highlight-phrase'
2333also uses 'search-whitespace-regexp' to substitute spaces in regexp 2001also uses 'search-whitespace-regexp' to substitute spaces in regexp
2334search. 2002search.
2335 2003
2336---
2337*** The default value of 'hi-lock-highlight-range' was enlarged. 2004*** The default value of 'hi-lock-highlight-range' was enlarged.
2338The new default value is 2000000 (2 megabytes). 2005The new default value is 2000000 (2 megabytes).
2339 2006
2340** Whitespace mode 2007** Whitespace mode
2341 2008
2342+++
2343*** New style 'missing-newline-at-eof'. 2009*** New style 'missing-newline-at-eof'.
2344If present in 'whitespace-style' (as it is by default), the final 2010If present in 'whitespace-style' (as it is by default), the final
2345character in the buffer will be highlighted if the buffer doesn't end 2011character in the buffer will be highlighted if the buffer doesn't end
2346with a newline. 2012with a newline.
2347 2013
2348---
2349*** The default 'whitespace-enable-predicate' predicate has changed. 2014*** The default 'whitespace-enable-predicate' predicate has changed.
2350It used to check elements in the list version of 2015It used to check elements in the list version of
2351'whitespace-global-modes' with 'eq', but now uses 'derived-mode-p'. 2016'whitespace-global-modes' with 'eq', but now uses 'derived-mode-p'.
2352 2017
2353** Texinfo 2018** Texinfo
2354 2019
2355---
2356*** New user option 'texinfo-texi2dvi-options'. 2020*** New user option 'texinfo-texi2dvi-options'.
2357This is used when invoking 'texi2dvi' from 'texinfo-tex-buffer'. 2021This is used when invoking 'texi2dvi' from 'texinfo-tex-buffer'.
2358 2022
2359---
2360*** New commands for moving in and between environments. 2023*** New commands for moving in and between environments.
2361An "environment" is something that ends with '@end'. The commands are 2024An "environment" is something that ends with '@end'. The commands are
2362'C-c C-c C-f' (next end), 'C-c C-c C-b' (previous end), 2025'C-c C-c C-f' (next end), 'C-c C-c C-b' (previous end),
@@ -2366,19 +2029,16 @@ current environment.
2366 2029
2367** Rmail 2030** Rmail
2368 2031
2369---
2370*** New user option 'rmail-re-abbrevs'. 2032*** New user option 'rmail-re-abbrevs'.
2371Its default value matches localized abbreviations of the "reply" 2033Its default value matches localized abbreviations of the "reply"
2372prefix on the Subject line in various languages. 2034prefix on the Subject line in various languages.
2373 2035
2374---
2375*** New user option 'rmail-show-message-set-modified'. 2036*** New user option 'rmail-show-message-set-modified'.
2376If set non-nil, showing an unseen message will set the Rmail buffer's 2037If set non-nil, showing an unseen message will set the Rmail buffer's
2377modified flag. The default is nil, to preserve the old behavior. 2038modified flag. The default is nil, to preserve the old behavior.
2378 2039
2379** CC mode 2040** CC mode
2380 2041
2381+++
2382*** Added support for Doxygen documentation style. 2042*** Added support for Doxygen documentation style.
2383'doxygen' is now a valid 'c-doc-comment-style' which recognises all 2043'doxygen' is now a valid 'c-doc-comment-style' which recognises all
2384comment styles supported by Doxygen (namely '///', '//!', '/** … */' 2044comment styles supported by Doxygen (namely '///', '//!', '/** … */'
@@ -2393,7 +2053,6 @@ use 'doxygen' by default one might evaluate:
2393 2053
2394or use it in a custom 'c-style'. 2054or use it in a custom 'c-style'.
2395 2055
2396+++
2397*** Added support to line up '?' and ':' of a ternary operator. 2056*** Added support to line up '?' and ':' of a ternary operator.
2398The new 'c-lineup-ternary-bodies' function can be used as a lineup 2057The new 'c-lineup-ternary-bodies' function can be used as a lineup
2399function to align question mark and colon which are part of a ternary 2058function to align question mark and colon which are part of a ternary
@@ -2413,30 +2072,25 @@ To enable, add it to appropriate entries in 'c-offsets-alist', e.g.:
2413 2072
2414** Images 2073** Images
2415 2074
2416---
2417*** You can explicitly specify base_uri for svg images. 2075*** You can explicitly specify base_uri for svg images.
2418':base-uri' image property can be used to explicitly specify base_uri 2076':base-uri' image property can be used to explicitly specify base_uri
2419for embedded images into svg. ':base-uri' is supported for both file 2077for embedded images into svg. ':base-uri' is supported for both file
2420and data svg images. 2078and data svg images.
2421 2079
2422+++
2423*** 'svg-embed-base-uri-image' added to embed images. 2080*** 'svg-embed-base-uri-image' added to embed images.
2424'svg-embed-base-uri-image' can be used to embed images located 2081'svg-embed-base-uri-image' can be used to embed images located
2425relatively to 'file-name-directory' of the ':base-uri' svg image property. 2082relatively to 'file-name-directory' of the ':base-uri' svg image property.
2426This works much faster than 'svg-embed'. 2083This works much faster than 'svg-embed'.
2427 2084
2428+++
2429*** New function 'image-cache-size'. 2085*** New function 'image-cache-size'.
2430This function returns the size of the current image cache, in bytes. 2086This function returns the size of the current image cache, in bytes.
2431 2087
2432---
2433*** Animated images stop automatically under high CPU pressure sooner. 2088*** Animated images stop automatically under high CPU pressure sooner.
2434Previously, an animated image would stop animating if any single image 2089Previously, an animated image would stop animating if any single image
2435took more than two seconds to display. The new algorithm maintains a 2090took more than two seconds to display. The new algorithm maintains a
2436decaying average of delays, and if this number gets too high, the 2091decaying average of delays, and if this number gets too high, the
2437animation is stopped. 2092animation is stopped.
2438 2093
2439+++
2440*** The 'n' and 'p' commands (next/previous image) now respect Dired order. 2094*** The 'n' and 'p' commands (next/previous image) now respect Dired order.
2441These commands would previously display the next/previous image in 2095These commands would previously display the next/previous image in
2442lexicographic order, but will now find the "parent" Dired buffer and 2096lexicographic order, but will now find the "parent" Dired buffer and
@@ -2445,7 +2099,6 @@ sorted there. The commands have also been extended to work when the
2445"parent" buffer is an archive mode (i.e., zip file or the like) or tar 2099"parent" buffer is an archive mode (i.e., zip file or the like) or tar
2446mode buffer. 2100mode buffer.
2447 2101
2448---
2449*** 'image-converter' is now restricted to formats in 'auto-mode-alist'. 2102*** 'image-converter' is now restricted to formats in 'auto-mode-alist'.
2450When using external image converters, the external program is queried 2103When using external image converters, the external program is queried
2451for what formats it supports. This list may contain formats that are 2104for what formats it supports. This list may contain formats that are
@@ -2453,7 +2106,6 @@ problematic in some contexts (like PDFs), so this list is now filtered
2453based on 'auto-mode-alist'. Only file names that map to 'image-mode' 2106based on 'auto-mode-alist'. Only file names that map to 'image-mode'
2454are now supported. 2107are now supported.
2455 2108
2456---
2457*** The background and foreground of images now default to face colors. 2109*** The background and foreground of images now default to face colors.
2458When an image doesn't specify a foreground or background color, Emacs 2110When an image doesn't specify a foreground or background color, Emacs
2459now uses colors from the face used to draw the surrounding text 2111now uses colors from the face used to draw the surrounding text
@@ -2469,7 +2121,6 @@ To load images with the default frame colors use the ':foreground' and
2469This change only affects image types that support foreground and 2121This change only affects image types that support foreground and
2470background colors or transparency, such as xbm, pbm, svg, png and gif. 2122background colors or transparency, such as xbm, pbm, svg, png and gif.
2471 2123
2472+++
2473*** Image smoothing can now be explicitly enabled or disabled. 2124*** Image smoothing can now be explicitly enabled or disabled.
2474Smoothing applies a bilinear filter while scaling or rotating an image 2125Smoothing applies a bilinear filter while scaling or rotating an image
2475to prevent aliasing and other unwanted effects. The new image 2126to prevent aliasing and other unwanted effects. The new image
@@ -2479,13 +2130,11 @@ and nil to disable smoothing.
2479The default behavior of smoothing on down-scaling and not smoothing 2130The default behavior of smoothing on down-scaling and not smoothing
2480on up-scaling remains unchanged. 2131on up-scaling remains unchanged.
2481 2132
2482+++
2483*** New user option 'image-transform-smoothing'. 2133*** New user option 'image-transform-smoothing'.
2484This controls whether to use smoothing or not for an image. Values 2134This controls whether to use smoothing or not for an image. Values
2485include nil (no smoothing), t (do smoothing) or a predicate function 2135include nil (no smoothing), t (do smoothing) or a predicate function
2486that's called with the image object and should return nil/t. 2136that's called with the image object and should return nil/t.
2487 2137
2488+++
2489*** SVG images now support user stylesheets. 2138*** SVG images now support user stylesheets.
2490The ':css' image attribute can be used to override the default CSS 2139The ':css' image attribute can be used to override the default CSS
2491stylesheet for an image. The default sets 'font-family' and 2140stylesheet for an image. The default sets 'font-family' and
@@ -2494,7 +2143,6 @@ will match the font size in use where it is embedded.
2494 2143
2495This feature relies on librsvg 2.48 or above being available. 2144This feature relies on librsvg 2.48 or above being available.
2496 2145
2497+++
2498*** Image properties support 'em' sizes. 2146*** Image properties support 'em' sizes.
2499Size image properties, for example ':height', ':max-height', etc., can 2147Size image properties, for example ':height', ':max-height', etc., can
2500be given a cons of the form '(SIZE . em)', where SIZE is an integer or 2148be given a cons of the form '(SIZE . em)', where SIZE is an integer or
@@ -2503,42 +2151,35 @@ size, and 'em' is a symbol.
2503 2151
2504** EWW 2152** EWW
2505 2153
2506+++
2507*** New user option 'eww-use-browse-url'. 2154*** New user option 'eww-use-browse-url'.
2508This is a regexp that can be set to alter how links are followed in eww. 2155This is a regexp that can be set to alter how links are followed in eww.
2509 2156
2510+++
2511*** New user option 'eww-retrieve-command'. 2157*** New user option 'eww-retrieve-command'.
2512This can be used to download data via an external command. If nil 2158This can be used to download data via an external command. If nil
2513(the default), then 'url-retrieve' is used. When 'sync', then 2159(the default), then 'url-retrieve' is used. When 'sync', then
2514'url-retrieve-synchronously' is used. A list of strings specifies 2160'url-retrieve-synchronously' is used. A list of strings specifies
2515an external program with parameters. 2161an external program with parameters.
2516 2162
2517+++
2518*** New Emacs command line convenience command. 2163*** New Emacs command line convenience command.
2519The 'eww-browse' command has been added, which allows you to register 2164The 'eww-browse' command has been added, which allows you to register
2520Emacs as a MIME handler for "text/x-uri", and will call 'eww' on the 2165Emacs as a MIME handler for "text/x-uri", and will call 'eww' on the
2521supplied URL. Usage example: "emacs -f eww-browse https://gnu.org". 2166supplied URL. Usage example: "emacs -f eww-browse https://gnu.org".
2522 2167
2523+++
2524*** 'eww-download-directory' will now use the XDG location, if defined. 2168*** 'eww-download-directory' will now use the XDG location, if defined.
2525However, if "~/Downloads/" already exists, that will continue to be 2169However, if "~/Downloads/" already exists, that will continue to be
2526used. 2170used.
2527 2171
2528---
2529*** The command 'eww-follow-link' now supports custom 'mailto:' handlers. 2172*** The command 'eww-follow-link' now supports custom 'mailto:' handlers.
2530The function that is invoked when clicking on or otherwise following a 2173The function that is invoked when clicking on or otherwise following a
2531'mailto:' link in an EWW buffer can now be customized. For more 2174'mailto:' link in an EWW buffer can now be customized. For more
2532information, see the related entry about 'shr-browse-url' below. 2175information, see the related entry about 'shr-browse-url' below.
2533 2176
2534---
2535*** Support for bookmark.el. 2177*** Support for bookmark.el.
2536The command 'bookmark-set' (bound to 'C-x r m') is now supported, and 2178The command 'bookmark-set' (bound to 'C-x r m') is now supported, and
2537will create a bookmark that opens the current URL in EWW. 2179will create a bookmark that opens the current URL in EWW.
2538 2180
2539** SHR 2181** SHR
2540 2182
2541---
2542*** The command 'shr-browse-url' now supports custom 'mailto:' handlers. 2183*** The command 'shr-browse-url' now supports custom 'mailto:' handlers.
2543Clicking on or otherwise following a 'mailto:' link in an HTML buffer 2184Clicking on or otherwise following a 'mailto:' link in an HTML buffer
2544rendered by SHR previously invoked the command 'browse-url-mail'. 2185rendered by SHR previously invoked the command 'browse-url-mail'.
@@ -2546,7 +2187,6 @@ This is still the case by default, but if you customize
2546'browse-url-mailto-function' or 'browse-url-handlers' to call some 2187'browse-url-mailto-function' or 'browse-url-handlers' to call some
2547other function, it will now be called instead of the default. 2188other function, it will now be called instead of the default.
2548 2189
2549---
2550*** New user option 'shr-offer-extend-specpdl'. 2190*** New user option 'shr-offer-extend-specpdl'.
2551If this is nil, rendering of HTML that requires enlarging 2191If this is nil, rendering of HTML that requires enlarging
2552'max-specpdl-size', the number of Lisp variable bindings, will be 2192'max-specpdl-size', the number of Lisp variable bindings, will be
@@ -2554,7 +2194,6 @@ aborted, and Emacs will not ask you whether to enlarge
2554'max-specpdl-size' to complete the rendering. The default is t, which 2194'max-specpdl-size' to complete the rendering. The default is t, which
2555preserves the original behavior. 2195preserves the original behavior.
2556 2196
2557+++
2558*** New user option 'shr-max-width'. 2197*** New user option 'shr-max-width'.
2559If this user option is non-nil, and 'shr-width' is nil, then SHR will 2198If this user option is non-nil, and 'shr-width' is nil, then SHR will
2560use the value of 'shr-max-width' to limit the width of the rendered 2199use the value of 'shr-max-width' to limit the width of the rendered
@@ -2564,80 +2203,64 @@ to a more readable text. Customize it to nil to get the previous
2564behavior of rendering as wide as the 'window-width' allows. If 2203behavior of rendering as wide as the 'window-width' allows. If
2565'shr-width' is non-nil, it overrides this option. 2204'shr-width' is non-nil, it overrides this option.
2566 2205
2567---
2568*** New faces for heading elements. 2206*** New faces for heading elements.
2569Those are 'shr-h1', 'shr-h2', 'shr-h3', 'shr-h4', 'shr-h5', 'shr-h6'. 2207Those are 'shr-h1', 'shr-h2', 'shr-h3', 'shr-h4', 'shr-h5', 'shr-h6'.
2570 2208
2571** Project 2209** Project
2572 2210
2573---
2574*** New user option 'project-vc-merge-submodules'. 2211*** New user option 'project-vc-merge-submodules'.
2575 2212
2576---
2577*** Project commands now have their own history. 2213*** Project commands now have their own history.
2578Previously used project directories are now suggested by all commands 2214Previously used project directories are now suggested by all commands
2579that prompt for a project directory. 2215that prompt for a project directory.
2580 2216
2581+++
2582*** New prefix keymap 'project-prefix-map'. 2217*** New prefix keymap 'project-prefix-map'.
2583Key sequences that invoke project-related commands start with the 2218Key sequences that invoke project-related commands start with the
2584prefix 'C-x p'. Type 'C-x p C-h' to show the full list. 2219prefix 'C-x p'. Type 'C-x p C-h' to show the full list.
2585 2220
2586+++
2587*** New commands 'project-dired', 'project-vc-dir', 'project-shell', 2221*** New commands 'project-dired', 'project-vc-dir', 'project-shell',
2588'project-eshell'. These commands run Dired/VC-Dir and Shell/Eshell in 2222'project-eshell'. These commands run Dired/VC-Dir and Shell/Eshell in
2589a project's root directory, respectively. 2223a project's root directory, respectively.
2590 2224
2591+++
2592*** New command 'project-compile'. 2225*** New command 'project-compile'.
2593This command runs compilation in the current project's root directory. 2226This command runs compilation in the current project's root directory.
2594 2227
2595+++
2596*** New command 'project-switch-project'. 2228*** New command 'project-switch-project'.
2597This command lets you "switch" to another project and run a project 2229This command lets you "switch" to another project and run a project
2598command chosen from a dispatch menu. 2230command chosen from a dispatch menu.
2599 2231
2600+++
2601*** New commands 'project-shell-command' and 'project-async-shell-command'. 2232*** New commands 'project-shell-command' and 'project-async-shell-command'.
2602These commands run 'shell-command' and 'async-shell-command' in a 2233These commands run 'shell-command' and 'async-shell-command' in a
2603project's root directory, respectively. 2234project's root directory, respectively.
2604 2235
2605+++
2606*** New user option 'project-list-file'. 2236*** New user option 'project-list-file'.
2607This specifies the file in which to save the list of known projects. 2237This specifies the file in which to save the list of known projects.
2608 2238
2609+++
2610*** New command 'project-remember-projects-under'. 2239*** New command 'project-remember-projects-under'.
2611This command can automatically locate and index projects in a 2240This command can automatically locate and index projects in a
2612directory and optionally also its subdirectories, storing them in 2241directory and optionally also its subdirectories, storing them in
2613'project-list-file'. 2242'project-list-file'.
2614 2243
2615+++
2616*** New commands 'project-forget-project' and 'project-forget-projects-under'. 2244*** New commands 'project-forget-project' and 'project-forget-projects-under'.
2617These commands let you interactively remove entries from the list of projects 2245These commands let you interactively remove entries from the list of projects
2618in 'project-list-file'. 2246in 'project-list-file'.
2619 2247
2620+++
2621*** New command 'project-forget-zombie-projects'. 2248*** New command 'project-forget-zombie-projects'.
2622This command detects indexed projects that have since been deleted, 2249This command detects indexed projects that have since been deleted,
2623and removes them from the list of known projects in 'project-list-file'. 2250and removes them from the list of known projects in 'project-list-file'.
2624 2251
2625---
2626*** 'project-find-file' now accepts non-existent file names. 2252*** 'project-find-file' now accepts non-existent file names.
2627This is to allow easy creation of files inside some nested 2253This is to allow easy creation of files inside some nested
2628sub-directory. 2254sub-directory.
2629 2255
2630+++
2631*** 'project-find-file' doesn't use the string at point as default input. 2256*** 'project-find-file' doesn't use the string at point as default input.
2632Now it's only suggested as part of the "future history", accessible 2257Now it's only suggested as part of the "future history", accessible
2633via 'M-n'. 2258via 'M-n'.
2634 2259
2635+++
2636*** New command 'project-find-dir' runs Dired in a directory inside project. 2260*** New command 'project-find-dir' runs Dired in a directory inside project.
2637 2261
2638** Xref 2262** Xref
2639 2263
2640+++
2641*** New user options to automatically show the first Xref match. 2264*** New user options to automatically show the first Xref match.
2642The new user option 'xref-auto-jump-to-first-definition' controls the 2265The new user option 'xref-auto-jump-to-first-definition' controls the
2643behavior of 'xref-find-definitions' and its variants, like 2266behavior of 'xref-find-definitions' and its variants, like
@@ -2653,57 +2276,47 @@ visit. 'xref-auto-jump-to-first-xref' changes their behavior much in
2653the same way as 'xref-auto-jump-to-first-definition' affects the 2276the same way as 'xref-auto-jump-to-first-definition' affects the
2654'xref-find-definitions*' commands. 2277'xref-find-definitions*' commands.
2655 2278
2656---
2657*** New user options 'xref-search-program' and 'xref-search-program-alist'. 2279*** New user options 'xref-search-program' and 'xref-search-program-alist'.
2658So far 'grep' and 'ripgrep' are supported. 'ripgrep' seems to offer better 2280So far 'grep' and 'ripgrep' are supported. 'ripgrep' seems to offer better
2659performance in certain cases, in particular for case-insensitive 2281performance in certain cases, in particular for case-insensitive
2660searches. 2282searches.
2661 2283
2662+++
2663*** New commands 'xref-prev-group' and 'xref-next-group'. 2284*** New commands 'xref-prev-group' and 'xref-next-group'.
2664These commands are bound respectively to 'P' and 'N', and navigate to 2285These commands are bound respectively to 'P' and 'N', and navigate to
2665the first item of the previous or next group in the "*xref*" buffer. 2286the first item of the previous or next group in the "*xref*" buffer.
2666 2287
2667---
2668*** New alternative value for 'xref-show-definitions-function': 2288*** New alternative value for 'xref-show-definitions-function':
2669'xref-show-definitions-completing-read'. 2289'xref-show-definitions-completing-read'.
2670 2290
2671---
2672*** The two existing alternatives for 'xref-show-definitions-function' 2291*** The two existing alternatives for 'xref-show-definitions-function'
2673have been renamed to have "proper" public names and documented 2292have been renamed to have "proper" public names and documented
2674('xref-show-definitions-buffer' and 2293('xref-show-definitions-buffer' and
2675'xref-show-definitions-buffer-at-bottom'). 2294'xref-show-definitions-buffer-at-bottom').
2676 2295
2677+++
2678*** New command 'xref-quit-and-pop-marker-stack'. 2296*** New command 'xref-quit-and-pop-marker-stack'.
2679This command is bound to 'M-,' in "*xref*" buffers. This combination 2297This command is bound to 'M-,' in "*xref*" buffers. This combination
2680is easy to press semi-accidentally if the user wants to go back in the 2298is easy to press semi-accidentally if the user wants to go back in the
2681middle of choosing the exact definition to go to, and this should do 2299middle of choosing the exact definition to go to, and this should do
2682TRT. 2300TRT.
2683 2301
2684---
2685*** New value 'project-relative' for 'xref-file-name-display'. 2302*** New value 'project-relative' for 'xref-file-name-display'.
2686If chosen, file names in "*xref*" buffers will be displayed relative 2303If chosen, file names in "*xref*" buffers will be displayed relative
2687to the 'project-root' of the current project, when available. 2304to the 'project-root' of the current project, when available.
2688 2305
2689---
2690*** Prefix arg of 'xref-goto-xref' quits the "*xref*" buffer. 2306*** Prefix arg of 'xref-goto-xref' quits the "*xref*" buffer.
2691So typing 'C-u RET' in the "*xref*" buffer quits its window 2307So typing 'C-u RET' in the "*xref*" buffer quits its window
2692before navigating to the selected location. 2308before navigating to the selected location.
2693 2309
2694+++
2695*** The 'TAB' key binding in "*xref*" buffers is obsolete. 2310*** The 'TAB' key binding in "*xref*" buffers is obsolete.
2696Use 'C-u RET' instead. The 'TAB' binding in "*xref*" buffers is still 2311Use 'C-u RET' instead. The 'TAB' binding in "*xref*" buffers is still
2697supported, but we plan on removing it in a future version; at that 2312supported, but we plan on removing it in a future version; at that
2698time, the command 'xref-quit-and-goto-xref' will no longer have a key 2313time, the command 'xref-quit-and-goto-xref' will no longer have a key
2699binding in 'xref--xref-buffer-mode-map'. 2314binding in 'xref--xref-buffer-mode-map'.
2700 2315
2701---
2702*** New user option 'etags-xref-prefer-current-file'. 2316*** New user option 'etags-xref-prefer-current-file'.
2703When non-nil, matches for identifiers in the file visited by the 2317When non-nil, matches for identifiers in the file visited by the
2704current buffer will be shown first in the "*xref*" buffer. 2318current buffer will be shown first in the "*xref*" buffer.
2705 2319
2706+++
2707*** The etags Xref backend now honors 'tags-apropos-additional-actions'. 2320*** The etags Xref backend now honors 'tags-apropos-additional-actions'.
2708You can customize it to augment the output of 'xref-find-apropos', 2321You can customize it to augment the output of 'xref-find-apropos',
2709like it affected the output of 'tags-apropos', which is obsolete since 2322like it affected the output of 'tags-apropos', which is obsolete since
@@ -2711,7 +2324,6 @@ Emacs 25.1.
2711 2324
2712** Battery 2325** Battery
2713 2326
2714---
2715*** UPower is now the default battery status backend when available. 2327*** UPower is now the default battery status backend when available.
2716UPower support via the function 'battery-upower' was added in Emacs 2328UPower support via the function 'battery-upower' was added in Emacs
271726.1, but was disabled by default. It is now the default value of 232926.1, but was disabled by default. It is now the default value of
@@ -2721,7 +2333,6 @@ service. The user options 'battery-upower-device' and
2721whether to respond to status change notifications in addition to 2333whether to respond to status change notifications in addition to
2722polling, respectively. 2334polling, respectively.
2723 2335
2724---
2725*** A richer syntax can be used to format battery status information. 2336*** A richer syntax can be used to format battery status information.
2726The user options 'battery-mode-line-format' and 2337The user options 'battery-mode-line-format' and
2727'battery-echo-area-format' now support the full formatting syntax of 2338'battery-echo-area-format' now support the full formatting syntax of
@@ -2731,7 +2342,6 @@ truncation, amongst other things.
2731 2342
2732** Bug Reference 2343** Bug Reference
2733 2344
2734---
2735*** Bug reference mode uses auto-setup. 2345*** Bug reference mode uses auto-setup.
2736If 'bug-reference-mode' or 'bug-reference-prog-mode' have been 2346If 'bug-reference-mode' or 'bug-reference-prog-mode' have been
2737activated, their respective hook has been run, and both 2347activated, their respective hook has been run, and both
@@ -2748,17 +2358,14 @@ variables 'bug-reference-setup-from-vc-alist',
2748 2358
2749** HTML mode 2359** HTML mode
2750 2360
2751---
2752*** A new skeleton for adding relative URLs has been added. 2361*** A new skeleton for adding relative URLs has been added.
2753It's bound to the 'C-c C-c f' keystroke, and prompts for a local file 2362It's bound to the 'C-c C-c f' keystroke, and prompts for a local file
2754name. 2363name.
2755 2364
2756** Widget 2365** Widget
2757 2366
2758+++
2759*** 'widget-choose' now supports menus in extended format. 2367*** 'widget-choose' now supports menus in extended format.
2760 2368
2761---
2762*** The 'editable-list' widget now supports moving items up and down. 2369*** The 'editable-list' widget now supports moving items up and down.
2763You can now move items up and down by deleting and then reinserting 2370You can now move items up and down by deleting and then reinserting
2764them, using the 'DEL' and 'INS' buttons respectively. This is useful 2371them, using the 'DEL' and 'INS' buttons respectively. This is useful
@@ -2767,62 +2374,50 @@ a list.
2767 2374
2768** Diff 2375** Diff
2769 2376
2770---
2771*** New face 'diff-changed-unspecified'. 2377*** New face 'diff-changed-unspecified'.
2772This is used to highlight "changed" lines (those marked with '!') in 2378This is used to highlight "changed" lines (those marked with '!') in
2773context diffs, when 'diff-use-changed-face' is non-nil. 2379context diffs, when 'diff-use-changed-face' is non-nil.
2774 2380
2775---
2776*** New 'diff-mode' font locking face 'diff-error'. 2381*** New 'diff-mode' font locking face 'diff-error'.
2777This face is used for error messages from 'diff'. 2382This face is used for error messages from 'diff'.
2778 2383
2779+++
2780*** New command 'diff-refresh-hunk'. 2384*** New command 'diff-refresh-hunk'.
2781This new command (bound to 'C-c C-l') regenerates the current hunk. 2385This new command (bound to 'C-c C-l') regenerates the current hunk.
2782 2386
2783** Thing at point 2387** Thing at point
2784 2388
2785+++
2786*** New 'thing-at-point' target: 'existing-filename'. 2389*** New 'thing-at-point' target: 'existing-filename'.
2787This is like 'filename', but is a full path, and is nil if the file 2390This is like 'filename', but is a full path, and is nil if the file
2788doesn't exist. 2391doesn't exist.
2789 2392
2790+++
2791*** New 'thing-at-point' target: 'string'. 2393*** New 'thing-at-point' target: 'string'.
2792If point is inside a string, it returns that string. 2394If point is inside a string, it returns that string.
2793 2395
2794+++
2795*** New variable 'thing-at-point-provider-alist'. 2396*** New variable 'thing-at-point-provider-alist'.
2796This allows mode-specific alterations to how 'thing-at-point' works. 2397This allows mode-specific alterations to how 'thing-at-point' works.
2797 2398
2798---
2799*** 'thing-at-point' now respects fields. 2399*** 'thing-at-point' now respects fields.
2800'thing-at-point' (and all functions that use it, like 2400'thing-at-point' (and all functions that use it, like
2801'symbol-at-point') will narrow to the current field (if any) before 2401'symbol-at-point') will narrow to the current field (if any) before
2802trying to identify the thing at point. 2402trying to identify the thing at point.
2803 2403
2804---
2805*** New function 'thing-at-mouse'. 2404*** New function 'thing-at-mouse'.
2806This is like 'thing-at-point', but uses the mouse event position instead. 2405This is like 'thing-at-point', but uses the mouse event position instead.
2807 2406
2808** Image Dired 2407** Image Dired
2809 2408
2810+++
2811*** New user option 'image-dired-thumb-visible-marks'. 2409*** New user option 'image-dired-thumb-visible-marks'.
2812If non-nil (the default), use the new face 'image-dired-thumb-mark' 2410If non-nil (the default), use the new face 'image-dired-thumb-mark'
2813for marked images. 2411for marked images.
2814 2412
2815---
2816*** New command 'image-dired-delete-marked'. 2413*** New command 'image-dired-delete-marked'.
2817 2414
2818---
2819*** 'image-dired-mouse-toggle-mark' is now sensitive to the active region. 2415*** 'image-dired-mouse-toggle-mark' is now sensitive to the active region.
2820If the region is active, this command now toggles Dired marks of all 2416If the region is active, this command now toggles Dired marks of all
2821the thumbnails in the region. 2417the thumbnails in the region.
2822 2418
2823** Flymake mode 2419** Flymake mode
2824 2420
2825+++
2826*** New command 'flymake-show-project-diagnostics'. 2421*** New command 'flymake-show-project-diagnostics'.
2827This lists all diagnostics for buffers in the currently active 2422This lists all diagnostics for buffers in the currently active
2828project. The listing is similar to the one obtained by 2423project. The listing is similar to the one obtained by
@@ -2831,7 +2426,6 @@ project-relative file name. For backends which support it,
2831'flymake-show-project-diagnostics' also lists diagnostics for files 2426'flymake-show-project-diagnostics' also lists diagnostics for files
2832that have not yet been visited. 2427that have not yet been visited.
2833 2428
2834+++
2835*** New user options to customize Flymake's mode-line. 2429*** New user options to customize Flymake's mode-line.
2836The new user option 'flymake-mode-line-format' is a mix of strings and 2430The new user option 'flymake-mode-line-format' is a mix of strings and
2837symbols like 'flymake-mode-line-title', 'flymake-mode-line-exception' 2431symbols like 'flymake-mode-line-title', 'flymake-mode-line-exception'
@@ -2842,7 +2436,6 @@ like 'flymake-mode-line-error-counter',
2842 2436
2843** Time 2437** Time
2844 2438
2845---
2846*** 'display-time-world' has been renamed to 'world-clock'. 2439*** 'display-time-world' has been renamed to 'world-clock'.
2847'world-clock' creates a buffer with an updating time display using 2440'world-clock' creates a buffer with an updating time display using
2848several time zones. It is hoped that the new names are more 2441several time zones. It is hoped that the new names are more
@@ -2865,21 +2458,17 @@ The following user options have been renamed:
2865 2458
2866The old names are now obsolete. 2459The old names are now obsolete.
2867 2460
2868---
2869*** 'world-clock-mode' can no longer be turned on interactively. 2461*** 'world-clock-mode' can no longer be turned on interactively.
2870Use 'world-clock' to turn on that mode. 2462Use 'world-clock' to turn on that mode.
2871 2463
2872** Python mode 2464** Python mode
2873 2465
2874---
2875*** New user option 'python-forward-sexp-function'. 2466*** New user option 'python-forward-sexp-function'.
2876This allows the user easier customization of whether to use block-based 2467This allows the user easier customization of whether to use block-based
2877navigation or not. 2468navigation or not.
2878 2469
2879---
2880*** 'python-shell-interpreter' now defaults to python3 on systems with python3. 2470*** 'python-shell-interpreter' now defaults to python3 on systems with python3.
2881 2471
2882---
2883*** 'C-c C-r' can now be used on arbitrary regions. 2472*** 'C-c C-r' can now be used on arbitrary regions.
2884The command previously extended the start of the region to the start 2473The command previously extended the start of the region to the start
2885of the line, but will now actually send the marked region, as 2474of the line, but will now actually send the marked region, as
@@ -2887,12 +2476,10 @@ documented.
2887 2476
2888** Ruby mode 2477** Ruby mode
2889 2478
2890---
2891*** 'ruby-use-smie' is declared obsolete. 2479*** 'ruby-use-smie' is declared obsolete.
2892SMIE is now always enabled and 'ruby-use-smie' only controls whether 2480SMIE is now always enabled and 'ruby-use-smie' only controls whether
2893indentation is done using SMIE or with the old ad-hoc code. 2481indentation is done using SMIE or with the old ad-hoc code.
2894 2482
2895---
2896*** Indentation has changed when 'ruby-align-chained-calls' is non-nil. 2483*** Indentation has changed when 'ruby-align-chained-calls' is non-nil.
2897This previously used to align subsequent lines with the last sibling, 2484This previously used to align subsequent lines with the last sibling,
2898but it now aligns with the first sibling (which is the preferred style 2485but it now aligns with the first sibling (which is the preferred style
@@ -2900,10 +2487,8 @@ in Ruby).
2900 2487
2901** CPerl mode 2488** CPerl mode
2902 2489
2903---
2904*** New face 'perl-heredoc', used for heredoc elements. 2490*** New face 'perl-heredoc', used for heredoc elements.
2905 2491
2906---
2907*** The command 'cperl-set-style' offers the new value "PBP". 2492*** The command 'cperl-set-style' offers the new value "PBP".
2908This value customizes Emacs to use the style recommended in Damian 2493This value customizes Emacs to use the style recommended in Damian
2909Conway's book "Perl Best Practices" for indentation and formatting 2494Conway's book "Perl Best Practices" for indentation and formatting
@@ -2911,20 +2496,17 @@ of conditionals.
2911 2496
2912** Perl mode 2497** Perl mode
2913 2498
2914---
2915*** New face 'perl-non-scalar-variable'. 2499*** New face 'perl-non-scalar-variable'.
2916This is used to fontify non-scalar variables. 2500This is used to fontify non-scalar variables.
2917 2501
2918** Octave mode 2502** Octave mode
2919 2503
2920+++
2921*** Line continuations in double-quoted strings now use a backslash. 2504*** Line continuations in double-quoted strings now use a backslash.
2922Typing 'C-M-j' (bound to 'octave-indent-new-comment-line') now follows 2505Typing 'C-M-j' (bound to 'octave-indent-new-comment-line') now follows
2923the behavior introduced in Octave 3.8 of using a backslash as a line 2506the behavior introduced in Octave 3.8 of using a backslash as a line
2924continuation marker within double-quoted strings, and an ellipsis 2507continuation marker within double-quoted strings, and an ellipsis
2925everywhere else. 2508everywhere else.
2926 2509
2927+++
2928** EasyPG 2510** EasyPG
2929GPG key servers can now be queried for keys with the 2511GPG key servers can now be queried for keys with the
2930'epa-search-keys' command. Keys can then be added to your 2512'epa-search-keys' command. Keys can then be added to your
@@ -2932,11 +2514,9 @@ personal key ring.
2932 2514
2933** Etags 2515** Etags
2934 2516
2935+++
2936*** Etags now supports the Mercury programming language. 2517*** Etags now supports the Mercury programming language.
2937See https://mercurylang.org. 2518See https://mercurylang.org.
2938 2519
2939+++
2940*** Etags command line option '--declarations' now has Mercury-specific behavior. 2520*** Etags command line option '--declarations' now has Mercury-specific behavior.
2941All Mercury declarations are tagged by default. However, for 2521All Mercury declarations are tagged by default. However, for
2942compatibility with 'etags' support for Prolog, predicates and 2522compatibility with 'etags' support for Prolog, predicates and
@@ -2945,7 +2525,6 @@ invoked with the '--declarations' command-line option.
2945 2525
2946** Comint 2526** Comint
2947 2527
2948+++
2949*** Support for OSC escape sequences. 2528*** Support for OSC escape sequences.
2950Adding the new function 'comint-osc-process-output' to 2529Adding the new function 'comint-osc-process-output' to
2951'comint-output-filter-functions' enables the interpretation of OSC 2530'comint-output-filter-functions' enables the interpretation of OSC
@@ -2955,18 +2534,15 @@ tracking, are acted upon. Adding more entries to
2955'comint-osc-handlers' allows a customized treatment of further escape 2534'comint-osc-handlers' allows a customized treatment of further escape
2956sequences. 2535sequences.
2957 2536
2958+++
2959*** 'comint-delete-output' can now save deleted text in the kill-ring. 2537*** 'comint-delete-output' can now save deleted text in the kill-ring.
2960Interactively, 'C-u C-c C-o' triggers this new optional behavior. 2538Interactively, 'C-u C-c C-o' triggers this new optional behavior.
2961 2539
2962** ANSI color 2540** ANSI color
2963 2541
2964---
2965*** Colors are now defined by faces. 2542*** Colors are now defined by faces.
2966ANSI SGR codes now have corresponding faces to describe their 2543ANSI SGR codes now have corresponding faces to describe their
2967appearance, e.g. 'ansi-color-bold'. 2544appearance, e.g. 'ansi-color-bold'.
2968 2545
2969---
2970*** Support for "bright" color codes. 2546*** Support for "bright" color codes.
2971"Bright" ANSI color codes are now displayed when applying ANSI color 2547"Bright" ANSI color codes are now displayed when applying ANSI color
2972filters using the color values defined by the faces 2548filters using the color values defined by the faces
@@ -2981,45 +2557,37 @@ user-visible changes in ERC.
2981 2557
2982** Xwidget Webkit mode 2558** Xwidget Webkit mode
2983 2559
2984---
2985*** New xwidget commands. 2560*** New xwidget commands.
2986'xwidget-webkit-uri' (return the current URL), 'xwidget-webkit-title' 2561'xwidget-webkit-uri' (return the current URL), 'xwidget-webkit-title'
2987(return the current title), and 'xwidget-webkit-goto-history' (goto a 2562(return the current title), and 'xwidget-webkit-goto-history' (goto a
2988point in history). 2563point in history).
2989 2564
2990---
2991*** Downloading files from xwidget-webkit is now supported. 2565*** Downloading files from xwidget-webkit is now supported.
2992The new user option 'xwidget-webkit-download-dir' says where to download to. 2566The new user option 'xwidget-webkit-download-dir' says where to download to.
2993 2567
2994---
2995*** New command 'xwidget-webkit-clone-and-split-below'. 2568*** New command 'xwidget-webkit-clone-and-split-below'.
2996Open a new window below displaying the current URL. 2569Open a new window below displaying the current URL.
2997 2570
2998---
2999*** New command 'xwidget-webkit-clone-and-split-right'. 2571*** New command 'xwidget-webkit-clone-and-split-right'.
3000Open a new window to the right displaying the current URL. 2572Open a new window to the right displaying the current URL.
3001 2573
3002---
3003*** Pixel-based scrolling. 2574*** Pixel-based scrolling.
3004The 'xwidget-webkit-scroll-up', 'xwidget-webkit-scroll-down' commands 2575The 'xwidget-webkit-scroll-up', 'xwidget-webkit-scroll-down' commands
3005now supports scrolling arbitrary pixel values. It now treats the 2576now supports scrolling arbitrary pixel values. It now treats the
3006optional 2nd argument as the pixel values to scroll. 2577optional 2nd argument as the pixel values to scroll.
3007 2578
3008---
3009*** New commands for scrolling. 2579*** New commands for scrolling.
3010The new commands 'xwidget-webkit-scroll-up-line', 2580The new commands 'xwidget-webkit-scroll-up-line',
3011'xwidget-webkit-scroll-down-line', 'xwidget-webkit-scroll-forward', 2581'xwidget-webkit-scroll-down-line', 'xwidget-webkit-scroll-forward',
3012'xwidget-webkit-scroll-backward' can be used to scroll webkit by the 2582'xwidget-webkit-scroll-backward' can be used to scroll webkit by the
3013height of lines or width of chars. 2583height of lines or width of chars.
3014 2584
3015---
3016*** New user option 'xwidget-webkit-bookmark-jump-new-session'. 2585*** New user option 'xwidget-webkit-bookmark-jump-new-session'.
3017When non-nil, use a new xwidget webkit session after bookmark jump. 2586When non-nil, use a new xwidget webkit session after bookmark jump.
3018Otherwise, it will use 'xwidget-webkit-last-session'. 2587Otherwise, it will use 'xwidget-webkit-last-session'.
3019 2588
3020** Checkdoc 2589** Checkdoc
3021 2590
3022---
3023*** No longer warns about command substitutions by default. 2591*** No longer warns about command substitutions by default.
3024Checkdoc used to warn about "too many command substitutions" (as in 2592Checkdoc used to warn about "too many command substitutions" (as in
3025"\\[foo-command]"), even if you only used ten of them in a docstring. 2593"\\[foo-command]"), even if you only used ten of them in a docstring.
@@ -3028,19 +2596,16 @@ substitutions before it becomes a performance issue, so this warning
3028is now disabled by default. To re-enable this warning, customize the 2596is now disabled by default. To re-enable this warning, customize the
3029user option 'checkdoc-max-keyref-before-warn'. 2597user option 'checkdoc-max-keyref-before-warn'.
3030 2598
3031---
3032*** New user option 'checkdoc-column-zero-backslash-before-paren'. 2599*** New user option 'checkdoc-column-zero-backslash-before-paren'.
3033Checkdoc warns if there is a left parenthesis in column zero of a 2600Checkdoc warns if there is a left parenthesis in column zero of a
3034documentation string. That warning can now be disabled by customizing 2601documentation string. That warning can now be disabled by customizing
3035this new user option to nil. This is useful if you don't expect 2602this new user option to nil. This is useful if you don't expect
3036your code to be edited with an Emacs older than version 27.1. 2603your code to be edited with an Emacs older than version 27.1.
3037 2604
3038---
3039*** Now checks the prompt format for 'yes-or-no-p'. 2605*** Now checks the prompt format for 'yes-or-no-p'.
3040In addition to verifying the format of the prompt for 'y-or-n-p', 2606In addition to verifying the format of the prompt for 'y-or-n-p',
3041checkdoc will now check the format of 'yes-or-no-p'. 2607checkdoc will now check the format of 'yes-or-no-p'.
3042 2608
3043---
3044*** New command 'checkdoc-dired'. 2609*** New command 'checkdoc-dired'.
3045This can be used to run checkdoc on files from a Dired buffer. 2610This can be used to run checkdoc on files from a Dired buffer.
3046 2611
@@ -3052,14 +2617,12 @@ this warning therefore mostly led to false positives.
3052 2617
3053** Enriched mode 2618** Enriched mode
3054 2619
3055---
3056*** 'C-a' is by default no longer bound to 'beginning-of-line-text'. 2620*** 'C-a' is by default no longer bound to 'beginning-of-line-text'.
3057This is so 'C-a' works as in other modes, and in particular holding 2621This is so 'C-a' works as in other modes, and in particular holding
3058Shift while typing 'C-a', i.e. 'C-S-a', will now highlight the text. 2622Shift while typing 'C-a', i.e. 'C-S-a', will now highlight the text.
3059 2623
3060** Gravatar 2624** Gravatar
3061 2625
3062---
3063*** New user option 'gravatar-service' for host to query for gravatars. 2626*** New user option 'gravatar-service' for host to query for gravatars.
3064Defaults to 'gravatar', with 'unicornify' and 'libravatar' as options. 2627Defaults to 'gravatar', with 'unicornify' and 'libravatar' as options.
3065 2628
@@ -3068,89 +2631,69 @@ Defaults to 'gravatar', with 'unicornify' and 'libravatar' as options.
3068Functions and variables related to handling junk mail have been 2631Functions and variables related to handling junk mail have been
3069renamed to not associate color with sender quality. 2632renamed to not associate color with sender quality.
3070 2633
3071+++
3072*** New names for mh-junk interactive functions. 2634*** New names for mh-junk interactive functions.
3073Function 'mh-junk-whitelist' is renamed 'mh-junk-allowlist'. 2635Function 'mh-junk-whitelist' is renamed 'mh-junk-allowlist'.
3074Function 'mh-junk-blacklist' is renamed 'mh-junk-blocklist'. 2636Function 'mh-junk-blacklist' is renamed 'mh-junk-blocklist'.
3075 2637
3076+++
3077*** New binding for 'mh-junk-allowlist'. 2638*** New binding for 'mh-junk-allowlist'.
3078The key binding for 'mh-junk-allowlist' is changed from 'J w' to 'J a'. 2639The key binding for 'mh-junk-allowlist' is changed from 'J w' to 'J a'.
3079The old binding is supported but warns that it is obsolete. 2640The old binding is supported but warns that it is obsolete.
3080 2641
3081+++
3082*** New names for some hooks. 2642*** New names for some hooks.
3083'mh-whitelist-msg-hook' is renamed 'mh-allowlist-msg-hook'. 2643'mh-whitelist-msg-hook' is renamed 'mh-allowlist-msg-hook'.
3084'mh-blacklist-msg-hook' is renamed 'mh-blocklist-msg-hook'. 2644'mh-blacklist-msg-hook' is renamed 'mh-blocklist-msg-hook'.
3085 2645
3086+++
3087*** New names for some user options. 2646*** New names for some user options.
3088User option 'mh-whitelist-preserves-sequences-flag' is renamed 2647User option 'mh-whitelist-preserves-sequences-flag' is renamed
3089'mh-allowlist-preserves-sequences-flag'. 2648'mh-allowlist-preserves-sequences-flag'.
3090 2649
3091+++
3092*** New names for some faces. 2650*** New names for some faces.
3093Face 'mh-folder-blacklisted' is renamed 'mh-folder-blocklisted'. 2651Face 'mh-folder-blacklisted' is renamed 'mh-folder-blocklisted'.
3094Face 'mh-folder-whitelisted' is renamed 'mh-folder-allowlisted'. 2652Face 'mh-folder-whitelisted' is renamed 'mh-folder-allowlisted'.
3095 2653
3096** Rcirc 2654** Rcirc
3097 2655
3098+++
3099*** rcirc now supports SASL authentication. 2656*** rcirc now supports SASL authentication.
3100 2657
3101---
3102*** #emacs on Libera.chat has been added to 'rcirc-server-alist'. 2658*** #emacs on Libera.chat has been added to 'rcirc-server-alist'.
3103 2659
3104---
3105*** rcirc connects asynchronously. 2660*** rcirc connects asynchronously.
3106 2661
3107---
3108*** Integrate formatting into 'rcirc-send-string'. 2662*** Integrate formatting into 'rcirc-send-string'.
3109The function now accepts a variable number of arguments. 2663The function now accepts a variable number of arguments.
3110 2664
3111+++
3112*** Deprecate 'rcirc-command' in favor of 'rcirc-define-command'. 2665*** Deprecate 'rcirc-command' in favor of 'rcirc-define-command'.
3113The new macro handles multiple and optional arguments. 2666The new macro handles multiple and optional arguments.
3114 2667
3115---
3116*** Add basic IRCv3 support. 2668*** Add basic IRCv3 support.
3117This includes support for the capabilities: 'server-time', 'batch', 2669This includes support for the capabilities: 'server-time', 'batch',
3118'message-ids', 'invite-notify', 'multi-prefix' and 'standard-replies'. 2670'message-ids', 'invite-notify', 'multi-prefix' and 'standard-replies'.
3119 2671
3120---
3121*** Add mouse property support to 'rcirc-track-minor-mode'. 2672*** Add mouse property support to 'rcirc-track-minor-mode'.
3122 2673
3123---
3124*** Improve support for IRC markup codes. 2674*** Improve support for IRC markup codes.
3125 2675
3126---
3127*** Check 'auth-sources' for server passwords. 2676*** Check 'auth-sources' for server passwords.
3128 2677
3129+++
3130*** Implement repeated reconnection strategy. 2678*** Implement repeated reconnection strategy.
3131See 'rcirc-reconnect-attempts'. 2679See 'rcirc-reconnect-attempts'.
3132 2680
3133** MPC 2681** MPC
3134 2682
3135---
3136*** New command 'mpc-goto-playing-song'. 2683*** New command 'mpc-goto-playing-song'.
3137This command, bound to 'o' in any 'mpc-mode' buffer, moves point to 2684This command, bound to 'o' in any 'mpc-mode' buffer, moves point to
3138the currently playing song in the "*MPC-Songs*" buffer. 2685the currently playing song in the "*MPC-Songs*" buffer.
3139 2686
3140---
3141*** New user option 'mpc-cover-image-re'. 2687*** New user option 'mpc-cover-image-re'.
3142If non-nil, it is a regexp that should match a valid cover image. 2688If non-nil, it is a regexp that should match a valid cover image.
3143 2689
3144** Miscellaneous 2690** Miscellaneous
3145 2691
3146---
3147*** 'shell-script-mode' now supports 'outline-minor-mode'. 2692*** 'shell-script-mode' now supports 'outline-minor-mode'.
3148The outline headings have lines that start with "###". 2693The outline headings have lines that start with "###".
3149 2694
3150---
3151*** fileloop will now skip missing files instead of signalling an error. 2695*** fileloop will now skip missing files instead of signalling an error.
3152 2696
3153---
3154*** 'tabulated-list-mode' can now restore original display order. 2697*** 'tabulated-list-mode' can now restore original display order.
3155Many commands (like 'C-x C-b') are derived from 'tabulated-list-mode', 2698Many commands (like 'C-x C-b') are derived from 'tabulated-list-mode',
3156and that mode allows the user to sort on any column. There was 2699and that mode allows the user to sort on any column. There was
@@ -3158,73 +2701,58 @@ previously no easy way to get back to the original displayed order
3158after sorting, but giving a -1 numerical prefix to the sorting command 2701after sorting, but giving a -1 numerical prefix to the sorting command
3159will now restore the original order. 2702will now restore the original order.
3160 2703
3161---
3162*** 'M-left' and 'M-right' now move between columns in 'tabulated-list-mode'. 2704*** 'M-left' and 'M-right' now move between columns in 'tabulated-list-mode'.
3163 2705
3164---
3165*** New variable 'hl-line-overlay-priority'. 2706*** New variable 'hl-line-overlay-priority'.
3166This can be used to change the priority of the hl-line overlays. 2707This can be used to change the priority of the hl-line overlays.
3167 2708
3168+++
3169*** New command 'mailcap-view-file'. 2709*** New command 'mailcap-view-file'.
3170This command will open a viewer based on the file type, as determined 2710This command will open a viewer based on the file type, as determined
3171by "~/.mailcap" and related files and variables. 2711by "~/.mailcap" and related files and variables.
3172 2712
3173---
3174*** New user option 'remember-diary-regexp'. 2713*** New user option 'remember-diary-regexp'.
3175 2714
3176---
3177*** New user option 'remember-text-format-function'. 2715*** New user option 'remember-text-format-function'.
3178 2716
3179---
3180*** New user option 'authinfo-hide-elements'. 2717*** New user option 'authinfo-hide-elements'.
3181This can be set to nil to inhibit hiding passwords in ".authinfo" files. 2718This can be set to nil to inhibit hiding passwords in ".authinfo" files.
3182 2719
3183---
3184*** 'hexl-mode' scrolling commands now heed 'next-screen-context-lines'. 2720*** 'hexl-mode' scrolling commands now heed 'next-screen-context-lines'.
3185Previously, 'hexl-scroll-down' and 'hexl-scroll-up' would scroll 2721Previously, 'hexl-scroll-down' and 'hexl-scroll-up' would scroll
3186up/down an entire window, but they now work more like the standard 2722up/down an entire window, but they now work more like the standard
3187scrolling commands. 2723scrolling commands.
3188 2724
3189---
3190*** New user option 'bibtex-unify-case-function'. 2725*** New user option 'bibtex-unify-case-function'.
3191This new option allows the user to customize how case is converted 2726This new option allows the user to customize how case is converted
3192when unifying entries. 2727when unifying entries.
3193 2728
3194---
3195*** The user option 'bibtex-maintain-sorted-entries' now permits 2729*** The user option 'bibtex-maintain-sorted-entries' now permits
3196user-defined sorting schemes. 2730user-defined sorting schemes.
3197 2731
3198---
3199*** New user option 'reveal-auto-hide'. 2732*** New user option 'reveal-auto-hide'.
3200If non-nil (the default), revealed text is automatically hidden when 2733If non-nil (the default), revealed text is automatically hidden when
3201point leaves the text. If nil, the text is not hidden again. Instead the 2734point leaves the text. If nil, the text is not hidden again. Instead the
3202command 'reveal-hide-revealed' can be used to hide all the revealed text. 2735command 'reveal-hide-revealed' can be used to hide all the revealed text.
3203 2736
3204---
3205*** New user option 'ffap-file-name-with-spaces'. 2737*** New user option 'ffap-file-name-with-spaces'.
3206If non-nil, 'find-file-at-point' and friends will try to guess more 2738If non-nil, 'find-file-at-point' and friends will try to guess more
3207expansively to identify a file name with spaces. Default value is 2739expansively to identify a file name with spaces. Default value is
3208nil. 2740nil.
3209 2741
3210---
3211*** Two new commands for centering in 'doc-view-mode'. 2742*** Two new commands for centering in 'doc-view-mode'.
3212The new commands 'doc-view-center-page-horizontally' (bound to 'c h') 2743The new commands 'doc-view-center-page-horizontally' (bound to 'c h')
3213and 'doc-view-center-page-vertically' (bound to 'c v') center the page 2744and 'doc-view-center-page-vertically' (bound to 'c v') center the page
3214horizontally and vertically, respectively. 2745horizontally and vertically, respectively.
3215 2746
3216---
3217*** 'tempo-define-template' can now re-assign templates to tags. 2747*** 'tempo-define-template' can now re-assign templates to tags.
3218Previously, assigning a new template to an already defined tag had no 2748Previously, assigning a new template to an already defined tag had no
3219effect. 2749effect.
3220 2750
3221---
3222*** The width of the buffer-name column in 'list-buffers' is now dynamic. 2751*** The width of the buffer-name column in 'list-buffers' is now dynamic.
3223The width now depends on the width of the window, but will never be 2752The width now depends on the width of the window, but will never be
3224wider than the length of the longest buffer name, except that it will 2753wider than the length of the longest buffer name, except that it will
3225never be narrower than 19 characters. 2754never be narrower than 19 characters.
3226 2755
3227+++
3228*** New diary sexp 'diary-offset'. 2756*** New diary sexp 'diary-offset'.
3229It offsets another diary sexp by a number of days. This is useful 2757It offsets another diary sexp by a number of days. This is useful
3230when for example your organization has a committee meeting two days 2758when for example your organization has a committee meeting two days
@@ -3232,13 +2760,10 @@ after every monthly meeting which takes place on the third Thursday,
3232or if you would like to attend a virtual meeting scheduled in a 2760or if you would like to attend a virtual meeting scheduled in a
3233different timezone causing a difference in the date. 2761different timezone causing a difference in the date.
3234 2762
3235---
3236*** The old non-SMIE indentation of 'sh-mode' has been removed. 2763*** The old non-SMIE indentation of 'sh-mode' has been removed.
3237 2764
3238---
3239*** 'mspools-show' is now autoloaded. 2765*** 'mspools-show' is now autoloaded.
3240 2766
3241---
3242*** Loading dunnet.el in batch mode doesn't start the game any more. 2767*** Loading dunnet.el in batch mode doesn't start the game any more.
3243Instead you need to do "emacs --batch -f dunnet" to start the game in 2768Instead you need to do "emacs --batch -f dunnet" to start the game in
3244batch mode. 2769batch mode.
@@ -3246,7 +2771,6 @@ batch mode.
3246 2771
3247* New Modes and Packages in Emacs 28.1 2772* New Modes and Packages in Emacs 28.1
3248 2773
3249+++
3250** New mode 'repeat-mode' to allow shorter key sequences. 2774** New mode 'repeat-mode' to allow shorter key sequences.
3251Type 'M-x repeat-mode' to enable this mode. You can then type 2775Type 'M-x repeat-mode' to enable this mode. You can then type
3252'C-x u u' instead of 'C-x u C-x u' to undo many changes, 'C-x o o' 2776'C-x u u' instead of 'C-x u C-x u' to undo many changes, 'C-x o o'
@@ -3272,7 +2796,6 @@ columns.
3272Command 'describe-repeat-maps' will display a buffer showing 2796Command 'describe-repeat-maps' will display a buffer showing
3273which commands are repeatable in 'repeat-mode'. 2797which commands are repeatable in 'repeat-mode'.
3274 2798
3275---
3276** New themes 'modus-vivendi' and 'modus-operandi'. 2799** New themes 'modus-vivendi' and 'modus-operandi'.
3277These themes are designed to conform with the highest standard for 2800These themes are designed to conform with the highest standard for
3278color-contrast accessibility (WCAG AAA). You can load either of them 2801color-contrast accessibility (WCAG AAA). You can load either of them
@@ -3288,14 +2811,12 @@ This is a mode for searching a RFC 2229 dictionary server.
3288the mouse in 'dictionary-tooltip-dictionary' (which must be customized 2811the mouse in 'dictionary-tooltip-dictionary' (which must be customized
3289first). 2812first).
3290 2813
3291---
3292** Lisp Data mode 2814** Lisp Data mode
3293The new command 'lisp-data-mode' enables a major mode for buffers 2815The new command 'lisp-data-mode' enables a major mode for buffers
3294composed of Lisp symbolic expressions that do not form a computer 2816composed of Lisp symbolic expressions that do not form a computer
3295program. The ".dir-locals.el" file is automatically set to use this 2817program. The ".dir-locals.el" file is automatically set to use this
3296mode, as are other data files produced by Emacs. 2818mode, as are other data files produced by Emacs.
3297 2819
3298+++
3299** New global mode 'global-goto-address-mode'. 2820** New global mode 'global-goto-address-mode'.
3300This will enable 'goto-address-mode' in all buffers. 2821This will enable 'goto-address-mode' in all buffers.
3301 2822
@@ -3309,7 +2830,6 @@ similar to prefix arguments, but are more flexible and discoverable.
3309This library can create, query, navigate and display hierarchical 2830This library can create, query, navigate and display hierarchical
3310structures. 2831structures.
3311 2832
3312---
3313** New major mode for displaying the "etc/AUTHORS" file. 2833** New major mode for displaying the "etc/AUTHORS" file.
3314This new 'etc-authors-mode' provides font-locking for displaying the 2834This new 'etc-authors-mode' provides font-locking for displaying the
3315"etc/AUTHORS" file from the Emacs distribution, and not much else. 2835"etc/AUTHORS" file from the Emacs distribution, and not much else.
@@ -3317,13 +2837,11 @@ This new 'etc-authors-mode' provides font-locking for displaying the
3317 2837
3318* Incompatible Lisp Changes in Emacs 28.1 2838* Incompatible Lisp Changes in Emacs 28.1
3319 2839
3320+++
3321** Emacs now prints a backtrace when signaling an error in batch mode. 2840** Emacs now prints a backtrace when signaling an error in batch mode.
3322This makes debugging Emacs Lisp scripts run in batch mode easier. To 2841This makes debugging Emacs Lisp scripts run in batch mode easier. To
3323get back the old behavior, set the new variable 2842get back the old behavior, set the new variable
3324'backtrace-on-error-noninteractive' to a nil value. 2843'backtrace-on-error-noninteractive' to a nil value.
3325 2844
3326---
3327** Some floating-point numbers are now handled differently by the Lisp reader. 2845** Some floating-point numbers are now handled differently by the Lisp reader.
3328In previous versions of Emacs, numbers with a trailing dot and an exponent 2846In previous versions of Emacs, numbers with a trailing dot and an exponent
3329were read as integers and the exponent ignored: 2.e6 was interpreted as the 2847were read as integers and the exponent ignored: 2.e6 was interpreted as the
@@ -3331,28 +2849,24 @@ integer 2. Such numerals are now read as floats with the exponent included:
33312.e6 is now read as the floating-point value 2000000.0. 28492.e6 is now read as the floating-point value 2000000.0.
3332That is, '(read-from-string "1.e3")' => '(1000.0 . 4)' now. 2850That is, '(read-from-string "1.e3")' => '(1000.0 . 4)' now.
3333 2851
3334---
3335** 'equal' no longer examines some contents of window configurations. 2852** 'equal' no longer examines some contents of window configurations.
3336Instead, it considers window configurations to be equal only if they 2853Instead, it considers window configurations to be equal only if they
3337are 'eq'. To compare contents, use 'compare-window-configurations' 2854are 'eq'. To compare contents, use 'compare-window-configurations'
3338instead. This change helps fix a bug in 'sxhash-equal', which returned 2855instead. This change helps fix a bug in 'sxhash-equal', which returned
3339incorrect hashes for window configurations and some other objects. 2856incorrect hashes for window configurations and some other objects.
3340 2857
3341+++
3342** The 'lexical-binding' local variable is always enabled. 2858** The 'lexical-binding' local variable is always enabled.
3343Previously, if 'enable-local-variables' was nil, a 'lexical-binding' 2859Previously, if 'enable-local-variables' was nil, a 'lexical-binding'
3344local variable would not be heeded. This has now changed, and a file 2860local variable would not be heeded. This has now changed, and a file
3345with a 'lexical-binding' cookie is always heeded. To revert to the 2861with a 'lexical-binding' cookie is always heeded. To revert to the
3346old behavior, set 'permanently-enabled-local-variables' to nil. 2862old behavior, set 'permanently-enabled-local-variables' to nil.
3347 2863
3348+++
3349** '&rest' in argument lists must always be followed by a variable name. 2864** '&rest' in argument lists must always be followed by a variable name.
3350Omitting the variable name after '&rest' was previously tolerated in 2865Omitting the variable name after '&rest' was previously tolerated in
3351some cases but not consistently so; it could lead to crashes or 2866some cases but not consistently so; it could lead to crashes or
3352outright wrong results. Since the utility was marginal at best, it is 2867outright wrong results. Since the utility was marginal at best, it is
3353now an error to omit the variable. 2868now an error to omit the variable.
3354 2869
3355---
3356** 'kill-all-local-variables' has changed how it handles non-symbol hooks. 2870** 'kill-all-local-variables' has changed how it handles non-symbol hooks.
3357The function is documented to eliminate all buffer-local bindings 2871The function is documented to eliminate all buffer-local bindings
3358except variables with a 'permanent-local' property, or hooks that 2872except variables with a 'permanent-local' property, or hooks that
@@ -3360,14 +2874,12 @@ have elements with a 'permanent-local-hook' property. In addition, it
3360would also keep lambda expressions in hooks sometimes. The latter has 2874would also keep lambda expressions in hooks sometimes. The latter has
3361now been changed: The function will now also remove these. 2875now been changed: The function will now also remove these.
3362 2876
3363+++
3364** Temporary buffers no longer run certain buffer hooks. 2877** Temporary buffers no longer run certain buffer hooks.
3365The macros 'with-temp-buffer' and 'with-temp-file' no longer run the 2878The macros 'with-temp-buffer' and 'with-temp-file' no longer run the
3366hooks 'kill-buffer-hook', 'kill-buffer-query-functions', and 2879hooks 'kill-buffer-hook', 'kill-buffer-query-functions', and
3367'buffer-list-update-hook' for the temporary buffers they create. This 2880'buffer-list-update-hook' for the temporary buffers they create. This
3368avoids slowing them down when a lot of these hooks are defined. 2881avoids slowing them down when a lot of these hooks are defined.
3369 2882
3370+++
3371** New face 'child-frame-border' and frame parameter 'child-frame-border-width'. 2883** New face 'child-frame-border' and frame parameter 'child-frame-border-width'.
3372The face and width of child frames borders can now be determined 2884The face and width of child frames borders can now be determined
3373separately from those of normal frames. To minimize backward 2885separately from those of normal frames. To minimize backward
@@ -3376,7 +2888,6 @@ parameter will fall back to using 'internal-border-width'. However,
3376the new 'child-frame-border' face does constitute a breaking change 2888the new 'child-frame-border' face does constitute a breaking change
3377since child frames' borders no longer use the 'internal-border' face. 2889since child frames' borders no longer use the 'internal-border' face.
3378 2890
3379---
3380** 'run-at-time' now tries harder to implement the t TIME parameter. 2891** 'run-at-time' now tries harder to implement the t TIME parameter.
3381If TIME is t, the timer runs at an integral multiple of REPEAT. 2892If TIME is t, the timer runs at an integral multiple of REPEAT.
3382(I.e., if given a REPEAT of 60, it'll run at 08:11:00, 08:12:00, 2893(I.e., if given a REPEAT of 60, it'll run at 08:11:00, 08:12:00,
@@ -3387,18 +2898,15 @@ has now changed, and the timer code now recomputes the integral
3387multiple every time it runs, which means that if the laptop wakes at 2898multiple every time it runs, which means that if the laptop wakes at
338808:16:43, it'll fire at that time, but then at 08:17:00, 08:18:00... 289908:16:43, it'll fire at that time, but then at 08:17:00, 08:18:00...
3389 2900
3390---
3391** 'parse-partial-sexp' now signals an error if TO is smaller than FROM. 2901** 'parse-partial-sexp' now signals an error if TO is smaller than FROM.
3392Previously, this would lead to the function interpreting FROM as TO and 2902Previously, this would lead to the function interpreting FROM as TO and
3393vice versa, which would be confusing when passing in OLDSTATE, which 2903vice versa, which would be confusing when passing in OLDSTATE, which
3394refers to the old state at FROM. 2904refers to the old state at FROM.
3395 2905
3396+++
3397** 'global-mode-string' constructs should end with a space. 2906** 'global-mode-string' constructs should end with a space.
3398This was previously not formalized, which led to combinations of modes 2907This was previously not formalized, which led to combinations of modes
3399displaying data "smushed together" on the mode line. 2908displaying data "smushed together" on the mode line.
3400 2909
3401+++
3402** 'overlays-in' now handles zero-length overlays slightly differently. 2910** 'overlays-in' now handles zero-length overlays slightly differently.
3403Previously, zero-length overlays at the end of the buffer were included 2911Previously, zero-length overlays at the end of the buffer were included
3404in the result (if the region queried for stopped at that position). 2912in the result (if the region queried for stopped at that position).
@@ -3406,7 +2914,6 @@ The same was not the case if the buffer had been narrowed to exclude
3406the real end of the buffer. This has now been changed, and 2914the real end of the buffer. This has now been changed, and
3407zero-length overlays at 'point-max' are always included in the results. 2915zero-length overlays at 'point-max' are always included in the results.
3408 2916
3409---
3410** 'replace-match' now runs modification hooks slightly later. 2917** 'replace-match' now runs modification hooks slightly later.
3411The function is documented to leave point after the replacement text, 2918The function is documented to leave point after the replacement text,
3412but this was not always the case if a modification hook inserted text 2919but this was not always the case if a modification hook inserted text
@@ -3415,28 +2922,23 @@ point where the end of the inserted text would have been before the
3415hook ran. 'replace-match' now always leaves point after the 2922hook ran. 'replace-match' now always leaves point after the
3416replacement text. 2923replacement text.
3417 2924
3418+++
3419** 'completing-read-default' sets completion variables buffer-locally. 2925** 'completing-read-default' sets completion variables buffer-locally.
3420'minibuffer-completion-table' and related variables are now set buffer-locally 2926'minibuffer-completion-table' and related variables are now set buffer-locally
3421in the minibuffer instead of being set via a global let-binding. 2927in the minibuffer instead of being set via a global let-binding.
3422 2928
3423---
3424** XML serialization functions now reject invalid characters. 2929** XML serialization functions now reject invalid characters.
3425Previously, 'xml-print' would produce invalid XML when given a string 2930Previously, 'xml-print' would produce invalid XML when given a string
3426with characters that are not valid in XML (see 2931with characters that are not valid in XML (see
3427https://www.w3.org/TR/xml/#charsets). Now it rejects such strings. 2932https://www.w3.org/TR/xml/#charsets). Now it rejects such strings.
3428 2933
3429---
3430** JSON 2934** JSON
3431 2935
3432---
3433*** JSON number parsing is now stricter. 2936*** JSON number parsing is now stricter.
3434Numbers with a leading plus sign, leading zeros, or a missing integer 2937Numbers with a leading plus sign, leading zeros, or a missing integer
3435component are now rejected by 'json-read' and friends. This makes 2938component are now rejected by 'json-read' and friends. This makes
3436them more compliant with the JSON specification and consistent with 2939them more compliant with the JSON specification and consistent with
3437the native JSON parsing functions. 2940the native JSON parsing functions.
3438 2941
3439---
3440*** JSON functions support the semantics of RFC 8259. 2942*** JSON functions support the semantics of RFC 8259.
3441The JSON functions 'json-serialize', 'json-insert', 2943The JSON functions 'json-serialize', 'json-insert',
3442'json-parse-string', and 'json-parse-buffer' now implement some of the 2944'json-parse-string', and 'json-parse-buffer' now implement some of the
@@ -3444,7 +2946,6 @@ semantics of RFC 8259 instead of the earlier RFC 4627. In particular,
3444these functions now accept top-level JSON values that are neither 2946these functions now accept top-level JSON values that are neither
3445arrays nor objects. 2947arrays nor objects.
3446 2948
3447---
3448*** Some JSON encoding functions are now obsolete. 2949*** Some JSON encoding functions are now obsolete.
3449The functions 'json-encode-number', 'json-encode-hash-table', 2950The functions 'json-encode-number', 'json-encode-hash-table',
3450'json-encode-key', and 'json-encode-list' are now obsolete. 2951'json-encode-key', and 'json-encode-list' are now obsolete.
@@ -3454,7 +2955,6 @@ used instead. Uses of 'json-encode-list' should be changed to call
3454one of 'json-encode', 'json-encode-alist', 'json-encode-plist', or 2955one of 'json-encode', 'json-encode-alist', 'json-encode-plist', or
3455'json-encode-array' instead. 2956'json-encode-array' instead.
3456 2957
3457+++
3458*** Native JSON functions now signal an error if libjansson is unavailable. 2958*** Native JSON functions now signal an error if libjansson is unavailable.
3459This affects 'json-serialize', 'json-insert', 'json-parse-string', 2959This affects 'json-serialize', 'json-insert', 'json-parse-string',
3460and 'json-parse-buffer'. This can happen if Emacs was compiled with 2960and 'json-parse-buffer'. This can happen if Emacs was compiled with
@@ -3462,148 +2962,117 @@ libjansson, but the DLL cannot be found and/or loaded by Emacs at run
3462time. Previously, Emacs would display a message and return nil in 2962time. Previously, Emacs would display a message and return nil in
3463these cases. 2963these cases.
3464 2964
3465+++
3466** The use of positional arguments in 'define-minor-mode' is obsolete. 2965** The use of positional arguments in 'define-minor-mode' is obsolete.
3467These were actually rendered obsolete in Emacs 21 but were never 2966These were actually rendered obsolete in Emacs 21 but were never
3468marked as such. 2967marked as such.
3469 2968
3470---
3471** 'pcomplete-ignore-case' is now an obsolete alias of 'completion-ignore-case'. 2969** 'pcomplete-ignore-case' is now an obsolete alias of 'completion-ignore-case'.
3472 2970
3473+++
3474** 'completions-annotations' face is not used when the caller puts own face. 2971** 'completions-annotations' face is not used when the caller puts own face.
3475This affects the suffix specified by completion 'annotation-function'. 2972This affects the suffix specified by completion 'annotation-function'.
3476 2973
3477+++
3478** An active minibuffer now has major mode 'minibuffer-mode'. 2974** An active minibuffer now has major mode 'minibuffer-mode'.
3479This is instead of the erroneous 'minibuffer-inactive-mode' it 2975This is instead of the erroneous 'minibuffer-inactive-mode' it
3480formerly had. 2976formerly had.
3481 2977
3482---
3483** 'make-text-button' no longer modifies text properties of its first argument. 2978** 'make-text-button' no longer modifies text properties of its first argument.
3484When its first argument is a string, 'make-text-button' no longer 2979When its first argument is a string, 'make-text-button' no longer
3485modifies the string's text properties; instead, it uses and returns 2980modifies the string's text properties; instead, it uses and returns
3486a copy of the string. This helps avoid trouble when strings are 2981a copy of the string. This helps avoid trouble when strings are
3487shared or constants. 2982shared or constants.
3488 2983
3489+++
3490** Some properties from completion tables are now preserved. 2984** Some properties from completion tables are now preserved.
3491If 'minibuffer-allow-text-properties' is non-nil, doing completion 2985If 'minibuffer-allow-text-properties' is non-nil, doing completion
3492over a table of strings with properties will no longer remove all the 2986over a table of strings with properties will no longer remove all the
3493properties before returning. This affects things like 'completing-read'. 2987properties before returning. This affects things like 'completing-read'.
3494 2988
3495---
3496** 'dns-query' now consistently uses Lisp integers to represent integers. 2989** 'dns-query' now consistently uses Lisp integers to represent integers.
3497Formerly it made an exception for integer components of SOA records, 2990Formerly it made an exception for integer components of SOA records,
3498because SOA serial numbers can exceed fixnum ranges on 32-bit platforms. 2991because SOA serial numbers can exceed fixnum ranges on 32-bit platforms.
3499Emacs now supports bignums so this old glitch is no longer needed. 2992Emacs now supports bignums so this old glitch is no longer needed.
3500 2993
3501+++
3502** The '&define' keyword in an Edebug specification now disables backtracking. 2994** The '&define' keyword in an Edebug specification now disables backtracking.
3503The implementation was buggy, and multiple '&define' forms in an '&or' 2995The implementation was buggy, and multiple '&define' forms in an '&or'
3504form should be exceedingly rare. See the Info node "(elisp) Backtracking" in 2996form should be exceedingly rare. See the Info node "(elisp) Backtracking" in
3505the Emacs Lisp reference manual for background. 2997the Emacs Lisp reference manual for background.
3506 2998
3507+++
3508** The error 'ftp-error' belongs also to category 'remote-file-error'. 2999** The error 'ftp-error' belongs also to category 'remote-file-error'.
3509 3000
3510+++
3511** The WHEN argument of 'make-obsolete' and related functions is mandatory. 3001** The WHEN argument of 'make-obsolete' and related functions is mandatory.
3512The use of those functions without a WHEN argument was marked obsolete 3002The use of those functions without a WHEN argument was marked obsolete
3513back in Emacs 23.1. The affected functions are: 'make-obsolete', 3003back in Emacs 23.1. The affected functions are: 'make-obsolete',
3514'define-obsolete-function-alias', 'make-obsolete-variable', 3004'define-obsolete-function-alias', 'make-obsolete-variable',
3515'define-obsolete-variable-alias'. 3005'define-obsolete-variable-alias'.
3516 3006
3517+++
3518** 'inhibit-nul-byte-detection' is renamed to 'inhibit-null-byte-detection'. 3007** 'inhibit-nul-byte-detection' is renamed to 'inhibit-null-byte-detection'.
3519 3008
3520---
3521** Some functions are no longer considered safe by 'unsafep': 3009** Some functions are no longer considered safe by 'unsafep':
3522'replace-regexp-in-string', 'catch', 'throw', 'error', 'signal' 3010'replace-regexp-in-string', 'catch', 'throw', 'error', 'signal'
3523and 'play-sound-file'. 3011and 'play-sound-file'.
3524 3012
3525---
3526** 'sql-*-statement-starters' are no longer user options. 3013** 'sql-*-statement-starters' are no longer user options.
3527These variables describe facts about the SQL standard and 3014These variables describe facts about the SQL standard and
3528product-specific additions. There should be no need for users to 3015product-specific additions. There should be no need for users to
3529customize them. 3016customize them.
3530 3017
3531---
3532** Some locale-related variables have been removed. 3018** Some locale-related variables have been removed.
3533The Lisp variables 'previous-system-messages-locale' and 3019The Lisp variables 'previous-system-messages-locale' and
3534'previous-system-time-locale' have been removed, as they were created 3020'previous-system-time-locale' have been removed, as they were created
3535by mistake and were not useful to Lisp code. 3021by mistake and were not useful to Lisp code.
3536 3022
3537---
3538** Function 'lm-maintainer' is replaced with 'lm-maintainers'. 3023** Function 'lm-maintainer' is replaced with 'lm-maintainers'.
3539The former is now declared obsolete. 3024The former is now declared obsolete.
3540 3025
3541+++
3542** facemenu.el is no longer preloaded. 3026** facemenu.el is no longer preloaded.
3543To use functions/variables from the package, you now have to say 3027To use functions/variables from the package, you now have to say
3544'(require 'facemenu)' or similar. 3028'(require 'facemenu)' or similar.
3545 3029
3546---
3547** 'facemenu-color-alist' is now obsolete, and is not used. 3030** 'facemenu-color-alist' is now obsolete, and is not used.
3548 3031
3549---
3550** The variable 'keyboard-type' is obsolete and not dynamically scoped any more. 3032** The variable 'keyboard-type' is obsolete and not dynamically scoped any more.
3551 3033
3552+++
3553** The 'values' variable is now obsolete. 3034** The 'values' variable is now obsolete.
3554Using it just contributes to the growth of the Emacs memory 3035Using it just contributes to the growth of the Emacs memory
3555footprint. 3036footprint.
3556 3037
3557---
3558** The 'load-dangerous-libraries' variable is now obsolete. 3038** The 'load-dangerous-libraries' variable is now obsolete.
3559It was used to allow loading Lisp libraries compiled by XEmacs, a 3039It was used to allow loading Lisp libraries compiled by XEmacs, a
3560modified version of Emacs which is no longer actively maintained. 3040modified version of Emacs which is no longer actively maintained.
3561This is no longer supported, and setting this variable has no effect. 3041This is no longer supported, and setting this variable has no effect.
3562 3042
3563+++
3564** The macro 'with-displayed-buffer-window' is now obsolete. 3043** The macro 'with-displayed-buffer-window' is now obsolete.
3565Use macro 'with-current-buffer-window' with action alist entry 'body-function'. 3044Use macro 'with-current-buffer-window' with action alist entry 'body-function'.
3566 3045
3567---
3568** The rfc2368.el library is now obsolete. 3046** The rfc2368.el library is now obsolete.
3569Use rfc6068.el instead. The main difference is that 3047Use rfc6068.el instead. The main difference is that
3570'rfc2368-parse-mailto-url' and 'rfc2368-unhexify-string' assumed that 3048'rfc2368-parse-mailto-url' and 'rfc2368-unhexify-string' assumed that
3571the strings were all-ASCII, while 'rfc6068-parse-mailto-url' and 3049the strings were all-ASCII, while 'rfc6068-parse-mailto-url' and
3572'rfc6068-unhexify-string' parse UTF-8 strings. 3050'rfc6068-unhexify-string' parse UTF-8 strings.
3573 3051
3574---
3575** The inversion.el library is now obsolete. 3052** The inversion.el library is now obsolete.
3576 3053
3577---
3578** The metamail.el library is now obsolete. 3054** The metamail.el library is now obsolete.
3579 3055
3580** Edebug changes 3056** Edebug changes
3581 3057
3582---
3583*** 'get-edebug-spec' is obsolete, replaced by 'edebug-get-spec'. 3058*** 'get-edebug-spec' is obsolete, replaced by 'edebug-get-spec'.
3584 3059
3585+++
3586*** The spec operator ':name NAME' is obsolete, use '&name' instead. 3060*** The spec operator ':name NAME' is obsolete, use '&name' instead.
3587 3061
3588+++
3589*** The spec element 'function-form' is obsolete, use 'form' instead. 3062*** The spec element 'function-form' is obsolete, use 'form' instead.
3590 3063
3591+++
3592*** New function 'def-edebug-elem-spec' to define Edebug spec elements. 3064*** New function 'def-edebug-elem-spec' to define Edebug spec elements.
3593These used to be defined with 'def-edebug-spec' thus conflating the 3065These used to be defined with 'def-edebug-spec' thus conflating the
3594two name spaces, which lead to name collisions. 3066two name spaces, which lead to name collisions.
3595The use of 'def-edebug-spec' to define Edebug spec elements is 3067The use of 'def-edebug-spec' to define Edebug spec elements is
3596declared obsolete. 3068declared obsolete.
3597 3069
3598---
3599** The sb-image.el library is now obsolete. 3070** The sb-image.el library is now obsolete.
3600This was a compatibility kludge which is no longer needed. 3071This was a compatibility kludge which is no longer needed.
3601 3072
3602---
3603** Some libraries obsolete since Emacs 23 have been removed: 3073** Some libraries obsolete since Emacs 23 have been removed:
3604ledit.el, lmenu.el, lucid.el and old-whitespace.el. 3074ledit.el, lmenu.el, lucid.el and old-whitespace.el.
3605 3075
3606---
3607** Some functions and variables obsolete since Emacs 23 have been removed: 3076** Some functions and variables obsolete since Emacs 23 have been removed:
3608'GOLD-map', 'advertised-xscheme-send-previous-expression', 3077'GOLD-map', 'advertised-xscheme-send-previous-expression',
3609'allout-init', 'bookmark-jump-noselect', 3078'allout-init', 'bookmark-jump-noselect',
@@ -3675,20 +3144,16 @@ ledit.el, lmenu.el, lucid.el and old-whitespace.el.
3675'vcursor-toggle-vcursor-map', 'w32-focus-frame', 'w32-select-font', 3144'vcursor-toggle-vcursor-map', 'w32-focus-frame', 'w32-select-font',
3676'wisent-lex-make-token-table'. 3145'wisent-lex-make-token-table'.
3677 3146
3678---
3679** Some functions and variables obsolete since Emacs 22 have been removed: 3147** Some functions and variables obsolete since Emacs 22 have been removed:
3680'erc-current-network', 'gnus-article-hide-pgp-hook', 3148'erc-current-network', 'gnus-article-hide-pgp-hook',
3681'gnus-inews-mark-gcc-as-read', 'gnus-treat-display-xface', 3149'gnus-inews-mark-gcc-as-read', 'gnus-treat-display-xface',
3682'gnus-treat-strip-pgp', 'nnmail-spool-file'. 3150'gnus-treat-strip-pgp', 'nnmail-spool-file'.
3683 3151
3684---
3685** The obsolete function 'thread-alive-p' has been removed. 3152** The obsolete function 'thread-alive-p' has been removed.
3686 3153
3687---
3688** The variable 'force-new-style-backquotes' has been removed. 3154** The variable 'force-new-style-backquotes' has been removed.
3689This removes the final remaining trace of old-style backquotes. 3155This removes the final remaining trace of old-style backquotes.
3690 3156
3691---
3692** Some obsolete variable and function aliases in dbus.el have been removed. 3157** Some obsolete variable and function aliases in dbus.el have been removed.
3693In Emacs 24.3, the variable 'dbus-event-error-hooks' was renamed to 3158In Emacs 24.3, the variable 'dbus-event-error-hooks' was renamed to
3694'dbus-event-error-functions' and the function 3159'dbus-event-error-functions' and the function
@@ -3696,7 +3161,6 @@ In Emacs 24.3, the variable 'dbus-event-error-hooks' was renamed to
3696The old names, which were kept as obsolete aliases of the new names, 3161The old names, which were kept as obsolete aliases of the new names,
3697have now been removed. 3162have now been removed.
3698 3163
3699---
3700** 'find-function-source-path' renamed and re-documented. 3164** 'find-function-source-path' renamed and re-documented.
3701The 'find-function' command (and various related commands) were 3165The 'find-function' command (and various related commands) were
3702documented to respect 'find-function-source-path', and to search for 3166documented to respect 'find-function-source-path', and to search for
@@ -3709,7 +3173,6 @@ still being used by 'find-library' and related commands, so the
3709user option has been renamed to 'find-library-source-path', and 3173user option has been renamed to 'find-library-source-path', and
3710'find-function-source-path' is now an obsolete variable alias. 3174'find-function-source-path' is now an obsolete variable alias.
3711 3175
3712---
3713** The macro 'vc-call' no longer evaluates its second argument twice. 3176** The macro 'vc-call' no longer evaluates its second argument twice.
3714 3177
3715** Xref migrated from EIEIO to 'cl-defstruct' for its core objects. 3178** Xref migrated from EIEIO to 'cl-defstruct' for its core objects.
@@ -3729,7 +3192,6 @@ use with "match items" without adding EIEIO as a dependency.
3729 3192
3730* Lisp Changes in Emacs 28.1 3193* Lisp Changes in Emacs 28.1
3731 3194
3732+++
3733** The 'interactive' syntax has been extended to allow listing applicable modes. 3195** The 'interactive' syntax has been extended to allow listing applicable modes.
3734Forms like '(interactive "p" dired-mode)' can be used to annotate the 3196Forms like '(interactive "p" dired-mode)' can be used to annotate the
3735commands as being applicable for modes derived from 'dired-mode', 3197commands as being applicable for modes derived from 'dired-mode',
@@ -3740,7 +3202,6 @@ Also note that by default these annotations have no effect, unless the
3740new user option 'read-extended-command-predicate' option is customized 3202new user option 'read-extended-command-predicate' option is customized
3741to call 'command-completion-default-include-p' or a similar function. 3203to call 'command-completion-default-include-p' or a similar function.
3742 3204
3743+++
3744** New 'declare' forms to control completion of commands in 'M-x'. 3205** New 'declare' forms to control completion of commands in 'M-x'.
3745'(declare (completion PREDICATE))' can be used as a general predicate 3206'(declare (completion PREDICATE))' can be used as a general predicate
3746to say whether the command should be considered a completion candidate 3207to say whether the command should be considered a completion candidate
@@ -3759,74 +3220,61 @@ default value of 'read-extended-command-predicate' is nil, which means
3759no commands that match what you have typed are excluded from being 3220no commands that match what you have typed are excluded from being
3760completion candidates. 3221completion candidates.
3761 3222
3762+++
3763** 'define-minor-mode' now takes an ':interactive' argument. 3223** 'define-minor-mode' now takes an ':interactive' argument.
3764This can be used for specifying which modes this minor mode is meant 3224This can be used for specifying which modes this minor mode is meant
3765for, or to make the new minor mode non-interactive. The default value 3225for, or to make the new minor mode non-interactive. The default value
3766is t. 3226is t.
3767 3227
3768+++
3769** 'define-derived-mode' now takes an ':interactive' argument. 3228** 'define-derived-mode' now takes an ':interactive' argument.
3770This can be used to control whether the defined mode is a command 3229This can be used to control whether the defined mode is a command
3771or not, and is useful when defining commands that aren't meant to be 3230or not, and is useful when defining commands that aren't meant to be
3772used by users directly. 3231used by users directly.
3773 3232
3774+++
3775** 'define-globalized-minor-mode' now takes a ':predicate' parameter. 3233** 'define-globalized-minor-mode' now takes a ':predicate' parameter.
3776This can be used to control which major modes the minor mode should be 3234This can be used to control which major modes the minor mode should be
3777used in. 3235used in.
3778 3236
3779+++
3780** 'condition-case' now allows for a success handler. 3237** 'condition-case' now allows for a success handler.
3781It is written as '(:success BODY...)' where BODY is executed 3238It is written as '(:success BODY...)' where BODY is executed
3782whenever the protected form terminates without error, with the 3239whenever the protected form terminates without error, with the
3783specified variable bound to the value of the protected form. 3240specified variable bound to the value of the protected form.
3784 3241
3785+++
3786** New function 'benchmark-call' to measure the execution time of a function. 3242** New function 'benchmark-call' to measure the execution time of a function.
3787Additionally, the number of repetitions can be expressed as a minimal duration 3243Additionally, the number of repetitions can be expressed as a minimal duration
3788in seconds. 3244in seconds.
3789 3245
3790+++
3791** The value thrown to the 'exit' label can now be a function. 3246** The value thrown to the 'exit' label can now be a function.
3792This is in addition to values t or nil. If the value is a function, 3247This is in addition to values t or nil. If the value is a function,
3793the command loop will call it with zero arguments before returning. 3248the command loop will call it with zero arguments before returning.
3794 3249
3795+++
3796** The behavior of 'format-spec' is now closer to that of 'format'. 3250** The behavior of 'format-spec' is now closer to that of 'format'.
3797In order for the two functions to behave more consistently, 3251In order for the two functions to behave more consistently,
3798'format-spec' now pads and truncates based on string width rather than 3252'format-spec' now pads and truncates based on string width rather than
3799length, and also supports format specifications that include a 3253length, and also supports format specifications that include a
3800truncating precision field, such as "%.2a". 3254truncating precision field, such as "%.2a".
3801 3255
3802---
3803** 'defvar' detects the error of defining a variable currently lexically bound. 3256** 'defvar' detects the error of defining a variable currently lexically bound.
3804Such mixes are always signs that the outer lexical binding was an 3257Such mixes are always signs that the outer lexical binding was an
3805error and should have used dynamic binding instead. 3258error and should have used dynamic binding instead.
3806 3259
3807---
3808** New variable 'inhibit-mouse-event-check'. 3260** New variable 'inhibit-mouse-event-check'.
3809If bound to non-nil, a command with '(interactive "e")' doesn't signal 3261If bound to non-nil, a command with '(interactive "e")' doesn't signal
3810an error when invoked by input event that is not a mouse click (e.g., 3262an error when invoked by input event that is not a mouse click (e.g.,
3811a key sequence). 3263a key sequence).
3812 3264
3813---
3814** New variable 'redisplay-skip-initial-frame' to enable batch redisplay tests. 3265** New variable 'redisplay-skip-initial-frame' to enable batch redisplay tests.
3815Setting it to nil forces the redisplay to do its job even in the 3266Setting it to nil forces the redisplay to do its job even in the
3816initial frame used in batch mode. 3267initial frame used in batch mode.
3817 3268
3818+++
3819** Doc strings can now link to customization groups. 3269** Doc strings can now link to customization groups.
3820Text like "customization group `whitespace'" will be made into a 3270Text like "customization group `whitespace'" will be made into a
3821button. When clicked, it will open a Custom buffer displaying that 3271button. When clicked, it will open a Custom buffer displaying that
3822customization group. 3272customization group.
3823 3273
3824+++
3825** Doc strings can now link to man pages. 3274** Doc strings can now link to man pages.
3826Text like "man page `chmod(1)'" will be made into a button. When 3275Text like "man page `chmod(1)'" will be made into a button. When
3827clicked, it will open a Man mode buffer displaying that man page. 3276clicked, it will open a Man mode buffer displaying that man page.
3828 3277
3829+++
3830** Buffers can now be created with certain hooks disabled. 3278** Buffers can now be created with certain hooks disabled.
3831The functions 'get-buffer-create' and 'generate-new-buffer' accept a 3279The functions 'get-buffer-create' and 'generate-new-buffer' accept a
3832new optional argument INHIBIT-BUFFER-HOOKS. If non-nil, the new 3280new optional argument INHIBIT-BUFFER-HOOKS. If non-nil, the new
@@ -3835,78 +3283,63 @@ buffer does not run the hooks 'kill-buffer-hook',
3835avoids slowing down internal or temporary buffers that are never 3283avoids slowing down internal or temporary buffers that are never
3836presented to users or passed on to other applications. 3284presented to users or passed on to other applications.
3837 3285
3838+++
3839** New command 'make-directory-autoloads'. 3286** New command 'make-directory-autoloads'.
3840This does the same as the old command 'update-directory-autoloads', 3287This does the same as the old command 'update-directory-autoloads',
3841but has different semantics: Instead of passing in the output file via 3288but has different semantics: Instead of passing in the output file via
3842the dynamically bound 'generated-autoload-file' variable, the output 3289the dynamically bound 'generated-autoload-file' variable, the output
3843file is now an explicit parameter. 3290file is now an explicit parameter.
3844 3291
3845---
3846** Dragging a file into Emacs pushes the file name onto 'file-name-history'. 3292** Dragging a file into Emacs pushes the file name onto 'file-name-history'.
3847 3293
3848---
3849** The 'easymenu' library is now preloaded. 3294** The 'easymenu' library is now preloaded.
3850 3295
3851---
3852** The 'iso-transl' library is now preloaded. 3296** The 'iso-transl' library is now preloaded.
3853This means that keystrokes like 'Alt-[' are defined by default, 3297This means that keystrokes like 'Alt-[' are defined by default,
3854instead of only becoming available after doing (for instance) 3298instead of only becoming available after doing (for instance)
3855'C-x 8 <letter>'. 3299'C-x 8 <letter>'.
3856 3300
3857---
3858** ':safe' settings in 'defcustom' are now propagated to the loaddefs files. 3301** ':safe' settings in 'defcustom' are now propagated to the loaddefs files.
3859 3302
3860+++
3861** New ':type' for 'defcustom' for nonnegative integers. 3303** New ':type' for 'defcustom' for nonnegative integers.
3862The new 'natnum' type can be used for options that should be 3304The new 'natnum' type can be used for options that should be
3863nonnegative integers. 3305nonnegative integers.
3864 3306
3865+++
3866** ERT can now output more verbose test failure reports. 3307** ERT can now output more verbose test failure reports.
3867If the 'EMACS_TEST_VERBOSE' environment variable is set, failure 3308If the 'EMACS_TEST_VERBOSE' environment variable is set, failure
3868summaries will include the failing condition. 3309summaries will include the failing condition.
3869 3310
3870** Byte compiler changes 3311** Byte compiler changes
3871 3312
3872+++
3873*** New byte-compiler check for missing dynamic variable declarations. 3313*** New byte-compiler check for missing dynamic variable declarations.
3874It is meant as an (experimental) aid for converting Emacs Lisp code 3314It is meant as an (experimental) aid for converting Emacs Lisp code
3875to lexical binding, where dynamic (special) variables bound in one 3315to lexical binding, where dynamic (special) variables bound in one
3876file can affect code in another. For details, see the Info node 3316file can affect code in another. For details, see the Info node
3877"(elisp) Converting to Lexical Binding". 3317"(elisp) Converting to Lexical Binding".
3878 3318
3879+++
3880*** 'byte-recompile-directory' can now compile symlinked "*.el" files. 3319*** 'byte-recompile-directory' can now compile symlinked "*.el" files.
3881This is achieved by giving a non-nil FOLLOW-SYMLINKS parameter. 3320This is achieved by giving a non-nil FOLLOW-SYMLINKS parameter.
3882 3321
3883---
3884*** The byte-compiler now warns about too wide documentation strings. 3322*** The byte-compiler now warns about too wide documentation strings.
3885By default, it will warn if a documentation string is wider than the 3323By default, it will warn if a documentation string is wider than the
3886largest of 'byte-compile-docstring-max-column' or 'fill-column' 3324largest of 'byte-compile-docstring-max-column' or 'fill-column'
3887characters. 3325characters.
3888 3326
3889+++
3890*** 'byte-compile-file' optional argument LOAD is now obsolete. 3327*** 'byte-compile-file' optional argument LOAD is now obsolete.
3891To load the file after byte-compiling, add a call to 'load' from Lisp 3328To load the file after byte-compiling, add a call to 'load' from Lisp
3892or use 'M-x emacs-lisp-byte-compile-and-load' interactively. 3329or use 'M-x emacs-lisp-byte-compile-and-load' interactively.
3893 3330
3894** Macroexp 3331** Macroexp
3895 3332
3896---
3897*** New function 'macroexp-file-name' to know the name of the current file. 3333*** New function 'macroexp-file-name' to know the name of the current file.
3898 3334
3899---
3900*** New function 'macroexp-compiling-p' to know if we're compiling. 3335*** New function 'macroexp-compiling-p' to know if we're compiling.
3901 3336
3902---
3903*** New function 'macroexp-warn-and-return' to help emit warnings. 3337*** New function 'macroexp-warn-and-return' to help emit warnings.
3904This used to be named 'macroexp--warn-and-return' and has proved useful 3338This used to be named 'macroexp--warn-and-return' and has proved useful
3905and well-behaved enough to lose the "internal" marker. 3339and well-behaved enough to lose the "internal" marker.
3906 3340
3907** map.el 3341** map.el
3908 3342
3909---
3910*** Alist keys are now consistently compared with 'equal' by default. 3343*** Alist keys are now consistently compared with 'equal' by default.
3911Until now, 'map-elt' and 'map-delete' compared alist keys with 'eq' by 3344Until now, 'map-elt' and 'map-delete' compared alist keys with 'eq' by
3912default. They now use 'equal' instead, for consistency with 3345default. They now use 'equal' instead, for consistency with
@@ -3916,14 +3349,11 @@ default. They now use 'equal' instead, for consistency with
3916A pattern like '(map :sym)' binds the map's value for ':sym' to 'sym', 3349A pattern like '(map :sym)' binds the map's value for ':sym' to 'sym',
3917equivalent to '(map (:sym sym))'. 3350equivalent to '(map (:sym sym))'.
3918 3351
3919---
3920*** The function 'map-copy' now uses 'copy-alist' on alists. 3352*** The function 'map-copy' now uses 'copy-alist' on alists.
3921This is a slightly deeper copy than the previous 'copy-sequence'. 3353This is a slightly deeper copy than the previous 'copy-sequence'.
3922 3354
3923---
3924*** The function 'map-contains-key' now supports plists. 3355*** The function 'map-contains-key' now supports plists.
3925 3356
3926---
3927*** More consistent duplicate key handling in 'map-merge-with'. 3357*** More consistent duplicate key handling in 'map-merge-with'.
3928Until now, 'map-merge-with' promised to call its function argument 3358Until now, 'map-merge-with' promised to call its function argument
3929whenever multiple maps contained 'eql' keys. However, this did not 3359whenever multiple maps contained 'eql' keys. However, this did not
@@ -3933,26 +3363,21 @@ are merged, for greater consistency with 'map-merge' and 'map-elt'.
3933 3363
3934** Pcase 3364** Pcase
3935 3365
3936+++
3937*** The 'or' pattern now binds the union of the vars of its sub-patterns. 3366*** The 'or' pattern now binds the union of the vars of its sub-patterns.
3938If a variable is not bound by the subpattern that matched, it gets bound 3367If a variable is not bound by the subpattern that matched, it gets bound
3939to nil. This was already sometimes the case, but it is now guaranteed. 3368to nil. This was already sometimes the case, but it is now guaranteed.
3940 3369
3941+++
3942*** The 'pred' pattern can now take the form '(pred (not FUN))'. 3370*** The 'pred' pattern can now take the form '(pred (not FUN))'.
3943This is like '(pred (lambda (x) (not (FUN x))))' but results 3371This is like '(pred (lambda (x) (not (FUN x))))' but results
3944in better code. 3372in better code.
3945 3373
3946---
3947*** New function 'pcase-compile-patterns' to write other macros. 3374*** New function 'pcase-compile-patterns' to write other macros.
3948 3375
3949+++
3950*** Added 'cl-type' pattern. 3376*** Added 'cl-type' pattern.
3951The new 'cl-type' pattern compares types using 'cl-typep', which allows 3377The new 'cl-type' pattern compares types using 'cl-typep', which allows
3952comparing simple types like '(cl-type integer)', as well as forms like 3378comparing simple types like '(cl-type integer)', as well as forms like
3953'(cl-type (integer 0 10))'. 3379'(cl-type (integer 0 10))'.
3954 3380
3955+++
3956*** New macro 'pcase-setq'. 3381*** New macro 'pcase-setq'.
3957This macro is the 'setq' equivalent of 'pcase-let', which allows for 3382This macro is the 'setq' equivalent of 'pcase-let', which allows for
3958destructuring patterns in a 'setq' form. 3383destructuring patterns in a 'setq' form.
@@ -3961,49 +3386,40 @@ destructuring patterns in a 'setq' form.
3961 3386
3962*** Edebug specification lists can use some new keywords: 3387*** Edebug specification lists can use some new keywords:
3963 3388
3964+++
3965**** '&interpose SPEC FUN ARGS...' lets FUN control parsing after SPEC. 3389**** '&interpose SPEC FUN ARGS...' lets FUN control parsing after SPEC.
3966More specifically, FUN is called with 'HEAD PF ARGS...' where 3390More specifically, FUN is called with 'HEAD PF ARGS...' where
3967PF is a parsing function that expects a single argument (the specs to 3391PF is a parsing function that expects a single argument (the specs to
3968use) and HEAD is the code that matched SPEC. 3392use) and HEAD is the code that matched SPEC.
3969 3393
3970+++
3971**** '&error MSG' unconditionally aborts the current edebug instrumentation. 3394**** '&error MSG' unconditionally aborts the current edebug instrumentation.
3972 3395
3973+++
3974**** '&name SPEC FUN' extracts the current name from the code matching SPEC. 3396**** '&name SPEC FUN' extracts the current name from the code matching SPEC.
3975 3397
3976** Dynamic modules changes 3398** Dynamic modules changes
3977 3399
3978+++
3979*** Type aliases for module functions and finalizers. 3400*** Type aliases for module functions and finalizers.
3980The module header "emacs-module.h" now contains type aliases 3401The module header "emacs-module.h" now contains type aliases
3981'emacs_function' and 'emacs_finalizer' for module functions and 3402'emacs_function' and 'emacs_finalizer' for module functions and
3982finalizers, respectively. 3403finalizers, respectively.
3983 3404
3984+++
3985*** Module functions can now be made interactive. 3405*** Module functions can now be made interactive.
3986Use 'make_interactive' to give a module function an interactive 3406Use 'make_interactive' to give a module function an interactive
3987specification. 3407specification.
3988 3408
3989+++
3990*** Module functions can now install an optional finalizer. 3409*** Module functions can now install an optional finalizer.
3991The finalizer is called when the function object is garbage-collected. 3410The finalizer is called when the function object is garbage-collected.
3992Use 'set_function_finalizer' to set the finalizer and 3411Use 'set_function_finalizer' to set the finalizer and
3993'get_function_finalizer' to retrieve it. 3412'get_function_finalizer' to retrieve it.
3994 3413
3995+++
3996*** Modules can now open a channel to an existing pipe process. 3414*** Modules can now open a channel to an existing pipe process.
3997Modules can use the new module function 'open_channel' to do that. 3415Modules can use the new module function 'open_channel' to do that.
3998On capable systems, modules can use this functionality to 3416On capable systems, modules can use this functionality to
3999asynchronously send data back to Emacs. 3417asynchronously send data back to Emacs.
4000 3418
4001+++
4002*** A new module API 'make_unibyte_string'. 3419*** A new module API 'make_unibyte_string'.
4003It can be used to create Lisp strings with arbitrary byte sequences 3420It can be used to create Lisp strings with arbitrary byte sequences
4004(a.k.a. "raw bytes"). 3421(a.k.a. "raw bytes").
4005 3422
4006+++
4007** Shorthands for Lisp symbols. 3423** Shorthands for Lisp symbols.
4008Shorthands are a general purpose namespacing system to make Emacs 3424Shorthands are a general purpose namespacing system to make Emacs
4009Lisp's symbol-naming etiquette easier to use. A shorthand is any 3425Lisp's symbol-naming etiquette easier to use. A shorthand is any
@@ -4014,230 +3430,182 @@ worth of symbols with proper and longer prefixes, without actually
4014touching the Lisp source. For details, see the Info node "(elisp) 3430touching the Lisp source. For details, see the Info node "(elisp)
4015Shorthands". 3431Shorthands".
4016 3432
4017+++
4018** New function 'string-search'. 3433** New function 'string-search'.
4019This function takes two string parameters and returns the position of 3434This function takes two string parameters and returns the position of
4020the first instance of the former string in the latter. 3435the first instance of the former string in the latter.
4021 3436
4022+++
4023** New function 'string-replace'. 3437** New function 'string-replace'.
4024This function works along the line of 'replace-regexp-in-string', but 3438This function works along the line of 'replace-regexp-in-string', but
4025it matches on fixed strings instead of regexps, and does not change 3439it matches on fixed strings instead of regexps, and does not change
4026the global match state. 3440the global match state.
4027 3441
4028+++
4029** New function 'ensure-list'. 3442** New function 'ensure-list'.
4030This function makes a list of its object if it's not a list already. 3443This function makes a list of its object if it's not a list already.
4031If it's already a list, the list is returned as is. 3444If it's already a list, the list is returned as is.
4032 3445
4033+++
4034** New function 'split-string-shell-command'. 3446** New function 'split-string-shell-command'.
4035This splits a shell command string into separate components, 3447This splits a shell command string into separate components,
4036respecting quoting with single ('like this') and double ("like this") 3448respecting quoting with single ('like this') and double ("like this")
4037quotes, as well as backslash quoting (like\ this). 3449quotes, as well as backslash quoting (like\ this).
4038 3450
4039+++
4040** New function 'string-clean-whitespace'. 3451** New function 'string-clean-whitespace'.
4041This removes whitespace from a string. 3452This removes whitespace from a string.
4042 3453
4043+++
4044** New function 'string-fill'. 3454** New function 'string-fill'.
4045Word-wrap a string so that no lines are longer that a specific length. 3455Word-wrap a string so that no lines are longer that a specific length.
4046 3456
4047+++
4048** New function 'string-limit'. 3457** New function 'string-limit'.
4049Return (up to) a specific substring length. 3458Return (up to) a specific substring length.
4050 3459
4051+++
4052** New function 'string-lines'. 3460** New function 'string-lines'.
4053Return a list of strings representing the individual lines in a 3461Return a list of strings representing the individual lines in a
4054string. 3462string.
4055 3463
4056+++
4057** New function 'string-pad'. 3464** New function 'string-pad'.
4058Pad a string to a specific length. 3465Pad a string to a specific length.
4059 3466
4060+++
4061** New function 'string-chop-newline'. 3467** New function 'string-chop-newline'.
4062Remove a trailing newline from a string. 3468Remove a trailing newline from a string.
4063 3469
4064+++
4065** New function 'replace-regexp-in-region'. 3470** New function 'replace-regexp-in-region'.
4066 3471
4067+++
4068** New function 'replace-string-in-region'. 3472** New function 'replace-string-in-region'.
4069 3473
4070+++
4071** New function 'file-name-with-extension'. 3474** New function 'file-name-with-extension'.
4072This function allows a canonical way to set/replace the extension of a 3475This function allows a canonical way to set/replace the extension of a
4073file name. 3476file name.
4074 3477
4075+++
4076** New function 'file-modes-number-to-symbolic' to convert a numeric 3478** New function 'file-modes-number-to-symbolic' to convert a numeric
4077file mode specification into symbolic form. 3479file mode specification into symbolic form.
4078 3480
4079+++
4080** New function 'file-name-concat'. 3481** New function 'file-name-concat'.
4081This appends file name components to a directory name and returns the 3482This appends file name components to a directory name and returns the
4082result. 3483result.
4083 3484
4084+++
4085** New function 'file-backup-file-names'. 3485** New function 'file-backup-file-names'.
4086This function returns the list of file names of all the backup files 3486This function returns the list of file names of all the backup files
4087for the specified file. 3487for the specified file.
4088 3488
4089+++
4090** New function 'directory-empty-p'. 3489** New function 'directory-empty-p'.
4091This predicate tests whether a given file name is an accessible 3490This predicate tests whether a given file name is an accessible
4092directory and whether it contains no other directories or files. 3491directory and whether it contains no other directories or files.
4093 3492
4094+++
4095** New function 'buffer-local-boundp'. 3493** New function 'buffer-local-boundp'.
4096This predicate says whether a symbol is bound in a specific buffer. 3494This predicate says whether a symbol is bound in a specific buffer.
4097 3495
4098+++
4099** New function 'always'. 3496** New function 'always'.
4100This is identical to 'ignore', but returns t instead. 3497This is identical to 'ignore', but returns t instead.
4101 3498
4102+++
4103** New function 'sxhash-equal-including-properties'. 3499** New function 'sxhash-equal-including-properties'.
4104This is identical to 'sxhash-equal' but also accounts for string 3500This is identical to 'sxhash-equal' but also accounts for string
4105properties. 3501properties.
4106 3502
4107---
4108** New function 'buffer-line-statistics'. 3503** New function 'buffer-line-statistics'.
4109This function returns some statistics about the line lengths in a buffer. 3504This function returns some statistics about the line lengths in a buffer.
4110 3505
4111---
4112** New function 'color-values-from-color-spec'. 3506** New function 'color-values-from-color-spec'.
4113This can be used to parse RGB color specs in several formats and 3507This can be used to parse RGB color specs in several formats and
4114convert them to a list '(R G B)' of primary color values. 3508convert them to a list '(R G B)' of primary color values.
4115 3509
4116---
4117** New function 'custom-add-choice'. 3510** New function 'custom-add-choice'.
4118This function can be used by modes to add elements to the 3511This function can be used by modes to add elements to the
4119'choice' customization type of a variable. 3512'choice' customization type of a variable.
4120 3513
4121---
4122** New function 'decoded-time-period'. 3514** New function 'decoded-time-period'.
4123It interprets a decoded time structure as a period and returns the 3515It interprets a decoded time structure as a period and returns the
4124equivalent period in seconds. 3516equivalent period in seconds.
4125 3517
4126+++
4127** New function 'dom-print'. 3518** New function 'dom-print'.
4128 3519
4129+++
4130** New function 'dom-remove-attribute'. 3520** New function 'dom-remove-attribute'.
4131 3521
4132---
4133** New function 'dns-query-asynchronous'. 3522** New function 'dns-query-asynchronous'.
4134It takes the same parameters as 'dns-query', but adds a callback 3523It takes the same parameters as 'dns-query', but adds a callback
4135parameter. 3524parameter.
4136 3525
4137** New function 'garbage-collect-maybe' to trigger GC early. 3526** New function 'garbage-collect-maybe' to trigger GC early.
4138 3527
4139---
4140** New function 'get-locale-names'. 3528** New function 'get-locale-names'.
4141This utility function returns a list of names of locales available on 3529This utility function returns a list of names of locales available on
4142the current system. 3530the current system.
4143 3531
4144+++
4145** New function 'insert-into-buffer'. 3532** New function 'insert-into-buffer'.
4146This inserts the contents of the current buffer into another buffer. 3533This inserts the contents of the current buffer into another buffer.
4147 3534
4148+++
4149** New function 'json-available-p'. 3535** New function 'json-available-p'.
4150This predicate returns non-nil if Emacs is built with libjansson 3536This predicate returns non-nil if Emacs is built with libjansson
4151support, and it is available on the current system. 3537support, and it is available on the current system.
4152 3538
4153---
4154** New function 'mail-header-parse-addresses-lax'. 3539** New function 'mail-header-parse-addresses-lax'.
4155This takes a comma-separated string and returns a list of mail/name 3540This takes a comma-separated string and returns a list of mail/name
4156pairs. 3541pairs.
4157 3542
4158---
4159** New function 'mail-header-parse-address-lax'. 3543** New function 'mail-header-parse-address-lax'.
4160Parse a string as a mail address-like string. 3544Parse a string as a mail address-like string.
4161 3545
4162---
4163** New function 'make-separator-line'. 3546** New function 'make-separator-line'.
4164Make a string appropriate for usage as a visual separator line. 3547Make a string appropriate for usage as a visual separator line.
4165 3548
4166+++
4167** New function 'num-processors'. 3549** New function 'num-processors'.
4168Return the number of processors on the system. 3550Return the number of processors on the system.
4169 3551
4170+++
4171** New function 'object-intervals'. 3552** New function 'object-intervals'.
4172This function returns a copy of the list of intervals (i.e., text 3553This function returns a copy of the list of intervals (i.e., text
4173properties) in the object in question (which must either be a string 3554properties) in the object in question (which must either be a string
4174or a buffer). 3555or a buffer).
4175 3556
4176+++
4177** New function 'process-lines-ignore-status'. 3557** New function 'process-lines-ignore-status'.
4178This is like 'process-lines', but does not signal an error if the 3558This is like 'process-lines', but does not signal an error if the
4179return status is non-zero. 'process-lines-handling-status' has also 3559return status is non-zero. 'process-lines-handling-status' has also
4180been added, and takes a callback to handle the return status. 3560been added, and takes a callback to handle the return status.
4181 3561
4182+++
4183** New function 'require-theme'. 3562** New function 'require-theme'.
4184This function is like 'require', but searches 'custom-theme-load-path' 3563This function is like 'require', but searches 'custom-theme-load-path'
4185instead of 'load-path'. It can be used by Custom themes to load 3564instead of 'load-path'. It can be used by Custom themes to load
4186supporting Lisp files when 'require' is unsuitable. 3565supporting Lisp files when 'require' is unsuitable.
4187 3566
4188+++
4189** New function 'seq-union'. 3567** New function 'seq-union'.
4190This function takes two sequences and returns a list of all elements 3568This function takes two sequences and returns a list of all elements
4191that appear in either of them, with no two elements that compare equal 3569that appear in either of them, with no two elements that compare equal
4192appearing in the result. 3570appearing in the result.
4193 3571
4194+++
4195** New function 'syntax-class-to-char'. 3572** New function 'syntax-class-to-char'.
4196This does almost the opposite of 'string-to-syntax' -- it returns the 3573This does almost the opposite of 'string-to-syntax' -- it returns the
4197syntax descriptor (a character) given a raw syntax descriptor (an 3574syntax descriptor (a character) given a raw syntax descriptor (an
4198integer). 3575integer).
4199 3576
4200+++
4201** New functions 'null-device' and 'path-separator'. 3577** New functions 'null-device' and 'path-separator'.
4202These functions return the connection local value of the respective 3578These functions return the connection local value of the respective
4203variables. This can be used for remote hosts. 3579variables. This can be used for remote hosts.
4204 3580
4205+++
4206** New predicate functions 'length<', 'length>' and 'length='. 3581** New predicate functions 'length<', 'length>' and 'length='.
4207Using these functions may be more efficient than using 'length' (if 3582Using these functions may be more efficient than using 'length' (if
4208the length of a (long) list is being computed just to compare this 3583the length of a (long) list is being computed just to compare this
4209length to a number). 3584length to a number).
4210 3585
4211+++
4212** New macro 'dlet' to dynamically bind variables. 3586** New macro 'dlet' to dynamically bind variables.
4213 3587
4214+++
4215** New macro 'with-existing-directory'. 3588** New macro 'with-existing-directory'.
4216This macro binds 'default-directory' to some other existing directory 3589This macro binds 'default-directory' to some other existing directory
4217if 'default-directory' doesn't exist, and then executes the body forms. 3590if 'default-directory' doesn't exist, and then executes the body forms.
4218 3591
4219+++
4220** New variable 'current-minibuffer-command'. 3592** New variable 'current-minibuffer-command'.
4221This is like 'this-command', but it is bound recursively when entering 3593This is like 'this-command', but it is bound recursively when entering
4222the minibuffer. 3594the minibuffer.
4223 3595
4224+++
4225** New variable 'inhibit-interaction' to make user prompts signal an error. 3596** New variable 'inhibit-interaction' to make user prompts signal an error.
4226If this is bound to something non-nil, functions like 3597If this is bound to something non-nil, functions like
4227'read-from-minibuffer', 'read-char' (and related) will signal an 3598'read-from-minibuffer', 'read-char' (and related) will signal an
4228'inhibited-interaction' error. 3599'inhibited-interaction' error.
4229 3600
4230---
4231** New variable 'indent-line-ignored-functions'. 3601** New variable 'indent-line-ignored-functions'.
4232This allows modes to cycle through a set of indentation functions 3602This allows modes to cycle through a set of indentation functions
4233appropriate for those modes. 3603appropriate for those modes.
4234 3604
4235+++
4236** New variable 'print-integers-as-characters' modifies integer printing. 3605** New variable 'print-integers-as-characters' modifies integer printing.
4237If this variable is non-nil, character syntax is used for printing 3606If this variable is non-nil, character syntax is used for printing
4238numbers when this makes sense, such as '?A' for 65. 3607numbers when this makes sense, such as '?A' for 65.
4239 3608
4240+++
4241** New variable 'tty-menu-calls-mouse-position-function'. 3609** New variable 'tty-menu-calls-mouse-position-function'.
4242This controls whether 'mouse-position-function' is called by functions 3610This controls whether 'mouse-position-function' is called by functions
4243that retrieve the mouse position when that happens during TTY menu 3611that retrieve the mouse position when that happens during TTY menu
@@ -4245,46 +3613,38 @@ handling. Lisp programs that set 'mouse-position-function' should
4245also set this variable non-nil if they are compatible with the tty 3613also set this variable non-nil if they are compatible with the tty
4246menu handling. 3614menu handling.
4247 3615
4248+++
4249** New variables that hold default buffer names for shell output. 3616** New variables that hold default buffer names for shell output.
4250The new constants 'shell-command-buffer-name' and 3617The new constants 'shell-command-buffer-name' and
4251'shell-command-buffer-name-async' store the default buffer names 3618'shell-command-buffer-name-async' store the default buffer names
4252for the output of, respectively, synchronous and async shell 3619for the output of, respectively, synchronous and async shell
4253commands. 3620commands.
4254 3621
4255---
4256** New variables 'read-char-choice-use-read-key' and 'y-or-n-p-use-read-key'. 3622** New variables 'read-char-choice-use-read-key' and 'y-or-n-p-use-read-key'.
4257When non-nil, then functions 'read-char-choice' and 'y-or-n-p' 3623When non-nil, then functions 'read-char-choice' and 'y-or-n-p'
4258(respectively) use the function 'read-key' to read a character instead 3624(respectively) use the function 'read-key' to read a character instead
4259of using the minibuffer. 3625of using the minibuffer.
4260 3626
4261+++
4262** New variable 'global-minor-modes'. 3627** New variable 'global-minor-modes'.
4263This variable holds a list of currently enabled global minor modes (as 3628This variable holds a list of currently enabled global minor modes (as
4264a list of symbols). 3629a list of symbols).
4265 3630
4266+++
4267** New buffer-local variable 'local-minor-modes'. 3631** New buffer-local variable 'local-minor-modes'.
4268This permanently buffer-local variable holds a list of currently 3632This permanently buffer-local variable holds a list of currently
4269enabled non-global minor modes in the current buffer (as a list of 3633enabled non-global minor modes in the current buffer (as a list of
4270symbols). 3634symbols).
4271 3635
4272+++
4273** New completion function 'affixation-function' to add prefix/suffix. 3636** New completion function 'affixation-function' to add prefix/suffix.
4274It accepts a list of completions and should return a list where 3637It accepts a list of completions and should return a list where
4275each element is a list with three elements: a completion, 3638each element is a list with three elements: a completion,
4276a prefix string, and a suffix string. 3639a prefix string, and a suffix string.
4277 3640
4278+++
4279** New completion function 'group-function' for grouping candidates. 3641** New completion function 'group-function' for grouping candidates.
4280It takes two arguments: a completion candidate and a 'transform' flag. 3642It takes two arguments: a completion candidate and a 'transform' flag.
4281 3643
4282+++
4283** New error symbol 'minibuffer-quit'. 3644** New error symbol 'minibuffer-quit'.
4284Signaling it has almost the same effect as 'quit' except that it 3645Signaling it has almost the same effect as 'quit' except that it
4285doesn't cause keyboard macro termination. 3646doesn't cause keyboard macro termination.
4286 3647
4287+++
4288** New error symbol 'remote-file-error', a subcategory of 'file-error'. 3648** New error symbol 'remote-file-error', a subcategory of 'file-error'.
4289It is signaled if a remote file operation fails due to internal 3649It is signaled if a remote file operation fails due to internal
4290reasons, and could block Emacs. It does not replace 'file-error' 3650reasons, and could block Emacs. It does not replace 'file-error'
@@ -4298,11 +3658,9 @@ Until it is solved you could ignore such errors by performing
4298 (setq debug-ignored-errors 3658 (setq debug-ignored-errors
4299 (cons 'remote-file-error debug-ignored-errors)) 3659 (cons 'remote-file-error debug-ignored-errors))
4300 3660
4301+++
4302** New macro 'named-let'. 3661** New macro 'named-let'.
4303It provides Scheme's "named let" looping construct. 3662It provides Scheme's "named let" looping construct.
4304 3663
4305---
4306** Emacs now attempts to test for high-rate subprocess output more fairly. 3664** Emacs now attempts to test for high-rate subprocess output more fairly.
4307When several subprocesses produce output simultaneously at high rate, 3665When several subprocesses produce output simultaneously at high rate,
4308Emacs will now by default attempt to service them all in a round-robin 3666Emacs will now by default attempt to service them all in a round-robin
@@ -4311,81 +3669,66 @@ non-nil value to get back the old behavior, whereby after reading
4311from a subprocess, Emacs would check for output of other subprocesses 3669from a subprocess, Emacs would check for output of other subprocesses
4312in a way that is likely to read from the same process again. 3670in a way that is likely to read from the same process again.
4313 3671
4314+++
4315** 'set-process-buffer' now updates the process mark. 3672** 'set-process-buffer' now updates the process mark.
4316The mark will be set to point to the end of the new buffer. 3673The mark will be set to point to the end of the new buffer.
4317 3674
4318+++
4319** 'unlock-buffer' displays warnings instead of signaling. 3675** 'unlock-buffer' displays warnings instead of signaling.
4320Instead of signaling 'file-error' conditions for file system level 3676Instead of signaling 'file-error' conditions for file system level
4321errors, the function now calls 'display-warning' and continues as if 3677errors, the function now calls 'display-warning' and continues as if
4322the error did not occur. 3678the error did not occur.
4323 3679
4324+++
4325** 'read-char-from-minibuffer' and 'y-or-n-p' support 'help-form'. 3680** 'read-char-from-minibuffer' and 'y-or-n-p' support 'help-form'.
4326If you bind 'help-form' to a non-nil value while calling these functions, 3681If you bind 'help-form' to a non-nil value while calling these functions,
4327then pressing 'C-h' ('help-char') causes the function to evaluate 'help-form' 3682then pressing 'C-h' ('help-char') causes the function to evaluate 'help-form'
4328and display the result. 3683and display the result.
4329 3684
4330+++
4331** 'read-number' now has its own history variable. 3685** 'read-number' now has its own history variable.
4332Additionally, the function now accepts an optional HIST argument which 3686Additionally, the function now accepts an optional HIST argument which
4333can be used to specify a custom history variable. 3687can be used to specify a custom history variable.
4334 3688
4335+++
4336** 'set-window-configuration' now takes two optional parameters, 3689** 'set-window-configuration' now takes two optional parameters,
4337DONT-SET-FRAME and DONT-SET-MINIWINDOW. The first of these, when 3690DONT-SET-FRAME and DONT-SET-MINIWINDOW. The first of these, when
4338non-nil, instructs the function not to select the frame recorded in 3691non-nil, instructs the function not to select the frame recorded in
4339the configuration. The second prevents the current minibuffer being 3692the configuration. The second prevents the current minibuffer being
4340replaced by the one stored in the configuration. 3693replaced by the one stored in the configuration.
4341 3694
4342---
4343** 'count-windows' now takes an optional parameter ALL-FRAMES. 3695** 'count-windows' now takes an optional parameter ALL-FRAMES.
4344The semantics are as with 'walk-windows'. 3696The semantics are as with 'walk-windows'.
4345 3697
4346+++
4347** 'truncate-string-ellipsis' now uses '…' by default. 3698** 'truncate-string-ellipsis' now uses '…' by default.
4348Modes that use 'truncate-string-to-width' with non-nil, non-string 3699Modes that use 'truncate-string-to-width' with non-nil, non-string
4349argument ELLIPSIS, will now indicate truncation using '…' when 3700argument ELLIPSIS, will now indicate truncation using '…' when
4350the selected frame can display it, and using "..." otherwise. 3701the selected frame can display it, and using "..." otherwise.
4351 3702
4352+++
4353** 'string-width' now accepts two optional arguments FROM and TO. 3703** 'string-width' now accepts two optional arguments FROM and TO.
4354This allows calculating the width of a substring without consing a 3704This allows calculating the width of a substring without consing a
4355new string. 3705new string.
4356 3706
4357+++
4358** 'directory-files' now takes an additional COUNT parameter. 3707** 'directory-files' now takes an additional COUNT parameter.
4359The parameter makes 'directory-files' return COUNT first file names 3708The parameter makes 'directory-files' return COUNT first file names
4360from a directory. If MATCH is also given, the function will return 3709from a directory. If MATCH is also given, the function will return
4361first COUNT file names that match the expression. The same COUNT 3710first COUNT file names that match the expression. The same COUNT
4362parameter has been added to 'directory-files-and-attributes'. 3711parameter has been added to 'directory-files-and-attributes'.
4363 3712
4364+++
4365** 'count-lines' can now ignore invisible lines. 3713** 'count-lines' can now ignore invisible lines.
4366This is controlled by the optional parameter IGNORE-INVISIBLE-LINES. 3714This is controlled by the optional parameter IGNORE-INVISIBLE-LINES.
4367 3715
4368---
4369** 'count-words' now crosses field boundaries. 3716** 'count-words' now crosses field boundaries.
4370Originally, 'count-words' would stop counting at the first field 3717Originally, 'count-words' would stop counting at the first field
4371boundary it encountered; now it keeps counting all the way to the 3718boundary it encountered; now it keeps counting all the way to the
4372region's (or buffer's) end. 3719region's (or buffer's) end.
4373 3720
4374+++
4375** File-related APIs can optionally follow symlinks. 3721** File-related APIs can optionally follow symlinks.
4376The functions 'file-modes', 'set-file-modes', and 'set-file-times' now 3722The functions 'file-modes', 'set-file-modes', and 'set-file-times' now
4377have an optional argument specifying whether to follow symbolic links. 3723have an optional argument specifying whether to follow symbolic links.
4378 3724
4379+++
4380** 'format-seconds' can now be used for sub-second times. 3725** 'format-seconds' can now be used for sub-second times.
4381The new optional "," parameter has been added, and 3726The new optional "," parameter has been added, and
4382'(format-seconds "%mm %,1ss" 66.4)' will now result in "1m 6.4s". 3727'(format-seconds "%mm %,1ss" 66.4)' will now result in "1m 6.4s".
4383 3728
4384+++
4385** 'parse-time-string' can now parse ISO 8601 format strings. 3729** 'parse-time-string' can now parse ISO 8601 format strings.
4386These have a format like "2020-01-15T16:12:21-08:00". 3730These have a format like "2020-01-15T16:12:21-08:00".
4387 3731
4388---
4389** 'lookup-key' is more allowing when searching for extended menu items. 3732** 'lookup-key' is more allowing when searching for extended menu items.
4390When looking for a menu item '[menu-bar Foo-Bar]', first try to find 3733When looking for a menu item '[menu-bar Foo-Bar]', first try to find
4391an exact match, then look for the lowercased '[menu-bar foo-bar]'. 3734an exact match, then look for the lowercased '[menu-bar foo-bar]'.
@@ -4393,7 +3736,6 @@ It will only try to downcase ASCII characters in the range "A-Z".
4393This improves backwards-compatibility when converting menus to use 3736This improves backwards-compatibility when converting menus to use
4394'easy-menu-define'. 3737'easy-menu-define'.
4395 3738
4396---
4397** 'make-network-process', 'make-serial-process' ':coding' behavior change. 3739** 'make-network-process', 'make-serial-process' ':coding' behavior change.
4398Previously, passing ':coding nil' to either of these functions would 3740Previously, passing ':coding nil' to either of these functions would
4399override any non-nil binding for 'coding-system-for-read' and 3741override any non-nil binding for 'coding-system-for-read' and
@@ -4403,92 +3745,73 @@ Emacs depended on the previous behavior; if you really want the
4403process' coding-system to be nil, use 'set-process-coding-system' 3745process' coding-system to be nil, use 'set-process-coding-system'
4404after the process has been created, or pass in ':coding '(nil nil)'. 3746after the process has been created, or pass in ':coding '(nil nil)'.
4405 3747
4406+++
4407** 'open-network-stream' now accepts a ':coding' argument. 3748** 'open-network-stream' now accepts a ':coding' argument.
4408This allows specifying the coding systems used by a network process 3749This allows specifying the coding systems used by a network process
4409for encoding and decoding without having to bind 3750for encoding and decoding without having to bind
4410'coding-system-for-{read,write}' or call 'set-process-coding-system'. 3751'coding-system-for-{read,write}' or call 'set-process-coding-system'.
4411 3752
4412+++
4413** 'open-network-stream' can now take a ':capability-command' that's a function. 3753** 'open-network-stream' can now take a ':capability-command' that's a function.
4414The function is called with the greeting from the server as its only 3754The function is called with the greeting from the server as its only
4415parameter, and allows sending different TLS capability commands to the 3755parameter, and allows sending different TLS capability commands to the
4416server based on that greeting. 3756server based on that greeting.
4417 3757
4418+++
4419** 'open-gnutls-stream' now also accepts a ':coding' argument. 3758** 'open-gnutls-stream' now also accepts a ':coding' argument.
4420 3759
4421---
4422** 'process-attributes' now works under OpenBSD, too. 3760** 'process-attributes' now works under OpenBSD, too.
4423 3761
4424+++
4425** 'format-spec' now takes an optional SPLIT parameter. 3762** 'format-spec' now takes an optional SPLIT parameter.
4426If non-nil, 'format-spec' will split the resulting string into a list 3763If non-nil, 'format-spec' will split the resulting string into a list
4427of strings, based on where the format specs (and expansions) were. 3764of strings, based on where the format specs (and expansions) were.
4428 3765
4429---
4430** 'unload-feature' now also tries to undo additions to buffer-local hooks. 3766** 'unload-feature' now also tries to undo additions to buffer-local hooks.
4431 3767
4432---
4433** 'while-no-input-ignore-events' accepts more special events. 3768** 'while-no-input-ignore-events' accepts more special events.
4434The special events 'dbus-event' and 'file-notify' are now ignored in 3769The special events 'dbus-event' and 'file-notify' are now ignored in
4435'while-no-input' when added to this variable. 3770'while-no-input' when added to this variable.
4436 3771
4437---
4438** 'start-process-shell-command' and 'start-file-process-shell-command' 3772** 'start-process-shell-command' and 'start-file-process-shell-command'
4439do not support the old calling conventions any longer. 3773do not support the old calling conventions any longer.
4440 3774
4441+++
4442** 'yes-or-no-p' and 'y-or-n-p' PROMPT parameter no longer needs trailing space. 3775** 'yes-or-no-p' and 'y-or-n-p' PROMPT parameter no longer needs trailing space.
4443In other words, the prompt can now end with "?" instead of "? ". This 3776In other words, the prompt can now end with "?" instead of "? ". This
4444has been the case since Emacs 24.4 but was not announced or documented 3777has been the case since Emacs 24.4 but was not announced or documented
4445until now. (Checkdoc has also been updated to accept this convention.) 3778until now. (Checkdoc has also been updated to accept this convention.)
4446 3779
4447+++
4448** The UNIQUIFY argument in 'auto-save-file-name-transforms' can be a symbol. 3780** The UNIQUIFY argument in 'auto-save-file-name-transforms' can be a symbol.
4449If this symbol is one of the members of 'secure-hash-algorithms', 3781If this symbol is one of the members of 'secure-hash-algorithms',
4450Emacs constructs the nondirectory part of the auto-save file name by 3782Emacs constructs the nondirectory part of the auto-save file name by
4451applying that 'secure-hash' to the buffer file name. This avoids any 3783applying that 'secure-hash' to the buffer file name. This avoids any
4452risk of excessively long file names. 3784risk of excessively long file names.
4453 3785
4454+++
4455** New user option 'process-file-return-signal-string'. 3786** New user option 'process-file-return-signal-string'.
4456It controls, whether 'process-file' returns a string when a remote 3787It controls, whether 'process-file' returns a string when a remote
4457process is interrupted by a signal. 3788process is interrupted by a signal.
4458 3789
4459** EIEIO Changes 3790** EIEIO Changes
4460 3791
4461+++
4462*** The macro 'oref-default' can now be used with 'setf'. 3792*** The macro 'oref-default' can now be used with 'setf'.
4463It is now defined as a generalized variable that can be used with 3793It is now defined as a generalized variable that can be used with
4464'setf' to modify the value stored in a given class slot. 3794'setf' to modify the value stored in a given class slot.
4465 3795
4466---
4467*** 'form' in '(eql form)' specializers in 'cl-defmethod' is now evaluated. 3796*** 'form' in '(eql form)' specializers in 'cl-defmethod' is now evaluated.
4468This corresponds to the behavior of defmethod in Common Lisp Object System. 3797This corresponds to the behavior of defmethod in Common Lisp Object System.
4469For compatibility, '(eql SYMBOL)' does not evaluate SYMBOL, for now. 3798For compatibility, '(eql SYMBOL)' does not evaluate SYMBOL, for now.
4470 3799
4471** D-Bus 3800** D-Bus
4472 3801
4473+++
4474*** Property values can be typed explicitly. 3802*** Property values can be typed explicitly.
4475'dbus-register-property' and 'dbus-set-property' accept now optional 3803'dbus-register-property' and 'dbus-set-property' accept now optional
4476type symbols. Both functions propagate D-Bus errors. 3804type symbols. Both functions propagate D-Bus errors.
4477 3805
4478+++
4479*** Registered properties can have the new access type ':write'. 3806*** Registered properties can have the new access type ':write'.
4480 3807
4481+++
4482*** In case of problems, handlers can emit proper D-Bus error messages now. 3808*** In case of problems, handlers can emit proper D-Bus error messages now.
4483 3809
4484+++
4485*** D-Bus errors, which have been converted from incoming D-Bus error 3810*** D-Bus errors, which have been converted from incoming D-Bus error
4486messages, contain the error name of that message now. 3811messages, contain the error name of that message now.
4487 3812
4488+++
4489*** D-Bus messages can be monitored with the new command 'dbus-monitor'. 3813*** D-Bus messages can be monitored with the new command 'dbus-monitor'.
4490 3814
4491+++
4492*** D-Bus events have changed their internal structure. 3815*** D-Bus events have changed their internal structure.
4493They carry now the destination and the error-name of an event. They 3816They carry now the destination and the error-name of an event. They
4494also keep the type information of their arguments. Use the 3817also keep the type information of their arguments. Use the
@@ -4496,19 +3819,16 @@ also keep the type information of their arguments. Use the
4496 3819
4497** Buttons 3820** Buttons
4498 3821
4499+++
4500*** New minor mode 'button-mode'. 3822*** New minor mode 'button-mode'.
4501This minor mode does nothing except install 'button-buffer-map' as 3823This minor mode does nothing except install 'button-buffer-map' as
4502a minor mode map (which binds the 'TAB' / 'S-TAB' key bindings to navigate 3824a minor mode map (which binds the 'TAB' / 'S-TAB' key bindings to navigate
4503to buttons), and can be used in any view-mode-like buffer that has 3825to buttons), and can be used in any view-mode-like buffer that has
4504buttons in it. 3826buttons in it.
4505 3827
4506+++
4507*** New utility function 'button-buttonize'. 3828*** New utility function 'button-buttonize'.
4508This function takes a string and returns a string propertized in a way 3829This function takes a string and returns a string propertized in a way
4509that makes it a valid button. 3830that makes it a valid button.
4510 3831
4511---
4512** 'text-scale-mode' can now adjust font size of the header line. 3832** 'text-scale-mode' can now adjust font size of the header line.
4513When the new buffer local variable 'text-scale-remap-header-line' 3833When the new buffer local variable 'text-scale-remap-header-line'
4514is non-nil, 'text-scale-adjust' will also scale the text in the header 3834is non-nil, 'text-scale-adjust' will also scale the text in the header
@@ -4519,10 +3839,8 @@ form below the header line. It is enabled by default in
4519'tabulated-list-mode' and its derived modes, and disabled by default 3839'tabulated-list-mode' and its derived modes, and disabled by default
4520elsewhere. 3840elsewhere.
4521 3841
4522---
4523** 'ascii' is now a coding system alias for 'us-ascii'. 3842** 'ascii' is now a coding system alias for 'us-ascii'.
4524 3843
4525---
4526** New coding-systems for EBCDIC variants. 3844** New coding-systems for EBCDIC variants.
4527New coding-systems 'ibm256', 'ibm273', 'ibm274', 'ibm277', 'ibm278', 3845New coding-systems 'ibm256', 'ibm273', 'ibm274', 'ibm277', 'ibm278',
4528'ibm280', 'ibm281', 'ibm284', 'ibm285', 'ibm290', 'ibm297'. These are 3846'ibm280', 'ibm281', 'ibm284', 'ibm285', 'ibm290', 'ibm297'. These are
@@ -4532,14 +3850,12 @@ locales. They are also available as aliases 'ebcdic-cp-*' (e.g.,
4532'cp278' for 'ibm278'). There are also new charsets 'ibm2xx' to 3850'cp278' for 'ibm278'). There are also new charsets 'ibm2xx' to
4533support these coding-systems. 3851support these coding-systems.
4534 3852
4535+++
4536** New "Bindat type expression" description language. 3853** New "Bindat type expression" description language.
4537This new system is provided by the new macro 'bindat-type' and 3854This new system is provided by the new macro 'bindat-type' and
4538obsoletes the old data layout specifications. It supports 3855obsoletes the old data layout specifications. It supports
4539arbitrary-size integers, recursive types, and more. See the Info node 3856arbitrary-size integers, recursive types, and more. See the Info node
4540"(elisp) Byte Packing" in the ELisp manual for more details. 3857"(elisp) Byte Packing" in the ELisp manual for more details.
4541 3858
4542+++
4543** New macro 'with-environment-variables'. 3859** New macro 'with-environment-variables'.
4544This macro allows setting environment variables temporarily when 3860This macro allows setting environment variables temporarily when
4545executing a form. 3861executing a form.
@@ -4547,7 +3863,6 @@ executing a form.
4547 3863
4548* Changes in Emacs 28.1 on Non-Free Operating Systems 3864* Changes in Emacs 28.1 on Non-Free Operating Systems
4549 3865
4550+++
4551** On MS-Windows, Emacs can now use the native image API to display images. 3866** On MS-Windows, Emacs can now use the native image API to display images.
4552Emacs can now use the MS-Windows GDI+ library to load and display 3867Emacs can now use the MS-Windows GDI+ library to load and display
4553images in JPEG, PNG, GIF and TIFF formats. This support is available 3868images in JPEG, PNG, GIF and TIFF formats. This support is available
@@ -4558,7 +3873,6 @@ To turn this on, set the variable 'w32-use-native-image-API' to a
4558non-nil value. Please report any bugs you find while using the native 3873non-nil value. Please report any bugs you find while using the native
4559image API via 'M-x report-emacs-bug'. 3874image API via 'M-x report-emacs-bug'.
4560 3875
4561+++
4562** On MS-Windows, Emacs can now toggle the IME. 3876** On MS-Windows, Emacs can now toggle the IME.
4563A new function 'w32-set-ime-open-status' can now be used to disable 3877A new function 'w32-set-ime-open-status' can now be used to disable
4564and enable the MS-Windows native Input Method Editor (IME) at run 3878and enable the MS-Windows native Input Method Editor (IME) at run
@@ -4570,26 +3884,21 @@ current IME activation status.
4570'move-beginning-of-line' and 'move-end-of-line' respectively. The commands 3884'move-beginning-of-line' and 'move-end-of-line' respectively. The commands
4571to select previous/next frame are still bound to 's-~' and 's-`'. 3885to select previous/next frame are still bound to 's-~' and 's-`'.
4572 3886
4573+++
4574** On macOS, Emacs can now load dynamic modules with a ".dylib" suffix. 3887** On macOS, Emacs can now load dynamic modules with a ".dylib" suffix.
4575'module-file-suffix' now has the value ".dylib" on macOS, but the 3888'module-file-suffix' now has the value ".dylib" on macOS, but the
4576".so" suffix is supported as well. 3889".so" suffix is supported as well.
4577 3890
4578---
4579** On macOS, the user option 'make-pointer-invisible' is now honored. 3891** On macOS, the user option 'make-pointer-invisible' is now honored.
4580 3892
4581---
4582** On macOS, Xwidget is now supported. 3893** On macOS, Xwidget is now supported.
4583If Emacs was built with xwidget support, you can access the embedded 3894If Emacs was built with xwidget support, you can access the embedded
4584webkit browser with command 'xwidget-webkit-browse-url'. Viewing two 3895webkit browser with command 'xwidget-webkit-browse-url'. Viewing two
4585instances of xwidget webkit is not supported. 3896instances of xwidget webkit is not supported.
4586 3897
4587---
4588*** New user option 'xwidget-webkit-enable-plugins'. 3898*** New user option 'xwidget-webkit-enable-plugins'.
4589If non-nil, enable plugins in xwidget. (This is only available on 3899If non-nil, enable plugins in xwidget. (This is only available on
4590macOS.) 3900macOS.)
4591 3901
4592+++
4593** New macOS Contacts back-end for EUDC. 3902** New macOS Contacts back-end for EUDC.
4594This backend works on newer versions of macOS and is generally 3903This backend works on newer versions of macOS and is generally
4595preferred over the eudcb-mab.el backend. 3904preferred over the eudcb-mab.el backend.