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