aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2023-07-23 03:16:35 -0400
committerEli Zaretskii2023-07-23 03:16:35 -0400
commit76a142e265df742b2fdd3d220607a46fcbc30e1a (patch)
treebc7027f17fce116b78d2addee970626d93d28de8
parentee20b50dfeded512ecdc784421f8bbe97161d729 (diff)
downloademacs-76a142e265df742b2fdd3d220607a46fcbc30e1a.tar.gz
emacs-76a142e265df742b2fdd3d220607a46fcbc30e1a.zip
; * etc/NEWS: Prepare for Emacs 29.1 release.
Do not merge to master.
-rw-r--r--etc/NEWS714
1 files changed, 0 insertions, 714 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 9e6f0c16bcd..75bf8f5dd28 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -15,16 +15,9 @@ 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 29.1 19* Installation Changes in Emacs 29.1
26 20
27---
28** Ahead-of-time native compilation can now be requested via configure. 21** Ahead-of-time native compilation can now be requested via configure.
29Use '--with-native-compilation=aot' to request that all the Lisp files 22Use '--with-native-compilation=aot' to request that all the Lisp files
30in the Emacs tree should be natively compiled ahead of time. (This is 23in the Emacs tree should be natively compiled ahead of time. (This is
@@ -32,7 +25,6 @@ slow on most machines.)
32 25
33This feature existed in Emacs 28.1, but was less easy to request. 26This feature existed in Emacs 28.1, but was less easy to request.
34 27
35+++
36** Emacs can be built with the tree-sitter parsing library. 28** Emacs can be built with the tree-sitter parsing library.
37This library, together with separate grammar libraries for each 29This library, together with separate grammar libraries for each
38language, provides incremental parsing capabilities for several 30language, provides incremental parsing capabilities for several
@@ -85,26 +77,22 @@ available from their sites, as these libraries are in constant
85development and occasionally add features and fix important bugs to 77development and occasionally add features and fix important bugs to
86follow the advances in the programming languages they support. 78follow the advances in the programming languages they support.
87 79
88+++
89** Emacs can be built with built-in support for accessing SQLite databases. 80** Emacs can be built with built-in support for accessing SQLite databases.
90This uses the popular sqlite3 library, and can be disabled by using 81This uses the popular sqlite3 library, and can be disabled by using
91the '--without-sqlite3' option to the 'configure' script. 82the '--without-sqlite3' option to the 'configure' script.
92 83
93+++
94** Support for the WebP image format. 84** Support for the WebP image format.
95This support is built by default when the libwebp library is 85This support is built by default when the libwebp library is
96available, and includes support for animated WebP images. To disable 86available, and includes support for animated WebP images. To disable
97WebP support, use the '--without-webp' configure flag. Image 87WebP support, use the '--without-webp' configure flag. Image
98specifiers can now use ':type webp'. 88specifiers can now use ':type webp'.
99 89
100---
101** Emacs now installs the ".pdmp" file using a unique fingerprint in the name. 90** Emacs now installs the ".pdmp" file using a unique fingerprint in the name.
102The file is typically installed using a file name akin to 91The file is typically installed using a file name akin to
103"...dir/libexec/emacs/29.1/x86_64-pc-linux-gnu/emacs-<fingerprint>.pdmp". 92"...dir/libexec/emacs/29.1/x86_64-pc-linux-gnu/emacs-<fingerprint>.pdmp".
104If a constant file name is required, the file can be renamed to 93If a constant file name is required, the file can be renamed to
105"emacs.pdmp", and Emacs will find it during startup anyway. 94"emacs.pdmp", and Emacs will find it during startup anyway.
106 95
107---
108** Emacs on X now uses XInput 2 for input events. 96** Emacs on X now uses XInput 2 for input events.
109If your X server has support and you have the XInput 2 development 97If your X server has support and you have the XInput 2 development
110headers installed, Emacs will use the X Input Extension for handling 98headers installed, Emacs will use the X Input Extension for handling
@@ -114,7 +102,6 @@ option '--without-xinput2' to disable this support.
114'(featurep 'xinput2)' can be used to test for the presence of XInput 2 102'(featurep 'xinput2)' can be used to test for the presence of XInput 2
115support from Lisp programs. 103support from Lisp programs.
116 104
117---
118** Emacs can now be optionally built with the Cairo XCB backend. 105** Emacs can now be optionally built with the Cairo XCB backend.
119Configure Emacs with the '--with-cairo-xcb' option to use the Cairo 106Configure Emacs with the '--with-cairo-xcb' option to use the Cairo
120XCB backend; the default is not to use it. This backend makes Emacs 107XCB backend; the default is not to use it. This backend makes Emacs
@@ -124,7 +111,6 @@ a display connection to the same terminal; this could happen, for
124example, if you repeatedly visit files via emacsclient in a single 111example, if you repeatedly visit files via emacsclient in a single
125client frame, each time deleting the frame with 'C-x C-c'. 112client frame, each time deleting the frame with 'C-x C-c'.
126 113
127+++
128** Emacs now supports being built with pure GTK. 114** Emacs now supports being built with pure GTK.
129To use this option, make sure the GTK 3 (version 3.22.23 or later) and 115To use this option, make sure the GTK 3 (version 3.22.23 or later) and
130Cairo development files are installed, and configure Emacs with the 116Cairo development files are installed, and configure Emacs with the
@@ -142,7 +128,6 @@ automatically switch to text-mode interface (thus emulating '-nw') if
142it cannot determine the default display; it will instead complain and 128it cannot determine the default display; it will instead complain and
143ask you to invoke it with the explicit '-nw' option. 129ask you to invoke it with the explicit '-nw' option.
144 130
145+++
146** Emacs has been ported to the Haiku operating system. 131** Emacs has been ported to the Haiku operating system.
147The configuration process should automatically detect and build for 132The configuration process should automatically detect and build for
148Haiku. There is also an optional window-system port to Haiku, which 133Haiku. There is also an optional window-system port to Haiku, which
@@ -160,7 +145,6 @@ Unlike X, there is no compile-time option to enable or disable
160double-buffering; it is always enabled. To disable it, change the 145double-buffering; it is always enabled. To disable it, change the
161frame parameter 'inhibit-double-buffering' instead. 146frame parameter 'inhibit-double-buffering' instead.
162 147
163---
164** Emacs no longer reduces the size of the Japanese dictionary. 148** Emacs no longer reduces the size of the Japanese dictionary.
165Building Emacs includes generation of a Japanese dictionary, which is 149Building Emacs includes generation of a Japanese dictionary, which is
166used by Japanese input methods. Previously, the build included a step 150used by Japanese input methods. Previously, the build included a step
@@ -175,7 +159,6 @@ by saying
175 159
176after deleting "lisp/leim/ja-dic/ja-dic.el". 160after deleting "lisp/leim/ja-dic/ja-dic.el".
177 161
178---
179** The docstrings of preloaded files are not in "etc/DOC" any more. 162** The docstrings of preloaded files are not in "etc/DOC" any more.
180Instead, they're fetched as needed from the corresponding ".elc" 163Instead, they're fetched as needed from the corresponding ".elc"
181files, as was already the case for all the non-preloaded files. 164files, as was already the case for all the non-preloaded files.
@@ -183,7 +166,6 @@ files, as was already the case for all the non-preloaded files.
183 166
184* Startup Changes in Emacs 29.1 167* Startup Changes in Emacs 29.1
185 168
186+++
187** '--batch' and '--script' now adjust the garbage collection levels. 169** '--batch' and '--script' now adjust the garbage collection levels.
188These switches now set 'gc-cons-percentage' to 1.0 (up from the 170These switches now set 'gc-cons-percentage' to 1.0 (up from the
189default of 0.1). This means that batch processes will typically use 171default of 0.1). This means that batch processes will typically use
@@ -191,7 +173,6 @@ more memory than before, but use less time doing garbage collection.
191Batch jobs that are supposed to run for a long time should adjust the 173Batch jobs that are supposed to run for a long time should adjust the
192limit back down again. 174limit back down again.
193 175
194+++
195** Emacs can now be used more easily in an executable script. 176** Emacs can now be used more easily in an executable script.
196If you start an executable script with 177If you start an executable script with
197 178
@@ -202,16 +183,13 @@ and then execute the rest of the script file as Emacs Lisp. When it
202reaches the end of the script, Emacs will exit with an exit code from 183reaches the end of the script, Emacs will exit with an exit code from
203the value of the final form. 184the value of the final form.
204 185
205+++
206** Emacs now supports setting 'user-emacs-directory' via '--init-directory'. 186** Emacs now supports setting 'user-emacs-directory' via '--init-directory'.
207Use the '--init-directory' command-line option to set 187Use the '--init-directory' command-line option to set
208'user-emacs-directory'. 188'user-emacs-directory'.
209 189
210+++
211** Emacs now has a '--fingerprint' option. 190** Emacs now has a '--fingerprint' option.
212This will output a string identifying the current Emacs build, and exit. 191This will output a string identifying the current Emacs build, and exit.
213 192
214+++
215** New hook 'after-pdump-load-hook'. 193** New hook 'after-pdump-load-hook'.
216This is run at the end of the Emacs startup process, and is meant to 194This is run at the end of the Emacs startup process, and is meant to
217be used to reinitialize data structures that would normally be done at 195be used to reinitialize data structures that would normally be done at
@@ -219,14 +197,12 @@ load time.
219 197
220** Native Compilation 198** Native Compilation
221 199
222+++
223*** New command 'native-compile-prune-cache'. 200*** New command 'native-compile-prune-cache'.
224This command deletes old subdirectories of the eln cache (but not the 201This command deletes old subdirectories of the eln cache (but not the
225ones for the current Emacs version). Note that subdirectories of the 202ones for the current Emacs version). Note that subdirectories of the
226system directory where the "*.eln" files are installed (usually, the 203system directory where the "*.eln" files are installed (usually, the
227last entry in 'native-comp-eln-load-path') are not deleted. 204last entry in 'native-comp-eln-load-path') are not deleted.
228 205
229+++
230*** New function 'startup-redirect-eln-cache'. 206*** New function 'startup-redirect-eln-cache'.
231This function can be called in your init files to change the 207This function can be called in your init files to change the
232user-specific directory where Emacs stores the "*.eln" files produced 208user-specific directory where Emacs stores the "*.eln" files produced
@@ -237,7 +213,6 @@ of 'user-emacs-directory'.
237 213
238* Incompatible changes in Emacs 29.1 214* Incompatible changes in Emacs 29.1
239 215
240+++
241** The image commands have changed key bindings. 216** The image commands have changed key bindings.
242In previous Emacs versions, the '+', '-' and 'r' keys were bound when 217In previous Emacs versions, the '+', '-' and 'r' keys were bound when
243point was over an image. In Emacs 29.1, additional commands have been 218point was over an image. In Emacs 29.1, additional commands have been
@@ -247,7 +222,6 @@ moved to the 'i' prefix keymap, so '+' is now 'i +', '-' is now 'i -',
247and 'r' is now 'i r'. In addition, these commands are now repeating, 222and 'r' is now 'i r'. In addition, these commands are now repeating,
248so you can rotate an image twice by saying 'i r r', for instance. 223so you can rotate an image twice by saying 'i r r', for instance.
249 224
250+++
251** Emacs now picks the correct coding-system for X input methods. 225** Emacs now picks the correct coding-system for X input methods.
252Previously, Emacs would use 'locale-coding-system' for input 226Previously, Emacs would use 'locale-coding-system' for input
253methods, which could in some circumstances be incorrect, especially 227methods, which could in some circumstances be incorrect, especially
@@ -260,7 +234,6 @@ changed the coding system used to decode X keyboard input must adjust
260their customizations to 'locale-coding-system' to the variable 234their customizations to 'locale-coding-system' to the variable
261'x-input-coding-system' instead. 235'x-input-coding-system' instead.
262 236
263+++
264** Bookmarks no longer include context for encrypted files. 237** Bookmarks no longer include context for encrypted files.
265If you're visiting an encrypted file, setting a bookmark no longer 238If you're visiting an encrypted file, setting a bookmark no longer
266includes excerpts from that buffer in the bookmarks file. This is 239includes excerpts from that buffer in the bookmarks file. This is
@@ -268,7 +241,6 @@ implemented by the new hook 'bookmark-inhibit-context-functions',
268where packages can register a function which returns non-nil for file 241where packages can register a function which returns non-nil for file
269names to be excluded from adding such excerpts. 242names to be excluded from adding such excerpts.
270 243
271---
272** 'show-paren-mode' is now disabled in 'special-mode' buffers. 244** 'show-paren-mode' is now disabled in 'special-mode' buffers.
273In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted 245In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted
274off. In Emacs 28.1, the mode was switched on in all buffers. In 246off. In Emacs 28.1, the mode was switched on in all buffers. In
@@ -279,7 +251,6 @@ init file:
279 251
280 (setopt show-paren-predicate t) 252 (setopt show-paren-predicate t)
281 253
282+++
283** Explicitly-set read-only state is preserved when reverting a buffer. 254** Explicitly-set read-only state is preserved when reverting a buffer.
284If you use the 'C-x C-q' command to change the read-only state of the 255If you use the 'C-x C-q' command to change the read-only state of the
285buffer and then revert it, Emacs would previously use the file 256buffer and then revert it, Emacs would previously use the file
@@ -287,14 +258,12 @@ permission bits to determine whether the buffer should be read-only
287after reverting the buffer. Emacs now remembers the decision made in 258after reverting the buffer. Emacs now remembers the decision made in
288'C-x C-q'. 259'C-x C-q'.
289 260
290---
291** The Gtk selection face is no longer used for the region. 261** The Gtk selection face is no longer used for the region.
292The combination of a Gtk-controlled background and a foreground color 262The combination of a Gtk-controlled background and a foreground color
293controlled by the internal Emacs machinery led to low-contrast faces 263controlled by the internal Emacs machinery led to low-contrast faces
294in common default setups. Emacs now uses the same 'region' face on 264in common default setups. Emacs now uses the same 'region' face on
295Gtk and non-Gtk setups. 265Gtk and non-Gtk setups.
296 266
297---
298** 'C-h f' and 'C-h x' may now require confirmation when you press 'RET'. 267** 'C-h f' and 'C-h x' may now require confirmation when you press 'RET'.
299If the text in the minibuffer cannot be completed to a single function 268If the text in the minibuffer cannot be completed to a single function
300or command, typing 'RET' will not automatically complete to the shortest 269or command, typing 'RET' will not automatically complete to the shortest
@@ -306,12 +275,10 @@ second 'RET'.
306 275
307** Dired 276** Dired
308 277
309---
310*** 'w' ('dired-copy-filename-as-kill') has changed behavior. 278*** 'w' ('dired-copy-filename-as-kill') has changed behavior.
311If there are several files marked, file names containing space and 279If there are several files marked, file names containing space and
312quote characters will be quoted "like this". 280quote characters will be quoted "like this".
313 281
314---
315*** The 'd' command now more consistently skips dot files. 282*** The 'd' command now more consistently skips dot files.
316In previous Emacs versions, commands like 'C-u 10 d' would put the "D" 283In previous Emacs versions, commands like 'C-u 10 d' would put the "D"
317mark on the next ten files, no matter whether they were dot files 284mark on the next ten files, no matter whether they were dot files
@@ -319,10 +286,8 @@ mark on the next ten files, no matter whether they were dot files
319mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot 286mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot
320files. These now work equivalently. 287files. These now work equivalently.
321 288
322+++
323** Warning about "eager macro-expansion failure" is now an error. 289** Warning about "eager macro-expansion failure" is now an error.
324 290
325---
326** Previously, the X "reverseVideo" value at startup was heeded for all frames. 291** Previously, the X "reverseVideo" value at startup was heeded for all frames.
327This meant that if you had a "reverseVideo" resource on the initial 292This meant that if you had a "reverseVideo" resource on the initial
328display, and then opened up a new frame on a display without any 293display, and then opened up a new frame on a display without any
@@ -330,26 +295,21 @@ explicit "reverseVideo" setting, it would get heeded there, too. (This
330included terminal frames.) In Emacs 29, the "reverseVideo" X resource 295included terminal frames.) In Emacs 29, the "reverseVideo" X resource
331is handled like all the other X resources, and set on a per-frame basis. 296is handled like all the other X resources, and set on a per-frame basis.
332 297
333+++
334** 'E' in 'query-replace' now edits the replacement with exact case. 298** 'E' in 'query-replace' now edits the replacement with exact case.
335Previously, this command did the same as 'e'. 299Previously, this command did the same as 'e'.
336 300
337---
338** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp. 301** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp.
339 302
340+++
341** Setting the goal columns now also affects '<prior>' and '<next>'. 303** Setting the goal columns now also affects '<prior>' and '<next>'.
342Previously, 'C-x C-n' only affected 'next-line' and 'previous-line', 304Previously, 'C-x C-n' only affected 'next-line' and 'previous-line',
343but it now also affects 'scroll-up-command' and 'scroll-down-command'. 305but it now also affects 'scroll-up-command' and 'scroll-down-command'.
344 306
345---
346** Isearch in "*Help*" and "*info*" now char-folds quote characters by default. 307** Isearch in "*Help*" and "*info*" now char-folds quote characters by default.
347This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer 308This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer
348contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These 309contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These
349quotation characters look somewhat similar in some fonts. To switch 310quotation characters look somewhat similar in some fonts. To switch
350this off, disable the new 'isearch-fold-quotes-mode' minor mode. 311this off, disable the new 'isearch-fold-quotes-mode' minor mode.
351 312
352---
353** Sorting commands no longer necessarily change modification status. 313** Sorting commands no longer necessarily change modification status.
354In earlier Emacs versions, commands like 'sort-lines' would always 314In earlier Emacs versions, commands like 'sort-lines' would always
355change buffer modification status to "modified", whether they changed 315change buffer modification status to "modified", whether they changed
@@ -357,19 +317,16 @@ something in the buffer or not. This has been changed: the buffer is
357marked as modified only if the sorting ended up actually changing the 317marked as modified only if the sorting ended up actually changing the
358contents of the buffer. 318contents of the buffer.
359 319
360---
361** 'string-lines' handles trailing newlines differently. 320** 'string-lines' handles trailing newlines differently.
362It no longer returns an empty final string if the string ends with a 321It no longer returns an empty final string if the string ends with a
363newline. 322newline.
364 323
365---
366** 'TAB' and '<backtab>' are now bound in 'button-map'. 324** 'TAB' and '<backtab>' are now bound in 'button-map'.
367This means that if point is on a button, 'TAB' will take you to the 325This means that if point is on a button, 'TAB' will take you to the
368next button, even if the mode has bound it to something else. This 326next button, even if the mode has bound it to something else. This
369also means that 'TAB' on a button in an 'outline-minor-mode' heading 327also means that 'TAB' on a button in an 'outline-minor-mode' heading
370will move point instead of collapsing the outline. 328will move point instead of collapsing the outline.
371 329
372---
373** 'outline-minor-mode-cycle-map' is now parent of 'outline-minor-mode'. 330** 'outline-minor-mode-cycle-map' is now parent of 'outline-minor-mode'.
374Instead of adding text property 'keymap' with 'outline-minor-mode-cycle' 331Instead of adding text property 'keymap' with 'outline-minor-mode-cycle'
375on outline headings in 'outline-minor-mode', the keymap 332on outline headings in 'outline-minor-mode', the keymap
@@ -378,12 +335,10 @@ But keybindings in 'outline-minor-mode-cycle' still take effect
378only on outline headings because they are bound with the help of 335only on outline headings because they are bound with the help of
379'outline-minor-mode-cycle--bind' that checks if point is on a heading. 336'outline-minor-mode-cycle--bind' that checks if point is on a heading.
380 337
381---
382** 'Info-default-directory-list' is no longer populated at Emacs startup. 338** 'Info-default-directory-list' is no longer populated at Emacs startup.
383If you have code in your init file that removes directories from 339If you have code in your init file that removes directories from
384'Info-default-directory-list', this will no longer work. 340'Info-default-directory-list', this will no longer work.
385 341
386---
387** 'C-k' no longer deletes files in 'ido-mode'. 342** 'C-k' no longer deletes files in 'ido-mode'.
388To get the previous action back, put something like the following in 343To get the previous action back, put something like the following in
389your Init file: 344your Init file:
@@ -391,14 +346,12 @@ your Init file:
391 (require 'ido) 346 (require 'ido)
392 (keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head) 347 (keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head)
393 348
394---
395** New user option 'term-clear-full-screen-programs'. 349** New user option 'term-clear-full-screen-programs'.
396By default, term.el will now work like most terminals when displaying 350By default, term.el will now work like most terminals when displaying
397full-screen programs: When they exit, the output is cleared, leaving 351full-screen programs: When they exit, the output is cleared, leaving
398what was displayed in the window before the programs started. Set 352what was displayed in the window before the programs started. Set
399this user option to nil to revert back to the old behavior. 353this user option to nil to revert back to the old behavior.
400 354
401---
402** Support for old EIEIO functions is not autoloaded any more. 355** Support for old EIEIO functions is not autoloaded any more.
403You need an explicit '(require 'eieio-compat)' to use 'defmethod' 356You need an explicit '(require 'eieio-compat)' to use 'defmethod'
404and 'defgeneric' (which were made obsolete in Emacs 25.1 by 357and 'defgeneric' (which were made obsolete in Emacs 25.1 by
@@ -406,11 +359,9 @@ and 'defgeneric' (which were made obsolete in Emacs 25.1 by
406Similarly you might need to '(require 'eieio-compat)' before loading 359Similarly you might need to '(require 'eieio-compat)' before loading
407files that were compiled with an old EIEIO (Emacs<25). 360files that were compiled with an old EIEIO (Emacs<25).
408 361
409---
410** 'C-x 8 .' has been moved to 'C-x 8 . .'. 362** 'C-x 8 .' has been moved to 'C-x 8 . .'.
411This is to open up the 'C-x 8 .' map to bind further characters there. 363This is to open up the 'C-x 8 .' map to bind further characters there.
412 364
413---
414** 'C-x 8 =' has been moved to 'C-x 8 = ='. 365** 'C-x 8 =' has been moved to 'C-x 8 = ='.
415You can now use 'C-x 8 =' to insert several characters with macron; 366You can now use 'C-x 8 =' to insert several characters with macron;
416for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH 367for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH
@@ -424,12 +375,10 @@ For consistency with remote connections, Eshell now uses 'exec-path'
424to determine the execution path on the local or remote system, instead 375to determine the execution path on the local or remote system, instead
425of using the PATH environment variable directly. 376of using the PATH environment variable directly.
426 377
427---
428*** 'source' and '.' no longer accept the '--help' option. 378*** 'source' and '.' no longer accept the '--help' option.
429This is for compatibility with the shell versions of these commands, 379This is for compatibility with the shell versions of these commands,
430which don't handle options like '--help' in any special way. 380which don't handle options like '--help' in any special way.
431 381
432+++
433*** String delimiters in argument predicates/modifiers are more restricted. 382*** String delimiters in argument predicates/modifiers are more restricted.
434Previously, some argument predicates/modifiers allowed arbitrary 383Previously, some argument predicates/modifiers allowed arbitrary
435characters as string delimiters. To provide more unified behavior 384characters as string delimiters. To provide more unified behavior
@@ -438,11 +387,9 @@ been restricted to "...", '...', /.../, |...|, (...), [...], <...>,
438and {...}. See the "(eshell) Argument Predication and Modification" 387and {...}. See the "(eshell) Argument Predication and Modification"
439node in the Eshell manual for more details. 388node in the Eshell manual for more details.
440 389
441+++
442*** Eshell pipelines now only pipe stdout by default. 390*** Eshell pipelines now only pipe stdout by default.
443To pipe both stdout and stderr, use the '|&' operator instead of '|'. 391To pipe both stdout and stderr, use the '|&' operator instead of '|'.
444 392
445---
446** The 'delete-forward-char' command now deletes by grapheme clusters. 393** The 'delete-forward-char' command now deletes by grapheme clusters.
447This command is by default bound to the '<Delete>' function key 394This command is by default bound to the '<Delete>' function key
448(a.k.a. '<deletechar>'). When invoked without a prefix argument or 395(a.k.a. '<deletechar>'). When invoked without a prefix argument or
@@ -452,12 +399,10 @@ example, if point is before an Emoji sequence, pressing '<Delete>'
452will delete the entire sequence, not just a single character at its 399will delete the entire sequence, not just a single character at its
453beginning. 400beginning.
454 401
455+++
456** 'load-history' does not treat autoloads specially any more. 402** 'load-history' does not treat autoloads specially any more.
457An autoload definition appears just as a '(defun . NAME)' and the 403An autoload definition appears just as a '(defun . NAME)' and the
458'(t . NAME)' entries are not generated any more. 404'(t . NAME)' entries are not generated any more.
459 405
460---
461** The Tamil input methods no longer insert Tamil digits. 406** The Tamil input methods no longer insert Tamil digits.
462The input methods 'tamil-itrans' and 'tamil-inscript' no longer insert 407The input methods 'tamil-itrans' and 'tamil-inscript' no longer insert
463the Tamil digits, as those digit characters are not used nowadays by 408the Tamil digits, as those digit characters are not used nowadays by
@@ -465,7 +410,6 @@ speakers of the Tamil language. To get back the previous behavior,
465use the new 'tamil-itrans-digits' and 'tamil-inscript-digits' input 410use the new 'tamil-itrans-digits' and 'tamil-inscript-digits' input
466methods instead. 411methods instead.
467 412
468+++
469** New variable 'current-time-list' governing default timestamp form. 413** New variable 'current-time-list' governing default timestamp form.
470Functions like 'current-time' now yield '(TICKS . HZ)' timestamps if 414Functions like 'current-time' now yield '(TICKS . HZ)' timestamps if
471this new variable is nil. The variable defaults to t, which means 415this new variable is nil. The variable defaults to t, which means
@@ -476,7 +420,6 @@ Developers are encouraged to test timestamp-related code with this
476variable set to nil, as it will default to nil in a future Emacs 420variable set to nil, as it will default to nil in a future Emacs
477version and will be removed some time after that. 421version and will be removed some time after that.
478 422
479+++
480** Functions that recreate the "*scratch*" buffer now also initialize it. 423** Functions that recreate the "*scratch*" buffer now also initialize it.
481When functions like 'other-buffer' and 'server-execute' recreate 424When functions like 'other-buffer' and 'server-execute' recreate
482"*scratch*", they now also insert 'initial-scratch-message' and set 425"*scratch*", they now also insert 'initial-scratch-message' and set
@@ -484,7 +427,6 @@ the major mode according to 'initial-major-mode', like at Emacs
484startup. Previously, these functions ignored 427startup. Previously, these functions ignored
485'initial-scratch-message' and left "*scratch*" in 'fundamental-mode'. 428'initial-scratch-message' and left "*scratch*" in 'fundamental-mode'.
486 429
487---
488** Naming of Image-Dired thumbnail files has changed. 430** Naming of Image-Dired thumbnail files has changed.
489Names of thumbnail files generated when 'image-dired-thumbnail-storage' 431Names of thumbnail files generated when 'image-dired-thumbnail-storage'
490is 'image-dired' now always end in ".jpg". This fixes various issues 432is 'image-dired' now always end in ".jpg". This fixes various issues
@@ -493,25 +435,21 @@ will not be used in Emacs 29, and vice-versa. If disk space is an
493issue, consider deleting the 'image-dired-dir' directory (usually 435issue, consider deleting the 'image-dired-dir' directory (usually
494"~/.emacs.d/image-dired/") after upgrading to Emacs 29. 436"~/.emacs.d/image-dired/") after upgrading to Emacs 29.
495 437
496---
497** The 'rlogin' method in the URL library is now obsolete. 438** The 'rlogin' method in the URL library is now obsolete.
498Emacs will now display a warning if you request a URL like 439Emacs will now display a warning if you request a URL like
499"rlogin://foo@example.org". 440"rlogin://foo@example.org".
500 441
501---
502** Setting 'url-gateway-method' to 'rlogin' is now obsolete. 442** Setting 'url-gateway-method' to 'rlogin' is now obsolete.
503Emacs will now display a warning when setting it to that value. 443Emacs will now display a warning when setting it to that value.
504The user options 'url-gateway-rlogin-host', 444The user options 'url-gateway-rlogin-host',
505'url-gateway-rlogin-parameters', and 'url-gateway-rlogin-user-name' 445'url-gateway-rlogin-parameters', and 'url-gateway-rlogin-user-name'
506are also obsolete. 446are also obsolete.
507 447
508---
509** The user function 'url-irc-function' now takes a SCHEME argument. 448** The user function 'url-irc-function' now takes a SCHEME argument.
510The user option 'url-irc-function' is now called with a sixth argument 449The user option 'url-irc-function' is now called with a sixth argument
511corresponding to the scheme portion of the target URL. For example, 450corresponding to the scheme portion of the target URL. For example,
512this would be "ircs" for a URL like "ircs://irc.libera.chat". 451this would be "ircs" for a URL like "ircs://irc.libera.chat".
513 452
514---
515** The linum.el library is now obsolete. 453** The linum.el library is now obsolete.
516We recommend using either the built-in 'display-line-numbers-mode', or 454We recommend using either the built-in 'display-line-numbers-mode', or
517the 'nlinum' package from GNU ELPA instead. The former has better 455the 'nlinum' package from GNU ELPA instead. The former has better
@@ -536,40 +474,31 @@ performance, but the latter is closer to a drop-in replacement.
536 474
537 (require 'linum) 475 (require 'linum)
538 476
539---
540** The thumbs.el library is now obsolete. 477** The thumbs.el library is now obsolete.
541We recommend using the 'image-dired' command instead. 478We recommend using the 'image-dired' command instead.
542 479
543---
544** The autoarg.el library is now marked obsolete. 480** The autoarg.el library is now marked obsolete.
545This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor 481This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor
546modes to emulate the behavior of the historical editor Twenex Emacs. 482modes to emulate the behavior of the historical editor Twenex Emacs.
547We believe it is no longer useful. 483We believe it is no longer useful.
548 484
549---
550** The quickurl.el library is now obsolete. 485** The quickurl.el library is now obsolete.
551Use 'abbrev', 'skeleton' or 'tempo' instead. 486Use 'abbrev', 'skeleton' or 'tempo' instead.
552 487
553---
554** The rlogin.el library, and the 'rsh' command are now obsolete. 488** The rlogin.el library, and the 'rsh' command are now obsolete.
555Use something like 'M-x shell RET ssh <host> RET' instead. 489Use something like 'M-x shell RET ssh <host> RET' instead.
556 490
557---
558** The url-about.el library is now obsolete. 491** The url-about.el library is now obsolete.
559 492
560---
561** The autoload.el library is now obsolete. 493** The autoload.el library is now obsolete.
562It is superseded by the new loaddefs-gen.el library. 494It is superseded by the new loaddefs-gen.el library.
563 495
564---
565** The netrc.el library is now obsolete. 496** The netrc.el library is now obsolete.
566Use the 'auth-source-netrc-parse-all' function in auth-source.el 497Use the 'auth-source-netrc-parse-all' function in auth-source.el
567instead. 498instead.
568 499
569---
570** The url-dired.el library is now obsolete. 500** The url-dired.el library is now obsolete.
571 501
572---
573** The fast-lock.el and lazy-lock.el libraries have been removed. 502** The fast-lock.el and lazy-lock.el libraries have been removed.
574They have been obsolete since Emacs 22.1. 503They have been obsolete since Emacs 22.1.
575 504
@@ -577,7 +506,6 @@ The variable 'font-lock-support-mode' is occasionally useful for
577debugging purposes. It is now a regular variable (instead of a user 506debugging purposes. It is now a regular variable (instead of a user
578option) and can be set to nil to disable Just-in-time Lock mode. 507option) and can be set to nil to disable Just-in-time Lock mode.
579 508
580+++
581** The 'utf-8-auto' coding-system now produces BOM on encoding. 509** The 'utf-8-auto' coding-system now produces BOM on encoding.
582This is actually a bugfix, since this is how 'utf-8-auto' was 510This is actually a bugfix, since this is how 'utf-8-auto' was
583documented from day one; it just didn't behave according to 511documented from day one; it just didn't behave according to
@@ -594,7 +522,6 @@ encoding, only for decoding.
594 522
595* Changes in Emacs 29.1 523* Changes in Emacs 29.1
596 524
597+++
598** New user option 'major-mode-remap-alist' to specify favorite major modes. 525** New user option 'major-mode-remap-alist' to specify favorite major modes.
599This user option lets you remap the default modes (e.g. 'perl-mode' or 526This user option lets you remap the default modes (e.g. 'perl-mode' or
600'latex-mode') to your favorite ones (e.g. 'cperl-mode' or 527'latex-mode') to your favorite ones (e.g. 'cperl-mode' or
@@ -603,15 +530,12 @@ undesirable side effects.
603This applies to all modes specified via 'auto-mode-alist', file-local 530This applies to all modes specified via 'auto-mode-alist', file-local
604variables, etc. 531variables, etc.
605 532
606---
607** Emacs now supports Unicode Standard version 15.0. 533** Emacs now supports Unicode Standard version 15.0.
608 534
609---
610** New user option 'electric-quote-replace-consecutive'. 535** New user option 'electric-quote-replace-consecutive'.
611This allows you to disable the default behavior of consecutive single 536This allows you to disable the default behavior of consecutive single
612quotes being replaced with a double quote. 537quotes being replaced with a double quote.
613 538
614---
615** Emacs is now capable of editing files with very long lines. 539** Emacs is now capable of editing files with very long lines.
616The display of long lines has been optimized, and Emacs should no 540The display of long lines has been optimized, and Emacs should no
617longer choke when a buffer on display contains long lines. The 541longer choke when a buffer on display contains long lines. The
@@ -648,7 +572,6 @@ access portions of the buffer outside of the narrowed region.
648The new function 'long-line-optimizations-p' returns non-nil when 572The new function 'long-line-optimizations-p' returns non-nil when
649these optimizations are in effect in the current buffer. 573these optimizations are in effect in the current buffer.
650 574
651+++
652** New command to change the font size globally. 575** New command to change the font size globally.
653To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to 576To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to
654decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x 577decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x
@@ -660,7 +583,6 @@ increase and decrease the font size globally. Additionally, the
660user option 'global-text-scale-adjust-resizes-frames' controls whether 583user option 'global-text-scale-adjust-resizes-frames' controls whether
661the frames are resized when the font size is changed. 584the frames are resized when the font size is changed.
662 585
663---
664** New config variable 'syntax-wholeline-max' to reduce the cost of long lines. 586** New config variable 'syntax-wholeline-max' to reduce the cost of long lines.
665This variable is used by some operations (mostly syntax-propertization 587This variable is used by some operations (mostly syntax-propertization
666and font-locking) to treat lines longer than this variable as if they 588and font-locking) to treat lines longer than this variable as if they
@@ -672,13 +594,11 @@ can recover the previous behavior with:
672 594
673 (setq syntax-wholeline-max most-positive-fixnum) 595 (setq syntax-wholeline-max most-positive-fixnum)
674 596
675---
676** New bindings in 'find-function-setup-keys' for 'find-library'. 597** New bindings in 'find-function-setup-keys' for 'find-library'.
677When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to 598When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to
678'find-library', 'C-x 4 L' is now bound to 'find-library-other-window' 599'find-library', 'C-x 4 L' is now bound to 'find-library-other-window'
679and 'C-x 5 L' is now bound to 'find-library-other-frame'. 600and 'C-x 5 L' is now bound to 'find-library-other-frame'.
680 601
681+++
682** New key binding after 'M-x' or 'M-X': 'M-X'. 602** New key binding after 'M-x' or 'M-X': 'M-X'.
683Emacs allows different completion predicates to be used with 'M-x' 603Emacs allows different completion predicates to be used with 'M-x'
684(i.e., 'execute-extended-command') via the 604(i.e., 'execute-extended-command') via the
@@ -688,10 +608,8 @@ especially relevant to the current buffer. Emacs now allows toggling
688between these modes while the user is inputting a command by hitting 608between these modes while the user is inputting a command by hitting
689'M-X' while in the minibuffer. 609'M-X' while in the minibuffer.
690 610
691---
692** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved. 611** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved.
693 612
694---
695** New commands 'duplicate-line' and 'duplicate-dwim'. 613** New commands 'duplicate-line' and 'duplicate-dwim'.
696'duplicate-line' duplicates the current line the specified number of times. 614'duplicate-line' duplicates the current line the specified number of times.
697'duplicate-dwim' duplicates the region if it is active. If not, it 615'duplicate-dwim' duplicates the region if it is active. If not, it
@@ -700,10 +618,8 @@ duplicated on its right-hand side. The new user option
700'duplicate-line-final-position' specifies where to move point 618'duplicate-line-final-position' specifies where to move point
701after duplicating a line. 619after duplicating a line.
702 620
703---
704** Files with the ".eld" extension are now visited in 'lisp-data-mode'. 621** Files with the ".eld" extension are now visited in 'lisp-data-mode'.
705 622
706+++
707** 'network-lookup-address-info' can now check numeric IP address validity. 623** 'network-lookup-address-info' can now check numeric IP address validity.
708Specifying 'numeric' as the new optional HINTS argument makes it 624Specifying 'numeric' as the new optional HINTS argument makes it
709check if the passed address is a valid IPv4/IPv6 address (without DNS 625check if the passed address is a valid IPv4/IPv6 address (without DNS
@@ -712,23 +628,19 @@ traffic).
712 (network-lookup-address-info "127.1" 'ipv4 'numeric) 628 (network-lookup-address-info "127.1" 'ipv4 'numeric)
713 => ([127 0 0 1 0]) 629 => ([127 0 0 1 0])
714 630
715+++
716** New command 'find-sibling-file'. 631** New command 'find-sibling-file'.
717This command jumps to a file considered a "sibling file", which is 632This command jumps to a file considered a "sibling file", which is
718determined according to the new user option 'find-sibling-rules'. 633determined according to the new user option 'find-sibling-rules'.
719 634
720+++
721** New user option 'delete-selection-temporary-region'. 635** New user option 'delete-selection-temporary-region'.
722When non-nil, 'delete-selection-mode' will only delete the temporary 636When non-nil, 'delete-selection-mode' will only delete the temporary
723regions (usually set by mouse-dragging or shift-selection). 637regions (usually set by mouse-dragging or shift-selection).
724 638
725+++
726** New user option 'switch-to-prev-buffer-skip-regexp'. 639** New user option 'switch-to-prev-buffer-skip-regexp'.
727This should be a regexp or a list of regexps; buffers whose names 640This should be a regexp or a list of regexps; buffers whose names
728match those regexps will be ignored by 'switch-to-prev-buffer' and 641match those regexps will be ignored by 'switch-to-prev-buffer' and
729'switch-to-next-buffer'. 642'switch-to-next-buffer'.
730 643
731+++
732** New command 'rename-visited-file'. 644** New command 'rename-visited-file'.
733This command renames the file visited by the current buffer by moving 645This command renames the file visited by the current buffer by moving
734it to a new name or location, and also makes the buffer visit this new 646it to a new name or location, and also makes the buffer visit this new
@@ -736,19 +648,16 @@ file.
736 648
737** Menus 649** Menus
738 650
739---
740*** The entries following the buffers in the "Buffers" menu can now be altered. 651*** The entries following the buffers in the "Buffers" menu can now be altered.
741Change the 'menu-bar-buffers-menu-command-entries' variable to alter 652Change the 'menu-bar-buffers-menu-command-entries' variable to alter
742the entries that follow the buffer list. 653the entries that follow the buffer list.
743 654
744---
745** 'delete-process' is now a command. 655** 'delete-process' is now a command.
746When called interactively, it will kill the process running in the 656When called interactively, it will kill the process running in the
747current buffer (if any). This can be useful if you have runaway 657current buffer (if any). This can be useful if you have runaway
748output in the current buffer (from a process or a network connection), 658output in the current buffer (from a process or a network connection),
749and want to stop it. 659and want to stop it.
750 660
751+++
752** New command 'restart-emacs'. 661** New command 'restart-emacs'.
753This is like 'save-buffers-kill-emacs', but instead of just killing 662This is like 'save-buffers-kill-emacs', but instead of just killing
754the current Emacs process at the end, it starts a new Emacs process 663the current Emacs process at the end, it starts a new Emacs process
@@ -759,66 +668,54 @@ process.
759 668
760** Drag and Drop 669** Drag and Drop
761 670
762+++
763*** New user option 'mouse-drag-mode-line-buffer'. 671*** New user option 'mouse-drag-mode-line-buffer'.
764If non-nil, dragging on the buffer name part of the mode-line will 672If non-nil, dragging on the buffer name part of the mode-line will
765drag the buffer's associated file to other programs. This option is 673drag the buffer's associated file to other programs. This option is
766currently only available on X, Haiku and Nextstep (GNUstep or macOS). 674currently only available on X, Haiku and Nextstep (GNUstep or macOS).
767 675
768+++
769*** New user option 'mouse-drag-and-drop-region-cross-program'. 676*** New user option 'mouse-drag-and-drop-region-cross-program'.
770If non-nil, this option allows dragging text in the region from Emacs 677If non-nil, this option allows dragging text in the region from Emacs
771to another program. 678to another program.
772 679
773---
774*** New user option 'mouse-drag-and-drop-region-scroll-margin'. 680*** New user option 'mouse-drag-and-drop-region-scroll-margin'.
775If non-nil, this option allows scrolling a window while dragging text 681If non-nil, this option allows scrolling a window while dragging text
776around without a scroll wheel. 682around without a scroll wheel.
777 683
778+++
779*** The value of 'mouse-drag-copy-region' can now be the symbol 'non-empty'. 684*** The value of 'mouse-drag-copy-region' can now be the symbol 'non-empty'.
780This prevents mouse drag gestures from putting empty strings onto the 685This prevents mouse drag gestures from putting empty strings onto the
781kill ring. 686kill ring.
782 687
783+++
784*** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'. 688*** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'.
785These options allow adjusting point and scrolling a window when 689These options allow adjusting point and scrolling a window when
786dragging items from another program. 690dragging items from another program.
787 691
788+++
789*** The X Direct Save (XDS) protocol is now supported. 692*** The X Direct Save (XDS) protocol is now supported.
790This means dropping an image or file link from programs such as 693This means dropping an image or file link from programs such as
791Firefox will no longer create a temporary file in a random directory, 694Firefox will no longer create a temporary file in a random directory,
792instead asking you where to save the file first. 695instead asking you where to save the file first.
793 696
794+++
795** New user option 'record-all-keys'. 697** New user option 'record-all-keys'.
796If non-nil, this option will force recording of all input keys, 698If non-nil, this option will force recording of all input keys,
797including those typed in response to passwords prompt (this was the 699including those typed in response to passwords prompt (this was the
798previous behavior). The default is nil, which inhibits recording of 700previous behavior). The default is nil, which inhibits recording of
799passwords. 701passwords.
800 702
801+++
802** New function 'command-query'. 703** New function 'command-query'.
803This function makes its argument command prompt the user for 704This function makes its argument command prompt the user for
804confirmation before executing. 705confirmation before executing.
805 706
806+++
807** The 'disabled' property of a command's symbol can now be a list. 707** The 'disabled' property of a command's symbol can now be a list.
808The first element of the list should be the symbol 'query', which will 708The first element of the list should be the symbol 'query', which will
809cause the command disabled this way prompt the user with a y/n or a 709cause the command disabled this way prompt the user with a y/n or a
810yes/no question before executing. The new function 'command-query' is 710yes/no question before executing. The new function 'command-query' is
811a convenient method of making commands disabled in this way. 711a convenient method of making commands disabled in this way.
812 712
813---
814** 'count-words' will now report buffer totals if given a prefix. 713** 'count-words' will now report buffer totals if given a prefix.
815Without a prefix, it will only report the word count for the narrowed 714Without a prefix, it will only report the word count for the narrowed
816part of the buffer. 715part of the buffer.
817 716
818+++
819** 'count-words' will now report sentence count when used interactively. 717** 'count-words' will now report sentence count when used interactively.
820 718
821+++
822** New user option 'set-message-functions'. 719** New user option 'set-message-functions'.
823It allows more flexible control of how echo-area messages are displayed 720It allows more flexible control of how echo-area messages are displayed
824by adding functions to this list. The default value is a list of one 721by adding functions to this list. The default value is a list of one
@@ -829,29 +726,24 @@ specifying, via 'inhibit-message-regexps', the list of messages whose
829display should be inhibited; and 'set-multi-message' that accumulates 726display should be inhibited; and 'set-multi-message' that accumulates
830recent messages and displays them stacked together. 727recent messages and displays them stacked together.
831 728
832---
833** New user option 'find-library-include-other-files'. 729** New user option 'find-library-include-other-files'.
834If set to nil, commands like 'find-library' will only include library 730If set to nil, commands like 'find-library' will only include library
835files in the completion candidates. The default is t, which preserves 731files in the completion candidates. The default is t, which preserves
836previous behavior, whereby non-library files could also be included. 732previous behavior, whereby non-library files could also be included.
837 733
838+++
839** New command 'sqlite-mode-open-file' for examining an sqlite3 file. 734** New command 'sqlite-mode-open-file' for examining an sqlite3 file.
840This uses the new 'sqlite-mode' which allows listing the tables in a 735This uses the new 'sqlite-mode' which allows listing the tables in a
841DB file, and examining and modifying the columns and the contents of 736DB file, and examining and modifying the columns and the contents of
842those tables. 737those tables.
843 738
844---
845** 'write-file' will now copy some file mode bits. 739** 'write-file' will now copy some file mode bits.
846If the current buffer is visiting a file that is executable, the 740If the current buffer is visiting a file that is executable, the
847'C-x C-w' command will now make the new file executable, too. 741'C-x C-w' command will now make the new file executable, too.
848 742
849+++
850** New user option 'process-error-pause-time'. 743** New user option 'process-error-pause-time'.
851This determines how long to pause Emacs after a process 744This determines how long to pause Emacs after a process
852filter/sentinel error has been handled. 745filter/sentinel error has been handled.
853 746
854+++
855** New faces for font-lock. 747** New faces for font-lock.
856These faces are primarily meant for use with tree-sitter. They are: 748These faces are primarily meant for use with tree-sitter. They are:
857'font-lock-bracket-face', 'font-lock-delimiter-face', 749'font-lock-bracket-face', 'font-lock-delimiter-face',
@@ -861,40 +753,33 @@ These faces are primarily meant for use with tree-sitter. They are:
861'font-lock-property-use-face', 'font-lock-punctuation-face', 753'font-lock-property-use-face', 'font-lock-punctuation-face',
862'font-lock-regexp-face', and 'font-lock-variable-use-face'. 754'font-lock-regexp-face', and 'font-lock-variable-use-face'.
863 755
864+++
865** New face 'variable-pitch-text'. 756** New face 'variable-pitch-text'.
866This face is like 'variable-pitch' (from which it inherits), but is 757This face is like 'variable-pitch' (from which it inherits), but is
867slightly larger, which should help with the visual size differences 758slightly larger, which should help with the visual size differences
868between the default, non-proportional font and proportional fonts when 759between the default, non-proportional font and proportional fonts when
869mixed. 760mixed.
870 761
871+++
872** New face 'mode-line-active'. 762** New face 'mode-line-active'.
873This inherits from the 'mode-line' face, but is the face actually used 763This inherits from the 'mode-line' face, but is the face actually used
874on the mode lines (along with 'mode-line-inactive'). 764on the mode lines (along with 'mode-line-inactive').
875 765
876+++
877** New face attribute pseudo-value 'reset'. 766** New face attribute pseudo-value 'reset'.
878This value stands for the value of the corresponding attribute of the 767This value stands for the value of the corresponding attribute of the
879'default' face. It can be used to reset attribute values produced by 768'default' face. It can be used to reset attribute values produced by
880inheriting from other faces. 769inheriting from other faces.
881 770
882+++
883** New X resource "borderThickness". 771** New X resource "borderThickness".
884This controls the thickness of the external borders of the menu bars 772This controls the thickness of the external borders of the menu bars
885and pop-up menus. 773and pop-up menus.
886 774
887+++
888** New X resource "inputStyle". 775** New X resource "inputStyle".
889This controls the style of the pre-edit and status areas of X input 776This controls the style of the pre-edit and status areas of X input
890methods. 777methods.
891 778
892+++
893** New X resources "highlightForeground" and "highlightBackground". 779** New X resources "highlightForeground" and "highlightBackground".
894Only in the Lucid build, this controls colors used for highlighted 780Only in the Lucid build, this controls colors used for highlighted
895menu item widgets. 781menu item widgets.
896 782
897+++
898** On X, Emacs now tries to synchronize window resize with the window manager. 783** On X, Emacs now tries to synchronize window resize with the window manager.
899This leads to less flicker and empty areas of a frame being displayed 784This leads to less flicker and empty areas of a frame being displayed
900when a frame is being resized. Unfortunately, it does not work on 785when a frame is being resized. Unfortunately, it does not work on
@@ -902,7 +787,6 @@ some ancient buggy window managers, so if Emacs appears to freeze, but
902is still responsive to input, you can turn it off by setting the X 787is still responsive to input, you can turn it off by setting the X
903resource "synchronizeResize" to "off". 788resource "synchronizeResize" to "off".
904 789
905+++
906** On X, Emacs can optionally synchronize display with the graphics hardware. 790** On X, Emacs can optionally synchronize display with the graphics hardware.
907When this is enabled by setting the X resource "synchronizeResize" to 791When this is enabled by setting the X resource "synchronizeResize" to
908"extended", frame content "tearing" is drastically reduced. This is 792"extended", frame content "tearing" is drastically reduced. This is
@@ -914,22 +798,18 @@ https://fishsoup.net/misc/wm-spec-synchronization.html).
914This behavior can be toggled on and off via the frame parameter 798This behavior can be toggled on and off via the frame parameter
915'use-frame-synchronization'. 799'use-frame-synchronization'.
916 800
917+++
918** New frame parameter 'alpha-background' and X resource "alphaBackground". 801** New frame parameter 'alpha-background' and X resource "alphaBackground".
919This controls the opacity of the text background when running on a 802This controls the opacity of the text background when running on a
920composited display. 803composited display.
921 804
922+++
923** New frame parameter 'shaded'. 805** New frame parameter 'shaded'.
924With window managers which support this, it controls whether or not a 806With window managers which support this, it controls whether or not a
925frame's contents will be hidden, leaving only the title bar on display. 807frame's contents will be hidden, leaving only the title bar on display.
926 808
927---
928** New user option 'x-gtk-use-native-input'. 809** New user option 'x-gtk-use-native-input'.
929This controls whether or not GTK input methods are used by Emacs, 810This controls whether or not GTK input methods are used by Emacs,
930instead of XIM input methods. Defaults to nil. 811instead of XIM input methods. Defaults to nil.
931 812
932+++
933** New user option 'use-system-tooltips'. 813** New user option 'use-system-tooltips'.
934This controls whether to use the toolkit tooltips, or Emacs's own 814This controls whether to use the toolkit tooltips, or Emacs's own
935native implementation of tooltips as small frames. This option is 815native implementation of tooltips as small frames. This option is
@@ -938,13 +818,11 @@ support, and defaults to t, which makes Emacs use the toolkit
938tooltips. The existing GTK-specific option 818tooltips. The existing GTK-specific option
939'x-gtk-use-system-tooltips' is now an alias of this new option. 819'x-gtk-use-system-tooltips' is now an alias of this new option.
940 820
941+++
942** Non-native tooltips are now supported on Nextstep. 821** Non-native tooltips are now supported on Nextstep.
943This means Emacs built with GNUstep or built on macOS is now able to 822This means Emacs built with GNUstep or built on macOS is now able to
944display different faces and images inside tooltips when the 823display different faces and images inside tooltips when the
945'use-system-tooltips' user option is nil. 824'use-system-tooltips' user option is nil.
946 825
947---
948** New minor mode 'pixel-scroll-precision-mode'. 826** New minor mode 'pixel-scroll-precision-mode'.
949When enabled, and if your mouse supports it, you can scroll the 827When enabled, and if your mouse supports it, you can scroll the
950display up or down at pixel resolution, according to what your mouse 828display up or down at pixel resolution, according to what your mouse
@@ -954,20 +832,17 @@ scrolls.
954 832
955** Terminal Emacs 833** Terminal Emacs
956 834
957---
958*** Emacs will now use 24-bit colors on terminals that support "Tc" capability. 835*** Emacs will now use 24-bit colors on terminals that support "Tc" capability.
959This is in addition to previously-supported ways of discovering 24-bit 836This is in addition to previously-supported ways of discovering 24-bit
960color support: either via the "RGB" or "setf24" capabilities, or if 837color support: either via the "RGB" or "setf24" capabilities, or if
961the 'COLORTERM' environment variable is set to the value "truecolor". 838the 'COLORTERM' environment variable is set to the value "truecolor".
962 839
963---
964*** Select active regions with xterm selection support. 840*** Select active regions with xterm selection support.
965On terminals with xterm "setSelection" support, the active region may be 841On terminals with xterm "setSelection" support, the active region may be
966saved to the X primary selection, following the 842saved to the X primary selection, following the
967'select-active-regions' variable. This support is enabled when 843'select-active-regions' variable. This support is enabled when
968'tty-select-active-regions' is non-nil. 844'tty-select-active-regions' is non-nil.
969 845
970---
971*** New command to set up display of unsupported characters. 846*** New command to set up display of unsupported characters.
972The new command 'standard-display-by-replacement-char' produces Lisp 847The new command 'standard-display-by-replacement-char' produces Lisp
973code that sets up the 'standard-display-table' to use a replacement 848code that sets up the 'standard-display-table' to use a replacement
@@ -977,7 +852,6 @@ This feature is most useful with the Linux console and similar
977terminals, where Emacs has a reliable way of determining which 852terminals, where Emacs has a reliable way of determining which
978characters have glyphs in the font loaded into the terminal's memory. 853characters have glyphs in the font loaded into the terminal's memory.
979 854
980---
981*** New functions to set terminal output buffer size. 855*** New functions to set terminal output buffer size.
982The new functions 'tty--set-output-buffer-size' and 856The new functions 'tty--set-output-buffer-size' and
983'tty--output-buffer-size' allow setting and retrieving the output 857'tty--output-buffer-size' allow setting and retrieving the output
@@ -989,89 +863,72 @@ at the end of display update.
989 863
990** ERT 864** ERT
991 865
992+++
993*** New ERT variables 'ert-batch-print-length' and 'ert-batch-print-level'. 866*** New ERT variables 'ert-batch-print-length' and 'ert-batch-print-level'.
994These variables will override 'print-length' and 'print-level' when 867These variables will override 'print-length' and 'print-level' when
995printing Lisp values in ERT batch test results. 868printing Lisp values in ERT batch test results.
996 869
997---
998*** Redefining an ERT test in batch mode now signals an error. 870*** Redefining an ERT test in batch mode now signals an error.
999Executing 'ert-deftest' with the same name as an existing test causes 871Executing 'ert-deftest' with the same name as an existing test causes
1000the previous definition to be discarded, which was probably not 872the previous definition to be discarded, which was probably not
1001intended when this occurs in batch mode. To remedy the error, rename 873intended when this occurs in batch mode. To remedy the error, rename
1002tests so that they all have unique names. 874tests so that they all have unique names.
1003 875
1004+++
1005*** ERT can generate JUnit test reports. 876*** ERT can generate JUnit test reports.
1006When environment variable 'EMACS_TEST_JUNIT_REPORT' is set, ERT 877When environment variable 'EMACS_TEST_JUNIT_REPORT' is set, ERT
1007generates a JUnit test report under this file name. This is useful 878generates a JUnit test report under this file name. This is useful
1008for Emacs integration into CI/CD test environments. 879for Emacs integration into CI/CD test environments.
1009 880
1010---
1011*** Unbound test symbols now signal an 'ert-test-unbound' error. 881*** Unbound test symbols now signal an 'ert-test-unbound' error.
1012This affects the 'ert-select-tests' function and its callers. 882This affects the 'ert-select-tests' function and its callers.
1013 883
1014** Emoji 884** Emoji
1015 885
1016+++
1017*** Emacs now has several new methods for inserting Emoji. 886*** Emacs now has several new methods for inserting Emoji.
1018The Emoji commands are under the new 'C-x 8 e' prefix. 887The Emoji commands are under the new 'C-x 8 e' prefix.
1019 888
1020+++
1021*** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i'). 889*** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i').
1022This command guides you through various Emoji categories and 890This command guides you through various Emoji categories and
1023combinations in a graphical menu system. 891combinations in a graphical menu system.
1024 892
1025+++
1026*** New command 'emoji-search' (bound to 'C-x 8 e s'). 893*** New command 'emoji-search' (bound to 'C-x 8 e s').
1027This command lets you search for and insert an Emoji based on names. 894This command lets you search for and insert an Emoji based on names.
1028 895
1029+++
1030*** New command 'emoji-list' (bound to 'C-x 8 e l'). 896*** New command 'emoji-list' (bound to 'C-x 8 e l').
1031This command lists all Emoji (categorized by themes) in a special 897This command lists all Emoji (categorized by themes) in a special
1032buffer and lets you choose one of them to insert. 898buffer and lets you choose one of them to insert.
1033 899
1034---
1035*** New command 'emoji-recent' (bound to 'C-x 8 e r'). 900*** New command 'emoji-recent' (bound to 'C-x 8 e r').
1036This command lets you choose among the Emoji you have recently 901This command lets you choose among the Emoji you have recently
1037inserted and insert it. 902inserted and insert it.
1038 903
1039+++
1040*** New command 'emoji-describe' (bound to 'C-x 8 e d'). 904*** New command 'emoji-describe' (bound to 'C-x 8 e d').
1041This command will tell you the name of the Emoji at point. (It also 905This command will tell you the name of the Emoji at point. (It also
1042works for non-Emoji characters.) 906works for non-Emoji characters.)
1043 907
1044---
1045*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'. 908*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'.
1046These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They 909These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They
1047can be used on any character, but are mainly useful for Emoji. 910can be used on any character, but are mainly useful for Emoji.
1048 911
1049---
1050*** New command 'emoji-zoom-reset'. 912*** New command 'emoji-zoom-reset'.
1051This is bound to 'C-x 8 e 0', and undoes any size changes performed by 913This is bound to 'C-x 8 e 0', and undoes any size changes performed by
1052'emoji-zoom-increase' and 'emoji-zoom-decrease'. 914'emoji-zoom-increase' and 'emoji-zoom-decrease'.
1053 915
1054---
1055*** New input method 'emoji'. 916*** New input method 'emoji'.
1056This allows you to enter Emoji using short strings, eg ':face_palm:' 917This allows you to enter Emoji using short strings, eg ':face_palm:'
1057or ':scream:'. 918or ':scream:'.
1058 919
1059** Help 920** Help
1060 921
1061---
1062*** Variable values displayed by 'C-h v' in "*Help*" are now fontified. 922*** Variable values displayed by 'C-h v' in "*Help*" are now fontified.
1063 923
1064+++
1065*** New user option 'help-clean-buttons'. 924*** New user option 'help-clean-buttons'.
1066If non-nil, link buttons in "*Help*" buffers will have any surrounding 925If non-nil, link buttons in "*Help*" buffers will have any surrounding
1067quotes removed. 926quotes removed.
1068 927
1069---
1070*** 'M-x apropos-variable' output now includes values of variables. 928*** 'M-x apropos-variable' output now includes values of variables.
1071Such an apropos buffer is more easily viewed with outlining after 929Such an apropos buffer is more easily viewed with outlining after
1072enabling 'outline-minor-mode' in 'apropos-mode'. 930enabling 'outline-minor-mode' in 'apropos-mode'.
1073 931
1074+++
1075*** New docstring syntax to indicate that symbols shouldn't be links. 932*** New docstring syntax to indicate that symbols shouldn't be links.
1076When displaying docstrings in "*Help*" buffers, strings that are 933When displaying docstrings in "*Help*" buffers, strings that are
1077"`like-this'" are made into links (if they point to a bound 934"`like-this'" are made into links (if they point to a bound
@@ -1080,12 +937,10 @@ about values that are symbols that happen to have the same names as
1080functions/variables. To inhibit this buttonification, use the new 937functions/variables. To inhibit this buttonification, use the new
1081"\\+`like-this'" syntax. 938"\\+`like-this'" syntax.
1082 939
1083+++
1084*** New user option 'help-window-keep-selected'. 940*** New user option 'help-window-keep-selected'.
1085If non-nil, commands to show the info manual and the source will reuse 941If non-nil, commands to show the info manual and the source will reuse
1086the same window in which the "*Help*" buffer is shown. 942the same window in which the "*Help*" buffer is shown.
1087 943
1088---
1089*** Commands like 'C-h f' have changed how they describe menu bindings. 944*** Commands like 'C-h f' have changed how they describe menu bindings.
1090For instance, previously a command might be described as having the 945For instance, previously a command might be described as having the
1091following bindings: 946following bindings:
@@ -1097,56 +952,45 @@ This has been changed to:
1097 It is bound to <open> and C-x C-f. 952 It is bound to <open> and C-x C-f.
1098 It can also be invoked from the menu: File → Visit New File... 953 It can also be invoked from the menu: File → Visit New File...
1099 954
1100+++
1101*** The 'C-h .' command now accepts a prefix argument. 955*** The 'C-h .' command now accepts a prefix argument.
1102'C-u C-h .' would previously inhibit displaying a warning message if 956'C-u C-h .' would previously inhibit displaying a warning message if
1103there was no local help at point. This has been changed to call 957there was no local help at point. This has been changed to call
1104'button-describe'/'widget-describe' and display button/widget help 958'button-describe'/'widget-describe' and display button/widget help
1105instead. 959instead.
1106 960
1107---
1108*** New user option 'help-enable-variable-value-editing'. 961*** New user option 'help-enable-variable-value-editing'.
1109If enabled, 'e' on a value in "*Help*" will pop you to a new buffer 962If enabled, 'e' on a value in "*Help*" will pop you to a new buffer
1110where you can edit the value. This is not enabled by default, because 963where you can edit the value. This is not enabled by default, because
1111it is easy to make an edit that yields an invalid result. 964it is easy to make an edit that yields an invalid result.
1112 965
1113---
1114*** 'C-h b' uses outlining by default. 966*** 'C-h b' uses outlining by default.
1115Set 'describe-bindings-outline' to nil to get back the old behavior. 967Set 'describe-bindings-outline' to nil to get back the old behavior.
1116 968
1117---
1118*** Jumping to function/variable source now saves mark before moving point. 969*** Jumping to function/variable source now saves mark before moving point.
1119Jumping to source from a "*Help*" buffer moves point when the source 970Jumping to source from a "*Help*" buffer moves point when the source
1120buffer is already open. Now, the old point is pushed onto mark ring. 971buffer is already open. Now, the old point is pushed onto mark ring.
1121 972
1122+++
1123*** New key bindings in "*Help*" buffers: 'n' and 'p'. 973*** New key bindings in "*Help*" buffers: 'n' and 'p'.
1124These will take you (respectively) to the next and previous "page". 974These will take you (respectively) to the next and previous "page".
1125 975
1126---
1127*** 'describe-char' now also outputs the name of Emoji sequences. 976*** 'describe-char' now also outputs the name of Emoji sequences.
1128 977
1129+++
1130*** New key binding in "*Help*" buffer: 'I'. 978*** New key binding in "*Help*" buffer: 'I'.
1131This will take you to the Emacs Lisp manual entry for the item 979This will take you to the Emacs Lisp manual entry for the item
1132displayed, if any. 980displayed, if any.
1133 981
1134---
1135*** The 'C-h m' ('describe-mode') "*Help*" buffer has been reformatted. 982*** The 'C-h m' ('describe-mode') "*Help*" buffer has been reformatted.
1136It now only includes local minor modes at the start, and the global 983It now only includes local minor modes at the start, and the global
1137minor modes are listed after the major mode. 984minor modes are listed after the major mode.
1138 985
1139+++
1140*** The user option 'help-window-select' now affects apropos commands. 986*** The user option 'help-window-select' now affects apropos commands.
1141The apropos commands will now select the apropos window if 987The apropos commands will now select the apropos window if
1142'help-window-select' is non-nil. 988'help-window-select' is non-nil.
1143 989
1144---
1145*** 'describe-keymap' now considers the symbol at point. 990*** 'describe-keymap' now considers the symbol at point.
1146If the symbol at point is a keymap, 'describe-keymap' suggests it as 991If the symbol at point is a keymap, 'describe-keymap' suggests it as
1147the default candidate. 992the default candidate.
1148 993
1149---
1150*** New command 'help-quick' displays an overview of common commands. 994*** New command 'help-quick' displays an overview of common commands.
1151The command pops up a buffer at the bottom of the screen with a few 995The command pops up a buffer at the bottom of the screen with a few
1152helpful commands for various tasks. You can toggle the display using 996helpful commands for various tasks. You can toggle the display using
@@ -1157,7 +1001,6 @@ See the file "etc/ORG-NEWS" for user-visible changes in Org.
1157 1001
1158** Outline Mode 1002** Outline Mode
1159 1003
1160+++
1161*** Support for customizing the default visibility state of headings. 1004*** Support for customizing the default visibility state of headings.
1162Customize the user option 'outline-default-state' to define what 1005Customize the user option 'outline-default-state' to define what
1163headings will be visible initially, after Outline mode is turned on. 1006headings will be visible initially, after Outline mode is turned on.
@@ -1169,7 +1012,6 @@ subtree has long lines or is itself too long.
1169 1012
1170** Outline Minor Mode 1013** Outline Minor Mode
1171 1014
1172+++
1173*** New user option 'outline-minor-mode-use-buttons'. 1015*** New user option 'outline-minor-mode-use-buttons'.
1174If non-nil, Outline Minor Mode will use buttons to hide/show outlines 1016If non-nil, Outline Minor Mode will use buttons to hide/show outlines
1175in addition to the ellipsis. The default is nil, but in 'help-mode' 1017in addition to the ellipsis. The default is nil, but in 'help-mode'
@@ -1178,7 +1020,6 @@ buffer, and you can use 'RET' to cycle outline visibility. When
1178the value is 'in-margins', Outline Minor Mode uses the window margins 1020the value is 'in-margins', Outline Minor Mode uses the window margins
1179for buttons that hide/show outlines. 1021for buttons that hide/show outlines.
1180 1022
1181+++
1182*** Buttons and headings now have their own keymaps. 1023*** Buttons and headings now have their own keymaps.
1183'outline-button-icon-map', 'outline-overlay-button-map', and 1024'outline-button-icon-map', 'outline-overlay-button-map', and
1184'outline-inserted-button-map' are now available as defined keymaps 1025'outline-inserted-button-map' are now available as defined keymaps
@@ -1186,19 +1027,16 @@ instead of being anonymous keymaps.
1186 1027
1187** Windows 1028** Windows
1188 1029
1189+++
1190*** New commands 'split-root-window-below' and 'split-root-window-right'. 1030*** New commands 'split-root-window-below' and 'split-root-window-right'.
1191These commands split the root window in two, and are bound to 'C-x w 2' 1031These commands split the root window in two, and are bound to 'C-x w 2'
1192and 'C-x w 3', respectively. A number of other useful window-related 1032and 'C-x w 3', respectively. A number of other useful window-related
1193commands are now available with key sequences that start with the 1033commands are now available with key sequences that start with the
1194'C-x w' prefix. 1034'C-x w' prefix.
1195 1035
1196+++
1197*** New display action 'display-buffer-full-frame'. 1036*** New display action 'display-buffer-full-frame'.
1198This action removes other windows from the frame when displaying a 1037This action removes other windows from the frame when displaying a
1199buffer on that frame. 1038buffer on that frame.
1200 1039
1201+++
1202*** 'display-buffer' now can set up the body size of the chosen window. 1040*** 'display-buffer' now can set up the body size of the chosen window.
1203For example, a 'display-buffer-alist' entry of 1041For example, a 'display-buffer-alist' entry of
1204 1042
@@ -1207,35 +1045,29 @@ For example, a 'display-buffer-alist' entry of
1207will make the body of the chosen window 40 columns wide. For the 1045will make the body of the chosen window 40 columns wide. For the
1208height use 'window-height' and 'body-lines', respectively. 1046height use 'window-height' and 'body-lines', respectively.
1209 1047
1210+++
1211*** 'display-buffer' provides more options for using an existing window. 1048*** 'display-buffer' provides more options for using an existing window.
1212The display buffer action functions 'display-buffer-use-some-window' and 1049The display buffer action functions 'display-buffer-use-some-window' and
1213'display-buffer-use-least-recent-window' now honor the action alist 1050'display-buffer-use-least-recent-window' now honor the action alist
1214entry 'window-min-height' as well as the entries listed below to make 1051entry 'window-min-height' as well as the entries listed below to make
1215the display of several buffers in a row more amenable. 1052the display of several buffers in a row more amenable.
1216 1053
1217+++
1218*** New buffer display action alist entry 'lru-frames'. 1054*** New buffer display action alist entry 'lru-frames'.
1219This allows specifying which frames 'display-buffer' should consider 1055This allows specifying which frames 'display-buffer' should consider
1220when using a window that shows another buffer. It is interpreted as 1056when using a window that shows another buffer. It is interpreted as
1221per the ALL-FRAMES argument of 'get-lru-window'. 1057per the ALL-FRAMES argument of 'get-lru-window'.
1222 1058
1223+++
1224*** New buffer display action alist entry 'lru-time'. 1059*** New buffer display action alist entry 'lru-time'.
1225'display-buffer' will ignore windows with a use time higher than this 1060'display-buffer' will ignore windows with a use time higher than this
1226when using a window that shows another buffer. 1061when using a window that shows another buffer.
1227 1062
1228+++
1229*** New buffer display action alist entry 'bump-use-time'. 1063*** New buffer display action alist entry 'bump-use-time'.
1230This has 'display-buffer' bump the use time of any window it returns, 1064This has 'display-buffer' bump the use time of any window it returns,
1231making it a less likely candidate for displaying another buffer. 1065making it a less likely candidate for displaying another buffer.
1232 1066
1233+++
1234*** New buffer display action alist entry 'window-min-width'. 1067*** New buffer display action alist entry 'window-min-width'.
1235This allows specifying a preferred minimum width of the window used to 1068This allows specifying a preferred minimum width of the window used to
1236display a buffer. 1069display a buffer.
1237 1070
1238---
1239*** You can specify on which window 'scroll-other-window' operates. 1071*** You can specify on which window 'scroll-other-window' operates.
1240This is controlled by the new 'other-window-scroll-default' variable, 1072This is controlled by the new 'other-window-scroll-default' variable,
1241which should be set to a function that returns a window. When this 1073which should be set to a function that returns a window. When this
@@ -1243,7 +1075,6 @@ variable is nil, 'next-window' is used.
1243 1075
1244** Frames 1076** Frames
1245 1077
1246+++
1247*** Deleted frames can now be undeleted. 1078*** Deleted frames can now be undeleted.
1248The 16 most recently deleted frames can be undeleted with 'C-x 5 u' when 1079The 16 most recently deleted frames can be undeleted with 'C-x 5 u' when
1249'undelete-frame-mode' is enabled. Without a prefix argument, undelete 1080'undelete-frame-mode' is enabled. Without a prefix argument, undelete
@@ -1251,7 +1082,6 @@ the most recently deleted frame. With a numerical prefix argument
1251between 1 and 16, where 1 is the most recently deleted frame, undelete 1082between 1 and 16, where 1 is the most recently deleted frame, undelete
1252the corresponding deleted frame. 1083the corresponding deleted frame.
1253 1084
1254+++
1255*** The variable 'icon-title-format' can now have the value t. 1085*** The variable 'icon-title-format' can now have the value t.
1256That value means to use 'frame-title-format' for iconified frames. 1086That value means to use 'frame-title-format' for iconified frames.
1257This is useful with some window managers and desktop environments 1087This is useful with some window managers and desktop environments
@@ -1261,24 +1091,20 @@ same no matter if the frame is iconified or not.
1261 1091
1262** Tab Bars and Tab Lines 1092** Tab Bars and Tab Lines
1263 1093
1264---
1265*** New user option 'tab-bar-auto-width' to automatically determine tab width. 1094*** New user option 'tab-bar-auto-width' to automatically determine tab width.
1266This option is non-nil by default, which resizes tab-bar tabs so that 1095This option is non-nil by default, which resizes tab-bar tabs so that
1267their width is evenly distributed across the tab bar. A companion 1096their width is evenly distributed across the tab bar. A companion
1268option 'tab-bar-auto-width-max' controls the maximum width of a tab 1097option 'tab-bar-auto-width-max' controls the maximum width of a tab
1269before its name on display is truncated. 1098before its name on display is truncated.
1270 1099
1271---
1272*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist. 1100*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist.
1273It prompts for the name of a tab and switches to it, creating a new 1101It prompts for the name of a tab and switches to it, creating a new
1274tab if no tab exists by that name. 1102tab if no tab exists by that name.
1275 1103
1276---
1277*** New keymap 'tab-bar-history-mode-map'. 1104*** New keymap 'tab-bar-history-mode-map'.
1278By default, it contains 'C-c <left>' and 'C-c <right>' to browse 1105By default, it contains 'C-c <left>' and 'C-c <right>' to browse
1279the history of tab window configurations back and forward. 1106the history of tab window configurations back and forward.
1280 1107
1281---
1282** Better detection of text suspiciously reordered on display. 1108** Better detection of text suspiciously reordered on display.
1283The function 'bidi-find-overridden-directionality' has been extended 1109The function 'bidi-find-overridden-directionality' has been extended
1284to detect reordering effects produced by embeddings and isolates 1110to detect reordering effects produced by embeddings and isolates
@@ -1289,17 +1115,14 @@ suspicious and could be malicious.
1289 1115
1290** Emacs Server and Client 1116** Emacs Server and Client
1291 1117
1292+++
1293*** New command-line option '-r'/'--reuse-frame' for emacsclient. 1118*** New command-line option '-r'/'--reuse-frame' for emacsclient.
1294With this command-line option, Emacs reuses an existing graphical client 1119With this command-line option, Emacs reuses an existing graphical client
1295frame if one exists; otherwise it creates a new frame. 1120frame if one exists; otherwise it creates a new frame.
1296 1121
1297+++
1298*** New command-line option '-w N'/'--timeout=N' for emacsclient. 1122*** New command-line option '-w N'/'--timeout=N' for emacsclient.
1299With this command-line option, emacsclient will exit if Emacs does not 1123With this command-line option, emacsclient will exit if Emacs does not
1300respond within N seconds. The default is to wait forever. 1124respond within N seconds. The default is to wait forever.
1301 1125
1302+++
1303*** 'server-stop-automatically' can be used to automatically stop the server. 1126*** 'server-stop-automatically' can be used to automatically stop the server.
1304The Emacs server will be automatically stopped when certain conditions 1127The Emacs server will be automatically stopped when certain conditions
1305are met. The conditions are determined by the argument to 1128are met. The conditions are determined by the argument to
@@ -1308,17 +1131,14 @@ are met. The conditions are determined by the argument to
1308 1131
1309** Rcirc 1132** Rcirc
1310 1133
1311+++
1312*** New command 'rcirc-when'. 1134*** New command 'rcirc-when'.
1313This shows the reception time of the message at point (if available). 1135This shows the reception time of the message at point (if available).
1314 1136
1315+++
1316*** New user option 'rcirc-cycle-completion-flag'. 1137*** New user option 'rcirc-cycle-completion-flag'.
1317Rcirc now uses the default 'completion-at-point' mechanism. The 1138Rcirc now uses the default 'completion-at-point' mechanism. The
1318conventional IRC behavior of completing by cycling through the 1139conventional IRC behavior of completing by cycling through the
1319available options can be restored by enabling this option. 1140available options can be restored by enabling this option.
1320 1141
1321+++
1322*** New user option 'rcirc-bridge-bot-alist'. 1142*** New user option 'rcirc-bridge-bot-alist'.
1323If you are in a channel where a bot is responsible for bridging 1143If you are in a channel where a bot is responsible for bridging
1324between networks, you can use this variable to make these messages 1144between networks, you can use this variable to make these messages
@@ -1334,7 +1154,6 @@ to be reformatted into
1334 1154
1335 09:47 <john> I am not on IRC 1155 09:47 <john> I am not on IRC
1336 1156
1337---
1338*** New formatting commands. 1157*** New formatting commands.
1339Most IRC clients (including rcirc) support basic formatting using 1158Most IRC clients (including rcirc) support basic formatting using
1340control codes. Under the 'C-c C-f' prefix a few commands have been 1159control codes. Under the 'C-c C-f' prefix a few commands have been
@@ -1344,15 +1163,12 @@ to be highlighted in bold.
1344 1163
1345** Imenu 1164** Imenu
1346 1165
1347+++
1348*** 'imenu' is now bound to 'M-g i' globally. 1166*** 'imenu' is now bound to 'M-g i' globally.
1349 1167
1350---
1351*** New function 'imenu-flush-cache'. 1168*** New function 'imenu-flush-cache'.
1352Use it if you want Imenu to forget the buffer's index alist and 1169Use it if you want Imenu to forget the buffer's index alist and
1353recreate it anew next time 'imenu' is invoked. 1170recreate it anew next time 'imenu' is invoked.
1354 1171
1355---
1356** Emacs is now capable of abandoning a window's redisplay that takes too long. 1172** Emacs is now capable of abandoning a window's redisplay that takes too long.
1357This is controlled by the new variable 'max-redisplay-ticks'. If that 1173This is controlled by the new variable 'max-redisplay-ticks'. If that
1358variable is set to a non-zero value, display of a window will be 1174variable is set to a non-zero value, display of a window will be
@@ -1366,19 +1182,16 @@ lines.)
1366 1182
1367* Editing Changes in Emacs 29.1 1183* Editing Changes in Emacs 29.1
1368 1184
1369+++
1370** 'M-SPC' is now bound to 'cycle-spacing'. 1185** 'M-SPC' is now bound to 'cycle-spacing'.
1371Formerly it invoked 'just-one-space'. The actions performed by 1186Formerly it invoked 'just-one-space'. The actions performed by
1372'cycle-spacing' and their order can now be customized via the user 1187'cycle-spacing' and their order can now be customized via the user
1373option 'cycle-spacing-actions'. 1188option 'cycle-spacing-actions'.
1374 1189
1375---
1376** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars. 1190** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars.
1377These commands now behave as case-sensitive for interactive calls when 1191These commands now behave as case-sensitive for interactive calls when
1378they are invoked with an uppercase character, regardless of the value 1192they are invoked with an uppercase character, regardless of the value
1379of 'case-fold-search'. 1193of 'case-fold-search'.
1380 1194
1381---
1382** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping. 1195** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping.
1383These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other 1196These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other
1384windows without looking at customizations in that other window. These 1197windows without looking at customizations in that other window. These
@@ -1387,7 +1200,6 @@ in that other window, and then call the remapped function instead. In
1387addition, these commands now also respect the 1200addition, these commands now also respect the
1388'scroll-error-top-bottom' user option. 1201'scroll-error-top-bottom' user option.
1389 1202
1390---
1391** Indentation of 'cl-flet' and 'cl-labels' has changed. 1203** Indentation of 'cl-flet' and 'cl-labels' has changed.
1392These forms now indent like this: 1204These forms now indent like this:
1393 1205
@@ -1398,32 +1210,26 @@ These forms now indent like this:
1398This change also affects 'cl-macrolet', 'cl-flet*' and 1210This change also affects 'cl-macrolet', 'cl-flet*' and
1399'cl-symbol-macrolet'. 1211'cl-symbol-macrolet'.
1400 1212
1401+++
1402** New user option 'translate-upper-case-key-bindings'. 1213** New user option 'translate-upper-case-key-bindings'.
1403Set this option to nil to inhibit the default translation of upper 1214Set this option to nil to inhibit the default translation of upper
1404case keys to their lower case variants. 1215case keys to their lower case variants.
1405 1216
1406+++
1407** New command 'ensure-empty-lines'. 1217** New command 'ensure-empty-lines'.
1408This command increases (or decreases) the number of empty lines before 1218This command increases (or decreases) the number of empty lines before
1409point. 1219point.
1410 1220
1411---
1412** Improved mouse behavior with auto-scrolling modes. 1221** Improved mouse behavior with auto-scrolling modes.
1413When clicking inside the 'scroll-margin' or 'hscroll-margin' region, 1222When clicking inside the 'scroll-margin' or 'hscroll-margin' region,
1414point is now moved only when releasing the mouse button. This no 1223point is now moved only when releasing the mouse button. This no
1415longer results in a bogus selection, unless the mouse has also been 1224longer results in a bogus selection, unless the mouse has also been
1416dragged. 1225dragged.
1417 1226
1418+++
1419** 'kill-ring-max' now defaults to 120. 1227** 'kill-ring-max' now defaults to 120.
1420 1228
1421---
1422** New user option 'yank-menu-max-items'. 1229** New user option 'yank-menu-max-items'.
1423Customize this option to limit the number of entries in the menu 1230Customize this option to limit the number of entries in the menu
1424"Edit → Paste from Kill Menu". The default is 60. 1231"Edit → Paste from Kill Menu". The default is 60.
1425 1232
1426---
1427** New user option 'copy-region-blink-predicate'. 1233** New user option 'copy-region-blink-predicate'.
1428By default, when copying a region with 'kill-ring-save', Emacs only 1234By default, when copying a region with 'kill-ring-save', Emacs only
1429blinks point and mark when the region is not denoted visually, that 1235blinks point and mark when the region is not denoted visually, that
@@ -1435,12 +1241,10 @@ this user option to 'always'. To disable blinking unconditionally,
1435either set this option to 'ignore', or set 'copy-region-blink-delay' 1241either set this option to 'ignore', or set 'copy-region-blink-delay'
1436to 0. 1242to 0.
1437 1243
1438+++
1439** Performing a pinch gesture on a touchpad now increases the text scale. 1244** Performing a pinch gesture on a touchpad now increases the text scale.
1440 1245
1441** Show Paren Mode 1246** Show Paren Mode
1442 1247
1443+++
1444*** New user option 'show-paren-context-when-offscreen'. 1248*** New user option 'show-paren-context-when-offscreen'.
1445When non-nil, if the point is in a closing delimiter and the opening 1249When non-nil, if the point is in a closing delimiter and the opening
1446delimiter is offscreen, shows some context around the opening 1250delimiter is offscreen, shows some context around the opening
@@ -1454,19 +1258,16 @@ echo area.
1454 1258
1455** Comint 1259** Comint
1456 1260
1457+++
1458*** 'comint-term-environment' is now aware of connection-local variables. 1261*** 'comint-term-environment' is now aware of connection-local variables.
1459The user option 'comint-terminfo-terminal' and the variable 1262The user option 'comint-terminfo-terminal' and the variable
1460'system-uses-terminfo' can now be set as connection-local variables to 1263'system-uses-terminfo' can now be set as connection-local variables to
1461change the terminal used on a remote host. 1264change the terminal used on a remote host.
1462 1265
1463---
1464*** New user option 'comint-delete-old-input'. 1266*** New user option 'comint-delete-old-input'.
1465When nil, this prevents comint from deleting the current input when 1267When nil, this prevents comint from deleting the current input when
1466inserting previous input using '<mouse-2>'. The default is t, to 1268inserting previous input using '<mouse-2>'. The default is t, to
1467preserve previous behavior. 1269preserve previous behavior.
1468 1270
1469---
1470*** New minor mode 'comint-fontify-input-mode'. 1271*** New minor mode 'comint-fontify-input-mode'.
1471This minor mode is enabled by default in "*shell*" and "*ielm*" 1272This minor mode is enabled by default in "*shell*" and "*ielm*"
1472buffers. It fontifies input text according to 'shell-mode' or 1273buffers. It fontifies input text according to 'shell-mode' or
@@ -1476,7 +1277,6 @@ you don't want to enable input fontification by default.
1476 1277
1477** Mwheel 1278** Mwheel
1478 1279
1479---
1480*** New user options for alternate wheel events. 1280*** New user options for alternate wheel events.
1481The user options 'mouse-wheel-down-alternate-event' and 1281The user options 'mouse-wheel-down-alternate-event' and
1482'mouse-wheel-up-alternate-event' as well as the variables 1282'mouse-wheel-up-alternate-event' as well as the variables
@@ -1486,19 +1286,16 @@ systems where two kinds of wheel events can be received.
1486 1286
1487** Internationalization 1287** Internationalization
1488 1288
1489---
1490*** The '<Delete>' function key now allows deleting the entire composed sequence. 1289*** The '<Delete>' function key now allows deleting the entire composed sequence.
1491For the details, see the item about the 'delete-forward-char' command 1290For the details, see the item about the 'delete-forward-char' command
1492above. 1291above.
1493 1292
1494---
1495*** New user option 'composition-break-at-point'. 1293*** New user option 'composition-break-at-point'.
1496Setting it to a non-nil value temporarily disables automatic 1294Setting it to a non-nil value temporarily disables automatic
1497composition of character sequences at point, and thus makes it easier 1295composition of character sequences at point, and thus makes it easier
1498to edit such sequences by allowing point to "enter" the composed 1296to edit such sequences by allowing point to "enter" the composed
1499sequence. 1297sequence.
1500 1298
1501---
1502*** Support for many old scripts and writing systems. 1299*** Support for many old scripts and writing systems.
1503Emacs now supports, and has language-environments and input methods, 1300Emacs now supports, and has language-environments and input methods,
1504for several dozens of old scripts that were used in the past for 1301for several dozens of old scripts that were used in the past for
@@ -1573,48 +1370,39 @@ environments are:
1573 1370
1574 Mongolian-cyrillic language environment 1371 Mongolian-cyrillic language environment
1575 1372
1576---
1577*** The "Oriya" language environment was renamed to "Odia". 1373*** The "Oriya" language environment was renamed to "Odia".
1578This is to follow the change in the official name of the script. The 1374This is to follow the change in the official name of the script. The
1579'oriya' input method was also renamed to 'odia'. However, the old 1375'oriya' input method was also renamed to 'odia'. However, the old
1580name of the language environment and the input method are still 1376name of the language environment and the input method are still
1581supported. 1377supported.
1582 1378
1583---
1584*** New Greek translation of the Emacs tutorial. 1379*** New Greek translation of the Emacs tutorial.
1585Type 'C-u C-h t' to select it in case your language setup does not do 1380Type 'C-u C-h t' to select it in case your language setup does not do
1586so automatically. 1381so automatically.
1587 1382
1588---
1589*** New Ukrainian translation of the Emacs tutorial. 1383*** New Ukrainian translation of the Emacs tutorial.
1590 1384
1591---
1592*** New Farsi/Persian translation of the Emacs tutorial. 1385*** New Farsi/Persian translation of the Emacs tutorial.
1593 1386
1594---
1595*** New default phonetic input method for the Tamil language environment. 1387*** New default phonetic input method for the Tamil language environment.
1596The default input method for the Tamil language environment is now 1388The default input method for the Tamil language environment is now
1597"tamil-phonetic" which is a customizable phonetic input method. To 1389"tamil-phonetic" which is a customizable phonetic input method. To
1598change the input method's translation rules, customize the user option 1390change the input method's translation rules, customize the user option
1599'tamil-translation-rules'. 1391'tamil-translation-rules'.
1600 1392
1601---
1602*** New 'tamil99' input method for the Tamil language. 1393*** New 'tamil99' input method for the Tamil language.
1603This supports the keyboard layout specifically designed for the Tamil 1394This supports the keyboard layout specifically designed for the Tamil
1604language. 1395language.
1605 1396
1606---
1607*** New input method 'slovak-qwerty'. 1397*** New input method 'slovak-qwerty'.
1608This is a variant of the 'slovak' input method, which corresponds to 1398This is a variant of the 'slovak' input method, which corresponds to
1609the QWERTY Slovak keyboards. 1399the QWERTY Slovak keyboards.
1610 1400
1611---
1612*** New input method 'cyrillic-chuvash'. 1401*** New input method 'cyrillic-chuvash'.
1613This input method is based on the russian-computer input method, and 1402This input method is based on the russian-computer input method, and
1614is intended for typing in the Chuvash language written in the Cyrillic 1403is intended for typing in the Chuvash language written in the Cyrillic
1615script. 1404script.
1616 1405
1617---
1618*** New input method 'cyrillic-mongolian'. 1406*** New input method 'cyrillic-mongolian'.
1619This input method is for typing in the Mongolian language using the 1407This input method is for typing in the Mongolian language using the
1620Cyrillic script. It is the default input method for the new 1408Cyrillic script. It is the default input method for the new
@@ -1625,23 +1413,19 @@ Mongolian-cyrillic language environment, see above.
1625 1413
1626** Ecomplete 1414** Ecomplete
1627 1415
1628---
1629*** New commands 'ecomplete-edit' and 'ecomplete-remove'. 1416*** New commands 'ecomplete-edit' and 'ecomplete-remove'.
1630These allow you to (respectively) edit and bulk-remove entries from 1417These allow you to (respectively) edit and bulk-remove entries from
1631the ecomplete database. 1418the ecomplete database.
1632 1419
1633---
1634*** New user option 'ecomplete-auto-select'. 1420*** New user option 'ecomplete-auto-select'.
1635If non-nil and there's only one matching option, auto-select that. 1421If non-nil and there's only one matching option, auto-select that.
1636 1422
1637---
1638*** New user option 'ecomplete-filter-regexp'. 1423*** New user option 'ecomplete-filter-regexp'.
1639If non-nil, this user option describes what entries not to add to the 1424If non-nil, this user option describes what entries not to add to the
1640database stored on disk. 1425database stored on disk.
1641 1426
1642** Auth Source 1427** Auth Source
1643 1428
1644+++
1645*** New user option 'auth-source-pass-extra-query-keywords'. 1429*** New user option 'auth-source-pass-extra-query-keywords'.
1646Whether to recognize additional keyword params, like ':max' and 1430Whether to recognize additional keyword params, like ':max' and
1647':require', as well as accept lists of query terms paired with 1431':require', as well as accept lists of query terms paired with
@@ -1650,13 +1434,11 @@ unique to auth-source-pass, such as wildcard subdomain matching.
1650 1434
1651** Dired 1435** Dired
1652 1436
1653+++
1654*** 'dired-guess-shell-command' moved from dired-x to dired. 1437*** 'dired-guess-shell-command' moved from dired-x to dired.
1655This means that 'dired-do-shell-command' will now provide smarter 1438This means that 'dired-do-shell-command' will now provide smarter
1656defaults without first having to require 'dired-x'. See the node 1439defaults without first having to require 'dired-x'. See the node
1657"(emacs) Shell Command Guessing" in the Emacs manual for more details. 1440"(emacs) Shell Command Guessing" in the Emacs manual for more details.
1658 1441
1659---
1660*** 'dired-clean-up-buffers-too' moved from dired-x to dired. 1442*** 'dired-clean-up-buffers-too' moved from dired-x to dired.
1661This means that Dired now offers to kill buffers visiting files and 1443This means that Dired now offers to kill buffers visiting files and
1662dirs when they are deleted in Dired. Before, you had to require 1444dirs when they are deleted in Dired. Before, you had to require
@@ -1665,20 +1447,16 @@ customize the user option 'dired-clean-up-buffers-too' to nil. The
1665related user option 'dired-clean-confirm-killing-deleted-buffers' 1447related user option 'dired-clean-confirm-killing-deleted-buffers'
1666(which see) has also been moved to 'dired'. 1448(which see) has also been moved to 'dired'.
1667 1449
1668+++
1669*** 'dired-do-relsymlink' moved from dired-x to dired. 1450*** 'dired-do-relsymlink' moved from dired-x to dired.
1670The corresponding key 'Y' is now bound by default in Dired. 1451The corresponding key 'Y' is now bound by default in Dired.
1671 1452
1672+++
1673*** 'dired-do-relsymlink-regexp' moved from dired-x to dired. 1453*** 'dired-do-relsymlink-regexp' moved from dired-x to dired.
1674The corresponding key sequence '% Y' is now bound by default in Dired. 1454The corresponding key sequence '% Y' is now bound by default in Dired.
1675 1455
1676---
1677*** 'M-G' is now bound to 'dired-goto-subdir'. 1456*** 'M-G' is now bound to 'dired-goto-subdir'.
1678Before, that binding was only available if the dired-x package was 1457Before, that binding was only available if the dired-x package was
1679loaded. 1458loaded.
1680 1459
1681+++
1682*** 'dired-info' and 'dired-man' moved from dired-x to dired. 1460*** 'dired-info' and 'dired-man' moved from dired-x to dired.
1683The 'dired-info' and 'dired-man' commands have been moved from the 1461The 'dired-info' and 'dired-man' commands have been moved from the
1684dired-x package to dired. They have also been renamed to 1462dired-x package to dired. They have also been renamed to
@@ -1696,29 +1474,24 @@ the following to your Init file:
1696 (keymap-set dired-mode-map "N" nil) 1474 (keymap-set dired-mode-map "N" nil)
1697 (keymap-set dired-mode-map "I" nil)) 1475 (keymap-set dired-mode-map "I" nil))
1698 1476
1699---
1700*** New command 'dired-do-eww'. 1477*** New command 'dired-do-eww'.
1701This command visits the file on the current line with EWW. 1478This command visits the file on the current line with EWW.
1702 1479
1703---
1704*** 'browse-url-of-dired-file' can now call the secondary browser. 1480*** 'browse-url-of-dired-file' can now call the secondary browser.
1705When invoked with a prefix arg, this will now call 1481When invoked with a prefix arg, this will now call
1706'browse-url-secondary-browser-function' instead of the default 1482'browse-url-secondary-browser-function' instead of the default
1707browser. 'browse-url-of-dired-file' is bound to 'W' by default in 1483browser. 'browse-url-of-dired-file' is bound to 'W' by default in
1708dired mode. 1484dired mode.
1709 1485
1710---
1711*** New user option 'dired-omit-lines'. 1486*** New user option 'dired-omit-lines'.
1712This is used by 'dired-omit-mode', and now allows you to hide based on 1487This is used by 'dired-omit-mode', and now allows you to hide based on
1713other things than just the file names. 1488other things than just the file names.
1714 1489
1715+++
1716*** New user option 'dired-mouse-drag-files'. 1490*** New user option 'dired-mouse-drag-files'.
1717If non-nil, dragging file names with the mouse in a Dired buffer will 1491If non-nil, dragging file names with the mouse in a Dired buffer will
1718initiate a drag-and-drop session allowing them to be opened in other 1492initiate a drag-and-drop session allowing them to be opened in other
1719programs. 1493programs.
1720 1494
1721+++
1722*** New user option 'dired-free-space'. 1495*** New user option 'dired-free-space'.
1723Dired will now, by default, include the free space in the first line 1496Dired will now, by default, include the free space in the first line
1724instead of having it on a separate line. To get the previous behavior 1497instead of having it on a separate line. To get the previous behavior
@@ -1726,13 +1499,11 @@ back, say:
1726 1499
1727 (setopt dired-free-space 'separate) 1500 (setopt dired-free-space 'separate)
1728 1501
1729---
1730*** New user option 'dired-make-directory-clickable'. 1502*** New user option 'dired-make-directory-clickable'.
1731If non-nil (which is the default), hitting 'RET' or 'mouse-1' on 1503If non-nil (which is the default), hitting 'RET' or 'mouse-1' on
1732the directory components at the directory displayed at the start of 1504the directory components at the directory displayed at the start of
1733the buffer will take you to that directory. 1505the buffer will take you to that directory.
1734 1506
1735---
1736*** Search and replace in Dired/Wdired supports more regexps. 1507*** Search and replace in Dired/Wdired supports more regexps.
1737For example, the regexp ".*" will match only characters that are part 1508For example, the regexp ".*" will match only characters that are part
1738of the file name. Also "^.*$" can be used to match at the beginning 1509of the file name. Also "^.*$" can be used to match at the beginning
@@ -1743,31 +1514,26 @@ default).
1743 1514
1744** Elisp 1515** Elisp
1745 1516
1746---
1747*** New command 'elisp-eval-region-or-buffer' (bound to 'C-c C-e'). 1517*** New command 'elisp-eval-region-or-buffer' (bound to 'C-c C-e').
1748This command evals the forms in the active region or in the whole buffer. 1518This command evals the forms in the active region or in the whole buffer.
1749 1519
1750---
1751*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'. 1520*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'.
1752These commands (bound to 'C-c C-f' and 'C-c C-b', respectively) 1521These commands (bound to 'C-c C-f' and 'C-c C-b', respectively)
1753byte-compile the visited file and the current buffer, respectively. 1522byte-compile the visited file and the current buffer, respectively.
1754 1523
1755** Games 1524** Games
1756 1525
1757---
1758*** New user option 'tetris-allow-repetitions'. 1526*** New user option 'tetris-allow-repetitions'.
1759This controls how randomness is implemented (whether to use pure 1527This controls how randomness is implemented (whether to use pure
1760randomness as before, or to use a bag). 1528randomness as before, or to use a bag).
1761 1529
1762** Battery 1530** Battery
1763 1531
1764+++
1765*** New user option 'battery-update-functions'. 1532*** New user option 'battery-update-functions'.
1766This can be used to trigger actions based on the battery status. 1533This can be used to trigger actions based on the battery status.
1767 1534
1768** DocView 1535** DocView
1769 1536
1770---
1771*** doc-view can now generate SVG images when viewing PDF files. 1537*** doc-view can now generate SVG images when viewing PDF files.
1772If Emacs is built with SVG support, doc-view can generate SVG files 1538If Emacs is built with SVG support, doc-view can generate SVG files
1773when using MuPDF as the converter for PDF files, which generally leads 1539when using MuPDF as the converter for PDF files, which generally leads
@@ -1781,14 +1547,12 @@ or can take a long time to render.
1781 1547
1782** Enriched Mode 1548** Enriched Mode
1783 1549
1784+++
1785*** New command 'enriched-toggle-markup'. 1550*** New command 'enriched-toggle-markup'.
1786This allows you to see the markup in 'enriched-mode' buffers (e.g., 1551This allows you to see the markup in 'enriched-mode' buffers (e.g.,
1787the "HELLO" file). Bound to 'M-o m' by default. 1552the "HELLO" file). Bound to 'M-o m' by default.
1788 1553
1789** Shell Script Mode 1554** Shell Script Mode
1790 1555
1791---
1792*** New user option 'sh-indent-statement-after-and'. 1556*** New user option 'sh-indent-statement-after-and'.
1793This controls how statements like the following are indented: 1557This controls how statements like the following are indented:
1794 1558
@@ -1801,10 +1565,8 @@ command is installed.
1801 1565
1802** CC Mode 1566** CC Mode
1803 1567
1804---
1805*** C++ Mode now supports most of the new features in the C++20 Standard. 1568*** C++ Mode now supports most of the new features in the C++20 Standard.
1806 1569
1807---
1808*** In Objective-C Mode, no extra types are recognized by default. 1570*** In Objective-C Mode, no extra types are recognized by default.
1809The default value of 'objc-font-lock-extra-types' has been changed to 1571The default value of 'objc-font-lock-extra-types' has been changed to
1810nil, since too many identifiers were getting misfontified as types. 1572nil, since too many identifiers were getting misfontified as types.
@@ -1814,19 +1576,16 @@ doc string.
1814 1576
1815** Cperl Mode 1577** Cperl Mode
1816 1578
1817---
1818*** New user option 'cperl-file-style'. 1579*** New user option 'cperl-file-style'.
1819This option determines the indentation style to be used. It can also 1580This option determines the indentation style to be used. It can also
1820be used as a file-local variable. 1581be used as a file-local variable.
1821 1582
1822** Gud 1583** Gud
1823 1584
1824---
1825*** 'gud-go' is now bound to 'C-c C-v'. 1585*** 'gud-go' is now bound to 'C-c C-v'.
1826If given a prefix, it will prompt for an argument to use for the 1586If given a prefix, it will prompt for an argument to use for the
1827run/continue command. 1587run/continue command.
1828 1588
1829---
1830*** 'perldb' now recognizes '-E'. 1589*** 'perldb' now recognizes '-E'.
1831As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates 1590As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates
1832all optional features of the Perl version in use. 'perldb' now uses 1591all optional features of the Perl version in use. 'perldb' now uses
@@ -1834,27 +1593,23 @@ this invocation as its default.
1834 1593
1835** Customize 1594** Customize
1836 1595
1837---
1838*** New command 'custom-toggle-hide-all-widgets'. 1596*** New command 'custom-toggle-hide-all-widgets'.
1839This is bound to 'H' and toggles whether to hide or show the widget 1597This is bound to 'H' and toggles whether to hide or show the widget
1840contents. 1598contents.
1841 1599
1842** Diff Mode 1600** Diff Mode
1843 1601
1844---
1845*** New user option 'diff-whitespace-style'. 1602*** New user option 'diff-whitespace-style'.
1846Sets the value of the buffer-local variable 'whitespace-style' in 1603Sets the value of the buffer-local variable 'whitespace-style' in
1847'diff-mode' buffers. By default, this variable is '(face trailing)', 1604'diff-mode' buffers. By default, this variable is '(face trailing)',
1848which preserves behavior of previous Emacs versions. 1605which preserves behavior of previous Emacs versions.
1849 1606
1850+++
1851*** New user option 'diff-add-log-use-relative-names'. 1607*** New user option 'diff-add-log-use-relative-names'.
1852If non-nil insert file names in ChangeLog skeletons relative to the 1608If non-nil insert file names in ChangeLog skeletons relative to the
1853VC root directory. 1609VC root directory.
1854 1610
1855** Ispell 1611** Ispell
1856 1612
1857---
1858*** 'ispell-region' and 'ispell-buffer' now push the mark. 1613*** 'ispell-region' and 'ispell-buffer' now push the mark.
1859These commands push onto the mark ring the location of the last 1614These commands push onto the mark ring the location of the last
1860misspelled word where corrections were offered, so that you can then 1615misspelled word where corrections were offered, so that you can then
@@ -1862,73 +1617,60 @@ skip back to that location with 'C-x C-x'.
1862 1617
1863** Dabbrev 1618** Dabbrev
1864 1619
1865---
1866*** New function 'dabbrev-capf' for use on 'completion-at-point-functions'. 1620*** New function 'dabbrev-capf' for use on 'completion-at-point-functions'.
1867 1621
1868+++
1869*** New user option 'dabbrev-ignored-buffer-modes'. 1622*** New user option 'dabbrev-ignored-buffer-modes'.
1870Buffers with major modes in this list will be ignored. By default, 1623Buffers with major modes in this list will be ignored. By default,
1871this includes "binary" buffers like 'archive-mode' and 'image-mode'. 1624this includes "binary" buffers like 'archive-mode' and 'image-mode'.
1872 1625
1873** Package 1626** Package
1874 1627
1875+++
1876*** New command 'package-upgrade'. 1628*** New command 'package-upgrade'.
1877This command allows you to upgrade packages without using 'list-packages'. 1629This command allows you to upgrade packages without using 'list-packages'.
1878A package that comes with the Emacs distribution can only be upgraded 1630A package that comes with the Emacs distribution can only be upgraded
1879after you install, once, a newer version from ELPA via the 1631after you install, once, a newer version from ELPA via the
1880package-menu displayed by 'list-packages'. 1632package-menu displayed by 'list-packages'.
1881 1633
1882+++
1883*** New command 'package-upgrade-all'. 1634*** New command 'package-upgrade-all'.
1884This command allows upgrading all packages without any queries. 1635This command allows upgrading all packages without any queries.
1885A package that comes with the Emacs distribution will only be upgraded 1636A package that comes with the Emacs distribution will only be upgraded
1886by this command after you install, once, a newer version of that 1637by this command after you install, once, a newer version of that
1887package from ELPA via the package-menu displayed by 'list-packages'. 1638package from ELPA via the package-menu displayed by 'list-packages'.
1888 1639
1889+++
1890*** New commands 'package-recompile' and 'package-recompile-all'. 1640*** New commands 'package-recompile' and 'package-recompile-all'.
1891These commands can be useful if the ".elc" files are out of date 1641These commands can be useful if the ".elc" files are out of date
1892(invalid byte code and macros). 1642(invalid byte code and macros).
1893 1643
1894+++
1895*** New DWIM action on 'x' in "*Packages*" buffer. 1644*** New DWIM action on 'x' in "*Packages*" buffer.
1896If no packages are marked, 'x' will install the package under point if 1645If no packages are marked, 'x' will install the package under point if
1897it isn't already, and remove it if it is installed. Customize the new 1646it isn't already, and remove it if it is installed. Customize the new
1898option 'package-menu-use-current-if-no-marks' to the nil value to get 1647option 'package-menu-use-current-if-no-marks' to the nil value to get
1899back the old behavior of signaling an error in that case. 1648back the old behavior of signaling an error in that case.
1900 1649
1901+++
1902*** New command 'package-vc-install'. 1650*** New command 'package-vc-install'.
1903Packages can now be installed directly from source by cloning from 1651Packages can now be installed directly from source by cloning from
1904their repository. 1652their repository.
1905 1653
1906+++
1907*** New command 'package-vc-install-from-checkout'. 1654*** New command 'package-vc-install-from-checkout'.
1908An existing checkout can now be loaded via package.el, by creating a 1655An existing checkout can now be loaded via package.el, by creating a
1909symbolic link from the usual package directory to the checkout. 1656symbolic link from the usual package directory to the checkout.
1910 1657
1911+++
1912*** New command 'package-vc-checkout'. 1658*** New command 'package-vc-checkout'.
1913Used to fetch the source of a package by cloning a repository without 1659Used to fetch the source of a package by cloning a repository without
1914activating the package. 1660activating the package.
1915 1661
1916+++
1917*** New command 'package-vc-prepare-patch'. 1662*** New command 'package-vc-prepare-patch'.
1918This command allows you to send patches to package maintainers, for 1663This command allows you to send patches to package maintainers, for
1919packages checked out using 'package-vc-install'. 1664packages checked out using 'package-vc-install'.
1920 1665
1921+++
1922*** New command 'package-report-bug'. 1666*** New command 'package-report-bug'.
1923This command helps you compose an email for sending bug reports to 1667This command helps you compose an email for sending bug reports to
1924package maintainers, and is bound to 'b' in the "*Packages*" buffer. 1668package maintainers, and is bound to 'b' in the "*Packages*" buffer.
1925 1669
1926+++
1927*** New user option 'package-vc-selected-packages'. 1670*** New user option 'package-vc-selected-packages'.
1928By customizing this user option you can specify specific packages to 1671By customizing this user option you can specify specific packages to
1929install. 1672install.
1930 1673
1931---
1932*** New user option 'package-install-upgrade-built-in'. 1674*** New user option 'package-install-upgrade-built-in'.
1933When enabled, 'package-install' will include in the list of 1675When enabled, 'package-install' will include in the list of
1934upgradeable packages those built-in packages (like Eglot and 1676upgradeable packages those built-in packages (like Eglot and
@@ -1950,7 +1692,6 @@ setting in your early-init file.
1950 1692
1951** Emacs Sessions (Desktop) 1693** Emacs Sessions (Desktop)
1952 1694
1953+++
1954*** New user option to load a locked desktop if locking Emacs is not running. 1695*** New user option to load a locked desktop if locking Emacs is not running.
1955The option 'desktop-load-locked-desktop' can now be set to the value 1696The option 'desktop-load-locked-desktop' can now be set to the value
1956'check-pid', which means to allow loading a locked ".emacs.desktop" 1697'check-pid', which means to allow loading a locked ".emacs.desktop"
@@ -1962,7 +1703,6 @@ Emacs Sessions" node in the Emacs manual for more details.
1962 1703
1963** Miscellaneous 1704** Miscellaneous
1964 1705
1965+++
1966*** New command 'scratch-buffer'. 1706*** New command 'scratch-buffer'.
1967This command switches to the "*scratch*" buffer. If "*scratch*" doesn't 1707This command switches to the "*scratch*" buffer. If "*scratch*" doesn't
1968exist, the command creates it first. You can use this command if you 1708exist, the command creates it first. You can use this command if you
@@ -1970,31 +1710,26 @@ inadvertently delete the "*scratch*" buffer.
1970 1710
1971** Debugging 1711** Debugging
1972 1712
1973---
1974*** 'q' in a "*Backtrace*" buffer no longer clears the buffer. 1713*** 'q' in a "*Backtrace*" buffer no longer clears the buffer.
1975Instead it just buries the buffer and switches the mode from 1714Instead it just buries the buffer and switches the mode from
1976'debugger-mode' to 'backtrace-mode', since commands like 'e' are no 1715'debugger-mode' to 'backtrace-mode', since commands like 'e' are no
1977longer available after exiting the recursive edit. 1716longer available after exiting the recursive edit.
1978 1717
1979+++
1980*** New user option 'debug-allow-recursive-debug'. 1718*** New user option 'debug-allow-recursive-debug'.
1981This user option controls whether the 'e' (in a "*Backtrace*" 1719This user option controls whether the 'e' (in a "*Backtrace*"
1982buffer or while edebugging) and 'C-x C-e' (while edebugging) commands 1720buffer or while edebugging) and 'C-x C-e' (while edebugging) commands
1983lead to a (further) backtrace. By default, this variable is nil, 1721lead to a (further) backtrace. By default, this variable is nil,
1984which is a change in behavior from previous Emacs versions. 1722which is a change in behavior from previous Emacs versions.
1985 1723
1986+++
1987*** 'e' in edebug can now take a prefix arg to pretty-print the results. 1724*** 'e' in edebug can now take a prefix arg to pretty-print the results.
1988When invoked with a prefix argument, as in 'C-u e', this command will 1725When invoked with a prefix argument, as in 'C-u e', this command will
1989pop up a new buffer and show the full pretty-printed value there. 1726pop up a new buffer and show the full pretty-printed value there.
1990 1727
1991+++
1992*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results. 1728*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results.
1993When invoked with a non-zero prefix argument, as in 'C-u C-x C-e', 1729When invoked with a non-zero prefix argument, as in 'C-u C-x C-e',
1994this command will pop up a new buffer and show the full pretty-printed 1730this command will pop up a new buffer and show the full pretty-printed
1995value there. 1731value there.
1996 1732
1997+++
1998*** You can now generate a backtrace from Lisp errors in redisplay. 1733*** You can now generate a backtrace from Lisp errors in redisplay.
1999To do this, set the new variable 'backtrace-on-redisplay-error' to a 1734To do this, set the new variable 'backtrace-on-redisplay-error' to a
2000non-nil value. The backtrace will be written to a special buffer 1735non-nil value. The backtrace will be written to a special buffer
@@ -2003,18 +1738,15 @@ displayed in a window.
2003 1738
2004** Compile 1739** Compile
2005 1740
2006+++
2007*** New user option 'compilation-hidden-output'. 1741*** New user option 'compilation-hidden-output'.
2008This regular expression can be used to make specific parts of 1742This regular expression can be used to make specific parts of
2009compilation output invisible. 1743compilation output invisible.
2010 1744
2011+++
2012*** The 'compilation-auto-jump-to-first-error' user option has been extended. 1745*** The 'compilation-auto-jump-to-first-error' user option has been extended.
2013It can now have the additional values 'if-location-known' (which will 1746It can now have the additional values 'if-location-known' (which will
2014only jump if the location of the first error is known), and 1747only jump if the location of the first error is known), and
2015'first-known' (which will jump to the first known error location). 1748'first-known' (which will jump to the first known error location).
2016 1749
2017+++
2018*** New user option 'compilation-max-output-line-length'. 1750*** New user option 'compilation-max-output-line-length'.
2019Lines longer than the value of this option will have their ends 1751Lines longer than the value of this option will have their ends
2020hidden, with a button to reveal the hidden text. This speeds up 1752hidden, with a button to reveal the hidden text. This speeds up
@@ -2023,15 +1755,12 @@ value is 400; set to nil to disable hiding.
2023 1755
2024** Flymake 1756** Flymake
2025 1757
2026+++
2027*** New user option 'flymake-mode-line-lighter'. 1758*** New user option 'flymake-mode-line-lighter'.
2028 1759
2029+++
2030** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'. 1760** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'.
2031This mode switches 'word-wrap' on, and breaks on all the whitespace 1761This mode switches 'word-wrap' on, and breaks on all the whitespace
2032characters instead of just 'SPC' and 'TAB'. 1762characters instead of just 'SPC' and 'TAB'.
2033 1763
2034---
2035** New mode, 'emacs-news-mode', for editing the NEWS file. 1764** New mode, 'emacs-news-mode', for editing the NEWS file.
2036This mode adds some highlighting, makes the 'M-q' command aware of the 1765This mode adds some highlighting, makes the 'M-q' command aware of the
2037format of NEWS entries, and has special commands for doing maintenance 1766format of NEWS entries, and has special commands for doing maintenance
@@ -2040,13 +1769,11 @@ of the Emacs NEWS files. In addition, this mode turns on
2040'icon-preference') in the margins. To disable these icons, set 1769'icon-preference') in the margins. To disable these icons, set
2041'outline-minor-mode-use-buttons' to a nil value. 1770'outline-minor-mode-use-buttons' to a nil value.
2042 1771
2043---
2044** Kmacro 1772** Kmacro
2045Kmacros are now OClosures and have a new constructor 'kmacro' which 1773Kmacros are now OClosures and have a new constructor 'kmacro' which
2046uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form' 1774uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form'
2047(which is now declared obsolete). 1775(which is now declared obsolete).
2048 1776
2049---
2050** savehist.el can now truncate variables that are too long. 1777** savehist.el can now truncate variables that are too long.
2051An element of user option 'savehist-additional-variables' can now be 1778An element of user option 'savehist-additional-variables' can now be
2052of the form '(VARIABLE . MAX-ELTS)', which means to truncate the 1779of the form '(VARIABLE . MAX-ELTS)', which means to truncate the
@@ -2055,7 +1782,6 @@ before saving the value.
2055 1782
2056** Minibuffer and Completions 1783** Minibuffer and Completions
2057 1784
2058+++
2059*** New commands for navigating completions from the minibuffer. 1785*** New commands for navigating completions from the minibuffer.
2060When the minibuffer is the current buffer, typing 'M-<up>' or 1786When the minibuffer is the current buffer, typing 'M-<up>' or
2061'M-<down>' selects a previous/next completion candidate from the 1787'M-<down>' selects a previous/next completion candidate from the
@@ -2070,13 +1796,11 @@ exit the minibuffer. These keys are also available for in-buffer
2070completion, but they don't insert candidates automatically, you need 1796completion, but they don't insert candidates automatically, you need
2071to type 'M-RET' to insert the selected candidate to the buffer. 1797to type 'M-RET' to insert the selected candidate to the buffer.
2072 1798
2073+++
2074*** Choosing a completion with a prefix argument doesn't exit the minibuffer. 1799*** Choosing a completion with a prefix argument doesn't exit the minibuffer.
2075This means that typing 'C-u RET' on a completion candidate in the 1800This means that typing 'C-u RET' on a completion candidate in the
2076"*Completions*" buffer inserts the completion into the minibuffer, 1801"*Completions*" buffer inserts the completion into the minibuffer,
2077but doesn't exit the minibuffer. 1802but doesn't exit the minibuffer.
2078 1803
2079+++
2080*** The "*Completions*" buffer can now be automatically selected. 1804*** The "*Completions*" buffer can now be automatically selected.
2081To enable this behavior, customize the user option 1805To enable this behavior, customize the user option
2082'completion-auto-select' to t, then pressing 'TAB' will switch to the 1806'completion-auto-select' to t, then pressing 'TAB' will switch to the
@@ -2084,13 +1808,11 @@ To enable this behavior, customize the user option
2084'second-tab', then the first 'TAB' will display "*Completions*", and 1808'second-tab', then the first 'TAB' will display "*Completions*", and
2085the second one will switch to the "*Completions*" buffer. 1809the second one will switch to the "*Completions*" buffer.
2086 1810
2087---
2088*** New user option 'completion-auto-wrap'. 1811*** New user option 'completion-auto-wrap'.
2089When non-nil, the commands 'next-completion' and 'previous-completion' 1812When non-nil, the commands 'next-completion' and 'previous-completion'
2090automatically wrap around on reaching the beginning or the end of 1813automatically wrap around on reaching the beginning or the end of
2091the "*Completions*" buffer. 1814the "*Completions*" buffer.
2092 1815
2093+++
2094*** New values for the 'completion-auto-help' user option. 1816*** New values for the 'completion-auto-help' user option.
2095There are two new values to control the way the "*Completions*" buffer 1817There are two new values to control the way the "*Completions*" buffer
2096behaves after pressing a 'TAB' if completion is not unique. The value 1818behaves after pressing a 'TAB' if completion is not unique. The value
@@ -2099,61 +1821,51 @@ to complete. The value 'visual' is like 'always', but only updates
2099the completions if they are already visible. The default value t 1821the completions if they are already visible. The default value t
2100always hides the completion buffer after some completion is made. 1822always hides the completion buffer after some completion is made.
2101 1823
2102---
2103*** New commands to complete the minibuffer history. 1824*** New commands to complete the minibuffer history.
2104'minibuffer-complete-history' ('C-x <up>') is like 'minibuffer-complete' 1825'minibuffer-complete-history' ('C-x <up>') is like 'minibuffer-complete'
2105but completes on the history items instead of the default completion 1826but completes on the history items instead of the default completion
2106table. 'minibuffer-complete-defaults' ('C-x <down>') completes 1827table. 'minibuffer-complete-defaults' ('C-x <down>') completes
2107on the list of default items. 1828on the list of default items.
2108 1829
2109+++
2110*** User option 'minibuffer-eldef-shorten-default' is now obsolete. 1830*** User option 'minibuffer-eldef-shorten-default' is now obsolete.
2111Customize the user option 'minibuffer-default-prompt-format' instead. 1831Customize the user option 'minibuffer-default-prompt-format' instead.
2112 1832
2113+++
2114*** New user option 'completions-sort'. 1833*** New user option 'completions-sort'.
2115This option controls the sorting of the completion candidates in 1834This option controls the sorting of the completion candidates in
2116the "*Completions*" buffer. Available styles are no sorting, 1835the "*Completions*" buffer. Available styles are no sorting,
2117alphabetical (the default), or a custom sort function. 1836alphabetical (the default), or a custom sort function.
2118 1837
2119+++
2120*** New user option 'completions-max-height'. 1838*** New user option 'completions-max-height'.
2121This option limits the height of the "*Completions*" buffer. 1839This option limits the height of the "*Completions*" buffer.
2122 1840
2123+++
2124*** New user option 'completions-header-format'. 1841*** New user option 'completions-header-format'.
2125This is a string to control the header line to show in the 1842This is a string to control the header line to show in the
2126"*Completions*" buffer before the list of completions. 1843"*Completions*" buffer before the list of completions.
2127If it contains "%s", that is replaced with the number of completions. 1844If it contains "%s", that is replaced with the number of completions.
2128If nil, the header line is not shown. 1845If nil, the header line is not shown.
2129 1846
2130+++
2131*** New user option 'completions-highlight-face'. 1847*** New user option 'completions-highlight-face'.
2132When this user option names a face, the current 1848When this user option names a face, the current
2133candidate in the "*Completions*" buffer is highlighted with that face. 1849candidate in the "*Completions*" buffer is highlighted with that face.
2134The nil value disables this highlighting. The default is to highlight 1850The nil value disables this highlighting. The default is to highlight
2135using the 'completions-highlight' face. 1851using the 'completions-highlight' face.
2136 1852
2137+++
2138*** You can now define abbrevs for the minibuffer modes. 1853*** You can now define abbrevs for the minibuffer modes.
2139'minibuffer-mode-abbrev-table' and 1854'minibuffer-mode-abbrev-table' and
2140'minibuffer-inactive-mode-abbrev-table' are now defined. 1855'minibuffer-inactive-mode-abbrev-table' are now defined.
2141 1856
2142** Isearch and Replace 1857** Isearch and Replace
2143 1858
2144+++
2145*** Changes in how Isearch responds to 'mouse-yank-at-point'. 1859*** Changes in how Isearch responds to 'mouse-yank-at-point'.
2146If a user does 'C-s' and then uses '<mouse-2>' ('mouse-yank-primary') 1860If a user does 'C-s' and then uses '<mouse-2>' ('mouse-yank-primary')
2147outside the echo area, Emacs will, by default, end the Isearch and 1861outside the echo area, Emacs will, by default, end the Isearch and
2148yank the text at mouse cursor. But if 'mouse-yank-at-point' is 1862yank the text at mouse cursor. But if 'mouse-yank-at-point' is
2149non-nil, the text will now be added to the Isearch instead. 1863non-nil, the text will now be added to the Isearch instead.
2150 1864
2151+++
2152*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'. 1865*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'.
2153Now with these values the search will wrap around not only on repeating 1866Now with these values the search will wrap around not only on repeating
2154with 'C-s C-s', but also after typing a character. 1867with 'C-s C-s', but also after typing a character.
2155 1868
2156+++
2157*** New user option 'char-fold-override'. 1869*** New user option 'char-fold-override'.
2158Non-nil means that the default definitions of equivalent characters 1870Non-nil means that the default definitions of equivalent characters
2159are overridden. 1871are overridden.
@@ -2161,7 +1873,6 @@ are overridden.
2161*** New command 'describe-char-fold-equivalences'. 1873*** New command 'describe-char-fold-equivalences'.
2162It displays character equivalences used by 'char-fold-to-regexp'. 1874It displays character equivalences used by 'char-fold-to-regexp'.
2163 1875
2164+++
2165*** New command 'isearch-emoji-by-name'. 1876*** New command 'isearch-emoji-by-name'.
2166It is bound to 'C-x 8 e RET' during an incremental search. The 1877It is bound to 'C-x 8 e RET' during an incremental search. The
2167command accepts the Unicode name of an Emoji (for example, "smiling 1878command accepts the Unicode name of an Emoji (for example, "smiling
@@ -2170,7 +1881,6 @@ completion, and adds the Emoji into the search string.
2170 1881
2171** GDB/MI 1882** GDB/MI
2172 1883
2173---
2174*** New user option 'gdb-debuginfod-enable-setting'. 1884*** New user option 'gdb-debuginfod-enable-setting'.
2175On capable platforms, GDB 10.1 and later can download missing source 1885On capable platforms, GDB 10.1 and later can download missing source
2176and debug info files from special-purpose servers, called "debuginfod 1886and debug info files from special-purpose servers, called "debuginfod
@@ -2182,18 +1892,15 @@ that session.
2182 1892
2183** Glyphless Characters 1893** Glyphless Characters
2184 1894
2185+++
2186*** New minor mode 'glyphless-display-mode'. 1895*** New minor mode 'glyphless-display-mode'.
2187This allows an easy way to toggle seeing all glyphless characters in 1896This allows an easy way to toggle seeing all glyphless characters in
2188the current buffer. 1897the current buffer.
2189 1898
2190---
2191*** The extra slot of 'glyphless-char-display' can now have cons values. 1899*** The extra slot of 'glyphless-char-display' can now have cons values.
2192The extra slot of the 'glyphless-char-display' char-table can now have 1900The extra slot of the 'glyphless-char-display' char-table can now have
2193values that are cons cells, specifying separate values for text-mode 1901values that are cons cells, specifying separate values for text-mode
2194and GUI terminals. 1902and GUI terminals.
2195 1903
2196+++
2197*** "Replacement character" feature for undisplayable characters on TTYs. 1904*** "Replacement character" feature for undisplayable characters on TTYs.
2198The 'acronym' method of displaying glyphless characters on text-mode 1905The 'acronym' method of displaying glyphless characters on text-mode
2199frames treats single-character acronyms specially: they are displayed 1906frames treats single-character acronyms specially: they are displayed
@@ -2202,7 +1909,6 @@ without the surrounding '[..]' "box", thus in effect treating such
2202 1909
2203** Registers 1910** Registers
2204 1911
2205+++
2206*** Buffer names can now be stored in registers. 1912*** Buffer names can now be stored in registers.
2207For instance, to enable jumping to the "*Messages*" buffer with 1913For instance, to enable jumping to the "*Messages*" buffer with
2208'C-x r j m': 1914'C-x r j m':
@@ -2211,53 +1917,43 @@ For instance, to enable jumping to the "*Messages*" buffer with
2211 1917
2212** Pixel Fill 1918** Pixel Fill
2213 1919
2214+++
2215*** This is a new package that deals with filling variable-pitch text. 1920*** This is a new package that deals with filling variable-pitch text.
2216 1921
2217+++
2218*** New function 'pixel-fill-region'. 1922*** New function 'pixel-fill-region'.
2219This fills the region to be no wider than a specified pixel width. 1923This fills the region to be no wider than a specified pixel width.
2220 1924
2221** Info 1925** Info
2222 1926
2223+++
2224*** Command 'info-apropos' now takes a prefix argument to search for regexps. 1927*** Command 'info-apropos' now takes a prefix argument to search for regexps.
2225 1928
2226---
2227*** New command 'Info-goto-node-web' and key binding 'G'. 1929*** New command 'Info-goto-node-web' and key binding 'G'.
2228This will take you to the "gnu.org" web server's version of the current 1930This will take you to the "gnu.org" web server's version of the current
2229info node. This command only works for the Emacs and Emacs Lisp manuals. 1931info node. This command only works for the Emacs and Emacs Lisp manuals.
2230 1932
2231** Shortdoc 1933** Shortdoc
2232 1934
2233---
2234*** New command 'shortdoc-copy-function-as-kill' bound to 'w'. 1935*** New command 'shortdoc-copy-function-as-kill' bound to 'w'.
2235It copies the name of the function near point into the kill ring. 1936It copies the name of the function near point into the kill ring.
2236 1937
2237---
2238*** 'N' and 'P' are now bound to 'shortdoc-{next,previous}-section'. 1938*** 'N' and 'P' are now bound to 'shortdoc-{next,previous}-section'.
2239This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'. 1939This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'.
2240 1940
2241** VC 1941** VC
2242 1942
2243---
2244*** New command 'vc-pull-and-push'. 1943*** New command 'vc-pull-and-push'.
2245This commands first does a "pull" command, and if that is successful, 1944This commands first does a "pull" command, and if that is successful,
2246does a "push" command afterwards. Currently supported in Git and Bzr. 1945does a "push" command afterwards. Currently supported in Git and Bzr.
2247 1946
2248+++
2249*** 'C-x v b' prefix key is used now for branch commands. 1947*** 'C-x v b' prefix key is used now for branch commands.
2250'vc-print-branch-log' is bound to 'C-x v b l', and new commands are 1948'vc-print-branch-log' is bound to 'C-x v b l', and new commands are
2251'vc-create-branch' ('C-x v b c') and 'vc-switch-branch' ('C-x v b s'). 1949'vc-create-branch' ('C-x v b c') and 'vc-switch-branch' ('C-x v b s').
2252The VC Directory buffer now uses the prefix 'b' for these branch-related 1950The VC Directory buffer now uses the prefix 'b' for these branch-related
2253commands. 1951commands.
2254 1952
2255+++
2256*** New command 'vc-dir-mark-by-regexp' bound to '% m' and '* %'. 1953*** New command 'vc-dir-mark-by-regexp' bound to '% m' and '* %'.
2257This command marks files based on a regexp. If given a prefix 1954This command marks files based on a regexp. If given a prefix
2258argument, unmark instead. 1955argument, unmark instead.
2259 1956
2260+++
2261*** New command 'C-x v !' ('vc-edit-next-command'). 1957*** New command 'C-x v !' ('vc-edit-next-command').
2262This prefix command requests editing of the next VC shell command 1958This prefix command requests editing of the next VC shell command
2263before execution. For example, in a Git repository, you can produce a 1959before execution. For example, in a Git repository, you can produce a
@@ -2268,7 +1964,6 @@ The intention is that this command can be used to access a wide
2268variety of version control system-specific functionality from VC 1964variety of version control system-specific functionality from VC
2269without complexifying either the VC command set or the backend API. 1965without complexifying either the VC command set or the backend API.
2270 1966
2271---
2272*** 'C-x v v' in a diffs buffer allows to commit only some of the changes. 1967*** 'C-x v v' in a diffs buffer allows to commit only some of the changes.
2273This command is intended to allow you to commit only some of the 1968This command is intended to allow you to commit only some of the
2274changes you have in your working tree. Begin by creating a buffer 1969changes you have in your working tree. Begin by creating a buffer
@@ -2277,7 +1972,6 @@ with the changes against the last commit, e.g. with 'C-x v D'
2277want to commit. Finally, type 'C-x v v' in that diff buffer to commit 1972want to commit. Finally, type 'C-x v v' in that diff buffer to commit
2278only part of your changes, those whose hunks were left in the buffer. 1973only part of your changes, those whose hunks were left in the buffer.
2279 1974
2280---
2281*** 'C-x v v' on an unregistered file will now use the most specific backend. 1975*** 'C-x v v' on an unregistered file will now use the most specific backend.
2282Previously, if you had an SVN-covered "~/" directory, and a Git-covered 1976Previously, if you had an SVN-covered "~/" directory, and a Git-covered
2283directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file 1977directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file
@@ -2285,28 +1979,23 @@ directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file
2285in the Git repository in "~/foo/bar". This makes this command 1979in the Git repository in "~/foo/bar". This makes this command
2286consistent with 'vc-responsible-backend'. 1980consistent with 'vc-responsible-backend'.
2287 1981
2288---
2289*** Log Edit now fontifies long Git commit summary lines. 1982*** Log Edit now fontifies long Git commit summary lines.
2290Writing shorter summary lines avoids truncation in contexts in which 1983Writing shorter summary lines avoids truncation in contexts in which
2291Git commands display summary lines. See the two new user options 1984Git commands display summary lines. See the two new user options
2292'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'. 1985'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'.
2293 1986
2294---
2295*** New 'log-edit-headers-separator' face. 1987*** New 'log-edit-headers-separator' face.
2296It is used to style the line that separates the 'log-edit' headers 1988It is used to style the line that separates the 'log-edit' headers
2297from the 'log-edit' summary. 1989from the 'log-edit' summary.
2298 1990
2299---
2300*** The function 'vc-read-revision' accepts a new MULTIPLE argument. 1991*** The function 'vc-read-revision' accepts a new MULTIPLE argument.
2301If non-nil, multiple revisions can be queried. This is done using 1992If non-nil, multiple revisions can be queried. This is done using
2302'completing-read-multiple'. 1993'completing-read-multiple'.
2303 1994
2304---
2305*** New function 'vc-read-multiple-revisions'. 1995*** New function 'vc-read-multiple-revisions'.
2306This function invokes 'vc-read-revision' with a non-nil value for 1996This function invokes 'vc-read-revision' with a non-nil value for
2307MULTIPLE. 1997MULTIPLE.
2308 1998
2309+++
2310*** New command 'vc-prepare-patch'. 1999*** New command 'vc-prepare-patch'.
2311Patches for any version control system can be prepared using VC. The 2000Patches for any version control system can be prepared using VC. The
2312command will query what commits to send and will compose messages for 2001command will query what commits to send and will compose messages for
@@ -2316,32 +2005,26 @@ modified by the user options 'vc-prepare-patches-separately' and
2316 2005
2317** Message 2006** Message
2318 2007
2319---
2320*** New user option 'mml-attach-file-at-the-end'. 2008*** New user option 'mml-attach-file-at-the-end'.
2321If non-nil, 'C-c C-a' will put attached files at the end of the message. 2009If non-nil, 'C-c C-a' will put attached files at the end of the message.
2322 2010
2323---
2324*** Message Mode now supports image yanking. 2011*** Message Mode now supports image yanking.
2325 2012
2326+++
2327*** New user option 'message-server-alist'. 2013*** New user option 'message-server-alist'.
2328This controls automatic insertion of the "X-Message-SMTP-Method" 2014This controls automatic insertion of the "X-Message-SMTP-Method"
2329header before sending a message. 2015header before sending a message.
2330 2016
2331** HTML Mode 2017** HTML Mode
2332 2018
2333---
2334*** HTML Mode now supports "text/html" and "image/*" yanking. 2019*** HTML Mode now supports "text/html" and "image/*" yanking.
2335 2020
2336** Texinfo Mode 2021** Texinfo Mode
2337 2022
2338---
2339*** 'texinfo-mode' now has a specialized 'narrow-to-defun' definition. 2023*** 'texinfo-mode' now has a specialized 'narrow-to-defun' definition.
2340It narrows to the current node. 2024It narrows to the current node.
2341 2025
2342** EUDC 2026** EUDC
2343 2027
2344+++
2345*** Deprecations planned for next release. 2028*** Deprecations planned for next release.
2346After Emacs 29.1, some aspects of EUDC will be deprecated. The goal 2029After Emacs 29.1, some aspects of EUDC will be deprecated. The goal
2347of these deprecations is to simplify EUDC server configuration by 2030of these deprecations is to simplify EUDC server configuration by
@@ -2361,20 +2044,17 @@ possible servers, instead of requiring a call to 'eudc-set-server'
2361like it does in this release. The default value of 2044like it does in this release. The default value of
2362'eudc-ignore-options-file' will be changed from nil to t. 2045'eudc-ignore-options-file' will be changed from nil to t.
2363 2046
2364+++
2365*** New user option 'eudc-ignore-options-file' that defaults to nil. 2047*** New user option 'eudc-ignore-options-file' that defaults to nil.
2366The 'eudc-ignore-options-file' user option can be configured to ignore 2048The 'eudc-ignore-options-file' user option can be configured to ignore
2367the 'eudc-options-file' (typically "~/.emacs.d/eudc-options"). Most 2049the 'eudc-options-file' (typically "~/.emacs.d/eudc-options"). Most
2368users should configure this to t and put EUDC configuration in the 2050users should configure this to t and put EUDC configuration in the
2369main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el"). 2051main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el").
2370 2052
2371+++
2372*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'. 2053*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'.
2373The user option 'eudc-expansion-overwrites-query' is renamed to 2054The user option 'eudc-expansion-overwrites-query' is renamed to
2374'eudc-expansion-save-query-as-kill' to reflect the actual behavior of 2055'eudc-expansion-save-query-as-kill' to reflect the actual behavior of
2375the user option. The former is kept as alias. 2056the user option. The former is kept as alias.
2376 2057
2377+++
2378*** New command 'eudc-expand-try-all'. 2058*** New command 'eudc-expand-try-all'.
2379This command can be used in place of 'eudc-expand-inline'. It takes a 2059This command can be used in place of 'eudc-expand-inline'. It takes a
2380prefix argument that causes 'eudc-expand-try-all' to return matches 2060prefix argument that causes 'eudc-expand-try-all' to return matches
@@ -2382,7 +2062,6 @@ from all servers instead of just the matches from the first server to
2382return any. This is useful for example, if one wants to search LDAP 2062return any. This is useful for example, if one wants to search LDAP
2383for a name that happens to match a contact in one's BBDB. 2063for a name that happens to match a contact in one's BBDB.
2384 2064
2385+++
2386*** New behavior and default for user option 'eudc-inline-expansion-format'. 2065*** New behavior and default for user option 'eudc-inline-expansion-format'.
2387EUDC inline expansion result formatting defaulted to 2066EUDC inline expansion result formatting defaulted to
2388 2067
@@ -2402,25 +2081,21 @@ is called, and the returned values are used to populate the phrase and
2402comment parts (see RFC 5322 for definitions). In both cases, the 2081comment parts (see RFC 5322 for definitions). In both cases, the
2403phrase part will be automatically quoted if necessary. 2082phrase part will be automatically quoted if necessary.
2404 2083
2405+++
2406*** New function 'eudc-capf-complete' with 'message-mode' integration. 2084*** New function 'eudc-capf-complete' with 'message-mode' integration.
2407EUDC can now contribute email addresses to 'completion-at-point' by 2085EUDC can now contribute email addresses to 'completion-at-point' by
2408adding the new function 'eudc-capf-complete' to 2086adding the new function 'eudc-capf-complete' to
2409'completion-at-point-functions' in 'message-mode'. 2087'completion-at-point-functions' in 'message-mode'.
2410 2088
2411+++
2412*** Additional attributes of query and results in eudcb-macos-contacts.el. 2089*** Additional attributes of query and results in eudcb-macos-contacts.el.
2413The EUDC back-end for the macOS Contacts app now provides a wider set 2090The EUDC back-end for the macOS Contacts app now provides a wider set
2414of attributes to use for queries, and delivers more attributes in 2091of attributes to use for queries, and delivers more attributes in
2415query results. 2092query results.
2416 2093
2417+++
2418*** New back-end for ecomplete. 2094*** New back-end for ecomplete.
2419A new back-end for ecomplete allows information from that database to 2095A new back-end for ecomplete allows information from that database to
2420be queried by EUDC, too. The attributes present in the EUDC query are 2096be queried by EUDC, too. The attributes present in the EUDC query are
2421used to select the entry type in the ecomplete database. 2097used to select the entry type in the ecomplete database.
2422 2098
2423+++
2424*** New back-end for mailabbrev. 2099*** New back-end for mailabbrev.
2425A new back-end for mailabbrev allows information from that database to 2100A new back-end for mailabbrev allows information from that database to
2426be queried by EUDC, too. Only the attributes 'email', 'name', and 2101be queried by EUDC, too. Only the attributes 'email', 'name', and
@@ -2428,7 +2103,6 @@ be queried by EUDC, too. Only the attributes 'email', 'name', and
2428 2103
2429** EWW/SHR 2104** EWW/SHR
2430 2105
2431+++
2432*** New user option to automatically rename EWW buffers. 2106*** New user option to automatically rename EWW buffers.
2433The 'eww-auto-rename-buffer' user option can be configured to rename 2107The 'eww-auto-rename-buffer' user option can be configured to rename
2434rendered web pages by using their title, URL, or a user-defined 2108rendered web pages by using their title, URL, or a user-defined
@@ -2437,26 +2111,22 @@ of the resulting name is controlled by the user option
2437'eww-buffer-name-length'. By default, no automatic renaming is 2111'eww-buffer-name-length'. By default, no automatic renaming is
2438performed. 2112performed.
2439 2113
2440+++
2441*** New user option 'shr-allowed-images'. 2114*** New user option 'shr-allowed-images'.
2442This complements 'shr-blocked-images', but allows specifying just the 2115This complements 'shr-blocked-images', but allows specifying just the
2443allowed images. 2116allowed images.
2444 2117
2445+++
2446*** New user option 'shr-use-xwidgets-for-media'. 2118*** New user option 'shr-use-xwidgets-for-media'.
2447If non-nil (and Emacs has been built with support for xwidgets), 2119If non-nil (and Emacs has been built with support for xwidgets),
2448display <video> elements with an xwidget. Note that this is 2120display <video> elements with an xwidget. Note that this is
2449experimental; it is known to crash Emacs on some systems, and just 2121experimental; it is known to crash Emacs on some systems, and just
2450doesn't work on other systems. Also see etc/PROBLEMS. 2122doesn't work on other systems. Also see etc/PROBLEMS.
2451 2123
2452+++
2453*** New user option 'eww-url-transformers'. 2124*** New user option 'eww-url-transformers'.
2454These are used to alter an URL before using it. By default it removes 2125These are used to alter an URL before using it. By default it removes
2455the common "utm_" trackers from URLs. 2126the common "utm_" trackers from URLs.
2456 2127
2457** Find Dired 2128** Find Dired
2458 2129
2459---
2460*** New command 'find-dired-with-command'. 2130*** New command 'find-dired-with-command'.
2461This enables users to run 'find-dired' with an arbitrary command, 2131This enables users to run 'find-dired' with an arbitrary command,
2462enabling running commands previously unsupported and also enabling new 2132enabling running commands previously unsupported and also enabling new
@@ -2464,7 +2134,6 @@ commands to be built on top.
2464 2134
2465** Gnus 2135** Gnus
2466 2136
2467+++
2468*** Tool bar changes in Gnus/Message. 2137*** Tool bar changes in Gnus/Message.
2469There were previously two styles of tool bars available in Gnus and 2138There were previously two styles of tool bars available in Gnus and
2470Message, referred to as 'gnus-summary-tool-bar-retro', 2139Message, referred to as 'gnus-summary-tool-bar-retro',
@@ -2474,42 +2143,34 @@ Message, referred to as 'gnus-summary-tool-bar-retro',
2474well as the icons used), and the "gnome" tool bars are now the only 2143well as the icons used), and the "gnome" tool bars are now the only
2475pre-defined toolbars. 2144pre-defined toolbars.
2476 2145
2477---
2478*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed. 2146*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed.
2479The 'gnus-summary-down-thread' binding to 'M-C-d' was shadowed by 2147The 'gnus-summary-down-thread' binding to 'M-C-d' was shadowed by
2480'gnus-summary-read-document', and these commands are also available on 2148'gnus-summary-read-document', and these commands are also available on
2481'T u' and 'T d' respectively. 2149'T u' and 'T d' respectively.
2482 2150
2483---
2484*** Gnus now uses a variable-pitch font in the headers by default. 2151*** Gnus now uses a variable-pitch font in the headers by default.
2485To get the monospace font back, you can put something like the 2152To get the monospace font back, you can put something like the
2486following in your ".gnus" file: 2153following in your ".gnus" file:
2487 2154
2488 (set-face-attribute 'gnus-header nil :inherit 'unspecified) 2155 (set-face-attribute 'gnus-header nil :inherit 'unspecified)
2489 2156
2490---
2491*** The default value of 'gnus-treat-fold-headers' is now 'head'. 2157*** The default value of 'gnus-treat-fold-headers' is now 'head'.
2492 2158
2493---
2494*** New face 'gnus-header'. 2159*** New face 'gnus-header'.
2495All other 'gnus-header-*' faces inherit from this face now. 2160All other 'gnus-header-*' faces inherit from this face now.
2496 2161
2497+++
2498*** New user option 'gnus-treat-emojize-symbols'. 2162*** New user option 'gnus-treat-emojize-symbols'.
2499If non-nil, symbols that have an Emoji representation will be 2163If non-nil, symbols that have an Emoji representation will be
2500displayed as emojis. The default is nil. 2164displayed as emojis. The default is nil.
2501 2165
2502+++
2503*** New command 'gnus-article-emojize-symbols'. 2166*** New command 'gnus-article-emojize-symbols'.
2504This is bound to 'W D e' and will display symbols that have Emoji 2167This is bound to 'W D e' and will display symbols that have Emoji
2505representation as Emoji. 2168representation as Emoji.
2506 2169
2507+++
2508*** New mu backend for gnus-search. 2170*** New mu backend for gnus-search.
2509Configuration is very similar to the notmuch and namazu backends. It 2171Configuration is very similar to the notmuch and namazu backends. It
2510supports the unified search syntax. 2172supports the unified search syntax.
2511 2173
2512---
2513*** 'gnus-html-image-cache-ttl' is now a seconds count. 2174*** 'gnus-html-image-cache-ttl' is now a seconds count.
2514Formerly it was a pair of numbers '(A B)' that represented 65536*A + B, 2175Formerly it was a pair of numbers '(A B)' that represented 65536*A + B,
2515to cater to older Emacs implementations that lacked bignums. 2176to cater to older Emacs implementations that lacked bignums.
@@ -2517,7 +2178,6 @@ The older form still works but is undocumented.
2517 2178
2518** Rmail 2179** Rmail
2519 2180
2520---
2521*** Rmail partial summaries can now be applied one on top of the other. 2181*** Rmail partial summaries can now be applied one on top of the other.
2522You can now narrow the set of messages selected by Rmail summary's 2182You can now narrow the set of messages selected by Rmail summary's
2523criteria (recipients, topic, senders, etc.) by making a summary of the 2183criteria (recipients, topic, senders, etc.) by making a summary of the
@@ -2529,19 +2189,16 @@ to your selection. The new user option
2529the filters is in effect; customize it to a non-nil value to enable 2189the filters is in effect; customize it to a non-nil value to enable
2530this feature. 2190this feature.
2531 2191
2532---
2533*** New Rmail summary: by thread. 2192*** New Rmail summary: by thread.
2534The new command 'rmail-summary-by-thread' produces a summary of 2193The new command 'rmail-summary-by-thread' produces a summary of
2535messages that belong to a single thread of discussion. 2194messages that belong to a single thread of discussion.
2536 2195
2537** EIEIO 2196** EIEIO
2538 2197
2539+++
2540*** 'slot-value' can now be used to access slots of 'cl-defstruct' objects. 2198*** 'slot-value' can now be used to access slots of 'cl-defstruct' objects.
2541 2199
2542** Align 2200** Align
2543 2201
2544---
2545*** Alignment in 'text-mode' has changed. 2202*** Alignment in 'text-mode' has changed.
2546Previously, 'M-x align' didn't do anything, and you had to say 'C-u 2203Previously, 'M-x align' didn't do anything, and you had to say 'C-u
2547M-x align' for it to work. This has now been changed. The default 2204M-x align' for it to work. This has now been changed. The default
@@ -2550,12 +2207,10 @@ for inexperienced users to use.
2550 2207
2551** Help 2208** Help
2552 2209
2553---
2554*** New mode, 'emacs-news-view-mode', for viewing the NEWS file. 2210*** New mode, 'emacs-news-view-mode', for viewing the NEWS file.
2555This mode is used by the 'C-h N' command, and adds buttons to manual 2211This mode is used by the 'C-h N' command, and adds buttons to manual
2556entries and symbol references. 2212entries and symbol references.
2557 2213
2558---
2559*** New user option 'help-link-key-to-documentation'. 2214*** New user option 'help-link-key-to-documentation'.
2560When this option is non-nil (which is the default), key bindings 2215When this option is non-nil (which is the default), key bindings
2561displayed in the "*Help*" buffer will be linked to the documentation 2216displayed in the "*Help*" buffer will be linked to the documentation
@@ -2564,7 +2219,6 @@ key bindings and functions (such as 'C-h b').
2564 2219
2565** Info Look 2220** Info Look
2566 2221
2567---
2568*** info-look specs can now be expanded at run time instead of a load time. 2222*** info-look specs can now be expanded at run time instead of a load time.
2569The new ':doc-spec-function' element can be used to compute the 2223The new ':doc-spec-function' element can be used to compute the
2570':doc-spec' element when the user asks for info on that particular 2224':doc-spec' element when the user asks for info on that particular
@@ -2572,19 +2226,16 @@ mode (instead of at load time).
2572 2226
2573** Ansi Color 2227** Ansi Color
2574 2228
2575---
2576*** Support for ANSI 256-color and 24-bit colors. 2229*** Support for ANSI 256-color and 24-bit colors.
2577256-color and 24-bit color codes are now handled by ANSI color 2230256-color and 24-bit color codes are now handled by ANSI color
2578filters and displayed with the specified color. 2231filters and displayed with the specified color.
2579 2232
2580** Term Mode 2233** Term Mode
2581 2234
2582---
2583*** New user option 'term-bind-function-keys'. 2235*** New user option 'term-bind-function-keys'.
2584If non-nil, 'term-mode' will pass the function keys on to the 2236If non-nil, 'term-mode' will pass the function keys on to the
2585underlying shell instead of using the normal Emacs bindings. 2237underlying shell instead of using the normal Emacs bindings.
2586 2238
2587---
2588*** Support for ANSI 256-color and 24-bit colors, italic and other fonts. 2239*** Support for ANSI 256-color and 24-bit colors, italic and other fonts.
2589'term-mode' can now display 256-color and 24-bit color codes. It can 2240'term-mode' can now display 256-color and 24-bit color codes. It can
2590also handle ANSI codes for faint, italic and blinking text, displaying 2241also handle ANSI codes for faint, italic and blinking text, displaying
@@ -2592,17 +2243,14 @@ it with new 'term-{faint,italic,slow-blink,fast-blink}' faces.
2592 2243
2593** Project 2244** Project
2594 2245
2595+++
2596*** 'project-find-file' and 'project-or-external-find-file' can include all. 2246*** 'project-find-file' and 'project-or-external-find-file' can include all.
2597The commands 'project-find-file' and 'project-or-external-find-file' 2247The commands 'project-find-file' and 'project-or-external-find-file'
2598now accept a prefix argument, which is interpreted to mean "include 2248now accept a prefix argument, which is interpreted to mean "include
2599all files". 2249all files".
2600 2250
2601+++
2602*** New command 'project-list-buffers' bound to 'C-x p C-b'. 2251*** New command 'project-list-buffers' bound to 'C-x p C-b'.
2603This command displays a list of buffers from the current project. 2252This command displays a list of buffers from the current project.
2604 2253
2605+++
2606*** 'project-kill-buffers' can display the list of buffers to kill. 2254*** 'project-kill-buffers' can display the list of buffers to kill.
2607Customize the user option 'project-kill-buffers-display-buffer-list' 2255Customize the user option 'project-kill-buffers-display-buffer-list'
2608to enable the display of the buffer list. 2256to enable the display of the buffer list.
@@ -2614,19 +2262,16 @@ or projects outside of VCS repositories.
2614As a consequence, the 'VC project backend' is formally renamed to 2262As a consequence, the 'VC project backend' is formally renamed to
2615'VC-aware project backend'. 2263'VC-aware project backend'.
2616 2264
2617+++
2618*** New user option 'project-vc-include-untracked'. 2265*** New user option 'project-vc-include-untracked'.
2619If non-nil, files untracked by a VCS are considered to be part of 2266If non-nil, files untracked by a VCS are considered to be part of
2620the project by a VC project based on that VCS. 2267the project by a VC project based on that VCS.
2621 2268
2622** Xref 2269** Xref
2623 2270
2624+++
2625*** New command 'xref-go-forward'. 2271*** New command 'xref-go-forward'.
2626It is bound to 'C-M-,' and jumps to the location where you previously 2272It is bound to 'C-M-,' and jumps to the location where you previously
2627invoked 'xref-go-back' ('M-,', also known as 'xref-pop-marker-stack'). 2273invoked 'xref-go-back' ('M-,', also known as 'xref-pop-marker-stack').
2628 2274
2629+++
2630*** The depth of the Xref marker stack is now infinite. 2275*** The depth of the Xref marker stack is now infinite.
2631The implementation of the Xref marker stack was changed in a way that 2276The implementation of the Xref marker stack was changed in a way that
2632allows as many places to be saved on the stack as needed, limited only 2277allows as many places to be saved on the stack as needed, limited only
@@ -2634,19 +2279,15 @@ by the available memory. Therefore, the variables
2634'find-tag-marker-ring-length' and 'xref-marker-ring-length' are now 2279'find-tag-marker-ring-length' and 'xref-marker-ring-length' are now
2635obsolete and unused; setting them has no effect. 2280obsolete and unused; setting them has no effect.
2636 2281
2637+++
2638*** 'xref-query-replace-in-results' prompting change. 2282*** 'xref-query-replace-in-results' prompting change.
2639This command no longer prompts for FROM when called without prefix 2283This command no longer prompts for FROM when called without prefix
2640argument. This makes the most common case faster: replacing entire 2284argument. This makes the most common case faster: replacing entire
2641matches. 2285matches.
2642 2286
2643+++
2644*** New command 'xref-find-references-and-replace' to rename one identifier. 2287*** New command 'xref-find-references-and-replace' to rename one identifier.
2645 2288
2646---
2647*** New variable 'xref-current-item' (renamed from a private version). 2289*** New variable 'xref-current-item' (renamed from a private version).
2648 2290
2649---
2650*** New function 'xref-show-xrefs'. 2291*** New function 'xref-show-xrefs'.
2651 2292
2652*** 'outline-minor-mode' is supported in Xref buffers. 2293*** 'outline-minor-mode' is supported in Xref buffers.
@@ -2655,12 +2296,10 @@ You can enable outlining by adding 'outline-minor-mode' to
2655 2296
2656** File Notifications 2297** File Notifications
2657 2298
2658+++
2659*** The new command 'file-notify-rm-all-watches' removes all file notifications. 2299*** The new command 'file-notify-rm-all-watches' removes all file notifications.
2660 2300
2661** Sql 2301** Sql
2662 2302
2663---
2664*** Sql now supports sending of passwords in-process. 2303*** Sql now supports sending of passwords in-process.
2665To improve security, if an sql product has ':password-in-comint' set 2304To improve security, if an sql product has ':password-in-comint' set
2666to t, a password supplied via the minibuffer will be sent in-process, 2305to t, a password supplied via the minibuffer will be sent in-process,
@@ -2668,54 +2307,44 @@ as opposed to via the command-line.
2668 2307
2669** Image Mode 2308** Image Mode
2670 2309
2671+++
2672*** New command 'image-transform-fit-to-window'. 2310*** New command 'image-transform-fit-to-window'.
2673This command fits the image to the current window by scaling down or 2311This command fits the image to the current window by scaling down or
2674up as necessary. Unlike 'image-transform-fit-both', this can scale 2312up as necessary. Unlike 'image-transform-fit-both', this can scale
2675the image up as well as down. It is bound to 's w' in Image Mode by 2313the image up as well as down. It is bound to 's w' in Image Mode by
2676default. 2314default.
2677 2315
2678---
2679*** New command 'image-mode-wallpaper-set'. 2316*** New command 'image-mode-wallpaper-set'.
2680This command sets the desktop background to the current image. It is 2317This command sets the desktop background to the current image. It is
2681bound to 'W' in Image Mode by default. 2318bound to 'W' in Image Mode by default.
2682 2319
2683+++
2684*** 'image-transform-fit-to-{height,width}' are now obsolete. 2320*** 'image-transform-fit-to-{height,width}' are now obsolete.
2685Use the new command 'image-transform-fit-to-window' instead. 2321Use the new command 'image-transform-fit-to-window' instead.
2686The keybinding for 'image-transform-fit-to-width' is now 's i'. 2322The keybinding for 'image-transform-fit-to-width' is now 's i'.
2687 2323
2688---
2689*** User option 'image-auto-resize' can now be set to 'fit-window'. 2324*** User option 'image-auto-resize' can now be set to 'fit-window'.
2690This works like 'image-transform-fit-to-window'. 2325This works like 'image-transform-fit-to-window'.
2691 2326
2692---
2693*** New user option 'image-auto-resize-max-scale-percent'. 2327*** New user option 'image-auto-resize-max-scale-percent'.
2694The new 'fit-window' option will never scale an image more than this 2328The new 'fit-window' option will never scale an image more than this
2695much (in percent). It is nil by default, which means no limit. 2329much (in percent). It is nil by default, which means no limit.
2696 2330
2697---
2698*** New user option 'image-text-based-formats'. 2331*** New user option 'image-text-based-formats'.
2699This controls whether or not to show a message, when opening certain 2332This controls whether or not to show a message, when opening certain
2700image formats, explaining how to edit it as text. The default is to 2333image formats, explaining how to edit it as text. The default is to
2701show this message for SVG and XPM. 2334show this message for SVG and XPM.
2702 2335
2703+++
2704*** New command 'image-transform-set-percent'. 2336*** New command 'image-transform-set-percent'.
2705It allows resizing the image to a percentage of its original size, and 2337It allows resizing the image to a percentage of its original size, and
2706is bound to 's p' in Image mode. 2338is bound to 's p' in Image mode.
2707 2339
2708+++
2709*** 'image-transform-original' renamed to 'image-transform-reset-to-original'. 2340*** 'image-transform-original' renamed to 'image-transform-reset-to-original'.
2710The old name was confusing, and is now an obsolete function alias. 2341The old name was confusing, and is now an obsolete function alias.
2711 2342
2712+++
2713*** 'image-transform-reset' renamed to 'image-transform-reset-to-initial'. 2343*** 'image-transform-reset' renamed to 'image-transform-reset-to-initial'.
2714The old name was confusing, and is now an obsolete function alias. 2344The old name was confusing, and is now an obsolete function alias.
2715 2345
2716** Images 2346** Images
2717 2347
2718+++
2719*** New commands 'image-crop' and 'image-cut'. 2348*** New commands 'image-crop' and 'image-cut'.
2720These commands allow interactively cropping/cutting the image at 2349These commands allow interactively cropping/cutting the image at
2721point. The commands are bound to keys 'i c' and 'i x' (respectively) 2350point. The commands are bound to keys 'i c' and 'i x' (respectively)
@@ -2723,25 +2352,21 @@ in the local keymap over images. They rely on external programs, by
2723default "convert" from ImageMagick, to do the actual cropping/eliding 2352default "convert" from ImageMagick, to do the actual cropping/eliding
2724of the image file. 2353of the image file.
2725 2354
2726+++
2727*** New commands 'image-flip-horizontally' and 'image-flip-vertically'. 2355*** New commands 'image-flip-horizontally' and 'image-flip-vertically'.
2728These commands horizontally and vertically flip the image under point, 2356These commands horizontally and vertically flip the image under point,
2729and are bound to 'i h' and 'i v', respectively. 2357and are bound to 'i h' and 'i v', respectively.
2730 2358
2731+++
2732*** Users can now add special image conversion functions. 2359*** Users can now add special image conversion functions.
2733This is done via 'image-converter-add-handler'. 2360This is done via 'image-converter-add-handler'.
2734 2361
2735** Image Dired 2362** Image Dired
2736 2363
2737+++
2738*** 'image-dired-image-mode' is now based on 'image-mode'. 2364*** 'image-dired-image-mode' is now based on 'image-mode'.
2739This avoids converting images in the background, and makes Image-Dired 2365This avoids converting images in the background, and makes Image-Dired
2740noticeably faster. New keybindings from 'image-mode' are now 2366noticeably faster. New keybindings from 'image-mode' are now
2741available in the "*image-dired-display-image*" buffer; press '?' or 2367available in the "*image-dired-display-image*" buffer; press '?' or
2742'h' in that buffer to see the full list. 2368'h' in that buffer to see the full list.
2743 2369
2744---
2745*** Navigation and marking commands now work in image display buffer. 2370*** Navigation and marking commands now work in image display buffer.
2746The following new bindings have been added: 2371The following new bindings have been added:
2747- 'n', 'SPC' => 'image-dired-display-next' 2372- 'n', 'SPC' => 'image-dired-display-next'
@@ -2750,52 +2375,43 @@ The following new bindings have been added:
2750- 'd' => 'image-dired-flag-thumb-original-file' 2375- 'd' => 'image-dired-flag-thumb-original-file'
2751- 'u' => 'image-dired-unmark-thumb-original-file' 2376- 'u' => 'image-dired-unmark-thumb-original-file'
2752 2377
2753---
2754*** New command 'image-dired-unmark-all-marks'. 2378*** New command 'image-dired-unmark-all-marks'.
2755It removes all marks from all files in the thumbnail and the 2379It removes all marks from all files in the thumbnail and the
2756associated Dired buffer, and is bound to 'U' in the thumbnail and 2380associated Dired buffer, and is bound to 'U' in the thumbnail and
2757display buffer. 2381display buffer.
2758 2382
2759---
2760*** New command 'image-dired-do-flagged-delete'. 2383*** New command 'image-dired-do-flagged-delete'.
2761It deletes all flagged files, and is bound to 'x' in the thumbnail 2384It deletes all flagged files, and is bound to 'x' in the thumbnail
2762buffer. It replaces the command 'image-dired-delete-marked', which is 2385buffer. It replaces the command 'image-dired-delete-marked', which is
2763now an obsolete alias. 2386now an obsolete alias.
2764 2387
2765---
2766*** New command 'image-dired-copy-filename-as-kill'. 2388*** New command 'image-dired-copy-filename-as-kill'.
2767It copies the name of the marked or current image to the kill ring, 2389It copies the name of the marked or current image to the kill ring,
2768and is bound to 'w' in the thumbnail buffer. 2390and is bound to 'w' in the thumbnail buffer.
2769 2391
2770---
2771*** New command 'image-dired-wallpaper-set'. 2392*** New command 'image-dired-wallpaper-set'.
2772This command sets the desktop background to the image at point in the 2393This command sets the desktop background to the image at point in the
2773thumbnail buffer. It is bound to 'W' by default. 2394thumbnail buffer. It is bound to 'W' by default.
2774 2395
2775---
2776*** 'image-dired-slideshow-start' is now bound to 'S'. 2396*** 'image-dired-slideshow-start' is now bound to 'S'.
2777It is bound in both the thumbnail and display buffer, and no longer 2397It is bound in both the thumbnail and display buffer, and no longer
2778prompts for a timeout; use a numerical prefix (e.g. 'C-u 8 S') to set 2398prompts for a timeout; use a numerical prefix (e.g. 'C-u 8 S') to set
2779the timeout. 2399the timeout.
2780 2400
2781---
2782*** New user option 'image-dired-marking-shows-next'. 2401*** New user option 'image-dired-marking-shows-next'.
2783If this option is non-nil (the default), marking, unmarking or 2402If this option is non-nil (the default), marking, unmarking or
2784flagging an image in either the thumbnail or display buffer shows the 2403flagging an image in either the thumbnail or display buffer shows the
2785next image. 2404next image.
2786 2405
2787---
2788*** New face 'image-dired-thumb-flagged'. 2406*** New face 'image-dired-thumb-flagged'.
2789If 'image-dired-thumb-mark' is non-nil (the default), this face is 2407If 'image-dired-thumb-mark' is non-nil (the default), this face is
2790used for images that are flagged for deletion in the Dired buffer 2408used for images that are flagged for deletion in the Dired buffer
2791associated with Image-Dired. 2409associated with Image-Dired.
2792 2410
2793---
2794*** Image information is now shown in the header line of the thumbnail buffer. 2411*** Image information is now shown in the header line of the thumbnail buffer.
2795This replaces the message that most navigation commands in the 2412This replaces the message that most navigation commands in the
2796thumbnail buffer used to show at the bottom of the screen. 2413thumbnail buffer used to show at the bottom of the screen.
2797 2414
2798---
2799*** New specifiers for 'image-dired-display-properties-format'. 2415*** New specifiers for 'image-dired-display-properties-format'.
2800This is used to format the new header line. The new specifiers are: 2416This is used to format the new header line. The new specifiers are:
2801"%d" for the name of the directory that the file is in, "%n" for 2417"%d" for the name of the directory that the file is in, "%n" for
@@ -2806,7 +2422,6 @@ old format, add this to your Init file:
2806 2422
2807 (setopt image-dired-display-properties-format "%b: %f (%t): %c") 2423 (setopt image-dired-display-properties-format "%b: %f (%t): %c")
2808 2424
2809---
2810*** New faces for the header line of the thumbnail buffer. 2425*** New faces for the header line of the thumbnail buffer.
2811These faces correspond to different parts of the header line, as 2426These faces correspond to different parts of the header line, as
2812specified in 'image-dired-display-properties-format': 2427specified in 'image-dired-display-properties-format':
@@ -2815,37 +2430,31 @@ specified in 'image-dired-display-properties-format':
2815- 'image-dired-thumb-header-file-size' 2430- 'image-dired-thumb-header-file-size'
2816- 'image-dired-thumb-header-image-count' 2431- 'image-dired-thumb-header-image-count'
2817 2432
2818---
2819*** PDF support. 2433*** PDF support.
2820Image-Dired now displays thumbnails for PDF files. Type 'RET' on a 2434Image-Dired now displays thumbnails for PDF files. Type 'RET' on a
2821PDF file in the thumbnail buffer to visit the corresponding PDF. 2435PDF file in the thumbnail buffer to visit the corresponding PDF.
2822 2436
2823---
2824*** Support GraphicsMagick command line tools. 2437*** Support GraphicsMagick command line tools.
2825Support for the GraphicsMagick command line tool ("gm") has been 2438Support for the GraphicsMagick command line tool ("gm") has been
2826added, and is used when it is available instead of ImageMagick. 2439added, and is used when it is available instead of ImageMagick.
2827 2440
2828---
2829*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020). 2441*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020).
2830This standard allows sharing generated thumbnails across different 2442This standard allows sharing generated thumbnails across different
2831programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and 2443programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and
28321024x1024 pixels. See the user option 'image-dired-thumbnail-storage' 24441024x1024 pixels. See the user option 'image-dired-thumbnail-storage'
2833to use it; it is not enabled by default. 2445to use it; it is not enabled by default.
2834 2446
2835---
2836*** Reduce dependency on external "exiftool" program. 2447*** Reduce dependency on external "exiftool" program.
2837The 'image-dired-copy-with-exif-file-name' command no longer requires 2448The 'image-dired-copy-with-exif-file-name' command no longer requires
2838an external "exiftool" program to be available. The user options 2449an external "exiftool" program to be available. The user options
2839'image-dired-cmd-read-exif-data-program' and 2450'image-dired-cmd-read-exif-data-program' and
2840'image-dired-cmd-read-exif-data-options' are now obsolete. 2451'image-dired-cmd-read-exif-data-options' are now obsolete.
2841 2452
2842---
2843*** Support for bookmark.el. 2453*** Support for bookmark.el.
2844The command 'bookmark-set' (bound to 'C-x r m') is now supported in 2454The command 'bookmark-set' (bound to 'C-x r m') is now supported in
2845the thumbnail view, and will create a bookmark that opens the current 2455the thumbnail view, and will create a bookmark that opens the current
2846directory in Image-Dired. 2456directory in Image-Dired.
2847 2457
2848---
2849*** The 'image-dired-slideshow-start' command no longer prompts. 2458*** The 'image-dired-slideshow-start' command no longer prompts.
2850It no longer inconveniently prompts for a number of images and a 2459It no longer inconveniently prompts for a number of images and a
2851delay: it runs indefinitely, but stops automatically on any command. 2460delay: it runs indefinitely, but stops automatically on any command.
@@ -2853,7 +2462,6 @@ You can set the delay with a prefix argument, or a negative prefix
2853argument to prompt for a delay. Customize the user option 2462argument to prompt for a delay. Customize the user option
2854'image-dired-slideshow-delay' to change the default from 5 seconds. 2463'image-dired-slideshow-delay' to change the default from 5 seconds.
2855 2464
2856+++
2857*** 'image-dired-show-all-from-dir-max-files' increased to 1000. 2465*** 'image-dired-show-all-from-dir-max-files' increased to 1000.
2858This user option controls asking for confirmation when starting 2466This user option controls asking for confirmation when starting
2859Image-Dired in a directory with many files. Since Image-Dired creates 2467Image-Dired in a directory with many files. Since Image-Dired creates
@@ -2861,17 +2469,13 @@ thumbnails in the background in recent versions, this is not as
2861important as it used to be. You can now also customize this option to 2469important as it used to be. You can now also customize this option to
2862nil to disable this confirmation completely. 2470nil to disable this confirmation completely.
2863 2471
2864---
2865*** 'image-dired-thumb-size' increased to 128. 2472*** 'image-dired-thumb-size' increased to 128.
2866 2473
2867+++
2868*** 'image-dired-db-file' renamed to 'image-dired-tags-db-file'. 2474*** 'image-dired-db-file' renamed to 'image-dired-tags-db-file'.
2869 2475
2870---
2871*** 'image-dired-display-image-mode' renamed to 'image-dired-image-mode'. 2476*** 'image-dired-display-image-mode' renamed to 'image-dired-image-mode'.
2872The corresponding keymap is now named 'image-dired-image-mode-map'. 2477The corresponding keymap is now named 'image-dired-image-mode-map'.
2873 2478
2874+++
2875*** Some commands have been renamed to be shorter. 2479*** Some commands have been renamed to be shorter.
2876- 'image-dired-display-thumbnail-original-image' has been renamed to 2480- 'image-dired-display-thumbnail-original-image' has been renamed to
2877 'image-dired-display-this'. 2481 'image-dired-display-this'.
@@ -2881,25 +2485,21 @@ The corresponding keymap is now named 'image-dired-image-mode-map'.
2881 to 'image-dired-display-previous'. 2485 to 'image-dired-display-previous'.
2882The old names are now obsolete aliases. 2486The old names are now obsolete aliases.
2883 2487
2884---
2885*** 'image-dired-thumb-{height,width}' are now obsolete. 2488*** 'image-dired-thumb-{height,width}' are now obsolete.
2886Customize 'image-dired-thumb-size' instead, which will set both the 2489Customize 'image-dired-thumb-size' instead, which will set both the
2887height and width. 2490height and width.
2888 2491
2889---
2890*** HTML image gallery generation is now obsolete. 2492*** HTML image gallery generation is now obsolete.
2891The 'image-dired-gallery-generate' command and these user options are 2493The 'image-dired-gallery-generate' command and these user options are
2892now obsolete: 'image-dired-gallery-thumb-image-root-url', 2494now obsolete: 'image-dired-gallery-thumb-image-root-url',
2893'image-dired-gallery-hidden-tags', 'image-dired-gallery-dir', 2495'image-dired-gallery-hidden-tags', 'image-dired-gallery-dir',
2894'image-dired-gallery-image-root-url'. 2496'image-dired-gallery-image-root-url'.
2895 2497
2896---
2897*** 'image-dired-rotate-thumbnail-{left,right}' are now obsolete. 2498*** 'image-dired-rotate-thumbnail-{left,right}' are now obsolete.
2898Instead, use commands 'image-dired-refresh-thumb' to generate a new 2499Instead, use commands 'image-dired-refresh-thumb' to generate a new
2899thumbnail, or 'image-rotate' to rotate the thumbnail without updating 2500thumbnail, or 'image-rotate' to rotate the thumbnail without updating
2900the thumbnail file. 2501the thumbnail file.
2901 2502
2902+++
2903*** Some commands and user options are now obsolete. 2503*** Some commands and user options are now obsolete.
2904Since 'image-dired-display-image-mode' is now based on 'image-mode', 2504Since 'image-dired-display-image-mode' is now based on 'image-mode',
2905some commands and user options are no longer needed and are now obsolete: 2505some commands and user options are no longer needed and are now obsolete:
@@ -2913,66 +2513,54 @@ some commands and user options are no longer needed and are now obsolete:
2913 2513
2914** Exif 2514** Exif
2915 2515
2916---
2917*** New function 'exif-field'. 2516*** New function 'exif-field'.
2918This is a convenience function to extract the field data from 2517This is a convenience function to extract the field data from
2919'exif-parse-file' and 'exif-parse-buffer'. 2518'exif-parse-file' and 'exif-parse-buffer'.
2920 2519
2921** Bookmarks 2520** Bookmarks
2922 2521
2923---
2924*** 'list-bookmarks' now includes a type column. 2522*** 'list-bookmarks' now includes a type column.
2925Types are registered via a 'bookmark-handler-type' symbol property on 2523Types are registered via a 'bookmark-handler-type' symbol property on
2926the jumping function. 2524the jumping function.
2927 2525
2928+++
2929*** 'bookmark-sort-flag' can now be set to 'last-modified'. 2526*** 'bookmark-sort-flag' can now be set to 'last-modified'.
2930This will display bookmark list from most recently set to least 2527This will display bookmark list from most recently set to least
2931recently set. 2528recently set.
2932 2529
2933---
2934*** When editing a bookmark annotation, 'C-c C-k' will now cancel. 2530*** When editing a bookmark annotation, 'C-c C-k' will now cancel.
2935It is bound to the new command 'bookmark-edit-annotation-cancel'. 2531It is bound to the new command 'bookmark-edit-annotation-cancel'.
2936 2532
2937---
2938*** New user option 'bookmark-fringe-mark'. 2533*** New user option 'bookmark-fringe-mark'.
2939This option controls the bitmap used to indicate bookmarks in the 2534This option controls the bitmap used to indicate bookmarks in the
2940fringe (or nil to disable showing this marker). 2535fringe (or nil to disable showing this marker).
2941 2536
2942** Xwidget 2537** Xwidget
2943 2538
2944---
2945*** New user option 'xwidget-webkit-buffer-name-format'. 2539*** New user option 'xwidget-webkit-buffer-name-format'.
2946This option controls how xwidget-webkit buffers are named. 2540This option controls how xwidget-webkit buffers are named.
2947 2541
2948---
2949*** New user option 'xwidget-webkit-cookie-file'. 2542*** New user option 'xwidget-webkit-cookie-file'.
2950This option controls whether the xwidget-webkit buffers save cookies 2543This option controls whether the xwidget-webkit buffers save cookies
2951set by web pages, and if so, in which file to save them. 2544set by web pages, and if so, in which file to save them.
2952 2545
2953+++
2954*** New minor mode 'xwidget-webkit-edit-mode'. 2546*** New minor mode 'xwidget-webkit-edit-mode'.
2955When this mode is enabled, self-inserting characters and other common 2547When this mode is enabled, self-inserting characters and other common
2956web browser shortcut keys are redefined to send themselves to the 2548web browser shortcut keys are redefined to send themselves to the
2957WebKit widget. 2549WebKit widget.
2958 2550
2959+++
2960*** New minor mode 'xwidget-webkit-isearch-mode'. 2551*** New minor mode 'xwidget-webkit-isearch-mode'.
2961This mode acts similarly to incremental search, and allows searching 2552This mode acts similarly to incremental search, and allows searching
2962the contents of a WebKit widget. In xwidget-webkit mode, it is bound 2553the contents of a WebKit widget. In xwidget-webkit mode, it is bound
2963to 'C-s' and 'C-r'. 2554to 'C-s' and 'C-r'.
2964 2555
2965+++
2966*** New command 'xwidget-webkit-browse-history'. 2556*** New command 'xwidget-webkit-browse-history'.
2967This command displays a buffer containing the page load history of 2557This command displays a buffer containing the page load history of
2968the current WebKit widget, and allows you to navigate it. 2558the current WebKit widget, and allows you to navigate it.
2969 2559
2970---
2971*** On X, the WebKit inspector is now available inside xwidgets. 2560*** On X, the WebKit inspector is now available inside xwidgets.
2972To access the inspector, right click on the widget and select "Inspect 2561To access the inspector, right click on the widget and select "Inspect
2973Element". 2562Element".
2974 2563
2975---
2976*** "Open in New Window" in a WebKit widget's context menu now works. 2564*** "Open in New Window" in a WebKit widget's context menu now works.
2977The newly created buffer will be displayed via 'display-buffer', which 2565The newly created buffer will be displayed via 'display-buffer', which
2978can be customized through the usual mechanism of 'display-buffer-alist' 2566can be customized through the usual mechanism of 'display-buffer-alist'
@@ -2980,31 +2568,26 @@ and friends.
2980 2568
2981** Tramp 2569** Tramp
2982 2570
2983+++
2984*** New connection methods "docker", "podman" and "kubernetes". 2571*** New connection methods "docker", "podman" and "kubernetes".
2985They allow accessing containers provided by Docker and similar 2572They allow accessing containers provided by Docker and similar
2986programs. 2573programs.
2987 2574
2988---
2989*** Tramp supports abbreviating remote home directories now. 2575*** Tramp supports abbreviating remote home directories now.
2990When calling 'abbreviate-file-name' on a Tramp file name, the result 2576When calling 'abbreviate-file-name' on a Tramp file name, the result
2991will abbreviate the user's home directory, for example by abbreviating 2577will abbreviate the user's home directory, for example by abbreviating
2992"/ssh:user@host:/home/user" to "/ssh:user@host:~". 2578"/ssh:user@host:/home/user" to "/ssh:user@host:~".
2993 2579
2994+++
2995*** New user option 'tramp-use-scp-direct-remote-copying'. 2580*** New user option 'tramp-use-scp-direct-remote-copying'.
2996When set to non-nil, Tramp does not copy files between two remote 2581When set to non-nil, Tramp does not copy files between two remote
2997hosts via a local copy in its temporary directory, but lets the 'scp' 2582hosts via a local copy in its temporary directory, but lets the 'scp'
2998command do this job. 2583command do this job.
2999 2584
3000+++
3001*** Proper password prompts for methods "doas", "sudo" and "sudoedit". 2585*** Proper password prompts for methods "doas", "sudo" and "sudoedit".
3002The password prompts for these methods reflect now the credentials of 2586The password prompts for these methods reflect now the credentials of
3003the user requesting such a connection, and not of the user who is the 2587the user requesting such a connection, and not of the user who is the
3004target. This has always been needed, just the password prompt and the 2588target. This has always been needed, just the password prompt and the
3005related 'auth-sources' entry were wrong. 2589related 'auth-sources' entry were wrong.
3006 2590
3007+++
3008*** New user option 'tramp-completion-use-cache'. 2591*** New user option 'tramp-completion-use-cache'.
3009During user and host name completion in the minibuffer, results from 2592During user and host name completion in the minibuffer, results from
3010Tramp's connection cache are taken into account. This can be disabled 2593Tramp's connection cache are taken into account. This can be disabled
@@ -3012,41 +2595,34 @@ by setting the user option 'tramp-completion-use-cache' to nil.
3012 2595
3013** Browse URL 2596** Browse URL
3014 2597
3015---
3016*** New user option 'browse-url-default-scheme'. 2598*** New user option 'browse-url-default-scheme'.
3017This user option decides which URL scheme that 'browse-url' and 2599This user option decides which URL scheme that 'browse-url' and
3018related functions will use by default. For example, you could 2600related functions will use by default. For example, you could
3019customize this to "https" to always prefer HTTPS URLs. 2601customize this to "https" to always prefer HTTPS URLs.
3020 2602
3021---
3022*** New user option 'browse-url-irc-function'. 2603*** New user option 'browse-url-irc-function'.
3023This option specifies a function for opening "irc://" links. It 2604This option specifies a function for opening "irc://" links. It
3024defaults to the new function 'browse-url-irc'. 2605defaults to the new function 'browse-url-irc'.
3025 2606
3026---
3027*** New function 'browse-url-irc'. 2607*** New function 'browse-url-irc'.
3028This multipurpose autoloaded function can be used for opening "irc://" 2608This multipurpose autoloaded function can be used for opening "irc://"
3029and "ircs://" URLS by any caller that passes a URL string as an initial 2609and "ircs://" URLS by any caller that passes a URL string as an initial
3030arg. 2610arg.
3031 2611
3032---
3033*** Support for the Netscape web browser has been removed. 2612*** Support for the Netscape web browser has been removed.
3034This support has been obsolete since Emacs 25.1. The final version of 2613This support has been obsolete since Emacs 25.1. The final version of
3035the Netscape web browser was released in February, 2008. 2614the Netscape web browser was released in February, 2008.
3036 2615
3037---
3038*** Support for the Galeon web browser has been removed. 2616*** Support for the Galeon web browser has been removed.
3039This support has been obsolete since Emacs 25.1. The final version of 2617This support has been obsolete since Emacs 25.1. The final version of
3040the Galeon web browser was released in September, 2008. 2618the Galeon web browser was released in September, 2008.
3041 2619
3042---
3043*** Support for the Mozilla web browser is now obsolete. 2620*** Support for the Mozilla web browser is now obsolete.
3044Note that this historical web browser is different from Mozilla 2621Note that this historical web browser is different from Mozilla
3045Firefox; it is its predecessor. 2622Firefox; it is its predecessor.
3046 2623
3047** Python Mode 2624** Python Mode
3048 2625
3049+++
3050*** Project shells and a new user option 'python-shell-dedicated'. 2626*** Project shells and a new user option 'python-shell-dedicated'.
3051When called with a prefix argument, 'run-python' now offers the choice 2627When called with a prefix argument, 'run-python' now offers the choice
3052of creating a shell dedicated to the current project. This shell runs 2628of creating a shell dedicated to the current project. This shell runs
@@ -3058,13 +2634,10 @@ project-dedicated or global) is specified by the new
3058 2634
3059** Ruby Mode 2635** Ruby Mode
3060 2636
3061---
3062*** New user option 'ruby-toggle-block-space-before-parameters'. 2637*** New user option 'ruby-toggle-block-space-before-parameters'.
3063 2638
3064---
3065*** Support for endless methods. 2639*** Support for endless methods.
3066 2640
3067---
3068*** New user options that determine indentation logic. 2641*** New user options that determine indentation logic.
3069'ruby-method-params-indent', 'ruby-block-indent', 2642'ruby-method-params-indent', 'ruby-block-indent',
3070'ruby-after-operator-indent', 'ruby-method-call-indent', 2643'ruby-after-operator-indent', 'ruby-method-call-indent',
@@ -3073,7 +2646,6 @@ explanations and examples.
3073 2646
3074** Eshell 2647** Eshell
3075 2648
3076+++
3077*** New feature to easily bypass Eshell's own pipelining. 2649*** New feature to easily bypass Eshell's own pipelining.
3078Prefixing '|', '<' or '>' with an asterisk, i.e. '*|', '*<' or '*>', 2650Prefixing '|', '<' or '>' with an asterisk, i.e. '*|', '*<' or '*>',
3079will cause the whole command to be passed to the operating system 2651will cause the whole command to be passed to the operating system
@@ -3082,7 +2654,6 @@ support for pipelines which will move a lot of data. See section
3082"Running Shell Pipelines Natively" in the Eshell manual, node 2654"Running Shell Pipelines Natively" in the Eshell manual, node
3083"(eshell) Pipelines". 2655"(eshell) Pipelines".
3084 2656
3085+++
3086*** New module to help supplying absolute file names to remote commands. 2657*** New module to help supplying absolute file names to remote commands.
3087After enabling the new 'eshell-elecslash' module, typing a forward 2658After enabling the new 'eshell-elecslash' module, typing a forward
3088slash as the first character of a command line argument will 2659slash as the first character of a command line argument will
@@ -3093,40 +2664,34 @@ commands are Lisp function or external when supplying absolute file
3093name arguments. See the "(eshell) Electric forward slash" node in the 2664name arguments. See the "(eshell) Electric forward slash" node in the
3094Eshell manual for details. 2665Eshell manual for details.
3095 2666
3096+++
3097*** Improved support for redirection operators in Eshell. 2667*** Improved support for redirection operators in Eshell.
3098Eshell now supports a wider variety of redirection operators. For 2668Eshell now supports a wider variety of redirection operators. For
3099example, you can now redirect both stdout and stderr via '&>' or 2669example, you can now redirect both stdout and stderr via '&>' or
3100duplicate one output handle to another via 'NEW-FD>&OLD-FD'. For more 2670duplicate one output handle to another via 'NEW-FD>&OLD-FD'. For more
3101information, see the "(eshell) Redirection" node in the Eshell manual. 2671information, see the "(eshell) Redirection" node in the Eshell manual.
3102 2672
3103+++
3104*** New eshell built-in command 'doas'. 2673*** New eshell built-in command 'doas'.
3105The privilege-escalation program 'doas' has been added to the existing 2674The privilege-escalation program 'doas' has been added to the existing
3106'su' and 'sudo' commands from the 'eshell-tramp' module. The external 2675'su' and 'sudo' commands from the 'eshell-tramp' module. The external
3107command may still be accessed by using '*doas'. 2676command may still be accessed by using '*doas'.
3108 2677
3109+++
3110*** Double-quoting an Eshell expansion now treats the result as a single string. 2678*** Double-quoting an Eshell expansion now treats the result as a single string.
3111If an Eshell expansion like '$FOO' is surrounded by double quotes, the 2679If an Eshell expansion like '$FOO' is surrounded by double quotes, the
3112result will always be a single string, no matter the type that would 2680result will always be a single string, no matter the type that would
3113otherwise be returned. 2681otherwise be returned.
3114 2682
3115+++
3116*** Concatenating Eshell expansions now works more similarly to other shells. 2683*** Concatenating Eshell expansions now works more similarly to other shells.
3117When concatenating an Eshell expansion that returns a list, "adjacent" 2684When concatenating an Eshell expansion that returns a list, "adjacent"
3118elements of each operand are now concatenated together, 2685elements of each operand are now concatenated together,
3119e.g. '$(list "a" "b")c' returns '("a" "bc")'. See the "(eshell) 2686e.g. '$(list "a" "b")c' returns '("a" "bc")'. See the "(eshell)
3120Expansion" node in the Eshell manual for more details. 2687Expansion" node in the Eshell manual for more details.
3121 2688
3122+++
3123*** Eshell subcommands with multiline numeric output return lists of numbers. 2689*** Eshell subcommands with multiline numeric output return lists of numbers.
3124If every line of the output of an Eshell subcommand like '${COMMAND}' 2690If every line of the output of an Eshell subcommand like '${COMMAND}'
3125is numeric, the result will be a list of numbers (or a single number 2691is numeric, the result will be a list of numbers (or a single number
3126if only one line of output). Previously, this only converted numbers 2692if only one line of output). Previously, this only converted numbers
3127when there was a single line of output. 2693when there was a single line of output.
3128 2694
3129---
3130*** Built-in Eshell commands now follow Posix/GNU argument syntax conventions. 2695*** Built-in Eshell commands now follow Posix/GNU argument syntax conventions.
3131Built-in commands in Eshell now accept command-line options with 2696Built-in commands in Eshell now accept command-line options with
3132values passed as a single token, such as '-oVALUE' or 2697values passed as a single token, such as '-oVALUE' or
@@ -3134,13 +2699,11 @@ values passed as a single token, such as '-oVALUE' or
3134'eshell-eval-using-options' macro. See "Defining new built-in 2699'eshell-eval-using-options' macro. See "Defining new built-in
3135commands" in the "(eshell) Built-ins" node of the Eshell manual. 2700commands" in the "(eshell) Built-ins" node of the Eshell manual.
3136 2701
3137---
3138*** Eshell globs ending with "/" now match only directories. 2702*** Eshell globs ending with "/" now match only directories.
3139Additionally, globs ending with "**/" or "***/" no longer raise an 2703Additionally, globs ending with "**/" or "***/" no longer raise an
3140error, and now expand to all directories recursively (following 2704error, and now expand to all directories recursively (following
3141symlinks in the latter case). 2705symlinks in the latter case).
3142 2706
3143+++
3144*** Lisp forms in Eshell now treat a nil result as a failed exit status. 2707*** Lisp forms in Eshell now treat a nil result as a failed exit status.
3145When executing a command that looks like '(lisp form)' and returns 2708When executing a command that looks like '(lisp form)' and returns
3146nil, Eshell will set the exit status (available in the '$?' 2709nil, Eshell will set the exit status (available in the '$?'
@@ -3150,12 +2713,10 @@ conditionals. To change this behavior, customize the new
3150 2713
3151** Shell 2714** Shell
3152 2715
3153---
3154*** New user option 'shell-kill-buffer-on-exit'. 2716*** New user option 'shell-kill-buffer-on-exit'.
3155Enabling this will automatically kill a "*shell*" buffer as soon as 2717Enabling this will automatically kill a "*shell*" buffer as soon as
3156the shell session terminates. 2718the shell session terminates.
3157 2719
3158---
3159*** New minor mode 'shell-highlight-undef-mode'. 2720*** New minor mode 'shell-highlight-undef-mode'.
3160Customize 'shell-highlight-undef-enable' to t if you want to enable 2721Customize 'shell-highlight-undef-enable' to t if you want to enable
3161this minor mode in "*shell*" buffers. It will highlight undefined 2722this minor mode in "*shell*" buffers. It will highlight undefined
@@ -3163,13 +2724,11 @@ commands with a warning face as you type.
3163 2724
3164** Calc 2725** Calc
3165 2726
3166+++
3167*** New user option 'calc-kill-line-numbering'. 2727*** New user option 'calc-kill-line-numbering'.
3168Set it to nil to exclude line numbering from kills and copies. 2728Set it to nil to exclude line numbering from kills and copies.
3169 2729
3170** Hierarchy 2730** Hierarchy
3171 2731
3172+++
3173*** Tree Display can delay computation of children. 2732*** Tree Display can delay computation of children.
3174'hierarchy-add-tree' and 'hierarchy-add-trees' have an optional 2733'hierarchy-add-tree' and 'hierarchy-add-trees' have an optional
3175argument which allows tree-widget display to be activated and computed 2734argument which allows tree-widget display to be activated and computed
@@ -3177,7 +2736,6 @@ only when the user expands the node.
3177 2736
3178** Proced 2737** Proced
3179 2738
3180---
3181*** proced.el shows system processes of remote hosts. 2739*** proced.el shows system processes of remote hosts.
3182When 'default-directory' is remote, and 'proced' is invoked with a 2740When 'default-directory' is remote, and 'proced' is invoked with a
3183negative argument like 'C-u - proced', the system processes of that 2741negative argument like 'C-u - proced', the system processes of that
@@ -3185,7 +2743,6 @@ remote host are shown. Alternatively, the user option
3185'proced-show-remote-processes' can be set to non-nil. 2743'proced-show-remote-processes' can be set to non-nil.
3186'proced-signal-function' has been marked obsolete. 2744'proced-signal-function' has been marked obsolete.
3187 2745
3188---
3189*** Proced can now optionally show process details in color. 2746*** Proced can now optionally show process details in color.
3190New user option 'proced-enable-color-flag' enables coloring of Proced 2747New user option 'proced-enable-color-flag' enables coloring of Proced
3191buffers. This option is disabled by default; customize it to a 2748buffers. This option is disabled by default; customize it to a
@@ -3193,36 +2750,30 @@ non-nil value to enable colors.
3193 2750
3194** Miscellaneous 2751** Miscellaneous
3195 2752
3196---
3197*** New user option 'webjump-use-internal-browser'. 2753*** New user option 'webjump-use-internal-browser'.
3198When non-nil, WebJump will use an internal browser to open web pages, 2754When non-nil, WebJump will use an internal browser to open web pages,
3199instead of the default external browser. 2755instead of the default external browser.
3200 2756
3201+++
3202*** New user option 'font-lock-ignore'. 2757*** New user option 'font-lock-ignore'.
3203This option provides a mechanism to selectively disable font-lock 2758This option provides a mechanism to selectively disable font-lock
3204keyword-driven fontifications. 2759keyword-driven fontifications.
3205 2760
3206---
3207*** New user option 'auto-save-visited-predicate'. 2761*** New user option 'auto-save-visited-predicate'.
3208This user option is a predicate function which is called by 2762This user option is a predicate function which is called by
3209'auto-save-visited-mode' to decide whether or not to save a buffer. 2763'auto-save-visited-mode' to decide whether or not to save a buffer.
3210You can use it to automatically save only specific buffers, for 2764You can use it to automatically save only specific buffers, for
3211example buffers using a particular mode or in some directory. 2765example buffers using a particular mode or in some directory.
3212 2766
3213---
3214*** New user option 'remote-file-name-inhibit-auto-save-visited'. 2767*** New user option 'remote-file-name-inhibit-auto-save-visited'.
3215If this user option is non-nil, 'auto-save-visited-mode' will not 2768If this user option is non-nil, 'auto-save-visited-mode' will not
3216auto-save remote buffers. The default is nil. 2769auto-save remote buffers. The default is nil.
3217 2770
3218+++
3219*** New package vtable.el for formatting tabular data. 2771*** New package vtable.el for formatting tabular data.
3220This package allows formatting data using variable-pitch fonts. 2772This package allows formatting data using variable-pitch fonts.
3221The resulting tables can display text in variable pitch fonts, text 2773The resulting tables can display text in variable pitch fonts, text
3222using fonts of different sizes, and images. See the "(vtable) Top" 2774using fonts of different sizes, and images. See the "(vtable) Top"
3223manual for more details. 2775manual for more details.
3224 2776
3225---
3226*** New minor mode 'elide-head-mode'. 2777*** New minor mode 'elide-head-mode'.
3227Enabling this minor mode turns on hiding header material, like 2778Enabling this minor mode turns on hiding header material, like
3228'elide-head' does; disabling it shows the header. The commands 2779'elide-head' does; disabling it shows the header. The commands
@@ -3241,27 +2792,22 @@ filtered out.
3241The list of handlers (already covering OSC 7 and 8) has been extended 2792The list of handlers (already covering OSC 7 and 8) has been extended
3242with a handler for OSC 2, the command to set a window title. 2793with a handler for OSC 2, the command to set a window title.
3243 2794
3244---
3245*** 'recentf-mode' now uses abbreviated file names by default. 2795*** 'recentf-mode' now uses abbreviated file names by default.
3246This means that e.g. "/home/foo/bar" is now displayed as "~/bar". 2796This means that e.g. "/home/foo/bar" is now displayed as "~/bar".
3247Customize the user option 'recentf-filename-handlers' to nil to get 2797Customize the user option 'recentf-filename-handlers' to nil to get
3248back the old behavior. 2798back the old behavior.
3249 2799
3250---
3251*** New command 'recentf-open'. 2800*** New command 'recentf-open'.
3252This command prompts for a recently opened file in the minibuffer, and 2801This command prompts for a recently opened file in the minibuffer, and
3253visits it. 2802visits it.
3254 2803
3255---
3256*** 'ffap-machine-at-point' no longer pings hosts by default. 2804*** 'ffap-machine-at-point' no longer pings hosts by default.
3257It will now simply look at a hostname to determine if it is valid, 2805It will now simply look at a hostname to determine if it is valid,
3258instead of also trying to ping it. Customize the user option 2806instead of also trying to ping it. Customize the user option
3259'ffap-machine-p-known' to 'ping' to get the old behavior back. 2807'ffap-machine-p-known' to 'ping' to get the old behavior back.
3260 2808
3261---
3262*** The 'run-dig' command is now obsolete; use 'dig' instead. 2809*** The 'run-dig' command is now obsolete; use 'dig' instead.
3263 2810
3264---
3265*** Some 'bib-mode' commands and variables have been renamed. 2811*** Some 'bib-mode' commands and variables have been renamed.
3266To respect Emacs naming conventions, the variable 'unread-bib-file' 2812To respect Emacs naming conventions, the variable 'unread-bib-file'
3267has been renamed to 'bib-unread-file'. The following commands have 2813has been renamed to 'bib-unread-file'. The following commands have
@@ -3271,36 +2817,29 @@ also been renamed:
3271 'mark-bib' to 'bib-mark' 2817 'mark-bib' to 'bib-mark'
3272 'unread-bib' to 'bib-unread' 2818 'unread-bib' to 'bib-unread'
3273 2819
3274---
3275*** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'. 2820*** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'.
3276The old name is still available as an obsolete function alias. 2821The old name is still available as an obsolete function alias.
3277 2822
3278---
3279*** The url-irc library now understands "ircs://" links. 2823*** The url-irc library now understands "ircs://" links.
3280 2824
3281---
3282*** New command 'world-clock-copy-time-as-kill' for 'world-clock-mode'. 2825*** New command 'world-clock-copy-time-as-kill' for 'world-clock-mode'.
3283It copies the current line into the kill ring. 2826It copies the current line into the kill ring.
3284 2827
3285---
3286*** 'edit-abbrevs' now uses font-locking. 2828*** 'edit-abbrevs' now uses font-locking.
3287The new face 'abbrev-table-name' is used to display the abbrev table 2829The new face 'abbrev-table-name' is used to display the abbrev table
3288name. 2830name.
3289 2831
3290---
3291*** New key binding 'O' in "*Buffer List*". 2832*** New key binding 'O' in "*Buffer List*".
3292This key is now bound to 'Buffer-menu-view-other-window', which will 2833This key is now bound to 'Buffer-menu-view-other-window', which will
3293view this line's buffer in View mode in another window. 2834view this line's buffer in View mode in another window.
3294 2835
3295** Scheme Mode 2836** Scheme Mode
3296 2837
3297---
3298*** Auto-detection of Scheme library files. 2838*** Auto-detection of Scheme library files.
3299Emacs now automatically enables the Scheme mode when opening R6RS 2839Emacs now automatically enables the Scheme mode when opening R6RS
3300Scheme Library Source (".sls") files and R7RS Scheme Library 2840Scheme Library Source (".sls") files and R7RS Scheme Library
3301Definition (".sld") files. 2841Definition (".sld") files.
3302 2842
3303---
3304*** Imenu members for R6RS and R7RS library members. 2843*** Imenu members for R6RS and R7RS library members.
3305Imenu now lists the members directly nested in R6RS Scheme libraries 2844Imenu now lists the members directly nested in R6RS Scheme libraries
3306('library') and R7RS libraries ('define-library'). 2845('library') and R7RS libraries ('define-library').
@@ -3308,7 +2847,6 @@ Imenu now lists the members directly nested in R6RS Scheme libraries
3308 2847
3309* New Modes and Packages in Emacs 29.1 2848* New Modes and Packages in Emacs 29.1
3310 2849
3311+++
3312** Eglot: Emacs Client for the Language Server Protocol. 2850** Eglot: Emacs Client for the Language Server Protocol.
3313Emacs now comes with the Eglot package, which enhances various Emacs 2851Emacs now comes with the Eglot package, which enhances various Emacs
3314features, such as completion, documentation, error detection, etc., 2852features, such as completion, documentation, error detection, etc.,
@@ -3320,7 +2858,6 @@ If you want to be able to use 'package-install' to upgrade Eglot to
3320newer versions released on GNU ELPA, customize the new option 2858newer versions released on GNU ELPA, customize the new option
3321'package-install-upgrade-built-in' to a non-nil value. 2859'package-install-upgrade-built-in' to a non-nil value.
3322 2860
3323+++
3324** use-package: Declarative package configuration. 2861** use-package: Declarative package configuration.
3325use-package is now shipped with Emacs. It provides the 'use-package' 2862use-package is now shipped with Emacs. It provides the 'use-package'
3326macro, which allows you to isolate package configuration in your init 2863macro, which allows you to isolate package configuration in your init
@@ -3331,7 +2868,6 @@ If you want to be able to use 'package-install' to upgrade use-package
3331to newer versions released on GNU ELPA, customize the new option 2868to newer versions released on GNU ELPA, customize the new option
3332'package-install-upgrade-built-in' to a non-nil value. 2869'package-install-upgrade-built-in' to a non-nil value.
3333 2870
3334---
3335** New package 'wallpaper'. 2871** New package 'wallpaper'.
3336This package provides the command 'wallpaper-set', which sets the 2872This package provides the command 'wallpaper-set', which sets the
3337desktop background image. Depending on the system and the desktop, 2873desktop background image. Depending on the system and the desktop,
@@ -3341,7 +2877,6 @@ detected automatically in most cases. It can also be customized
3341manually if needed, using the new user options 'wallpaper-command' and 2877manually if needed, using the new user options 'wallpaper-command' and
3342'wallpaper-command-args'. 2878'wallpaper-command-args'.
3343 2879
3344+++
3345** New package 'oclosure'. 2880** New package 'oclosure'.
3346This allows the creation of OClosures, which are "functions with 2881This allows the creation of OClosures, which are "functions with
3347slots" or "function objects" that expose additional information about 2882slots" or "function objects" that expose additional information about
@@ -3349,33 +2884,27 @@ themselves. Use the new macros 'oclosure-define' and
3349'oclosure-lambda' to create OClosures. See the "(elisp) OClosures" 2884'oclosure-lambda' to create OClosures. See the "(elisp) OClosures"
3350node for more information. 2885node for more information.
3351 2886
3352+++
3353*** New generic function 'oclosure-interactive-form'. 2887*** New generic function 'oclosure-interactive-form'.
3354Used by 'interactive-form' when called on an OClosure. 2888Used by 'interactive-form' when called on an OClosure.
3355This allows specific OClosure types to compute their interactive specs 2889This allows specific OClosure types to compute their interactive specs
3356on demand rather than precompute them when created. 2890on demand rather than precompute them when created.
3357 2891
3358---
3359** New theme 'leuven-dark'. 2892** New theme 'leuven-dark'.
3360This is a dark version of the 'leuven' theme. 2893This is a dark version of the 'leuven' theme.
3361 2894
3362+++
3363** New mode 'erts-mode'. 2895** New mode 'erts-mode'.
3364This mode is used to edit files geared towards testing actions in 2896This mode is used to edit files geared towards testing actions in
3365Emacs buffers, like indentation and the like. The new ert function 2897Emacs buffers, like indentation and the like. The new ert function
3366'ert-test-erts-file' is used to parse these files. 2898'ert-test-erts-file' is used to parse these files.
3367 2899
3368---
3369** New major mode 'js-json-mode'. 2900** New major mode 'js-json-mode'.
3370This is a lightweight variant of 'js-mode' that is used by default 2901This is a lightweight variant of 'js-mode' that is used by default
3371when visiting JSON files. 2902when visiting JSON files.
3372 2903
3373+++
3374** New major mode 'csharp-mode'. 2904** New major mode 'csharp-mode'.
3375A major mode based on CC Mode for editing programs in the C# language. 2905A major mode based on CC Mode for editing programs in the C# language.
3376This mode is auto-enabled for files with the ".cs" extension. 2906This mode is auto-enabled for files with the ".cs" extension.
3377 2907
3378+++
3379** New major modes based on the tree-sitter library. 2908** New major modes based on the tree-sitter library.
3380These new major modes are available if Emacs was built with the 2909These new major modes are available if Emacs was built with the
3381tree-sitter library. They provide support for font-locking, 2910tree-sitter library. They provide support for font-locking,
@@ -3417,96 +2946,77 @@ If a language grammar library required by a mode is not found in any
3417of the above places, the mode will display a warning when you try to 2946of the above places, the mode will display a warning when you try to
3418turn it on. 2947turn it on.
3419 2948
3420+++
3421*** New major mode 'typescript-ts-mode'. 2949*** New major mode 'typescript-ts-mode'.
3422A major mode based on the tree-sitter library for editing programs 2950A major mode based on the tree-sitter library for editing programs
3423in the TypeScript language. 2951in the TypeScript language.
3424 2952
3425+++
3426*** New major mode 'tsx-ts-mode'. 2953*** New major mode 'tsx-ts-mode'.
3427A major mode based on the tree-sitter library for editing programs 2954A major mode based on the tree-sitter library for editing programs
3428in the TypeScript language, with support for TSX. 2955in the TypeScript language, with support for TSX.
3429 2956
3430+++
3431*** New major mode 'c-ts-mode'. 2957*** New major mode 'c-ts-mode'.
3432An optional major mode based on the tree-sitter library for editing 2958An optional major mode based on the tree-sitter library for editing
3433programs in the C language. 2959programs in the C language.
3434 2960
3435+++
3436*** New major mode 'c++-ts-mode'. 2961*** New major mode 'c++-ts-mode'.
3437An optional major mode based on the tree-sitter library for editing 2962An optional major mode based on the tree-sitter library for editing
3438programs in the C++ language. 2963programs in the C++ language.
3439 2964
3440+++
3441*** New command 'c-or-c++-ts-mode'. 2965*** New command 'c-or-c++-ts-mode'.
3442A command that automatically guesses the language of a header file, 2966A command that automatically guesses the language of a header file,
3443and enables either 'c-ts-mode' or 'c++-ts-mode' accordingly. 2967and enables either 'c-ts-mode' or 'c++-ts-mode' accordingly.
3444 2968
3445+++
3446*** New major mode 'java-ts-mode'. 2969*** New major mode 'java-ts-mode'.
3447An optional major mode based on the tree-sitter library for editing 2970An optional major mode based on the tree-sitter library for editing
3448programs in the Java language. 2971programs in the Java language.
3449 2972
3450+++
3451*** New major mode 'python-ts-mode'. 2973*** New major mode 'python-ts-mode'.
3452An optional major mode based on the tree-sitter library for editing 2974An optional major mode based on the tree-sitter library for editing
3453programs in the Python language. 2975programs in the Python language.
3454 2976
3455+++
3456*** New major mode 'css-ts-mode'. 2977*** New major mode 'css-ts-mode'.
3457An optional major mode based on the tree-sitter library for editing 2978An optional major mode based on the tree-sitter library for editing
3458CSS (Cascading Style Sheets). 2979CSS (Cascading Style Sheets).
3459 2980
3460+++
3461*** New major mode 'json-ts-mode'. 2981*** New major mode 'json-ts-mode'.
3462An optional major mode based on the tree-sitter library for editing 2982An optional major mode based on the tree-sitter library for editing
3463programs in the JSON language. 2983programs in the JSON language.
3464 2984
3465+++
3466*** New major mode 'csharp-ts-mode'. 2985*** New major mode 'csharp-ts-mode'.
3467An optional major mode based on the tree-sitter library for editing 2986An optional major mode based on the tree-sitter library for editing
3468programs in the C# language. 2987programs in the C# language.
3469 2988
3470+++
3471*** New major mode 'bash-ts-mode'. 2989*** New major mode 'bash-ts-mode'.
3472Am optional major mode based on the tree-sitter library for editing 2990Am optional major mode based on the tree-sitter library for editing
3473Bash shell scripts. 2991Bash shell scripts.
3474 2992
3475+++
3476*** New major mode 'dockerfile-ts-mode'. 2993*** New major mode 'dockerfile-ts-mode'.
3477A major mode based on the tree-sitter library for editing 2994A major mode based on the tree-sitter library for editing
3478Dockerfiles. 2995Dockerfiles.
3479 2996
3480+++
3481*** New major mode 'cmake-ts-mode'. 2997*** New major mode 'cmake-ts-mode'.
3482A major mode based on the tree-sitter library for editing CMake files. 2998A major mode based on the tree-sitter library for editing CMake files.
3483 2999
3484+++
3485*** New major mode 'toml-ts-mode'. 3000*** New major mode 'toml-ts-mode'.
3486An optional major mode based on the tree-sitter library for editing 3001An optional major mode based on the tree-sitter library for editing
3487files written in TOML, a format for writing configuration files. 3002files written in TOML, a format for writing configuration files.
3488 3003
3489+++
3490*** New major mode 'go-ts-mode'. 3004*** New major mode 'go-ts-mode'.
3491A major mode based on the tree-sitter library for editing programs in 3005A major mode based on the tree-sitter library for editing programs in
3492the Go language. 3006the Go language.
3493 3007
3494+++
3495*** New major mode 'go-mod-ts-mode'. 3008*** New major mode 'go-mod-ts-mode'.
3496A major mode based on the tree-sitter library for editing "go.mod" 3009A major mode based on the tree-sitter library for editing "go.mod"
3497files. 3010files.
3498 3011
3499+++
3500*** New major mode 'yaml-ts-mode'. 3012*** New major mode 'yaml-ts-mode'.
3501A major mode based on the tree-sitter library for editing files 3013A major mode based on the tree-sitter library for editing files
3502written in YAML. 3014written in YAML.
3503 3015
3504+++
3505*** New major mode 'rust-ts-mode'. 3016*** New major mode 'rust-ts-mode'.
3506A major mode based on the tree-sitter library for editing programs in 3017A major mode based on the tree-sitter library for editing programs in
3507the Rust language. 3018the Rust language.
3508 3019
3509---
3510*** New major mode 'ruby-ts-mode'. 3020*** New major mode 'ruby-ts-mode'.
3511An optional major mode based on the tree-sitter library for editing 3021An optional major mode based on the tree-sitter library for editing
3512programs in the Ruby language. 3022programs in the Ruby language.
@@ -3514,7 +3024,6 @@ programs in the Ruby language.
3514 3024
3515* Incompatible Lisp Changes in Emacs 29.1 3025* Incompatible Lisp Changes in Emacs 29.1
3516 3026
3517+++
3518** The implementation of overlays has changed. 3027** The implementation of overlays has changed.
3519Emacs now uses an implementation of overlays that is much more 3028Emacs now uses an implementation of overlays that is much more
3520efficient than the original one, and should speed up all the 3029efficient than the original one, and should speed up all the
@@ -3528,7 +3037,6 @@ or user level, with the exception of better performance and the order
3528of overlays returned by functions that don't promise any particular 3037of overlays returned by functions that don't promise any particular
3529order. 3038order.
3530 3039
3531---
3532*** The function 'overlay-recenter' is now a no-op. 3040*** The function 'overlay-recenter' is now a no-op.
3533This function does nothing, and in particular has no effect on the 3041This function does nothing, and in particular has no effect on the
3534value returned by 'overlay-lists'. The purpose of 'overlay-recenter' 3042value returned by 'overlay-lists'. The purpose of 'overlay-recenter'
@@ -3538,30 +3046,25 @@ is efficient regardless of their position, and there's no longer any
3538need to "optimize" the lookup, nor any notion of a "center" of the 3046need to "optimize" the lookup, nor any notion of a "center" of the
3539overlays. 3047overlays.
3540 3048
3541---
3542*** The function 'overlay-lists' returns one unified list of overlays. 3049*** The function 'overlay-lists' returns one unified list of overlays.
3543This function used to return a cons of two lists, one with overlays 3050This function used to return a cons of two lists, one with overlays
3544before the "center" position, the other after that "center". It now 3051before the "center" position, the other after that "center". It now
3545returns a list whose 'car' is the list of all the buffer overlays, and 3052returns a list whose 'car' is the list of all the buffer overlays, and
3546whose 'cdr' is always nil. 3053whose 'cdr' is always nil.
3547 3054
3548+++
3549** 'format-prompt' now uses 'substitute-command-keys'. 3055** 'format-prompt' now uses 'substitute-command-keys'.
3550This means that both the prompt and 'minibuffer-default-prompt-format' 3056This means that both the prompt and 'minibuffer-default-prompt-format'
3551will have key definitions and single quotes handled specially. 3057will have key definitions and single quotes handled specially.
3552 3058
3553+++
3554** New function 'substitute-quotes'. 3059** New function 'substitute-quotes'.
3555This function works like 'substitute-command-keys' but only 3060This function works like 'substitute-command-keys' but only
3556substitutes quote characters. 3061substitutes quote characters.
3557 3062
3558---
3559** 'find-image' now uses 'create-image'. 3063** 'find-image' now uses 'create-image'.
3560This means that images found through 'find-image' also have 3064This means that images found through 'find-image' also have
3561auto-scaling applied. (This only makes a difference on HiDPI 3065auto-scaling applied. (This only makes a difference on HiDPI
3562displays.) 3066displays.)
3563 3067
3564+++
3565** Changes in how "raw" in-memory XBM images are specified. 3068** Changes in how "raw" in-memory XBM images are specified.
3566Some years back Emacs gained the ability to scale images, and you 3069Some years back Emacs gained the ability to scale images, and you
3567could then specify ':width' and ':height' when using 'create-image' on all 3070could then specify ':width' and ':height' when using 'create-image' on all
@@ -3573,7 +3076,6 @@ has been changed, and ':width'/':height' now works as with all other image
3573formats, and the way to specify the width/height of the "raw" 3076formats, and the way to specify the width/height of the "raw"
3574in-memory format is now by using ':data-width' and ':data-height'. 3077in-memory format is now by using ':data-width' and ':data-height'.
3575 3078
3576+++
3577** "loaddefs.el" generation has been reimplemented. 3079** "loaddefs.el" generation has been reimplemented.
3578The various "loaddefs.el" files in the Emacs tree (which contain 3080The various "loaddefs.el" files in the Emacs tree (which contain
3579information about autoloads, built-in packages and package prefixes) 3081information about autoloads, built-in packages and package prefixes)
@@ -3589,19 +3091,16 @@ Previously, ';;;###' specs inside a top-level form (i.e., something
3589like '(when ... ;;;### ...)' would be ignored. They are now parsed as 3091like '(when ... ;;;### ...)' would be ignored. They are now parsed as
3590usual. 3092usual.
3591 3093
3592---
3593** Themes have special autoload cookies. 3094** Themes have special autoload cookies.
3594All built-in themes are scraped for ';;;###theme-autoload' cookies 3095All built-in themes are scraped for ';;;###theme-autoload' cookies
3595that are loaded along with the regular auto-loaded code. 3096that are loaded along with the regular auto-loaded code.
3596 3097
3597+++
3598** 'buffer-modified-p' has been extended. 3098** 'buffer-modified-p' has been extended.
3599This function was previously documented to return only nil or t. This 3099This function was previously documented to return only nil or t. This
3600has been changed to nil/'autosaved'/non-nil. The new 'autosaved' 3100has been changed to nil/'autosaved'/non-nil. The new 'autosaved'
3601value means that the buffer is modified, but that it hasn't been 3101value means that the buffer is modified, but that it hasn't been
3602modified since the time of last auto-save. 3102modified since the time of last auto-save.
3603 3103
3604---
3605** 'with-silent-modifications' also restores buffer autosave status. 3104** 'with-silent-modifications' also restores buffer autosave status.
3606'with-silent-modifications' is a macro meant to be used by the font 3105'with-silent-modifications' is a macro meant to be used by the font
3607locking machinery to allow applying text properties without changing 3106locking machinery to allow applying text properties without changing
@@ -3610,7 +3109,6 @@ buffer autosave status, so applying font locking to a modified buffer
3610that had already been auto-saved would trigger another auto-saving. 3109that had already been auto-saved would trigger another auto-saving.
3611This is no longer the case. 3110This is no longer the case.
3612 3111
3613---
3614** 'prin1' doesn't always escape "." and "?" in symbols any more. 3112** 'prin1' doesn't always escape "." and "?" in symbols any more.
3615Previously, symbols like 'foo.bar' would be printed by 'prin1' as 3113Previously, symbols like 'foo.bar' would be printed by 'prin1' as
3616"foo\.bar". This now prints as "foo.bar" instead. The Emacs Lisp 3114"foo\.bar". This now prints as "foo.bar" instead. The Emacs Lisp
@@ -3626,19 +3124,16 @@ If the "." and "?" characters are the first character in the symbol,
3626they will still be escaped, so the '.foo' symbol is still printed as 3124they will still be escaped, so the '.foo' symbol is still printed as
3627"\.foo" and the '?bar' symbol is still printed as "\?bar". 3125"\.foo" and the '?bar' symbol is still printed as "\?bar".
3628 3126
3629+++
3630** Remapping 'mode-line' face no longer works as expected. 3127** Remapping 'mode-line' face no longer works as expected.
3631'mode-line' is now the parent face of the new 'mode-line-active' face, 3128'mode-line' is now the parent face of the new 'mode-line-active' face,
3632and remapping parent of basic faces does not work reliably. 3129and remapping parent of basic faces does not work reliably.
3633Instead of remapping 'mode-line', you have to remap 'mode-line-active'. 3130Instead of remapping 'mode-line', you have to remap 'mode-line-active'.
3634 3131
3635+++
3636** 'make-process' has been extended to support ptys when ':stderr' is set. 3132** 'make-process' has been extended to support ptys when ':stderr' is set.
3637Previously, setting ':stderr' to a non-nil value would force the 3133Previously, setting ':stderr' to a non-nil value would force the
3638process's connection to use pipes. Now, Emacs will use a pty for 3134process's connection to use pipes. Now, Emacs will use a pty for
3639stdin and stdout if requested no matter the value of ':stderr'. 3135stdin and stdout if requested no matter the value of ':stderr'.
3640 3136
3641---
3642** User option 'mail-source-ignore-errors' is now obsolete. 3137** User option 'mail-source-ignore-errors' is now obsolete.
3643The whole mechanism for prompting users to continue in case of 3138The whole mechanism for prompting users to continue in case of
3644mail-source errors has been removed, so this option is no longer 3139mail-source errors has been removed, so this option is no longer
@@ -3646,7 +3141,6 @@ needed.
3646 3141
3647** Fonts 3142** Fonts
3648 3143
3649---
3650*** Emacs now supports 'medium' fonts. 3144*** Emacs now supports 'medium' fonts.
3651Emacs previously didn't distinguish between the 'regular'/'normal' 3145Emacs previously didn't distinguish between the 'regular'/'normal'
3652weight and the 'medium' weight, but it now also supports the (heavier) 3146weight and the 'medium' weight, but it now also supports the (heavier)
@@ -3655,7 +3149,6 @@ weight and the 'medium' weight, but it now also supports the (heavier)
3655font spec. In these cases, replacing ":weight 'normal" with ":weight 3149font spec. In these cases, replacing ":weight 'normal" with ":weight
3656'medium" should fix the issue. 3150'medium" should fix the issue.
3657 3151
3658---
3659** Keymap descriptions by Help commands have changed. 3152** Keymap descriptions by Help commands have changed.
3660'help--describe-command', 'C-h b' and associated functions that output 3153'help--describe-command', 'C-h b' and associated functions that output
3661keymap descriptions have changed. In particular, prefix commands are 3154keymap descriptions have changed. In particular, prefix commands are
@@ -3664,7 +3157,6 @@ functions output "[closure]"/"[lambda]". You can get back the old
3664behavior of including prefix commands by customizing the new option 3157behavior of including prefix commands by customizing the new option
3665'describe-bindings-show-prefix-commands' to a non-nil value. 3158'describe-bindings-show-prefix-commands' to a non-nil value.
3666 3159
3667---
3668** 'downcase' details have changed slightly. 3160** 'downcase' details have changed slightly.
3669In certain locales, changing the case of an ASCII-range character may 3161In certain locales, changing the case of an ASCII-range character may
3670turn it into a multibyte character, most notably with "I" in Turkish 3162turn it into a multibyte character, most notably with "I" in Turkish
@@ -3676,13 +3168,11 @@ get proper locale-dependent downcasing, the string has to be converted
3676to multibyte first. (This goes for the other case-changing functions, 3168to multibyte first. (This goes for the other case-changing functions,
3677too.) 3169too.)
3678 3170
3679---
3680** Functions in 'tramp-foreign-file-name-handler-alist' have changed. 3171** Functions in 'tramp-foreign-file-name-handler-alist' have changed.
3681Functions to determine which Tramp file name handler to use are now 3172Functions to determine which Tramp file name handler to use are now
3682passed a file name in dissected form (via 'tramp-dissect-file-name') 3173passed a file name in dissected form (via 'tramp-dissect-file-name')
3683instead of in string form. 3174instead of in string form.
3684 3175
3685---
3686** 'def' indentation changes. 3176** 'def' indentation changes.
3687In 'emacs-lisp-mode', forms with a symbol with a name that start with 3177In 'emacs-lisp-mode', forms with a symbol with a name that start with
3688"def" have been automatically indented as if they were 'defun'-like 3178"def" have been automatically indented as if they were 'defun'-like
@@ -3702,33 +3192,26 @@ like:
3702 3192
3703 (put 'defzot 'lisp-indent-function 'defun) 3193 (put 'defzot 'lisp-indent-function 'defun)
3704 3194
3705---
3706** The 'inhibit-changing-match-data' variable is now obsolete. 3195** The 'inhibit-changing-match-data' variable is now obsolete.
3707Instead, functions like 'string-match' and 'looking-at' now take an 3196Instead, functions like 'string-match' and 'looking-at' now take an
3708optional INHIBIT-MODIFY argument. 3197optional INHIBIT-MODIFY argument.
3709 3198
3710---
3711** 'gnus-define-keys' is now obsolete. 3199** 'gnus-define-keys' is now obsolete.
3712Use 'define-keymap' instead. 3200Use 'define-keymap' instead.
3713 3201
3714---
3715** MozRepl has been removed from js.el. 3202** MozRepl has been removed from js.el.
3716MozRepl was removed from Firefox in 2017, so this code doesn't work 3203MozRepl was removed from Firefox in 2017, so this code doesn't work
3717with recent versions of Firefox. 3204with recent versions of Firefox.
3718 3205
3719---
3720** The function 'image-dired-get-exif-data' is now obsolete. 3206** The function 'image-dired-get-exif-data' is now obsolete.
3721Use 'exif-parse-file' and 'exif-field' instead. 3207Use 'exif-parse-file' and 'exif-field' instead.
3722 3208
3723---
3724** 'insert-directory' alternatives should not change the free disk space line. 3209** 'insert-directory' alternatives should not change the free disk space line.
3725This change is now applied in 'dired-insert-directory'. 3210This change is now applied in 'dired-insert-directory'.
3726 3211
3727---
3728** 'compilation-last-buffer' is (finally) declared obsolete. 3212** 'compilation-last-buffer' is (finally) declared obsolete.
3729It has been obsolete since Emacs 22.1, actually. 3213It has been obsolete since Emacs 22.1, actually.
3730 3214
3731---
3732** Calling 'lsh' now elicits a byte-compiler warning. 3215** Calling 'lsh' now elicits a byte-compiler warning.
3733'lsh' behaves in somewhat surprising and platform-dependent ways for 3216'lsh' behaves in somewhat surprising and platform-dependent ways for
3734negative arguments, and is generally slower than 'ash', which should be 3217negative arguments, and is generally slower than 'ash', which should be
@@ -3736,7 +3219,6 @@ used instead. This warning can be suppressed by surrounding calls to
3736'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)', 3219'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)',
3737but switching to 'ash' is generally much preferable. 3220but switching to 'ash' is generally much preferable.
3738 3221
3739---
3740** Some functions and variables obsolete since Emacs 24 have been removed: 3222** Some functions and variables obsolete since Emacs 24 have been removed:
3741'Buffer-menu-buffer+size-width', 'Electric-buffer-menu-mode', 3223'Buffer-menu-buffer+size-width', 'Electric-buffer-menu-mode',
3742'Info-edit-map', 'allout-abbreviate-flattened-numbering', 3224'Info-edit-map', 'allout-abbreviate-flattened-numbering',
@@ -3834,7 +3316,6 @@ but switching to 'ash' is generally much preferable.
3834'which-func-mode' (function), 'window-system-version', 3316'which-func-mode' (function), 'window-system-version',
3835'winner-mode-leave-hook', 'x-cut-buffer-or-selection-value'. 3317'winner-mode-leave-hook', 'x-cut-buffer-or-selection-value'.
3836 3318
3837---
3838** Some functions and variables obsolete since Emacs 23 have been removed: 3319** Some functions and variables obsolete since Emacs 23 have been removed:
3839'find-emacs-lisp-shadows', 'newsticker-cache-filename', 3320'find-emacs-lisp-shadows', 'newsticker-cache-filename',
3840'process-filter-multibyte-p', 'redisplay-end-trigger-functions', 3321'process-filter-multibyte-p', 'redisplay-end-trigger-functions',
@@ -3842,17 +3323,14 @@ but switching to 'ash' is generally much preferable.
3842'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode', 3323'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode',
3843'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'. 3324'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'.
3844 3325
3845---
3846** Some functions and variables obsolete since Emacs 21 or 22 have been removed: 3326** Some functions and variables obsolete since Emacs 21 or 22 have been removed:
3847'c-toggle-auto-state', 'find-file-not-found-hooks', 3327'c-toggle-auto-state', 'find-file-not-found-hooks',
3848'ls-lisp-dired-ignore-case', 'query-replace-regexp-eval'. 3328'ls-lisp-dired-ignore-case', 'query-replace-regexp-eval'.
3849 3329
3850+++
3851** New generic function 'function-documentation'. 3330** New generic function 'function-documentation'.
3852It can dynamically generate a raw docstring depending on the type of a 3331It can dynamically generate a raw docstring depending on the type of a
3853function. Used mainly for docstrings of OClosures. 3332function. Used mainly for docstrings of OClosures.
3854 3333
3855+++
3856** Base64 encoding no longer tolerates latin-1 input. 3334** Base64 encoding no longer tolerates latin-1 input.
3857The functions 'base64-encode-string', 'base64url-encode-string', 3335The functions 'base64-encode-string', 'base64url-encode-string',
3858'base64-encode-region' and 'base64url-encode-region' no longer accept 3336'base64-encode-region' and 'base64url-encode-region' no longer accept
@@ -3860,24 +3338,20 @@ characters in the range U+0080..U+00FF as substitutes for single bytes
3860in the range 128..255, but signal an error for all multibyte characters. 3338in the range 128..255, but signal an error for all multibyte characters.
3861The input must be unibyte encoded text. 3339The input must be unibyte encoded text.
3862 3340
3863+++
3864** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'. 3341** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'.
3865It was previously only run by 'clone-indirect-buffer' and 3342It was previously only run by 'clone-indirect-buffer' and
3866'clone-indirect-buffer-other-window'. Since 'make-indirect-buffer' is 3343'clone-indirect-buffer-other-window'. Since 'make-indirect-buffer' is
3867called by both of these, the hook is now run by all 3 of these 3344called by both of these, the hook is now run by all 3 of these
3868functions. 3345functions.
3869 3346
3870---
3871** '?\' at the end of a line now signals an error. 3347** '?\' at the end of a line now signals an error.
3872Previously, it produced a nonsense value, -1, that was never intended. 3348Previously, it produced a nonsense value, -1, that was never intended.
3873 3349
3874---
3875** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed: 3350** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed:
3876abbrevlist.el, assoc.el, complete.el, cust-print.el, 3351abbrevlist.el, assoc.el, complete.el, cust-print.el,
3877erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el, 3352erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el,
3878patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el. 3353patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el.
3879 3354
3880+++
3881** Many seldom-used generalized variables have been made obsolete. 3355** Many seldom-used generalized variables have been made obsolete.
3882Emacs has a number of rather obscure generalized variables defined, 3356Emacs has a number of rather obscure generalized variables defined,
3883that, for instance, allowed you to say things like: 3357that, for instance, allowed you to say things like:
@@ -3903,7 +3377,6 @@ The following generalized variables have been made obsolete:
3903'standard-case-table', 'syntax-table', 'visited-file-modtime', 3377'standard-case-table', 'syntax-table', 'visited-file-modtime',
3904'window-height', 'window-width', and 'x-get-secondary-selection'. 3378'window-height', 'window-width', and 'x-get-secondary-selection'.
3905 3379
3906---
3907** The 'dotimes' loop variable can no longer be manipulated in the loop body. 3380** The 'dotimes' loop variable can no longer be manipulated in the loop body.
3908Previously, the 'dotimes' loop counter could be modified inside the 3381Previously, the 'dotimes' loop counter could be modified inside the
3909loop body, but only in code using dynamic binding. Now the behavior 3382loop body, but only in code using dynamic binding. Now the behavior
@@ -3919,7 +3392,6 @@ now always prints the numbers 0 .. 9.
3919 3392
3920* Lisp Changes in Emacs 29.1 3393* Lisp Changes in Emacs 29.1
3921 3394
3922+++
3923** Interpreted closures are "safe for space". 3395** Interpreted closures are "safe for space".
3924As was already the case for byte-compiled closures, instead of capturing 3396As was already the case for byte-compiled closures, instead of capturing
3925the whole current lexical environment, interpreted closures now only 3397the whole current lexical environment, interpreted closures now only
@@ -3928,55 +3400,45 @@ The previous behavior could occasionally lead to memory leaks or
3928to problems where a printed closure would not be 'read'able because 3400to problems where a printed closure would not be 'read'able because
3929of an un'read'able value in an unrelated lexical variable. 3401of an un'read'able value in an unrelated lexical variable.
3930 3402
3931+++
3932** New accessor function 'file-attribute-file-identifier'. 3403** New accessor function 'file-attribute-file-identifier'.
3933It returns the list of the inode number and device identifier 3404It returns the list of the inode number and device identifier
3934retrieved by 'file-attributes'. This value can be used to identify a 3405retrieved by 'file-attributes'. This value can be used to identify a
3935file uniquely. The device identifier can be a single number or (for 3406file uniquely. The device identifier can be a single number or (for
3936remote files) a cons of 2 numbers. 3407remote files) a cons of 2 numbers.
3937 3408
3938+++
3939** New macro 'while-let'. 3409** New macro 'while-let'.
3940This is like 'when-let', but repeats until a binding form is nil. 3410This is like 'when-let', but repeats until a binding form is nil.
3941 3411
3942+++
3943** New function 'make-obsolete-generalized-variable'. 3412** New function 'make-obsolete-generalized-variable'.
3944This can be used to mark setters used by 'setf' as obsolete, and the 3413This can be used to mark setters used by 'setf' as obsolete, and the
3945byte-compiler will then warn about using them. 3414byte-compiler will then warn about using them.
3946 3415
3947+++
3948** New functions 'pos-eol' and 'pos-bol'. 3416** New functions 'pos-eol' and 'pos-bol'.
3949These are like 'line-end-position' and 'line-beginning-position' 3417These are like 'line-end-position' and 'line-beginning-position'
3950(respectively), but ignore fields (and are more efficient). 3418(respectively), but ignore fields (and are more efficient).
3951 3419
3952+++
3953** New function 'compiled-function-p'. 3420** New function 'compiled-function-p'.
3954This returns non-nil if its argument is either a built-in, or a 3421This returns non-nil if its argument is either a built-in, or a
3955byte-compiled, or a natively-compiled function object, or a function 3422byte-compiled, or a natively-compiled function object, or a function
3956loaded from a dynamic module. 3423loaded from a dynamic module.
3957 3424
3958---
3959** 'deactivate-mark' can have new value 'dont-save'. 3425** 'deactivate-mark' can have new value 'dont-save'.
3960This value means that Emacs should deactivate the mark as usual, but 3426This value means that Emacs should deactivate the mark as usual, but
3961without setting the primary selection, if 'select-active-regions' is 3427without setting the primary selection, if 'select-active-regions' is
3962enabled. 3428enabled.
3963 3429
3964+++
3965** New 'declare' form 'interactive-args'. 3430** New 'declare' form 'interactive-args'.
3966This can be used to specify what forms to put into 'command-history' 3431This can be used to specify what forms to put into 'command-history'
3967when executing commands interactively. 3432when executing commands interactively.
3968 3433
3969+++
3970** The FORM argument of 'time-convert' is mandatory. 3434** The FORM argument of 'time-convert' is mandatory.
3971'time-convert' can still be called without it, as before, but the 3435'time-convert' can still be called without it, as before, but the
3972compiler now emits a warning about this deprecated usage. 3436compiler now emits a warning about this deprecated usage.
3973 3437
3974+++
3975** Emacs now supports user-customizable and themable icons. 3438** Emacs now supports user-customizable and themable icons.
3976These can be used for buttons in buffers and the like. See the 3439These can be used for buttons in buffers and the like. See the
3977"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details. 3440"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details.
3978 3441
3979+++
3980** New arguments MESSAGE and TIMEOUT of 'set-transient-map'. 3442** New arguments MESSAGE and TIMEOUT of 'set-transient-map'.
3981MESSAGE specifies a message to display after activating the transient 3443MESSAGE specifies a message to display after activating the transient
3982map, including a special formatting spec to list available keys. 3444map, including a special formatting spec to list available keys.
@@ -3984,7 +3446,6 @@ TIMEOUT is the idle time after which to deactivate the transient map.
3984The default timeout value can be defined by the new variable 3446The default timeout value can be defined by the new variable
3985'set-transient-map-timeout'. 3447'set-transient-map-timeout'.
3986 3448
3987+++
3988** New forms 'with-restriction' and 'without-restriction'. 3449** New forms 'with-restriction' and 'without-restriction'.
3989These forms can be used as enhanced alternatives to the 3450These forms can be used as enhanced alternatives to the
3990'save-restriction' form combined with, respectively, 3451'save-restriction' form combined with, respectively,
@@ -3994,88 +3455,70 @@ See the "(elisp) Narrowing" node for details.
3994 3455
3995** Connection Local Variables 3456** Connection Local Variables
3996 3457
3997+++
3998*** Some connection-local variables are now user options. 3458*** Some connection-local variables are now user options.
3999The variables 'connection-local-profile-alist' and 3459The variables 'connection-local-profile-alist' and
4000'connection-local-criteria-alist' are now user options, in order to 3460'connection-local-criteria-alist' are now user options, in order to
4001make it more convenient to inspect and modify them. 3461make it more convenient to inspect and modify them.
4002 3462
4003+++
4004*** New function 'connection-local-update-profile-variables'. 3463*** New function 'connection-local-update-profile-variables'.
4005This function allows to modify the settings of an existing 3464This function allows to modify the settings of an existing
4006connection-local profile. 3465connection-local profile.
4007 3466
4008+++
4009*** New macro 'with-connection-local-application-variables'. 3467*** New macro 'with-connection-local-application-variables'.
4010This macro works like 'with-connection-local-variables', but it allows 3468This macro works like 'with-connection-local-variables', but it allows
4011using another application instead of 'tramp'. This is useful when 3469using another application instead of 'tramp'. This is useful when
4012running code in a buffer where Tramp has already set some 3470running code in a buffer where Tramp has already set some
4013connection-local variables. 3471connection-local variables.
4014 3472
4015+++
4016*** New macro 'setq-connection-local'. 3473*** New macro 'setq-connection-local'.
4017This allows dynamically setting variable values for a particular 3474This allows dynamically setting variable values for a particular
4018connection within the body of 'with-connection-local-{application-}variables'. 3475connection within the body of 'with-connection-local-{application-}variables'.
4019See the "(elisp) Connection Local Variables" node in the Lisp 3476See the "(elisp) Connection Local Variables" node in the Lisp
4020Reference manual for more information. 3477Reference manual for more information.
4021 3478
4022+++
4023** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'. 3479** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'.
4024These function now take an optional comparison PREDICATE argument. 3480These function now take an optional comparison PREDICATE argument.
4025 3481
4026+++
4027** 'read-multiple-choice' can now use long-form answers. 3482** 'read-multiple-choice' can now use long-form answers.
4028 3483
4029+++
4030** 'M-s c' in 'read-regexp' now toggles case folding. 3484** 'M-s c' in 'read-regexp' now toggles case folding.
4031 3485
4032+++
4033** 'completing-read' now allows a function as its REQUIRE-MATCH argument. 3486** 'completing-read' now allows a function as its REQUIRE-MATCH argument.
4034This function is called to see whether what the user has typed is a 3487This function is called to see whether what the user has typed is a
4035match. This is also available from functions that call 3488match. This is also available from functions that call
4036'completing-read', like 'read-file-name'. 3489'completing-read', like 'read-file-name'.
4037 3490
4038+++
4039** 'posn-col-row' can now give position data based on windows. 3491** 'posn-col-row' can now give position data based on windows.
4040Previously, it reported data only based on the frame. 3492Previously, it reported data only based on the frame.
4041 3493
4042+++
4043** 'file-expand-wildcards' can now also take a regexp as PATTERN argument. 3494** 'file-expand-wildcards' can now also take a regexp as PATTERN argument.
4044 3495
4045---
4046** vc-mtn (the VC backend for Monotone) has been made obsolete. 3496** vc-mtn (the VC backend for Monotone) has been made obsolete.
4047 3497
4048+++
4049** 'gui-set-selection' can specify different values for different data types. 3498** 'gui-set-selection' can specify different values for different data types.
4050If DATA is a string, then its text properties are searched for values 3499If DATA is a string, then its text properties are searched for values
4051for each specific data type while the selection is being converted. 3500for each specific data type while the selection is being converted.
4052 3501
4053---
4054** New eldoc function 'elisp-eldoc-var-docstring-with-value'. 3502** New eldoc function 'elisp-eldoc-var-docstring-with-value'.
4055This function includes the current value of the variable in eldoc display 3503This function includes the current value of the variable in eldoc display
4056and can be used as a more detailed alternative to 'elisp-eldoc-var-docstring'. 3504and can be used as a more detailed alternative to 'elisp-eldoc-var-docstring'.
4057 3505
4058+++
4059** 'save-some-buffers' can now be extended to save other things. 3506** 'save-some-buffers' can now be extended to save other things.
4060Traditionally, 'save-some-buffers' saved buffers, and also saved 3507Traditionally, 'save-some-buffers' saved buffers, and also saved
4061abbrevs. This has been generalized via the 3508abbrevs. This has been generalized via the
4062'save-some-buffers-functions' variable, and packages can now register 3509'save-some-buffers-functions' variable, and packages can now register
4063things to be saved. 3510things to be saved.
4064 3511
4065+++
4066** New function 'string-equal-ignore-case'. 3512** New function 'string-equal-ignore-case'.
4067This compares strings ignoring case differences. 3513This compares strings ignoring case differences.
4068 3514
4069+++
4070** 'symbol-file' can now report natively-compiled ".eln" files. 3515** 'symbol-file' can now report natively-compiled ".eln" files.
4071If Emacs was built with native-compilation enabled, Lisp programs can 3516If Emacs was built with native-compilation enabled, Lisp programs can
4072now call 'symbol-file' with the new optional 3rd argument non-nil to 3517now call 'symbol-file' with the new optional 3rd argument non-nil to
4073request the name of the ".eln" file which defined a given symbol. 3518request the name of the ".eln" file which defined a given symbol.
4074 3519
4075+++
4076** New macro 'with-memoization' provides a very primitive form of memoization. 3520** New macro 'with-memoization' provides a very primitive form of memoization.
4077 3521
4078+++
4079** 'max-char' can now report the maximum codepoint according to Unicode. 3522** 'max-char' can now report the maximum codepoint according to Unicode.
4080When called with a new optional argument UNICODE non-nil, 'max-char' 3523When called with a new optional argument UNICODE non-nil, 'max-char'
4081will now report the maximum valid codepoint defined by the Unicode 3524will now report the maximum valid codepoint defined by the Unicode
@@ -4083,46 +3526,37 @@ Standard.
4083 3526
4084** Seq 3527** Seq
4085 3528
4086+++
4087*** New function 'seq-split'. 3529*** New function 'seq-split'.
4088This returns a list of sub-sequences of the specified sequence. 3530This returns a list of sub-sequences of the specified sequence.
4089 3531
4090+++
4091*** New function 'seq-remove-at-position'. 3532*** New function 'seq-remove-at-position'.
4092This function returns a copy of the specified sequence with the 3533This function returns a copy of the specified sequence with the
4093element at a given (zero-based) index removed. 3534element at a given (zero-based) index removed.
4094 3535
4095+++
4096*** New function 'seq-positions'. 3536*** New function 'seq-positions'.
4097This returns a list of the (zero-based) indices of elements matching a 3537This returns a list of the (zero-based) indices of elements matching a
4098given predicate in the specified sequence. 3538given predicate in the specified sequence.
4099 3539
4100+++
4101*** New function 'seq-keep'. 3540*** New function 'seq-keep'.
4102This is like 'seq-map', but removes all nil results from the returned 3541This is like 'seq-map', but removes all nil results from the returned
4103list. 3542list.
4104 3543
4105** Themes 3544** Themes
4106 3545
4107---
4108*** New hooks 'enable-theme-functions' and 'disable-theme-functions'. 3546*** New hooks 'enable-theme-functions' and 'disable-theme-functions'.
4109These are run after enabling and disabling a theme, respectively. 3547These are run after enabling and disabling a theme, respectively.
4110 3548
4111---
4112*** Themes can now be made obsolete. 3549*** Themes can now be made obsolete.
4113Using 'make-obsolete' on a theme is now supported. This will make 3550Using 'make-obsolete' on a theme is now supported. This will make
4114'load-theme' issue a warning when loading the theme. 3551'load-theme' issue a warning when loading the theme.
4115 3552
4116+++
4117** New hook 'display-monitors-changed-functions'. 3553** New hook 'display-monitors-changed-functions'.
4118It is called whenever the configuration of different monitors on a 3554It is called whenever the configuration of different monitors on a
4119display changes. 3555display changes.
4120 3556
4121+++
4122** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES argument. 3557** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES argument.
4123This argument can be used to override values of print-related settings. 3558This argument can be used to override values of print-related settings.
4124 3559
4125+++
4126** New minor mode 'header-line-indent-mode'. 3560** New minor mode 'header-line-indent-mode'.
4127This is meant to be used by Lisp programs that show a header line 3561This is meant to be used by Lisp programs that show a header line
4128which should be kept aligned with the buffer contents when the user 3562which should be kept aligned with the buffer contents when the user
@@ -4130,12 +3564,10 @@ switches 'display-line-numbers-mode' on or off, and when the width of
4130line-number display changes. See the "(elisp) Header Lines" node in 3564line-number display changes. See the "(elisp) Header Lines" node in
4131the Emacs Lisp Reference manual for more information. 3565the Emacs Lisp Reference manual for more information.
4132 3566
4133+++
4134** New global minor mode 'lost-selection-mode'. 3567** New global minor mode 'lost-selection-mode'.
4135This global minor mode makes Emacs deactivate the mark in all buffers 3568This global minor mode makes Emacs deactivate the mark in all buffers
4136when the primary selection is obtained by another program. 3569when the primary selection is obtained by another program.
4137 3570
4138---
4139** On X, Emacs will try to preserve selection ownership when a frame is deleted. 3571** On X, Emacs will try to preserve selection ownership when a frame is deleted.
4140This means that if you make Emacs the owner of a selection, such as by 3572This means that if you make Emacs the owner of a selection, such as by
4141selecting some text into the clipboard or primary selection, and then 3573selecting some text into the clipboard or primary selection, and then
@@ -4144,13 +3576,11 @@ contents of that selection into other programs as long as another
4144frame is open on the same display. This behavior can be disabled by 3576frame is open on the same display. This behavior can be disabled by
4145setting the user option 'x-auto-preserve-selections' to nil. 3577setting the user option 'x-auto-preserve-selections' to nil.
4146 3578
4147+++
4148** New predicate 'char-uppercase-p'. 3579** New predicate 'char-uppercase-p'.
4149This returns non-nil if its argument its an uppercase character. 3580This returns non-nil if its argument its an uppercase character.
4150 3581
4151** Byte Compilation 3582** Byte Compilation
4152 3583
4153---
4154*** Byte compilation will now warn about some quoting mistakes in docstrings. 3584*** Byte compilation will now warn about some quoting mistakes in docstrings.
4155When writing code snippets that contains the "'" character (APOSTROPHE), 3585When writing code snippets that contains the "'" character (APOSTROPHE),
4156that quote character has to be escaped to avoid Emacs displaying it as 3586that quote character has to be escaped to avoid Emacs displaying it as
@@ -4164,7 +3594,6 @@ QUOTATION MARK directly. In both these cases, if these characters
4164should really be present in the docstring, they should be quoted with 3594should really be present in the docstring, they should be quoted with
4165"\=". 3595"\=".
4166 3596
4167---
4168*** Byte compilation will now warn about some malformed 'defcustom' types. 3597*** Byte compilation will now warn about some malformed 'defcustom' types.
4169It is very common to write 'defcustom' types on the form: 3598It is very common to write 'defcustom' types on the form:
4170 3599
@@ -4174,137 +3603,111 @@ I.e., double-quoting the 'bar', which is almost never the correct
4174value. The byte compiler will now issue a warning if it encounters 3603value. The byte compiler will now issue a warning if it encounters
4175these forms. 3604these forms.
4176 3605
4177+++
4178** 'restore-buffer-modified-p' can now alter buffer auto-save state. 3606** 'restore-buffer-modified-p' can now alter buffer auto-save state.
4179With a FLAG value of 'autosaved', it will mark the buffer as having 3607With a FLAG value of 'autosaved', it will mark the buffer as having
4180been auto-saved since the time of last modification. 3608been auto-saved since the time of last modification.
4181 3609
4182---
4183** New minor mode 'isearch-fold-quotes-mode'. 3610** New minor mode 'isearch-fold-quotes-mode'.
4184This sets up 'search-default-mode' so that quote characters are 3611This sets up 'search-default-mode' so that quote characters are
4185char-folded into each other. It is used, by default, in "*Help*" and 3612char-folded into each other. It is used, by default, in "*Help*" and
4186"*info*" buffers. 3613"*info*" buffers.
4187 3614
4188+++
4189** New macro 'buffer-local-set-state'. 3615** New macro 'buffer-local-set-state'.
4190This is a helper macro to be used by minor modes that wish to restore 3616This is a helper macro to be used by minor modes that wish to restore
4191buffer-local variables back to their original states when the mode is 3617buffer-local variables back to their original states when the mode is
4192switched off. 3618switched off.
4193 3619
4194---
4195** New macro 'with-buffer-unmodified-if-unchanged'. 3620** New macro 'with-buffer-unmodified-if-unchanged'.
4196If the buffer is marked as unmodified, and code does modifications 3621If the buffer is marked as unmodified, and code does modifications
4197that, in total, means that the buffer is identical to the buffer 3622that, in total, means that the buffer is identical to the buffer
4198before, mark the buffer as unmodified again. 3623before, mark the buffer as unmodified again.
4199 3624
4200---
4201** New function 'malloc-trim'. 3625** New function 'malloc-trim'.
4202This function allows returning unused memory back to the operating 3626This function allows returning unused memory back to the operating
4203system, and is mainly meant as a debugging tool. It is currently 3627system, and is mainly meant as a debugging tool. It is currently
4204available only when Emacs was built with glibc as the C library. 3628available only when Emacs was built with glibc as the C library.
4205 3629
4206---
4207** 'x-show-tip' no longer hard-codes a timeout default. 3630** 'x-show-tip' no longer hard-codes a timeout default.
4208The new variable 'x-show-tooltip-timeout' allows the user to alter 3631The new variable 'x-show-tooltip-timeout' allows the user to alter
4209this for packages that don't use 'tooltip-show', but instead call the 3632this for packages that don't use 'tooltip-show', but instead call the
4210lower level function directly. 3633lower level function directly.
4211 3634
4212---
4213** New function 'current-cpu-time'. 3635** New function 'current-cpu-time'.
4214It gives access to the CPU time used by the Emacs process, for 3636It gives access to the CPU time used by the Emacs process, for
4215example for benchmarking purposes. 3637example for benchmarking purposes.
4216 3638
4217---
4218** New function 'string-edit'. 3639** New function 'string-edit'.
4219This is meant to be used when the user has to edit a (potentially) 3640This is meant to be used when the user has to edit a (potentially)
4220long string. It pops up a new buffer where you can edit the string, 3641long string. It pops up a new buffer where you can edit the string,
4221and the provided callback is called when the user types 'C-c C-c'. 3642and the provided callback is called when the user types 'C-c C-c'.
4222 3643
4223+++
4224** New function 'read-string-from-buffer'. 3644** New function 'read-string-from-buffer'.
4225This is a modal version of 'string-edit', and can be used as an 3645This is a modal version of 'string-edit', and can be used as an
4226alternative to 'read-string'. 3646alternative to 'read-string'.
4227 3647
4228+++
4229** The return value of 'clear-message-function' is not ignored anymore. 3648** The return value of 'clear-message-function' is not ignored anymore.
4230If the function returns 'dont-clear-message', then the message is not 3649If the function returns 'dont-clear-message', then the message is not
4231cleared, with the assumption that the function cleared it itself. 3650cleared, with the assumption that the function cleared it itself.
4232 3651
4233+++
4234** The local variables section now supports defining fallback modes. 3652** The local variables section now supports defining fallback modes.
4235This was previously only available when using a property line (i.e., 3653This was previously only available when using a property line (i.e.,
4236putting the modes on the first line of a file). 3654putting the modes on the first line of a file).
4237 3655
4238+++
4239** New function 'flush-standard-output'. 3656** New function 'flush-standard-output'.
4240This enables display of lines that don't end in a newline from 3657This enables display of lines that don't end in a newline from
4241batch-based Emacs scripts. 3658batch-based Emacs scripts.
4242 3659
4243+++
4244** New convenience function 'buttonize-region'. 3660** New convenience function 'buttonize-region'.
4245This works like 'buttonize', but for a region instead of a string. 3661This works like 'buttonize', but for a region instead of a string.
4246 3662
4247+++
4248** 'macroexp-let2*' can omit TEST argument and use single-var bindings. 3663** 'macroexp-let2*' can omit TEST argument and use single-var bindings.
4249 3664
4250+++
4251** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'. 3665** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'.
4252See the "(cl) Macro-Writing Macros" manual section for descriptions. 3666See the "(cl) Macro-Writing Macros" manual section for descriptions.
4253 3667
4254+++
4255** New variable 'last-event-device' and new function 'device-class'. 3668** New variable 'last-event-device' and new function 'device-class'.
4256On X Windows, 'last-event-device' specifies the input extension device 3669On X Windows, 'last-event-device' specifies the input extension device
4257from which the last input event originated, and 'device-class' can be 3670from which the last input event originated, and 'device-class' can be
4258used to determine the type of an input device. 3671used to determine the type of an input device.
4259 3672
4260+++
4261** Variable 'track-mouse' can have a new value 'drag-source'. 3673** Variable 'track-mouse' can have a new value 'drag-source'.
4262This means the same as 'dropping', but modifies the mouse position 3674This means the same as 'dropping', but modifies the mouse position
4263list in reported motion events if there is no frame underneath the 3675list in reported motion events if there is no frame underneath the
4264mouse pointer. 3676mouse pointer.
4265 3677
4266+++
4267** New functions for dragging items from Emacs to other programs. 3678** New functions for dragging items from Emacs to other programs.
4268The new functions 'x-begin-drag', 'dnd-begin-file-drag', 3679The new functions 'x-begin-drag', 'dnd-begin-file-drag',
4269'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents 3680'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents
4270(such as files and text) from Emacs to other programs. 3681(such as files and text) from Emacs to other programs.
4271 3682
4272---
4273** New function 'ietf-drums-parse-date-string'. 3683** New function 'ietf-drums-parse-date-string'.
4274This function parses RFC5322 (and RFC822) date strings, and should be 3684This function parses RFC5322 (and RFC822) date strings, and should be
4275used instead of 'parse-time-string' when parsing data that's standards 3685used instead of 'parse-time-string' when parsing data that's standards
4276compliant. 3686compliant.
4277 3687
4278+++
4279** New macro 'setopt'. 3688** New macro 'setopt'.
4280This is like 'setq', but is meant to be used for user options instead 3689This is like 'setq', but is meant to be used for user options instead
4281of plain variables, and uses 'custom-set'/'set-default' to set them. 3690of plain variables, and uses 'custom-set'/'set-default' to set them.
4282 3691
4283+++
4284** New utility predicate 'mode-line-window-selected-p'. 3692** New utility predicate 'mode-line-window-selected-p'.
4285This is meant to be used from ':eval' mode line constructs to create 3693This is meant to be used from ':eval' mode line constructs to create
4286different mode line looks for selected and unselected windows. 3694different mode line looks for selected and unselected windows.
4287 3695
4288+++
4289** New variable 'messages-buffer-name'. 3696** New variable 'messages-buffer-name'.
4290This variable (defaulting to "*Messages*") allows packages to override 3697This variable (defaulting to "*Messages*") allows packages to override
4291where messages are logged. 3698where messages are logged.
4292 3699
4293+++
4294** New function 'readablep'. 3700** New function 'readablep'.
4295This function says whether an object can be written out and then 3701This function says whether an object can be written out and then
4296read back by the Emacs Lisp reader. 3702read back by the Emacs Lisp reader.
4297 3703
4298+++
4299** New variable 'print-unreadable-function'. 3704** New variable 'print-unreadable-function'.
4300This variable allows changing how Emacs prints unreadable objects. 3705This variable allows changing how Emacs prints unreadable objects.
4301 3706
4302---
4303** The user option 'polling-period' now accepts floating point values. 3707** The user option 'polling-period' now accepts floating point values.
4304This means Emacs can now poll for input during Lisp execution more 3708This means Emacs can now poll for input during Lisp execution more
4305frequently than once in a second. 3709frequently than once in a second.
4306 3710
4307---
4308** New function 'bidi-string-strip-control-characters'. 3711** New function 'bidi-string-strip-control-characters'.
4309This utility function is meant for displaying strings when it is 3712This utility function is meant for displaying strings when it is
4310essential that there's no bidirectional context. It removes all the 3713essential that there's no bidirectional context. It removes all the
@@ -4312,67 +3715,54 @@ bidirectional formatting control characters (such as RLM, LRO, PDF,
4312etc.) from its argument string. The characters it removes are listed 3715etc.) from its argument string. The characters it removes are listed
4313in the value of 'bidi-control-characters'. 3716in the value of 'bidi-control-characters'.
4314 3717
4315---
4316** The Gnus range functions have been moved to a new library, range.el. 3718** The Gnus range functions have been moved to a new library, range.el.
4317All the old names have been made obsolete. 3719All the old names have been made obsolete.
4318 3720
4319+++
4320** New function 'function-alias-p'. 3721** New function 'function-alias-p'.
4321This predicate says whether an object is a function alias, and if it 3722This predicate says whether an object is a function alias, and if it
4322is, the alias chain is returned. 3723is, the alias chain is returned.
4323 3724
4324+++
4325** New variable 'lisp-directory' holds the directory of Emacs's own Lisp files. 3725** New variable 'lisp-directory' holds the directory of Emacs's own Lisp files.
4326 3726
4327+++
4328** New facility for handling session state: 'multisession-value'. 3727** New facility for handling session state: 'multisession-value'.
4329This can be used as a convenient way to store (simple) application 3728This can be used as a convenient way to store (simple) application
4330state, and the command 'list-multisession-values' allows users to list 3729state, and the command 'list-multisession-values' allows users to list
4331(and edit) this data. 3730(and edit) this data.
4332 3731
4333+++
4334** New function 'get-display-property'. 3732** New function 'get-display-property'.
4335This is like 'get-text-property', but works on the 'display' text 3733This is like 'get-text-property', but works on the 'display' text
4336property. 3734property.
4337 3735
4338+++
4339** New function 'add-display-text-property'. 3736** New function 'add-display-text-property'.
4340This is like 'put-text-property', but works on the 'display' text 3737This is like 'put-text-property', but works on the 'display' text
4341property. 3738property.
4342 3739
4343+++
4344** New 'min-width' 'display' property. 3740** New 'min-width' 'display' property.
4345This allows setting a minimum display width for a region of text. 3741This allows setting a minimum display width for a region of text.
4346 3742
4347+++
4348** New 'cursor-face' text property. 3743** New 'cursor-face' text property.
4349This uses 'cursor-face' instead of the default face when cursor is on or 3744This uses 'cursor-face' instead of the default face when cursor is on or
4350near the character and 'cursor-face-highlight-mode' is enabled. The 3745near the character and 'cursor-face-highlight-mode' is enabled. The
4351user option 'cursor-face-highlight-nonselected-window' is similar to 3746user option 'cursor-face-highlight-nonselected-window' is similar to
4352'highlight-nonselected-windows', but for this property. 3747'highlight-nonselected-windows', but for this property.
4353 3748
4354+++
4355** New event type 'touch-end'. 3749** New event type 'touch-end'.
4356This event is sent whenever the user's finger moves off the mouse 3750This event is sent whenever the user's finger moves off the mouse
4357wheel on some mice, or when the user's finger moves off the touchpad. 3751wheel on some mice, or when the user's finger moves off the touchpad.
4358 3752
4359+++
4360** New event type 'pinch'. 3753** New event type 'pinch'.
4361This event is sent when a user performs a pinch gesture on a touchpad, 3754This event is sent when a user performs a pinch gesture on a touchpad,
4362which is comprised of placing two fingers on the touchpad and moving 3755which is comprised of placing two fingers on the touchpad and moving
4363them towards or away from each other. 3756them towards or away from each other.
4364 3757
4365+++
4366** New hook 'x-pre-popup-menu-hook'. 3758** New hook 'x-pre-popup-menu-hook'.
4367This hook is run before 'x-popup-menu' is about to display a 3759This hook is run before 'x-popup-menu' is about to display a
4368deck-of-cards menu on screen. 3760deck-of-cards menu on screen.
4369 3761
4370---
4371** New hook 'post-select-region-hook'. 3762** New hook 'post-select-region-hook'.
4372This hook is run immediately after 'select-active-regions'. It causes 3763This hook is run immediately after 'select-active-regions'. It causes
4373the region to be set as the primary selection. 3764the region to be set as the primary selection.
4374 3765
4375+++
4376** New function 'buffer-match-p'. 3766** New function 'buffer-match-p'.
4377Check if a buffer satisfies some condition. Some examples for 3767Check if a buffer satisfies some condition. Some examples for
4378conditions can be regular expressions that match a buffer name, a 3768conditions can be regular expressions that match a buffer name, a
@@ -4380,19 +3770,16 @@ cons-cell like '(major-mode . shell-mode)' that matches any buffer
4380where 'major-mode' is 'shell-mode' or a combination with a condition 3770where 'major-mode' is 'shell-mode' or a combination with a condition
4381like '(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'. 3771like '(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'.
4382 3772
4383+++
4384** New function 'match-buffers'. 3773** New function 'match-buffers'.
4385It uses 'buffer-match-p' to gather a list of buffers that match a 3774It uses 'buffer-match-p' to gather a list of buffers that match a
4386condition. 3775condition.
4387 3776
4388---
4389** New optional arguments TEXT-FACE and DEFAULT-FACE for 'tooltip-show'. 3777** New optional arguments TEXT-FACE and DEFAULT-FACE for 'tooltip-show'.
4390They allow changing the faces used for the tooltip text and frame 3778They allow changing the faces used for the tooltip text and frame
4391colors of the resulting tooltip frame from the default 'tooltip' face. 3779colors of the resulting tooltip frame from the default 'tooltip' face.
4392 3780
4393** Text Security and Suspiciousness 3781** Text Security and Suspiciousness
4394 3782
4395+++
4396*** New library textsec.el. 3783*** New library textsec.el.
4397This library contains a number of checks for whether a string is 3784This library contains a number of checks for whether a string is
4398"suspicious". This usually means that the string contains characters 3785"suspicious". This usually means that the string contains characters
@@ -4400,7 +3787,6 @@ that have glyphs that can be confused with other, more commonly used
4400glyphs, or contains bidirectional (or other) formatting characters 3787glyphs, or contains bidirectional (or other) formatting characters
4401that may be used to confuse a user. 3788that may be used to confuse a user.
4402 3789
4403+++
4404*** New user option 'textsec-check'. 3790*** New user option 'textsec-check'.
4405If non-nil (which is the default), Emacs packages that are vulnerable 3791If non-nil (which is the default), Emacs packages that are vulnerable
4406to attackers trying to confuse the users will use the textsec library 3792to attackers trying to confuse the users will use the textsec library
@@ -4410,7 +3796,6 @@ Message mode will query the user if the user is sending mail to a
4410suspicious address. If this variable is nil, these checks are 3796suspicious address. If this variable is nil, these checks are
4411disabled. 3797disabled.
4412 3798
4413+++
4414*** New function 'textsec-suspicious-p'. 3799*** New function 'textsec-suspicious-p'.
4415This is the main function Emacs applications should be using to check 3800This is the main function Emacs applications should be using to check
4416whether a string is suspicious. It heeds the 'textsec-check' user 3801whether a string is suspicious. It heeds the 'textsec-check' user
@@ -4418,13 +3803,11 @@ option.
4418 3803
4419** Keymaps and Key Definitions 3804** Keymaps and Key Definitions
4420 3805
4421+++
4422*** 'where-is-internal' can now filter events marked as non key events. 3806*** 'where-is-internal' can now filter events marked as non key events.
4423If a command maps to a key binding like '[some-event]', and 'some-event' 3807If a command maps to a key binding like '[some-event]', and 'some-event'
4424has a symbol plist containing a non-nil 'non-key-event' property, then 3808has a symbol plist containing a non-nil 'non-key-event' property, then
4425that binding is ignored by 'where-is-internal'. 3809that binding is ignored by 'where-is-internal'.
4426 3810
4427+++
4428*** New functions for defining and manipulating keystrokes. 3811*** New functions for defining and manipulating keystrokes.
4429These all take the syntax defined by 'key-valid-p', which is basically 3812These all take the syntax defined by 'key-valid-p', which is basically
4430the same syntax as the one accepted by the 'kbd' macro. None of the 3813the same syntax as the one accepted by the 'kbd' macro. None of the
@@ -4432,68 +3815,51 @@ older functions have been deprecated or altered, but they are now
4432de-emphasized in the documentation, and we encourage Lisp programs to 3815de-emphasized in the documentation, and we encourage Lisp programs to
4433switch to these new functions. 3816switch to these new functions.
4434 3817
4435+++
4436*** Use 'keymap-set' instead of 'define-key'. 3818*** Use 'keymap-set' instead of 'define-key'.
4437 3819
4438+++
4439*** Use 'keymap-global-set' instead of 'global-set-key'. 3820*** Use 'keymap-global-set' instead of 'global-set-key'.
4440 3821
4441+++
4442*** Use 'keymap-local-set' instead of 'local-set-key'. 3822*** Use 'keymap-local-set' instead of 'local-set-key'.
4443 3823
4444+++
4445*** Use 'keymap-global-unset' instead of 'global-unset-key'. 3824*** Use 'keymap-global-unset' instead of 'global-unset-key'.
4446 3825
4447+++
4448*** Use 'keymap-local-unset' instead of 'local-unset-key'. 3826*** Use 'keymap-local-unset' instead of 'local-unset-key'.
4449 3827
4450+++
4451*** Use 'keymap-substitute' instead of 'substitute-key-definition'. 3828*** Use 'keymap-substitute' instead of 'substitute-key-definition'.
4452 3829
4453+++
4454*** Use 'keymap-set-after' instead of 'define-key-after'. 3830*** Use 'keymap-set-after' instead of 'define-key-after'.
4455 3831
4456+++
4457*** Use 'keymap-lookup' instead of 'lookup-key' and 'key-binding'. 3832*** Use 'keymap-lookup' instead of 'lookup-key' and 'key-binding'.
4458 3833
4459+++
4460*** Use 'keymap-local-lookup' instead of 'local-key-binding'. 3834*** Use 'keymap-local-lookup' instead of 'local-key-binding'.
4461 3835
4462+++
4463*** Use 'keymap-global-lookup' instead of 'global-key-binding'. 3836*** Use 'keymap-global-lookup' instead of 'global-key-binding'.
4464 3837
4465+++
4466*** 'define-key' now takes an optional REMOVE argument. 3838*** 'define-key' now takes an optional REMOVE argument.
4467If non-nil, remove the definition from the keymap. This is subtly 3839If non-nil, remove the definition from the keymap. This is subtly
4468different from setting a definition to nil: when the keymap has a 3840different from setting a definition to nil: when the keymap has a
4469parent such a definition will shadow the parent's definition. 3841parent such a definition will shadow the parent's definition.
4470 3842
4471+++
4472*** 'read-multiple-choice' now takes an optional SHOW-HELP argument. 3843*** 'read-multiple-choice' now takes an optional SHOW-HELP argument.
4473If non-nil, show the help buffer immediately, before any user input. 3844If non-nil, show the help buffer immediately, before any user input.
4474 3845
4475+++
4476*** New function 'key-valid-p'. 3846*** New function 'key-valid-p'.
4477The 'kbd' function is quite permissive, and will try to return 3847The 'kbd' function is quite permissive, and will try to return
4478something usable even if the syntax of the argument isn't completely 3848something usable even if the syntax of the argument isn't completely
4479correct. The 'key-valid-p' predicate does a stricter check of the 3849correct. The 'key-valid-p' predicate does a stricter check of the
4480syntax. 3850syntax.
4481 3851
4482---
4483*** New function 'key-parse'. 3852*** New function 'key-parse'.
4484This is like 'kbd', but only returns vectors instead of a mix of 3853This is like 'kbd', but only returns vectors instead of a mix of
4485vectors and strings. 3854vectors and strings.
4486 3855
4487+++
4488*** New ':type' for 'defcustom' for keys. 3856*** New ':type' for 'defcustom' for keys.
4489The new 'key' type can be used for options that should be a valid key 3857The new 'key' type can be used for options that should be a valid key
4490according to 'key-valid-p'. The type 'key-sequence' is now obsolete. 3858according to 'key-valid-p'. The type 'key-sequence' is now obsolete.
4491 3859
4492+++
4493** New function 'define-keymap'. 3860** New function 'define-keymap'.
4494This function allows defining a number of keystrokes with one form. 3861This function allows defining a number of keystrokes with one form.
4495 3862
4496+++
4497** New macro 'defvar-keymap'. 3863** New macro 'defvar-keymap'.
4498This macro allows defining keymap variables more conveniently. 3864This macro allows defining keymap variables more conveniently.
4499 3865
@@ -4503,11 +3869,9 @@ advanced usage:
4503 3869
4504 :repeat (:enter (commands ...) :exit (commands ...)) 3870 :repeat (:enter (commands ...) :exit (commands ...))
4505 3871
4506---
4507** 'kbd' can now be used in built-in, preloaded libraries. 3872** 'kbd' can now be used in built-in, preloaded libraries.
4508It no longer depends on edmacro.el and cl-lib.el. 3873It no longer depends on edmacro.el and cl-lib.el.
4509 3874
4510+++
4511** New substitution in docstrings and 'substitute-command-keys'. 3875** New substitution in docstrings and 'substitute-command-keys'.
4512Use \\`KEYSEQ' to insert a literal key sequence "KEYSEQ" (for example 3876Use \\`KEYSEQ' to insert a literal key sequence "KEYSEQ" (for example
4513\\`C-k') in a docstring or when calling 'substitute-command-keys', 3877\\`C-k') in a docstring or when calling 'substitute-command-keys',
@@ -4516,7 +3880,6 @@ be used only when a key sequence has no corresponding command, for
4516example when it is read directly with 'read-key-sequence'. It must be 3880example when it is read directly with 'read-key-sequence'. It must be
4517a valid key sequence according to 'key-valid-p'. 3881a valid key sequence according to 'key-valid-p'.
4518 3882
4519---
4520** 'lookup-key' is more permissive when searching for extended menu items. 3883** 'lookup-key' is more permissive when searching for extended menu items.
4521In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking 3884In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking
4522for a menu item '[menu-bar Foo-Bar]', first try to find an exact 3885for a menu item '[menu-bar Foo-Bar]', first try to find an exact
@@ -4528,61 +3891,49 @@ an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
4528'[menu-bar foo-bar]'. This further improves backwards-compatibility 3891'[menu-bar foo-bar]'. This further improves backwards-compatibility
4529when converting menus to use 'easy-menu-define'. 3892when converting menus to use 'easy-menu-define'.
4530 3893
4531+++
4532** New function 'file-name-split'. 3894** New function 'file-name-split'.
4533This returns a list of all the components of a file name. 3895This returns a list of all the components of a file name.
4534 3896
4535+++
4536** New function 'file-name-parent-directory'. 3897** New function 'file-name-parent-directory'.
4537This returns the parent directory of a file name. 3898This returns the parent directory of a file name.
4538 3899
4539+++
4540** New macro 'with-undo-amalgamate'. 3900** New macro 'with-undo-amalgamate'.
4541It records a particular sequence of operations as a single undo step. 3901It records a particular sequence of operations as a single undo step.
4542 3902
4543+++
4544** New command 'yank-media'. 3903** New command 'yank-media'.
4545This command supports yanking non-plain-text media like images and 3904This command supports yanking non-plain-text media like images and
4546HTML from other applications into Emacs. It is only supported in 3905HTML from other applications into Emacs. It is only supported in
4547modes that have registered support for it, and only on capable 3906modes that have registered support for it, and only on capable
4548platforms. 3907platforms.
4549 3908
4550+++
4551** New command 'yank-media-types'. 3909** New command 'yank-media-types'.
4552This command lets you examine all data in the current selection and 3910This command lets you examine all data in the current selection and
4553the clipboard, and insert it into the buffer. 3911the clipboard, and insert it into the buffer.
4554 3912
4555+++
4556** New variable 'yank-transform-functions'. 3913** New variable 'yank-transform-functions'.
4557This variable allows the user to alter the string to be inserted. 3914This variable allows the user to alter the string to be inserted.
4558 3915
4559---
4560** New command 'yank-in-context'. 3916** New command 'yank-in-context'.
4561This command tries to preserve string/comment syntax when yanking. 3917This command tries to preserve string/comment syntax when yanking.
4562 3918
4563---
4564** New function 'minibuffer-lazy-highlight-setup'. 3919** New function 'minibuffer-lazy-highlight-setup'.
4565This function allows setting up the minibuffer so that lazy 3920This function allows setting up the minibuffer so that lazy
4566highlighting of its content is applied in the original window. 3921highlighting of its content is applied in the original window.
4567 3922
4568+++
4569** New text property 'inhibit-isearch'. 3923** New text property 'inhibit-isearch'.
4570If set, 'isearch' will skip these areas, which can be useful (for 3924If set, 'isearch' will skip these areas, which can be useful (for
4571instance) when covering huge amounts of data (that has no meaningful 3925instance) when covering huge amounts of data (that has no meaningful
4572searchable data, like image data) with a 'display' text property. 3926searchable data, like image data) with a 'display' text property.
4573 3927
4574+++
4575** 'insert-image' now takes an INHIBIT-ISEARCH optional argument. 3928** 'insert-image' now takes an INHIBIT-ISEARCH optional argument.
4576It marks the image with the 'inhibit-isearch' text property, which 3929It marks the image with the 'inhibit-isearch' text property, which
4577inhibits 'isearch' matching the STRING argument. 3930inhibits 'isearch' matching the STRING argument.
4578 3931
4579---
4580** New variable 'replace-regexp-function'. 3932** New variable 'replace-regexp-function'.
4581Function to call to convert the entered FROM string to an Emacs 3933Function to call to convert the entered FROM string to an Emacs
4582regexp in 'query-replace' and similar commands. It can be used to 3934regexp in 'query-replace' and similar commands. It can be used to
4583implement a different regexp syntax for search/replace. 3935implement a different regexp syntax for search/replace.
4584 3936
4585---
4586** New variables to customize defaults of FROM for 'query-replace*' commands. 3937** New variables to customize defaults of FROM for 'query-replace*' commands.
4587The new variable 'query-replace-read-from-default' can be set to a 3938The new variable 'query-replace-read-from-default' can be set to a
4588function that returns the default value of FROM when 'query-replace' 3939function that returns the default value of FROM when 'query-replace'
@@ -4598,59 +3949,49 @@ default value from the previous FROM-TO pair.
4598 3949
4599** Lisp pretty-printer ('pp') 3950** Lisp pretty-printer ('pp')
4600 3951
4601---
4602*** New function 'pp-emacs-lisp-code'. 3952*** New function 'pp-emacs-lisp-code'.
4603'pp' formats general Lisp sexps. This function does much the same, 3953'pp' formats general Lisp sexps. This function does much the same,
4604but applies formatting rules appropriate for Emacs Lisp code. Note 3954but applies formatting rules appropriate for Emacs Lisp code. Note
4605that this could currently be quite slow, and is thus appropriate only 3955that this could currently be quite slow, and is thus appropriate only
4606for relatively small code fragments. 3956for relatively small code fragments.
4607 3957
4608---
4609*** New user option 'pp-use-max-width'. 3958*** New user option 'pp-use-max-width'.
4610If non-nil, 'pp' and all 'pp-*' commands that format the results, will 3959If non-nil, 'pp' and all 'pp-*' commands that format the results, will
4611attempt to limit the line length when formatting long lists and 3960attempt to limit the line length when formatting long lists and
4612vectors. This uses 'pp-emacs-lisp-code', and thus could be slow for 3961vectors. This uses 'pp-emacs-lisp-code', and thus could be slow for
4613large lists. 3962large lists.
4614 3963
4615+++
4616** New function 'file-has-changed-p'. 3964** New function 'file-has-changed-p'.
4617This convenience function is useful when writing code that parses 3965This convenience function is useful when writing code that parses
4618files at run-time, and allows Lisp programs to re-parse files only 3966files at run-time, and allows Lisp programs to re-parse files only
4619when they have changed. 3967when they have changed.
4620 3968
4621+++
4622** 'abbreviate-file-name' now respects magic file name handlers. 3969** 'abbreviate-file-name' now respects magic file name handlers.
4623 3970
4624---
4625** New function 'font-has-char-p'. 3971** New function 'font-has-char-p'.
4626This can be used to check whether a specific font has a glyph for a 3972This can be used to check whether a specific font has a glyph for a
4627character. 3973character.
4628 3974
4629+++
4630** 'window-text-pixel-size' now accepts a new argument IGNORE-LINE-AT-END. 3975** 'window-text-pixel-size' now accepts a new argument IGNORE-LINE-AT-END.
4631This controls whether or not the last screen line of the text being 3976This controls whether or not the last screen line of the text being
4632measured will be counted for the purpose of calculating the text 3977measured will be counted for the purpose of calculating the text
4633dimensions. 3978dimensions.
4634 3979
4635+++
4636** 'window-text-pixel-size' understands a new meaning of FROM. 3980** 'window-text-pixel-size' understands a new meaning of FROM.
4637Specifying a cons as the FROM argument allows to start measuring text 3981Specifying a cons as the FROM argument allows to start measuring text
4638from a specified amount of pixels above or below a position. 3982from a specified amount of pixels above or below a position.
4639 3983
4640+++
4641** 'window-body-width' and 'window-body-height' can use remapped faces. 3984** 'window-body-width' and 'window-body-height' can use remapped faces.
4642Specifying 'remap' as the PIXELWISE argument now checks if the default 3985Specifying 'remap' as the PIXELWISE argument now checks if the default
4643face was remapped, and if so, uses the remapped face to determine the 3986face was remapped, and if so, uses the remapped face to determine the
4644character width/height. 3987character width/height.
4645 3988
4646+++
4647** 'set-window-vscroll' now accepts a new argument PRESERVE-VSCROLL-P. 3989** 'set-window-vscroll' now accepts a new argument PRESERVE-VSCROLL-P.
4648This means the vscroll will not be reset when set on a window that is 3990This means the vscroll will not be reset when set on a window that is
4649"frozen" due to a mini-window being resized. 3991"frozen" due to a mini-window being resized.
4650 3992
4651** XDG Support 3993** XDG Support
4652 3994
4653---
4654*** New function 'xdg-state-home'. 3995*** New function 'xdg-state-home'.
4655It returns the new 'XDG_STATE_HOME' environment variable. It should 3996It returns the new 'XDG_STATE_HOME' environment variable. It should
4656point to a file name that "contains state data that should persist 3997point to a file name that "contains state data that should persist
@@ -4659,7 +4000,6 @@ enough to the user that it should be stored in $XDG_DATA_HOME".
4659(This variable was introduced in the XDG Base Directory Specification 4000(This variable was introduced in the XDG Base Directory Specification
4660version 0.8 released on May 8, 2021.) 4001version 0.8 released on May 8, 2021.)
4661 4002
4662---
4663*** New function 'xdg-current-desktop'. 4003*** New function 'xdg-current-desktop'.
4664It returns a list of strings, corresponding to the colon-separated 4004It returns a list of strings, corresponding to the colon-separated
4665list of names in the 'XDG_CURRENT_DESKTOP' environment variable, which 4005list of names in the 'XDG_CURRENT_DESKTOP' environment variable, which
@@ -4667,83 +4007,68 @@ identify the current desktop environment.
4667(This variable was introduced in XDG Desktop Entry Specification 4007(This variable was introduced in XDG Desktop Entry Specification
4668version 1.2.) 4008version 1.2.)
4669 4009
4670---
4671*** New function 'xdg-session-type'. 4010*** New function 'xdg-session-type'.
4672It returns the 'XDG_SESSION_TYPE' environment variable. (This is not 4011It returns the 'XDG_SESSION_TYPE' environment variable. (This is not
4673part of any official standard; see the man page pam_systemd(8) for 4012part of any official standard; see the man page pam_systemd(8) for
4674more information.) 4013more information.)
4675 4014
4676+++
4677** New macro 'with-delayed-message'. 4015** New macro 'with-delayed-message'.
4678This macro is like 'progn', but will output the specified message if 4016This macro is like 'progn', but will output the specified message if
4679the body takes longer to execute than the specified timeout. 4017the body takes longer to execute than the specified timeout.
4680 4018
4681---
4682** New function 'funcall-with-delayed-message'. 4019** New function 'funcall-with-delayed-message'.
4683This function is like 'funcall', but will output the specified message 4020This function is like 'funcall', but will output the specified message
4684if the function takes longer to execute than the specified timeout. 4021if the function takes longer to execute than the specified timeout.
4685 4022
4686** Locale 4023** Locale
4687 4024
4688---
4689*** New variable 'current-locale-environment'. 4025*** New variable 'current-locale-environment'.
4690This holds the value of the previous call to 'set-locale-environment'. 4026This holds the value of the previous call to 'set-locale-environment'.
4691 4027
4692---
4693*** New macro 'with-locale-environment'. 4028*** New macro 'with-locale-environment'.
4694This macro can be used to change the locale temporarily while 4029This macro can be used to change the locale temporarily while
4695executing code. 4030executing code.
4696 4031
4697** Table 4032** Table
4698 4033
4699---
4700*** New user option 'table-latex-environment'. 4034*** New user option 'table-latex-environment'.
4701This allows switching between "table" and "tabular". 4035This allows switching between "table" and "tabular".
4702 4036
4703** Tabulated List Mode 4037** Tabulated List Mode
4704 4038
4705+++
4706*** A column can now be set to an image descriptor. 4039*** A column can now be set to an image descriptor.
4707The 'tabulated-list-entries' variable now supports using an image 4040The 'tabulated-list-entries' variable now supports using an image
4708descriptor, which means to insert an image in that column instead of 4041descriptor, which means to insert an image in that column instead of
4709text. See the documentation string of that variable for details. 4042text. See the documentation string of that variable for details.
4710 4043
4711+++
4712** ':keys' in 'menu-item' can now be a function. 4044** ':keys' in 'menu-item' can now be a function.
4713If so, it is called whenever the menu is computed, and can be used to 4045If so, it is called whenever the menu is computed, and can be used to
4714calculate the keys dynamically. 4046calculate the keys dynamically.
4715 4047
4716+++
4717** New major mode 'clean-mode'. 4048** New major mode 'clean-mode'.
4718This is a new major mode meant for debugging. It kills absolutely all 4049This is a new major mode meant for debugging. It kills absolutely all
4719local variables and removes overlays and text properties. 4050local variables and removes overlays and text properties.
4720 4051
4721+++
4722** 'kill-all-local-variables' can now kill all local variables. 4052** 'kill-all-local-variables' can now kill all local variables.
4723If given the new optional KILL-PERMANENT argument, it also kills 4053If given the new optional KILL-PERMANENT argument, it also kills
4724permanent local variables. 4054permanent local variables.
4725 4055
4726+++
4727** Third 'mapconcat' argument SEPARATOR is now optional. 4056** Third 'mapconcat' argument SEPARATOR is now optional.
4728An explicit nil always meant the empty string, now it can be left out. 4057An explicit nil always meant the empty string, now it can be left out.
4729 4058
4730+++
4731** New function 'image-at-point-p'. 4059** New function 'image-at-point-p'.
4732This function returns t if point is on a valid image, and nil 4060This function returns t if point is on a valid image, and nil
4733otherwise. 4061otherwise.
4734 4062
4735+++
4736** New function 'buffer-text-pixel-size'. 4063** New function 'buffer-text-pixel-size'.
4737This is similar to 'window-text-pixel-size', but can be used when the 4064This is similar to 'window-text-pixel-size', but can be used when the
4738buffer isn't displayed. 4065buffer isn't displayed.
4739 4066
4740+++
4741** New function 'string-pixel-width'. 4067** New function 'string-pixel-width'.
4742This returns the width of a string in pixels. This can be useful when 4068This returns the width of a string in pixels. This can be useful when
4743dealing with variable pitch fonts and glyphs that have widths that 4069dealing with variable pitch fonts and glyphs that have widths that
4744aren't integer multiples of the default font. 4070aren't integer multiples of the default font.
4745 4071
4746+++
4747** New function 'string-glyph-split'. 4072** New function 'string-glyph-split'.
4748This function splits a string into a list of strings representing 4073This function splits a string into a list of strings representing
4749separate glyphs. This takes into account combining characters and 4074separate glyphs. This takes into account combining characters and
@@ -4752,13 +4077,11 @@ display as a single unit.
4752 4077
4753** Xwidget 4078** Xwidget
4754 4079
4755+++
4756*** The function 'make-xwidget' now accepts an optional RELATED argument. 4080*** The function 'make-xwidget' now accepts an optional RELATED argument.
4757This argument is used as another widget for the newly created WebKit 4081This argument is used as another widget for the newly created WebKit
4758widget to share settings and subprocesses with. It must be another 4082widget to share settings and subprocesses with. It must be another
4759WebKit widget. 4083WebKit widget.
4760 4084
4761+++
4762*** New function 'xwidget-perform-lispy-event'. 4085*** New function 'xwidget-perform-lispy-event'.
4763This function allows you to send events to xwidgets. Usually, some 4086This function allows you to send events to xwidgets. Usually, some
4764equivalent of the event will be sent, but there is no guarantee of 4087equivalent of the event will be sent, but there is no guarantee of
@@ -4766,33 +4089,27 @@ what the widget will actually receive.
4766 4089
4767On GTK+, only key and function key events are implemented. 4090On GTK+, only key and function key events are implemented.
4768 4091
4769+++
4770*** New function 'xwidget-webkit-load-html'. 4092*** New function 'xwidget-webkit-load-html'.
4771This function is used to load HTML text into WebKit xwidgets 4093This function is used to load HTML text into WebKit xwidgets
4772directly, in contrast to creating a temporary file to hold the 4094directly, in contrast to creating a temporary file to hold the
4773markup, and passing the URI of the file as an argument to 4095markup, and passing the URI of the file as an argument to
4774'xwidget-webkit-goto-uri'. 4096'xwidget-webkit-goto-uri'.
4775 4097
4776+++
4777*** New functions for performing searches on WebKit xwidgets. 4098*** New functions for performing searches on WebKit xwidgets.
4778Some new functions, such as 'xwidget-webkit-search', have been added 4099Some new functions, such as 'xwidget-webkit-search', have been added
4779for performing searches on WebKit xwidgets. 4100for performing searches on WebKit xwidgets.
4780 4101
4781+++
4782*** New function 'xwidget-webkit-back-forward-list'. 4102*** New function 'xwidget-webkit-back-forward-list'.
4783This function returns the history of page-loads in a WebKit xwidget. 4103This function returns the history of page-loads in a WebKit xwidget.
4784 4104
4785+++
4786*** New function 'xwidget-webkit-estimated-load-progress'. 4105*** New function 'xwidget-webkit-estimated-load-progress'.
4787This function returns the estimated progress of page loading in a 4106This function returns the estimated progress of page loading in a
4788WebKit xwidget. 4107WebKit xwidget.
4789 4108
4790+++
4791*** New function 'xwidget-webkit-stop-loading'. 4109*** New function 'xwidget-webkit-stop-loading'.
4792This function terminates all data transfer during page loads in a 4110This function terminates all data transfer during page loads in a
4793WebKit xwidget. 4111WebKit xwidget.
4794 4112
4795+++
4796*** 'load-changed' xwidget events are now more detailed. 4113*** 'load-changed' xwidget events are now more detailed.
4797In particular, they can now have different arguments based on the 4114In particular, they can now have different arguments based on the
4798state of the WebKit widget. 'load-finished' is sent when a load has 4115state of the WebKit widget. 'load-finished' is sent when a load has
@@ -4800,84 +4117,68 @@ completed, 'load-started' when a load first starts, 'load-redirected'
4800after a redirect, and 'load-committed' when the WebKit widget first 4117after a redirect, and 'load-committed' when the WebKit widget first
4801commits to the load. 4118commits to the load.
4802 4119
4803+++
4804*** New event type 'xwidget-display-event'. 4120*** New event type 'xwidget-display-event'.
4805These events are sent whenever an xwidget requests that Emacs displays 4121These events are sent whenever an xwidget requests that Emacs displays
4806another xwidget. The only arguments to this event are the xwidget 4122another xwidget. The only arguments to this event are the xwidget
4807that should be displayed, and the xwidget that asked to display it. 4123that should be displayed, and the xwidget that asked to display it.
4808 4124
4809+++
4810*** New function 'xwidget-webkit-set-cookie-storage-file'. 4125*** New function 'xwidget-webkit-set-cookie-storage-file'.
4811This function is used to control where and if an xwidget stores 4126This function is used to control where and if an xwidget stores
4812cookies set by web pages on disk. 4127cookies set by web pages on disk.
4813 4128
4814---
4815** New variable 'help-buffer-under-preparation'. 4129** New variable 'help-buffer-under-preparation'.
4816This variable is bound to t during the preparation of a "*Help*" buffer. 4130This variable is bound to t during the preparation of a "*Help*" buffer.
4817 4131
4818+++
4819** Timestamps like '(1 . 1000)' now work without warnings being generated. 4132** Timestamps like '(1 . 1000)' now work without warnings being generated.
4820For example, '(time-add nil '(1 . 1000))' no longer warns that the 4133For example, '(time-add nil '(1 . 1000))' no longer warns that the
4821'(1 . 1000)' acts like '(1000 . 1000000)'. This warning, which was a 4134'(1 . 1000)' acts like '(1000 . 1000000)'. This warning, which was a
4822temporary transition aid for Emacs 27, has served its purpose. 4135temporary transition aid for Emacs 27, has served its purpose.
4823 4136
4824+++
4825** 'encode-time' now also accepts a 6-element list with just time and date. 4137** 'encode-time' now also accepts a 6-element list with just time and date.
4826'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR))' is now short for 4138'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR))' is now short for
4827'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'. 4139'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'.
4828 4140
4829+++
4830** 'date-to-time' now accepts arguments that lack month, day, or time. 4141** 'date-to-time' now accepts arguments that lack month, day, or time.
4831The function now assumes the earliest possible values if its argument 4142The function now assumes the earliest possible values if its argument
4832lacks month, day, or time. For example, (date-to-time "2021-12-04") 4143lacks month, day, or time. For example, (date-to-time "2021-12-04")
4833now assumes a time of "00:00" instead of signaling an error. 4144now assumes a time of "00:00" instead of signaling an error.
4834 4145
4835+++
4836** 'format-seconds' now allows suppressing zero-value trailing elements. 4146** 'format-seconds' now allows suppressing zero-value trailing elements.
4837The new "%x" non-printing control character will suppress zero-value 4147The new "%x" non-printing control character will suppress zero-value
4838elements that appear after "%x". 4148elements that appear after "%x".
4839 4149
4840+++
4841** New events for taking advantage of touchscreen devices. 4150** New events for taking advantage of touchscreen devices.
4842The events 'touchscreen-begin', 'touchscreen-update', and 4151The events 'touchscreen-begin', 'touchscreen-update', and
4843'touchscreen-end' have been added to take better advantage of 4152'touchscreen-end' have been added to take better advantage of
4844touch-capable display panels. 4153touch-capable display panels.
4845 4154
4846+++
4847** New error symbol 'permission-denied'. 4155** New error symbol 'permission-denied'.
4848This is a subcategory of 'file-error', and is signaled when some file 4156This is a subcategory of 'file-error', and is signaled when some file
4849operation fails because the OS doesn't allow Emacs to access a file or 4157operation fails because the OS doesn't allow Emacs to access a file or
4850a directory. 4158a directory.
4851 4159
4852+++
4853** The ':underline' face attribute now accepts a new property. 4160** The ':underline' face attribute now accepts a new property.
4854The property ':position' now specifies the position of the underline 4161The property ':position' now specifies the position of the underline
4855when used as part of a property list specification for the 4162when used as part of a property list specification for the
4856':underline' attribute. 4163':underline' attribute.
4857 4164
4858+++
4859** 'defalias' records a more precise history of definitions. 4165** 'defalias' records a more precise history of definitions.
4860This is recorded in the 'function-history' symbol property. 4166This is recorded in the 'function-history' symbol property.
4861 4167
4862---
4863** New hook 'save-place-after-find-file-hook'. 4168** New hook 'save-place-after-find-file-hook'.
4864This is called at the end of 'save-place-find-file-hook'. 4169This is called at the end of 'save-place-find-file-hook'.
4865 4170
4866---
4867** 'indian-tml-base-table' no longer translates digits. 4171** 'indian-tml-base-table' no longer translates digits.
4868Use 'indian-tml-base-digits-table' if you want digits translation. 4172Use 'indian-tml-base-digits-table' if you want digits translation.
4869 4173
4870---
4871** 'indian-tml-itrans-v5-hash' no longer translates digits. 4174** 'indian-tml-itrans-v5-hash' no longer translates digits.
4872Use 'indian-tml-itrans-digits-v5-hash' if you want digits 4175Use 'indian-tml-itrans-digits-v5-hash' if you want digits
4873translation. 4176translation.
4874 4177
4875+++
4876** 'shell-quote-argument' has a new optional argument POSIX. 4178** 'shell-quote-argument' has a new optional argument POSIX.
4877This is useful when quoting shell arguments for a remote shell 4179This is useful when quoting shell arguments for a remote shell
4878invocation. Such shells are POSIX conformant by default. 4180invocation. Such shells are POSIX conformant by default.
4879 4181
4880+++
4881** 'make-process' can set connection type independently for input and output. 4182** 'make-process' can set connection type independently for input and output.
4882When calling 'make-process', communication via pty can be enabled 4183When calling 'make-process', communication via pty can be enabled
4883selectively for just input or output by passing a cons cell for 4184selectively for just input or output by passing a cons cell for
@@ -4886,14 +4187,12 @@ later, you can determine whether a particular stream for a process
4886uses a pty by passing one of 'stdin', 'stdout', or 'stderr' as the 4187uses a pty by passing one of 'stdin', 'stdout', or 'stderr' as the
4887second argument to 'process-tty-name'. 4188second argument to 'process-tty-name'.
4888 4189
4889+++
4890** 'signal-process' now consults the list 'signal-process-functions'. 4190** 'signal-process' now consults the list 'signal-process-functions'.
4891This is to determine which function has to be called in order to 4191This is to determine which function has to be called in order to
4892deliver the signal. This allows Tramp to send the signal to remote 4192deliver the signal. This allows Tramp to send the signal to remote
4893asynchronous processes. The hitherto existing implementation has been 4193asynchronous processes. The hitherto existing implementation has been
4894moved to 'internal-default-signal-process'. 4194moved to 'internal-default-signal-process'.
4895 4195
4896+++
4897** Some system information functions honor remote systems now. 4196** Some system information functions honor remote systems now.
4898'list-system-processes' returns remote process IDs. 4197'list-system-processes' returns remote process IDs.
4899'memory-info' returns memory information of remote systems. 4198'memory-info' returns memory information of remote systems.
@@ -4905,21 +4204,17 @@ remote. In order to preserve the old behavior, bind
4905 (let ((default-directory temporary-file-directory)) 4204 (let ((default-directory temporary-file-directory))
4906 (list-system-processes)) 4205 (list-system-processes))
4907 4206
4908+++
4909** New functions 'take' and 'ntake'. 4207** New functions 'take' and 'ntake'.
4910'(take N LIST)' returns the first N elements of LIST; 'ntake' does 4208'(take N LIST)' returns the first N elements of LIST; 'ntake' does
4911the same but works by modifying LIST destructively. 4209the same but works by modifying LIST destructively.
4912 4210
4913---
4914** 'string-split' is now an alias for 'split-string'. 4211** 'string-split' is now an alias for 'split-string'.
4915 4212
4916+++
4917** 'format-spec' now accepts functions in the replacement. 4213** 'format-spec' now accepts functions in the replacement.
4918The function is called only when used in the format string. This is 4214The function is called only when used in the format string. This is
4919useful to avoid side-effects such as prompting, when the value is not 4215useful to avoid side-effects such as prompting, when the value is not
4920actually being used for anything. 4216actually being used for anything.
4921 4217
4922+++
4923** The variable 'max-specpdl-size' has been made obsolete. 4218** The variable 'max-specpdl-size' has been made obsolete.
4924Now 'max-lisp-eval-depth' alone is used for limiting Lisp recursion 4219Now 'max-lisp-eval-depth' alone is used for limiting Lisp recursion
4925and stack usage. 'max-specpdl-size' is still present as a plain 4220and stack usage. 'max-specpdl-size' is still present as a plain
@@ -4933,11 +4228,9 @@ set is too big to transfer to Emacs every time a completion is
4933needed. The table uses new 'external' completion style exclusively 4228needed. The table uses new 'external' completion style exclusively
4934and cannot work with regular styles such as 'basic' or 'flex'. 4229and cannot work with regular styles such as 'basic' or 'flex'.
4935 4230
4936+++
4937** Magic file name handlers for 'make-directory-internal' are no longer needed. 4231** Magic file name handlers for 'make-directory-internal' are no longer needed.
4938Instead, Emacs uses the already-existing 'make-directory' handlers. 4232Instead, Emacs uses the already-existing 'make-directory' handlers.
4939 4233
4940+++
4941** '(make-directory DIR t)' returns non-nil if DIR already exists. 4234** '(make-directory DIR t)' returns non-nil if DIR already exists.
4942This can let a caller know whether it created DIR. Formerly, 4235This can let a caller know whether it created DIR. Formerly,
4943'make-directory's return value was unspecified. 4236'make-directory's return value was unspecified.
@@ -4947,7 +4240,6 @@ This can let a caller know whether it created DIR. Formerly,
4947 4240
4948** MS-Windows 4241** MS-Windows
4949 4242
4950---
4951*** Emacs now supports double-buffering on MS-Windows to reduce display flicker. 4243*** Emacs now supports double-buffering on MS-Windows to reduce display flicker.
4952(This was supported on Free systems since Emacs 26.1.) 4244(This was supported on Free systems since Emacs 26.1.)
4953 4245
@@ -4962,14 +4254,12 @@ selected frame by evaluating
4962 4254
4963 (modify-frame-parameters nil '((inhibit-double-buffering . t))) 4255 (modify-frame-parameters nil '((inhibit-double-buffering . t)))
4964 4256
4965+++
4966*** Emacs now supports system dark mode. 4257*** Emacs now supports system dark mode.
4967On Windows 10 (version 1809 and higher) and Windows 11, Emacs will now 4258On Windows 10 (version 1809 and higher) and Windows 11, Emacs will now
4968follow the system's dark mode: GUI frames use the appropriate light or 4259follow the system's dark mode: GUI frames use the appropriate light or
4969dark title bar and scroll bars, based on the user's Windows-wide color 4260dark title bar and scroll bars, based on the user's Windows-wide color
4970settings. 4261settings.
4971 4262
4972---
4973*** Emacs now uses native image APIs to display some image formats. 4263*** Emacs now uses native image APIs to display some image formats.
4974On Windows 2000 and later, Emacs now defaults to using the native 4264On Windows 2000 and later, Emacs now defaults to using the native
4975image APIs for displaying the BMP, GIF, JPEG, PNG, and TIFF images. 4265image APIs for displaying the BMP, GIF, JPEG, PNG, and TIFF images.
@@ -4982,12 +4272,10 @@ The use of native image APIs is controlled by the variable
4982'w32-use-native-image-API', whose value now defaults to t on systems 4272'w32-use-native-image-API', whose value now defaults to t on systems
4983where those APIs are available. 4273where those APIs are available.
4984 4274
4985+++
4986*** Emacs now supports display of BMP images using native image APIs. 4275*** Emacs now supports display of BMP images using native image APIs.
4987When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now 4276When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now
4988has built-in support for displaying BMP images. 4277has built-in support for displaying BMP images.
4989 4278
4990---
4991*** GUI Yes/No dialogs now include a "Cancel" button. 4279*** GUI Yes/No dialogs now include a "Cancel" button.
4992The "Cancel" button is in addition to "Yes" and "No", and is intended 4280The "Cancel" button is in addition to "Yes" and "No", and is intended
4993to allow users to quit the dialog, as an equivalent of 'C-g' when Emacs 4281to allow users to quit the dialog, as an equivalent of 'C-g' when Emacs
@@ -4998,12 +4286,10 @@ two buttons: "Yes" and "No".
4998 4286
4999** Cygwin 4287** Cygwin
5000 4288
5001---
5002*** 'process-attributes' is now implemented. 4289*** 'process-attributes' is now implemented.
5003 4290
5004** macOS 4291** macOS
5005 4292
5006+++
5007*** The 'ns-popup-font-panel' command has been removed. 4293*** The 'ns-popup-font-panel' command has been removed.
5008Use the general command 'M-x menu-set-font' instead. 4294Use the general command 'M-x menu-set-font' instead.
5009 4295