aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Kangas2025-01-26 21:37:56 +0100
committerStefan Kangas2025-01-26 22:45:13 +0100
commit74dcfe155a9cd42fe4d352f031297169bf3abb41 (patch)
tree851ac735948979e99892323363ad2cba60baf564
parenta87c382cabaec41f8901c858d4abd52305622b9e (diff)
downloademacs-74dcfe155a9cd42fe4d352f031297169bf3abb41.tar.gz
emacs-74dcfe155a9cd42fe4d352f031297169bf3abb41.zip
; * etc/NEWS: Remove temporary documentation markers.
-rw-r--r--etc/NEWS437
1 files changed, 0 insertions, 437 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 69ee6da62e9..53f75d120d2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -15,16 +15,9 @@ in older Emacs versions.
15You can narrow news to a specific version by calling 'view-emacs-news' 15You can narrow news to a specific version by calling 'view-emacs-news'
16with a prefix argument or by typing 'C-u C-h C-n'. 16with a prefix argument or by typing 'C-u C-h C-n'.
17 17
18Temporary note:
19+++ indicates that all relevant manuals in doc/ have been updated.
20--- means no change in the manuals is needed.
21When you add a new item, use the appropriate mark if you are sure it
22applies, and please also update docstrings as needed.
23
24 18
25* Installation Changes in Emacs 30.1 19* Installation Changes in Emacs 30.1
26 20
27---
28** Native compilation is now enabled by default. 21** Native compilation is now enabled by default.
29'configure' will enable the Emacs Lisp native compiler, so long as 22'configure' will enable the Emacs Lisp native compiler, so long as
30libgccjit is present and functional on the system. To disable native 23libgccjit is present and functional on the system. To disable native
@@ -32,20 +25,17 @@ compilation, configure Emacs with the option:
32 25
33 ./configure --with-native-compilation=no 26 ./configure --with-native-compilation=no
34 27
35+++
36** Emacs has been ported to the Android operating system. 28** Emacs has been ported to the Android operating system.
37This requires Emacs to be compiled on another computer. The Android 29This requires Emacs to be compiled on another computer. The Android
38NDK, SDK, and a suitable Java compiler must also be installed. 30NDK, SDK, and a suitable Java compiler must also be installed.
39 31
40See the file "java/INSTALL" for more details. 32See the file "java/INSTALL" for more details.
41 33
42---
43** Native JSON support is now always available; libjansson is no longer used. 34** Native JSON support is now always available; libjansson is no longer used.
44No external library is required. The '--with-json' configure option has 35No external library is required. The '--with-json' configure option has
45been removed. 'json-available-p' now always returns non-nil and is only 36been removed. 'json-available-p' now always returns non-nil and is only
46kept for compatibility. 37kept for compatibility.
47 38
48---
49** Emacs now defaults to the ossaudio library for sound on NetBSD and OpenBSD. 39** Emacs now defaults to the ossaudio library for sound on NetBSD and OpenBSD.
50Previously, configure used ALSA libraries if installed on the system 40Previously, configure used ALSA libraries if installed on the system
51when configured '--with-sound=yes' (which is the default), with fallback 41when configured '--with-sound=yes' (which is the default), with fallback
@@ -55,7 +45,6 @@ and to resolve potential incompatibilities between GNU/Linux and *BSD
55versions of ALSA. Use '--with-sound=alsa' to build with ALSA on these 45versions of ALSA. Use '--with-sound=alsa' to build with ALSA on these
56operating systems instead. 46operating systems instead.
57 47
58---
59** New configuration option '--disable-gc-mark-trace'. 48** New configuration option '--disable-gc-mark-trace'.
60This disables the GC mark trace buffer for about 5% better garbage 49This disables the GC mark trace buffer for about 5% better garbage
61collection performance. Doing so may make it more difficult for Emacs 50collection performance. Doing so may make it more difficult for Emacs
@@ -65,7 +54,6 @@ why the mark trace buffer is enabled by default.
65 54
66* Startup Changes in Emacs 30.1 55* Startup Changes in Emacs 30.1
67 56
68---
69** On GNU/Linux, Emacs is now the default application for 'org-protocol'. 57** On GNU/Linux, Emacs is now the default application for 'org-protocol'.
70Org mode provides a way to quickly capture bookmarks, notes, and links 58Org mode provides a way to quickly capture bookmarks, notes, and links
71using 'emacsclient': 59using 'emacsclient':
@@ -79,7 +67,6 @@ arranges for Emacs to be the default application for the 'org-protocol'
79URI scheme. See the Org mode manual, Info node "(org) Protocols" for 67URI scheme. See the Org mode manual, Info node "(org) Protocols" for
80more details. 68more details.
81 69
82+++
83** New variable lets Lisp code read emacsclient arguments. 70** New variable lets Lisp code read emacsclient arguments.
84When '--eval' is passed to emacsclient and Emacs is evaluating each 71When '--eval' is passed to emacsclient and Emacs is evaluating each
85argument, the new variable 'server-eval-args-left' is set to those 72argument, the new variable 'server-eval-args-left' is set to those
@@ -92,7 +79,6 @@ escaping (to protect them from the shell).
92 79
93* Incompatible Changes in Emacs 30.1 80* Incompatible Changes in Emacs 30.1
94 81
95---
96** Tree-Sitter modes are now declared as submodes of the non-TS modes. 82** Tree-Sitter modes are now declared as submodes of the non-TS modes.
97In order to help the use of those Tree-Sitter modes, they are now 83In order to help the use of those Tree-Sitter modes, they are now
98declared to have the corresponding non-Tree-Sitter mode as an 84declared to have the corresponding non-Tree-Sitter mode as an
@@ -133,7 +119,6 @@ variants of major modes are available, because that variable overrides
133the remapping Emacs might decide to perform as result of loading Lisp 119the remapping Emacs might decide to perform as result of loading Lisp
134files and features. 120files and features.
135 121
136---
137** Mouse wheel events should now always be 'wheel-up/down/left/right'. 122** Mouse wheel events should now always be 'wheel-up/down/left/right'.
138At those places where the old 'mouse-4/5/6/7' events could still occur 123At those places where the old 'mouse-4/5/6/7' events could still occur
139(i.e., X11 input in the absence of XInput2, and 'xterm-mouse-mode'), 124(i.e., X11 input in the absence of XInput2, and 'xterm-mouse-mode'),
@@ -143,7 +128,6 @@ The old variables 'mouse-wheel-up-event', 'mouse-wheel-down-event',
143'mouse-wheel-left-event', and 'mouse-wheel-right-event' are thereby 128'mouse-wheel-left-event', and 'mouse-wheel-right-event' are thereby
144obsolete. 129obsolete.
145 130
146+++
147** 'completion-auto-help' now affects 'icomplete-in-buffer'. 131** 'completion-auto-help' now affects 'icomplete-in-buffer'.
148Previously, 'completion-auto-help' mostly affected only minibuffer 132Previously, 'completion-auto-help' mostly affected only minibuffer
149completion. Now, if 'completion-auto-help' has the value 'lazy', then 133completion. Now, if 'completion-auto-help' has the value 'lazy', then
@@ -153,7 +137,6 @@ after the 'completion-at-point' command has been invoked twice, and if
153completely suppressed. Thus, if you use 'icomplete-in-buffer', ensure 137completely suppressed. Thus, if you use 'icomplete-in-buffer', ensure
154'completion-auto-help' is not customized to 'lazy' or nil. 138'completion-auto-help' is not customized to 'lazy' or nil.
155 139
156+++
157** The "*Completions*" buffer now always accompanies 'icomplete-in-buffer'. 140** The "*Completions*" buffer now always accompanies 'icomplete-in-buffer'.
158Previously, it was not consistent whether the "*Completions*" buffer would 141Previously, it was not consistent whether the "*Completions*" buffer would
159appear when using 'icomplete-in-buffer'. Now the "*Completions*" buffer 142appear when using 'icomplete-in-buffer'. Now the "*Completions*" buffer
@@ -164,27 +147,23 @@ to your init file:
164 147
165 (advice-add 'completion-at-point :after #'minibuffer-hide-completions) 148 (advice-add 'completion-at-point :after #'minibuffer-hide-completions)
166 149
167---
168** The default process filter was rewritten in native code. 150** The default process filter was rewritten in native code.
169The round-trip through the Lisp function 151The round-trip through the Lisp function
170'internal-default-process-filter' is skipped when the process filter is 152'internal-default-process-filter' is skipped when the process filter is
171the default one. It is reimplemented in native code, reducing GC churn. 153the default one. It is reimplemented in native code, reducing GC churn.
172To undo this change, set 'fast-read-process-output' to nil. 154To undo this change, set 'fast-read-process-output' to nil.
173 155
174+++
175** Network Security Manager now warns about 3DES by default. 156** Network Security Manager now warns about 3DES by default.
176This cypher is no longer recommended owing to a major vulnerability 157This cypher is no longer recommended owing to a major vulnerability
177disclosed in 2016, and its small 112 bit key size. Emacs now warns 158disclosed in 2016, and its small 112 bit key size. Emacs now warns
178about its use also when 'network-security-level' is set to 'medium' 159about its use also when 'network-security-level' is set to 'medium'
179(the default). See 'network-security-protocol-checks'. 160(the default). See 'network-security-protocol-checks'.
180 161
181---
182** Network Security Manager now warns about <2048 bits in DH key exchange. 162** Network Security Manager now warns about <2048 bits in DH key exchange.
183Emacs used to warn for ephemeral Diffie-Hellman (DHE) key exchanges with 163Emacs used to warn for ephemeral Diffie-Hellman (DHE) key exchanges with
184prime numbers smaller than 1024 bits. Since more servers now support 164prime numbers smaller than 1024 bits. Since more servers now support
185it, this number has been bumped to 2048 bits. 165it, this number has been bumped to 2048 bits.
186 166
187+++
188** URL now never sends user email addresses in HTTP requests. 167** URL now never sends user email addresses in HTTP requests.
189Emacs never sent email addresses by default, but it used to be 168Emacs never sent email addresses by default, but it used to be
190possible to customize 'url-privacy-level' so that the user's email 169possible to customize 'url-privacy-level' so that the user's email
@@ -196,7 +175,6 @@ removed, as it was considered more dangerous than useful. RFC 9110
196To send an email address in the header of individual HTTP requests, 175To send an email address in the header of individual HTTP requests,
197see the variable 'url-request-extra-headers'. 176see the variable 'url-request-extra-headers'.
198 177
199---
200** 'pixel-scroll-precision-mode' sets 'make-cursor-line-fully-visible'. 178** 'pixel-scroll-precision-mode' sets 'make-cursor-line-fully-visible'.
201'pixel-scroll-precision-mode' sets 'make-cursor-line-fully-visible' to a 179'pixel-scroll-precision-mode' sets 'make-cursor-line-fully-visible' to a
202nil value globally, since the usual requirement of the Emacs display to 180nil value globally, since the usual requirement of the Emacs display to
@@ -206,7 +184,6 @@ expectations.
206 184
207* Changes in Emacs 30.1 185* Changes in Emacs 30.1
208 186
209+++
210** New user option 'trusted-content' to allow potentially dangerous features. 187** New user option 'trusted-content' to allow potentially dangerous features.
211This option lists those files and directories whose content Emacs should 188This option lists those files and directories whose content Emacs should
212consider as sufficiently trusted to run any part of the code contained 189consider as sufficiently trusted to run any part of the code contained
@@ -215,14 +192,11 @@ For example, Flymake's backend for Emacs Lisp consults this option
215and disables itself with an "untrusted content" warning if the file 192and disables itself with an "untrusted content" warning if the file
216is not listed. 193is not listed.
217 194
218---
219** Emacs now supports Unicode Standard version 15.1. 195** Emacs now supports Unicode Standard version 15.1.
220 196
221+++
222** Emacs now comes with Org v9.7. 197** Emacs now comes with Org v9.7.
223See the file "etc/ORG-NEWS" for user-visible changes in Org. 198See the file "etc/ORG-NEWS" for user-visible changes in Org.
224 199
225+++
226** Improved support for touchscreen devices. 200** Improved support for touchscreen devices.
227On systems that understand them (at present X, Android, PGTK, and 201On systems that understand them (at present X, Android, PGTK, and
228MS-Windows), many touch screen gestures are now implemented and 202MS-Windows), many touch screen gestures are now implemented and
@@ -231,7 +205,6 @@ bar buttons and opening menus has been added. Countless packages, such
231as Dired and Custom, have been adjusted to better understand touch 205as Dired and Custom, have been adjusted to better understand touch
232screen input. 206screen input.
233 207
234+++
235** Support for styled underline face attributes. 208** Support for styled underline face attributes.
236These are implemented as new values of the 'style' attribute in a face 209These are implemented as new values of the 'style' attribute in a face
237underline specification, 'double-line', 'dots', and 'dashes', and are 210underline specification, 'double-line', 'dots', and 'dashes', and are
@@ -240,36 +213,30 @@ database entry defines the 'Su' or 'Smulx' capability, Emacs will also
240emit the prescribed escape sequence to render faces with such styles on 213emit the prescribed escape sequence to render faces with such styles on
241TTY frames. 214TTY frames.
242 215
243---
244** Support for underline colors on TTY frames. 216** Support for underline colors on TTY frames.
245Colors specified in the underline face will now also be displayed on TTY 217Colors specified in the underline face will now also be displayed on TTY
246frames on terminals that support the 'Su' or 'Smulx' capabilities. 218frames on terminals that support the 'Su' or 'Smulx' capabilities.
247 219
248+++
249** Modeline elements can now be right-aligned. 220** Modeline elements can now be right-aligned.
250Anything following the symbol 'mode-line-format-right-align' in 221Anything following the symbol 'mode-line-format-right-align' in
251'mode-line-format' will be right-aligned. Exactly where it is 222'mode-line-format' will be right-aligned. Exactly where it is
252right-aligned to is controlled by the new user option 223right-aligned to is controlled by the new user option
253'mode-line-right-align-edge'. 224'mode-line-right-align-edge'.
254 225
255---
256** X selection requests are now handled much faster and asynchronously. 226** X selection requests are now handled much faster and asynchronously.
257This means it should be less necessary to disable the likes of 227This means it should be less necessary to disable the likes of
258'select-active-regions' when Emacs is running over a slow network 228'select-active-regions' when Emacs is running over a slow network
259connection. 229connection.
260 230
261---
262** Emacs now updates invisible frames that are made visible by a compositor. 231** Emacs now updates invisible frames that are made visible by a compositor.
263If an invisible or an iconified frame is shown to the user by the 232If an invisible or an iconified frame is shown to the user by the
264compositing manager, Emacs will now redisplay such a frame even though 233compositing manager, Emacs will now redisplay such a frame even though
265'frame-visible-p' returns nil or 'icon' for it. This can happen, for 234'frame-visible-p' returns nil or 'icon' for it. This can happen, for
266example, as part of preview for iconified frames. 235example, as part of preview for iconified frames.
267 236
268+++
269** Most file notification backends detect unmounting of a watched filesystem. 237** Most file notification backends detect unmounting of a watched filesystem.
270The only exception is w32notify. 238The only exception is w32notify.
271 239
272+++
273** The ':map' property of images is now recomputed when image is transformed. 240** The ':map' property of images is now recomputed when image is transformed.
274Images with clickable maps now work as expected after you run commands 241Images with clickable maps now work as expected after you run commands
275such as 'image-increase-size', 'image-decrease-size', 'image-rotate', 242such as 'image-increase-size', 'image-decrease-size', 'image-rotate',
@@ -279,13 +246,11 @@ from recomputing image maps.
279 246
280** Minibuffer and Completions 247** Minibuffer and Completions
281 248
282+++
283*** New commands 'previous-line-completion' and 'next-line-completion'. 249*** New commands 'previous-line-completion' and 'next-line-completion'.
284Bound to '<up>' and '<down>' arrow keys, respectively, they navigate 250Bound to '<up>' and '<down>' arrow keys, respectively, they navigate
285the "*Completions*" buffer vertically by lines, wrapping at the 251the "*Completions*" buffer vertically by lines, wrapping at the
286top/bottom when 'completion-auto-wrap' is non-nil. 252top/bottom when 'completion-auto-wrap' is non-nil.
287 253
288+++
289*** New user option 'minibuffer-visible-completions'. 254*** New user option 'minibuffer-visible-completions'.
290When customized to non-nil, you can use arrow keys in the minibuffer 255When customized to non-nil, you can use arrow keys in the minibuffer
291to navigate the completions displayed in the "*Completions*" window. 256to navigate the completions displayed in the "*Completions*" window.
@@ -294,7 +259,6 @@ completions window. When the completions window is not visible,
294then all these keys have their usual meaning in the minibuffer. 259then all these keys have their usual meaning in the minibuffer.
295This option is supported for in-buffer completion as well. 260This option is supported for in-buffer completion as well.
296 261
297---
298*** Selected completion candidates are deselected on typing. 262*** Selected completion candidates are deselected on typing.
299When you type at the minibuffer prompt, the current completion 263When you type at the minibuffer prompt, the current completion
300candidate will be un-highlighted, and point in the "*Completions*" window 264candidate will be un-highlighted, and point in the "*Completions*" window
@@ -306,13 +270,11 @@ the minibuffer contents instead. This deselection behavior can be
306controlled with the new user option 'completion-auto-deselect', which 270controlled with the new user option 'completion-auto-deselect', which
307is t by default. 271is t by default.
308 272
309+++
310*** New value 'historical' for user option 'completions-sort'. 273*** New value 'historical' for user option 'completions-sort'.
311When 'completions-sort' is set to 'historical', completion candidates 274When 'completions-sort' is set to 'historical', completion candidates
312will be first sorted alphabetically, and then re-sorted by their order 275will be first sorted alphabetically, and then re-sorted by their order
313in the minibuffer history, with more recent candidates appearing first. 276in the minibuffer history, with more recent candidates appearing first.
314 277
315+++
316*** 'completion-category-overrides' supports more metadata. 278*** 'completion-category-overrides' supports more metadata.
317The new supported completion properties are 'cycle-sort-function', 279The new supported completion properties are 'cycle-sort-function',
318'display-sort-function', 'annotation-function', 'affixation-function', 280'display-sort-function', 'annotation-function', 'affixation-function',
@@ -320,21 +282,18 @@ and 'group-function'. You can now customize them for any category in
320'completion-category-overrides' that will override the properties 282'completion-category-overrides' that will override the properties
321defined in completion metadata. 283defined in completion metadata.
322 284
323+++
324*** 'completion-extra-properties' supports more metadata. 285*** 'completion-extra-properties' supports more metadata.
325The new supported completion properties are 'category', 286The new supported completion properties are 'category',
326'group-function', 'display-sort-function', and 'cycle-sort-function'. 287'group-function', 'display-sort-function', and 'cycle-sort-function'.
327 288
328** Windows 289** Windows
329 290
330+++
331*** New command 'toggle-window-dedicated'. 291*** New command 'toggle-window-dedicated'.
332This makes it easy to interactively mark a specific window as 292This makes it easy to interactively mark a specific window as
333dedicated, so it won't be reused by 'display-buffer'. This can be 293dedicated, so it won't be reused by 'display-buffer'. This can be
334useful for complicated window setups. It is bound to 'C-x w d' 294useful for complicated window setups. It is bound to 'C-x w d'
335globally. 295globally.
336 296
337+++
338*** "d" in the mode line now indicates that the window is dedicated. 297*** "d" in the mode line now indicates that the window is dedicated.
339Windows have always been able to be dedicated to a specific buffer; 298Windows have always been able to be dedicated to a specific buffer;
340see 'window-dedicated-p'. Now the mode line indicates the dedicated 299see 'window-dedicated-p'. Now the mode line indicates the dedicated
@@ -343,7 +302,6 @@ dedicated and "D" if the window is strongly dedicated. This indicator
343appears before the buffer name, and after the buffer modification and 302appears before the buffer name, and after the buffer modification and
344remote buffer indicators (usually "---" together). 303remote buffer indicators (usually "---" together).
345 304
346+++
347*** New action alist entry 'some-window' for 'display-buffer'. 305*** New action alist entry 'some-window' for 'display-buffer'.
348It specifies which window 'display-buffer-use-some-window' should prefer. 306It specifies which window 'display-buffer-use-some-window' should prefer.
349For example, when 'display-buffer-base-action' is customized to 307For example, when 'display-buffer-base-action' is customized to
@@ -351,25 +309,21 @@ For example, when 'display-buffer-base-action' is customized to
351in the same most recently used window from consecutive calls of 309in the same most recently used window from consecutive calls of
352'display-buffer' (in a configuration with more than two windows). 310'display-buffer' (in a configuration with more than two windows).
353 311
354+++
355*** New action alist entry 'category' for 'display-buffer'. 312*** New action alist entry 'category' for 'display-buffer'.
356If the caller of 'display-buffer' passes '(category . symbol)' 313If the caller of 'display-buffer' passes '(category . symbol)'
357in its 'action' argument, you can match the displayed buffer 314in its 'action' argument, you can match the displayed buffer
358by adding '(category . symbol)' to the condition part of 315by adding '(category . symbol)' to the condition part of
359'display-buffer-alist' entries. 316'display-buffer-alist' entries.
360 317
361+++
362*** New action alist entry 'post-command-select-window' for 'display-buffer'. 318*** New action alist entry 'post-command-select-window' for 'display-buffer'.
363It specifies whether the window of the displayed buffer should be 319It specifies whether the window of the displayed buffer should be
364selected or deselected at the end of executing the current command. 320selected or deselected at the end of executing the current command.
365 321
366+++
367*** New variable 'window-restore-killed-buffer-windows'. 322*** New variable 'window-restore-killed-buffer-windows'.
368It specifies how 'set-window-configuration' and 'window-state-put' 323It specifies how 'set-window-configuration' and 'window-state-put'
369should proceed with windows whose buffer was killed after the 324should proceed with windows whose buffer was killed after the
370corresponding configuration or state was recorded. 325corresponding configuration or state was recorded.
371 326
372---
373*** New variable 'window-point-context-set-function'. 327*** New variable 'window-point-context-set-function'.
374It can be used to set a context for window point in all windows by 328It can be used to set a context for window point in all windows by
375'window-point-context-set' before calling 'current-window-configuration' 329'window-point-context-set' before calling 'current-window-configuration'
@@ -379,14 +333,12 @@ and 'window-state-get'. Then later another new variable
379'window-state-put' to restore positions of window points 333'window-state-put' to restore positions of window points
380according to the context stored in a window parameter. 334according to the context stored in a window parameter.
381 335
382+++
383*** New functions 'set-window-cursor-type' and 'window-cursor-type'. 336*** New functions 'set-window-cursor-type' and 'window-cursor-type'.
384'set-window-cursor-type' sets a per-window cursor type, and 337'set-window-cursor-type' sets a per-window cursor type, and
385'window-cursor-type' queries this setting for a given window. Windows 338'window-cursor-type' queries this setting for a given window. Windows
386are always created with a 'window-cursor-type' of t, which means to 339are always created with a 'window-cursor-type' of t, which means to
387consult the variable 'cursor-type' as before. 340consult the variable 'cursor-type' as before.
388 341
389---
390*** The user option 'display-comint-buffer-action' is now obsolete. 342*** The user option 'display-comint-buffer-action' is now obsolete.
391You can use a '(category . comint)' condition in 'display-buffer-alist' 343You can use a '(category . comint)' condition in 'display-buffer-alist'
392to match buffers displayed by comint-related commands. Another 344to match buffers displayed by comint-related commands. Another
@@ -395,60 +347,50 @@ for which you can use '(category . tex-shell)'.
395 347
396** Tool bars 348** Tool bars
397 349
398+++
399*** Tool bars can now be placed on the bottom on more systems. 350*** Tool bars can now be placed on the bottom on more systems.
400The 'tool-bar-position' frame parameter can be set to 'bottom' on all 351The 'tool-bar-position' frame parameter can be set to 'bottom' on all
401window systems other than macOS and GNUstep (Nextstep). 352window systems other than macOS and GNUstep (Nextstep).
402 353
403+++
404*** New global minor mode 'modifier-bar-mode'. 354*** New global minor mode 'modifier-bar-mode'.
405When this minor mode is enabled, the tool bar displays buttons 355When this minor mode is enabled, the tool bar displays buttons
406representing modifier keys. Clicking on these buttons applies the 356representing modifier keys. Clicking on these buttons applies the
407corresponding modifiers to the next input event. 357corresponding modifiers to the next input event.
408 358
409+++
410*** New user option 'tool-bar-always-show-default'. 359*** New user option 'tool-bar-always-show-default'.
411When non-nil, the tool bar at the top of a frame does not show buffer 360When non-nil, the tool bar at the top of a frame does not show buffer
412local customization of the tool bar. The default value is nil. 361local customization of the tool bar. The default value is nil.
413 362
414** Tab Bars and Tab Lines 363** Tab Bars and Tab Lines
415 364
416---
417*** New user option 'tab-bar-select-restore-context'. 365*** New user option 'tab-bar-select-restore-context'.
418It uses 'window-point-context-set' to save contexts where 366It uses 'window-point-context-set' to save contexts where
419window points were located before switching away from the tab, 367window points were located before switching away from the tab,
420and 'window-point-context-use' to restore positions of window 368and 'window-point-context-use' to restore positions of window
421points after switching back to that tab. 369points after switching back to that tab.
422 370
423---
424*** New user option 'tab-bar-select-restore-windows'. 371*** New user option 'tab-bar-select-restore-windows'.
425It defines what to do with windows whose buffer was killed since the tab 372It defines what to do with windows whose buffer was killed since the tab
426was last selected. By default it displays a placeholder buffer 373was last selected. By default it displays a placeholder buffer
427with the name " *Old buffer <name>*" that provides information about 374with the name " *Old buffer <name>*" that provides information about
428the name of the killed buffer that was displayed in that window. 375the name of the killed buffer that was displayed in that window.
429 376
430---
431*** New user option 'tab-bar-tab-name-format-functions'. 377*** New user option 'tab-bar-tab-name-format-functions'.
432It can be used to add, remove and reorder functions that change the 378It can be used to add, remove and reorder functions that change the
433appearance of every tab on the tab bar. 379appearance of every tab on the tab bar.
434 380
435---
436*** New hook 'tab-bar-tab-post-select-functions'. 381*** New hook 'tab-bar-tab-post-select-functions'.
437 382
438---
439*** New keymap 'tab-bar-mode-map'. 383*** New keymap 'tab-bar-mode-map'.
440By default it contains a keybinding 'C-TAB' to switch tabs, but only 384By default it contains a keybinding 'C-TAB' to switch tabs, but only
441when 'C-TAB' is not bound globally. You can unbind it if it conflicts 385when 'C-TAB' is not bound globally. You can unbind it if it conflicts
442with 'C-TAB' in other modes. 386with 'C-TAB' in other modes.
443 387
444---
445*** New keymap 'tab-line-mode-map'. 388*** New keymap 'tab-line-mode-map'.
446By default it contains keybindings for switching tabs: 'C-x <left>', 389By default it contains keybindings for switching tabs: 'C-x <left>',
447'C-x <right>', 'C-x C-<left>', 'C-x C-<right>'. You can unbind them if 390'C-x <right>', 'C-x C-<left>', 'C-x C-<right>'. You can unbind them if
448you want to use these keys for the commands 'previous-buffer' and 391you want to use these keys for the commands 'previous-buffer' and
449'next-buffer'. 392'next-buffer'.
450 393
451---
452*** Default list of tab-line tabs is changed to support a fixed order. 394*** Default list of tab-line tabs is changed to support a fixed order.
453This means that 'tab-line-tabs-fixed-window-buffers', the new default 395This means that 'tab-line-tabs-fixed-window-buffers', the new default
454tabs function, is like the previous 'tab-line-tabs-window-buffers' where 396tabs function, is like the previous 'tab-line-tabs-window-buffers' where
@@ -458,29 +400,24 @@ original order of buffers on the tab line, even after switching between
458these buffers. You can drag the tabs and release at a new position 400these buffers. You can drag the tabs and release at a new position
459to manually reorder the buffers on the tab line. 401to manually reorder the buffers on the tab line.
460 402
461---
462*** New user option 'tab-line-tabs-buffer-group-function'. 403*** New user option 'tab-line-tabs-buffer-group-function'.
463It provides two choices to group tab buffers by major mode and by 404It provides two choices to group tab buffers by major mode and by
464project name. 405project name.
465 406
466---
467*** Buffers on tab-line group tabs are now sorted alphabetically. 407*** Buffers on tab-line group tabs are now sorted alphabetically.
468This will keep the fixed order of tabs, even after switching between 408This will keep the fixed order of tabs, even after switching between
469them. 409them.
470 410
471** Help 411** Help
472 412
473+++
474*** New command 'help-find-source'. 413*** New command 'help-find-source'.
475Switch to a buffer visiting the source of what is being described in 414Switch to a buffer visiting the source of what is being described in
476"*Help*". It is bound to 'C-h 4 s' globally. 415"*Help*". It is bound to 'C-h 4 s' globally.
477 416
478---
479*** New user option 'describe-bindings-outline-rules'. 417*** New user option 'describe-bindings-outline-rules'.
480This user option controls outline visibility in the output buffer of 418This user option controls outline visibility in the output buffer of
481'describe-bindings' when 'describe-bindings-outline' is non-nil. 419'describe-bindings' when 'describe-bindings-outline' is non-nil.
482 420
483---
484*** 'describe-function' shows the function's inferred type when available. 421*** 'describe-function' shows the function's inferred type when available.
485For native compiled Lisp functions, 'describe-function' prints (after 422For native compiled Lisp functions, 'describe-function' prints (after
486the signature) the automatically inferred function type as well. If the 423the signature) the automatically inferred function type as well. If the
@@ -489,18 +426,15 @@ function's type was explicitly declared (via the 'declare' form's
489controlled by the new user option 'help-display-function-type', which is 426controlled by the new user option 'help-display-function-type', which is
490by default t; customize to nil to disable function type display. 427by default t; customize to nil to disable function type display.
491 428
492---
493*** 'describe-function' now shows the type of the function object. 429*** 'describe-function' now shows the type of the function object.
494The text used to say things like "car is a built-in function" whereas it 430The text used to say things like "car is a built-in function" whereas it
495now says "car is a primitive-function" where "primitive-function" is the 431now says "car is a primitive-function" where "primitive-function" is the
496name of the symbol returned by 'cl-type-of'. You can click on those 432name of the symbol returned by 'cl-type-of'. You can click on those
497words to get information about that type. 433words to get information about that type.
498 434
499---
500*** 'C-h m' ('describe-mode') uses outlining by default. 435*** 'C-h m' ('describe-mode') uses outlining by default.
501Set 'describe-mode-outline' to nil to get back the old behavior. 436Set 'describe-mode-outline' to nil to get back the old behavior.
502 437
503---
504*** 'C-h k' ('describe-key') shows Unicode name. 438*** 'C-h k' ('describe-key') shows Unicode name.
505For keybindings which produce single characters via translation or input 439For keybindings which produce single characters via translation or input
506methods, 'C-h k' now shows the Unicode name of the produced character in 440methods, 'C-h k' now shows the Unicode name of the produced character in
@@ -510,7 +444,6 @@ addition to the character itself, e.g.
510 444
511 € 'EURO SIGN' (translated from C-x 8 E) 445 € 'EURO SIGN' (translated from C-x 8 E)
512 446
513---
514*** 'C-h b' ('describe-bindings') shows Unicode names. 447*** 'C-h b' ('describe-bindings') shows Unicode names.
515For keybindings which produce single characters via translation (such as 448For keybindings which produce single characters via translation (such as
516those using the 'C-x 8' or 'A-' prefix, or 'dead-acute', 'dead-grave', 449those using the 'C-x 8' or 'A-' prefix, or 'dead-acute', 'dead-grave',
@@ -522,54 +455,42 @@ itself, i.e.
522 455
523and so on. 456and so on.
524 457
525+++
526*** Multi-character key echo now ends with a suggestion to use Help. 458*** Multi-character key echo now ends with a suggestion to use Help.
527Customize 'echo-keystrokes-help' to nil to prevent that. 459Customize 'echo-keystrokes-help' to nil to prevent that.
528 460
529** Customize 461** Customize
530 462
531+++
532*** New command 'customize-dirlocals'. 463*** New command 'customize-dirlocals'.
533This command pops up a buffer to edit the settings in ".dir-locals.el". 464This command pops up a buffer to edit the settings in ".dir-locals.el".
534 465
535---
536*** New command 'customize-toggle-option'. 466*** New command 'customize-toggle-option'.
537This command can toggle boolean options for the duration of a session. 467This command can toggle boolean options for the duration of a session.
538 468
539+++
540*** New prefix argument for modifying directory-local variables. 469*** New prefix argument for modifying directory-local variables.
541The commands 'add-dir-local-variable', 'delete-dir-local-variable' and 470The commands 'add-dir-local-variable', 'delete-dir-local-variable' and
542'copy-file-locals-to-dir-locals' now take an optional prefix argument, 471'copy-file-locals-to-dir-locals' now take an optional prefix argument,
543to enter the file name where you want to modify directory-local 472to enter the file name where you want to modify directory-local
544variables. 473variables.
545 474
546+++
547*** New user option 'safe-local-variable-directories'. 475*** New user option 'safe-local-variable-directories'.
548This user option names directories in which Emacs will treat all 476This user option names directories in which Emacs will treat all
549directory-local variables as safe. 477directory-local variables as safe.
550 478
551+++
552** CL Print 479** CL Print
553 480
554+++
555*** There is a new chapter in the CL manual documenting cl-print.el. 481*** There is a new chapter in the CL manual documenting cl-print.el.
556See the Info node "(cl) Printing". 482See the Info node "(cl) Printing".
557 483
558+++
559*** You can expand the "..." truncation everywhere. 484*** You can expand the "..." truncation everywhere.
560The code that allowed "..." to be expanded in the "*Backtrace*" buffer 485The code that allowed "..." to be expanded in the "*Backtrace*" buffer
561should now work anywhere the data is generated by 'cl-print'. 486should now work anywhere the data is generated by 'cl-print'.
562 487
563+++
564*** The 'backtrace-ellipsis' button is replaced by 'cl-print-ellipsis'. 488*** The 'backtrace-ellipsis' button is replaced by 'cl-print-ellipsis'.
565 489
566+++
567*** hash-tables' contents can be expanded via the ellipsis. 490*** hash-tables' contents can be expanded via the ellipsis.
568 491
569+++
570*** Modes can control the expansion via 'cl-print-expand-ellipsis-function'. 492*** Modes can control the expansion via 'cl-print-expand-ellipsis-function'.
571 493
572+++
573*** New setting 'raw' for 'cl-print-compiled'. 494*** New setting 'raw' for 'cl-print-compiled'.
574This setting causes byte-compiled functions to be printed in full by 495This setting causes byte-compiled functions to be printed in full by
575'prin1'. A button on this output can be activated to disassemble the 496'prin1'. A button on this output can be activated to disassemble the
@@ -577,28 +498,23 @@ function.
577 498
578** Miscellaneous 499** Miscellaneous
579 500
580+++
581*** New command 'kill-matching-buffers-no-ask'. 501*** New command 'kill-matching-buffers-no-ask'.
582This works like 'kill-matching-buffers', but without asking for 502This works like 'kill-matching-buffers', but without asking for
583confirmation. 503confirmation.
584 504
585+++
586*** 'recover-file' can show diffs between auto save file and current file. 505*** 'recover-file' can show diffs between auto save file and current file.
587When answering the prompt with "diff" or "=", it now shows the diffs 506When answering the prompt with "diff" or "=", it now shows the diffs
588between the auto save file and the current file. 507between the auto save file and the current file.
589 508
590+++
591*** 'read-passwd' can toggle the visibility of passwords. 509*** 'read-passwd' can toggle the visibility of passwords.
592Use 'TAB' in the minibuffer to show or hide the password. 510Use 'TAB' in the minibuffer to show or hide the password.
593Alternatively, click the new show-password icon on the mode-line with 511Alternatively, click the new show-password icon on the mode-line with
594'mouse-1' to toggle the visibility of the password. 512'mouse-1' to toggle the visibility of the password.
595 513
596+++
597*** 'advice-remove' is now an interactive command. 514*** 'advice-remove' is now an interactive command.
598When called interactively, 'advice-remove' now prompts for an advised 515When called interactively, 'advice-remove' now prompts for an advised
599function to the advice to remove. 516function to the advice to remove.
600 517
601---
602*** New user option 'uniquify-dirname-transform'. 518*** New user option 'uniquify-dirname-transform'.
603This can be used to customize how buffer names are uniquified, by 519This can be used to customize how buffer names are uniquified, by
604making arbitrary transforms on the buffer's directory name (whose 520making arbitrary transforms on the buffer's directory name (whose
@@ -607,70 +523,57 @@ can use this to distinguish between buffers visiting files with the
607same base name that belong to different projects by using the provided 523same base name that belong to different projects by using the provided
608transform function 'project-uniquify-dirname-transform'. 524transform function 'project-uniquify-dirname-transform'.
609 525
610+++
611*** New user option 'remote-file-name-inhibit-delete-by-moving-to-trash'. 526*** New user option 'remote-file-name-inhibit-delete-by-moving-to-trash'.
612When non-nil, this option suppresses moving remote files to the local 527When non-nil, this option suppresses moving remote files to the local
613trash when deleting. Default is nil. 528trash when deleting. Default is nil.
614 529
615---
616*** New user option 'remote-file-name-inhibit-auto-save'. 530*** New user option 'remote-file-name-inhibit-auto-save'.
617If this user option is non-nil, 'auto-save-mode' will not auto-save 531If this user option is non-nil, 'auto-save-mode' will not auto-save
618remote buffers. The default is nil. 532remote buffers. The default is nil.
619 533
620+++
621*** New user option 'remote-file-name-access-timeout'. 534*** New user option 'remote-file-name-access-timeout'.
622If a positive number, this option limits the call of 'access-file' 535If a positive number, this option limits the call of 'access-file'
623for remote files to that number of seconds. Default is nil. 536for remote files to that number of seconds. Default is nil.
624 537
625+++
626*** New user option 'yes-or-no-prompt'. 538*** New user option 'yes-or-no-prompt'.
627This allows the user to customize the prompt that is appended by 539This allows the user to customize the prompt that is appended by
628'yes-or-no-p' when asking questions. The default value is 540'yes-or-no-p' when asking questions. The default value is
629"(yes or no) ". 541"(yes or no) ".
630 542
631---
632*** New user option 'menu-bar-close-window'. 543*** New user option 'menu-bar-close-window'.
633When non-nil, selecting "Close" from the "File" menu or clicking 544When non-nil, selecting "Close" from the "File" menu or clicking
634"Close" in the tool bar will result in the current window being 545"Close" in the tool bar will result in the current window being
635deleted, if possible. The default is nil, and these gestures kill the 546deleted, if possible. The default is nil, and these gestures kill the
636buffer shown in the current window, but don't delete the window. 547buffer shown in the current window, but don't delete the window.
637 548
638---
639*** New face 'display-time-date-and-time'. 549*** New face 'display-time-date-and-time'.
640This is used for displaying the time and date components of 550This is used for displaying the time and date components of
641'display-time-mode'. 551'display-time-mode'.
642 552
643---
644*** New face 'appt-notification' for 'appt-display-mode-line'. 553*** New face 'appt-notification' for 'appt-display-mode-line'.
645It can be used to customize the look of the appointment notification 554It can be used to customize the look of the appointment notification
646displayed on the mode line when 'appt-display-mode-line' is non-nil. 555displayed on the mode line when 'appt-display-mode-line' is non-nil.
647 556
648---
649*** New icon images for general use. 557*** New icon images for general use.
650Several symbolic icons have been added to "etc/images/symbols", 558Several symbolic icons have been added to "etc/images/symbols",
651including plus, minus, check-mark, star, etc. 559including plus, minus, check-mark, star, etc.
652 560
653---
654*** Emacs now recognizes shebang lines that pass '-S'/'--split-string' to 'env'. 561*** Emacs now recognizes shebang lines that pass '-S'/'--split-string' to 'env'.
655When visiting a script that invokes 'env -S INTERPRETER ARGS...' in 562When visiting a script that invokes 'env -S INTERPRETER ARGS...' in
656its shebang line, Emacs will now skip over 'env -S' and deduce the 563its shebang line, Emacs will now skip over 'env -S' and deduce the
657major mode based on the interpreter after 'env -S'. 564major mode based on the interpreter after 'env -S'.
658 565
659+++
660*** 'insert-directory-program' is now a user option. 566*** 'insert-directory-program' is now a user option.
661On *BSD and macOS systems, this user option now defaults to the "gls" 567On *BSD and macOS systems, this user option now defaults to the "gls"
662executable, if it exists. This should remove the need to change its 568executable, if it exists. This should remove the need to change its
663value when installing GNU coreutils using something like ports or 569value when installing GNU coreutils using something like ports or
664Homebrew. 570Homebrew.
665 571
666+++
667*** 'write-region-inhibit-fsync' now defaults to t in interactive mode. 572*** 'write-region-inhibit-fsync' now defaults to t in interactive mode.
668This is the default in batch mode since Emacs 24. 573This is the default in batch mode since Emacs 24.
669 574
670---
671*** The default value of 'read-process-output-max' was increased to 65536. 575*** The default value of 'read-process-output-max' was increased to 65536.
672 576
673+++
674*** 'url-gateway-broken-resolution' is now obsolete. 577*** 'url-gateway-broken-resolution' is now obsolete.
675This option was intended for use on SunOS 4.x and Ultrix systems, 578This option was intended for use on SunOS 4.x and Ultrix systems,
676neither of which have been supported by Emacs since version 23.1. 579neither of which have been supported by Emacs since version 23.1.
@@ -680,7 +583,6 @@ The user option 'url-gateway-nslookup-program' and the command
680 583
681* Editing Changes in Emacs 30.1 584* Editing Changes in Emacs 30.1
682 585
683+++
684** New minor mode 'visual-wrap-prefix-mode'. 586** New minor mode 'visual-wrap-prefix-mode'.
685When enabled, continuation lines displayed for a wrapped long line 587When enabled, continuation lines displayed for a wrapped long line
686will receive a 'wrap-prefix' automatically computed from the line's 588will receive a 'wrap-prefix' automatically computed from the line's
@@ -694,7 +596,6 @@ buffers.
694(This minor mode is the 'adaptive-wrap' ELPA package renamed and 596(This minor mode is the 'adaptive-wrap' ELPA package renamed and
695lightly edited for inclusion in Emacs.) 597lightly edited for inclusion in Emacs.)
696 598
697+++
698** New global minor mode 'kill-ring-deindent-mode'. 599** New global minor mode 'kill-ring-deindent-mode'.
699When enabled, text being saved to the kill ring will be de-indented by 600When enabled, text being saved to the kill ring will be de-indented by
700the column number at its start. For example, saving the entire 601the column number at its start. For example, saving the entire
@@ -716,7 +617,6 @@ long_function_with_several_arguments (argument_1_compute (),
716This omits the two columns of extra indentation that would otherwise be 617This omits the two columns of extra indentation that would otherwise be
717copied from the second and third lines and saved to the kill ring. 618copied from the second and third lines and saved to the kill ring.
718 619
719---
720** New command 'replace-regexp-as-diff'. 620** New command 'replace-regexp-as-diff'.
721It reads a regexp to search for and a string to replace with, then 621It reads a regexp to search for and a string to replace with, then
722displays a buffer with replacements as diffs. After reviewing the 622displays a buffer with replacements as diffs. After reviewing the
@@ -726,7 +626,6 @@ a patch to the current file buffer. There are also new commands
726in a list of specified files, and 'dired-do-replace-regexp-as-diff' 626in a list of specified files, and 'dired-do-replace-regexp-as-diff'
727that shows as diffs replacements in the marked files in Dired. 627that shows as diffs replacements in the marked files in Dired.
728 628
729+++
730** New mode of prompting for register names and showing preview. 629** New mode of prompting for register names and showing preview.
731The new user option 'register-use-preview' can be customized to the 630The new user option 'register-use-preview' can be customized to the
732value t or 'insist' to request a different user interface of prompting for 631value t or 'insist' to request a different user interface of prompting for
@@ -739,7 +638,6 @@ The default value of 'register-use-preview' ('traditional') preserves the
739behavior of Emacs 29 and before. See the Info node "(emacs) Registers" 638behavior of Emacs 29 and before. See the Info node "(emacs) Registers"
740for more details about the new UI and its variants. 639for more details about the new UI and its variants.
741 640
742+++
743** New advanced macro counter commands. 641** New advanced macro counter commands.
744New commands have been added to implement advanced macro counter 642New commands have been added to implement advanced macro counter
745functions. 643functions.
@@ -755,7 +653,6 @@ The commands 'C-x C-k C-q =', 'C-x C-k C-q <', and 'C-x C-k C-q >'
755compare the macro counter with an optional prefix and terminate the 653compare the macro counter with an optional prefix and terminate the
756macro if the comparison succeeds. 654macro if the comparison succeeds.
757 655
758+++
759** New mode 'kmacro-menu-mode' and new command 'list-keyboard-macros'. 656** New mode 'kmacro-menu-mode' and new command 'list-keyboard-macros'.
760The new command 'list-keyboard-macros' is the keyboard-macro version 657The new command 'list-keyboard-macros' is the keyboard-macro version
761of commands like 'list-buffers' and 'list-processes', creating a listing 658of commands like 'list-buffers' and 'list-processes', creating a listing
@@ -764,19 +661,16 @@ of the currently existing keyboards macros using the new mode
764duplicating them, deleting them, and editing their counters, formats, 661duplicating them, deleting them, and editing their counters, formats,
765and keys. 662and keys.
766 663
767---
768** On X, Emacs now supports input methods which perform "string conversion". 664** On X, Emacs now supports input methods which perform "string conversion".
769This means an input method can now ask Emacs to delete text 665This means an input method can now ask Emacs to delete text
770surrounding point and replace it with something else, as well as query 666surrounding point and replace it with something else, as well as query
771Emacs for surrounding text. If your input method allows you to "undo" 667Emacs for surrounding text. If your input method allows you to "undo"
772mistaken compositions, this will now work as well. 668mistaken compositions, this will now work as well.
773 669
774---
775** New user option 'duplicate-region-final-position'. 670** New user option 'duplicate-region-final-position'.
776It controls the placement of point and the region after duplicating a 671It controls the placement of point and the region after duplicating a
777region with 'duplicate-dwim'. 672region with 'duplicate-dwim'.
778 673
779+++
780** New user option 'mouse-prefer-closest-glyph'. 674** New user option 'mouse-prefer-closest-glyph'.
781When enabled, clicking or dragging with the mouse will put the point 675When enabled, clicking or dragging with the mouse will put the point
782or start the drag in front of the buffer position corresponding to the 676or start the drag in front of the buffer position corresponding to the
@@ -787,14 +681,12 @@ whereas if the mouse pointer is in the left half of a glyph, point
787will be put in front the buffer position corresponding to that glyph. 681will be put in front the buffer position corresponding to that glyph.
788By default this is disabled. 682By default this is disabled.
789 683
790---
791** New pre-defined values for 'electric-quote-chars'. 684** New pre-defined values for 'electric-quote-chars'.
792The available customization options for 'electric-quote-chars' have been 685The available customization options for 'electric-quote-chars' have been
793updated with common pairs of quotation characters, including "‘", "’", 686updated with common pairs of quotation characters, including "‘", "’",
794"“", "”", "«", "»", "‹", "›", "‚", "„", "「", "」", "『", and "』". 687"“", "”", "«", "»", "‹", "›", "‚", "„", "「", "」", "『", and "』".
795The default is unchanged. 688The default is unchanged.
796 689
797+++
798** 'M-TAB' now invokes 'completion-at-point' in Text mode. 690** 'M-TAB' now invokes 'completion-at-point' in Text mode.
799By default, Text mode no longer binds 'M-TAB' to 'ispell-complete-word'. 691By default, Text mode no longer binds 'M-TAB' to 'ispell-complete-word'.
800Instead, this mode arranges for 'completion-at-point', globally bound to 692Instead, this mode arranges for 'completion-at-point', globally bound to
@@ -805,7 +697,6 @@ customizing the new user option 'text-mode-ispell-word-completion'.
805 697
806** Internationalization 698** Internationalization
807 699
808---
809*** Mode-line mnemonics for some coding-systems have changed. 700*** Mode-line mnemonics for some coding-systems have changed.
810The mode-line mnemonic for 'utf-7' is now the lowercase 'u', to be 701The mode-line mnemonic for 'utf-7' is now the lowercase 'u', to be
811consistent with the other encodings of this family. 702consistent with the other encodings of this family.
@@ -821,7 +712,6 @@ previous behavior of showing 'U' in the mode line for 'koi8-u':
821 712
822 (coding-system-put 'koi8-u :mnemonic ?U) 713 (coding-system-put 'koi8-u :mnemonic ?U)
823 714
824---
825*** 'vietnamese-tcvn' is now a coding system alias for 'vietnamese-vscii'. 715*** 'vietnamese-tcvn' is now a coding system alias for 'vietnamese-vscii'.
826VSCII-1 and TCVN-5712 are different names for the same character 716VSCII-1 and TCVN-5712 are different names for the same character
827encoding. Therefore, the duplicate coding system definition has been 717encoding. Therefore, the duplicate coding system definition has been
@@ -830,7 +720,6 @@ dropped in favor of an alias.
830The mode-line mnemonic for 'vietnamese-vscii' and its aliases is the 720The mode-line mnemonic for 'vietnamese-vscii' and its aliases is the
831lowercase letter "v". 721lowercase letter "v".
832 722
833---
834*** Users in CJK locales can control width of some non-CJK characters. 723*** Users in CJK locales can control width of some non-CJK characters.
835Some characters are considered by Unicode as "ambiguous" with respect 724Some characters are considered by Unicode as "ambiguous" with respect
836to their display width: either "full-width" (i.e., taking 2 columns on 725to their display width: either "full-width" (i.e., taking 2 columns on
@@ -847,25 +736,20 @@ or narrow (if the variable is customized to the nil value).
847This setting affects the results of 'string-width' and similar 736This setting affects the results of 'string-width' and similar
848functions in CJK locales. 737functions in CJK locales.
849 738
850---
851*** New input methods for the Urdu, Pashto, and Sindhi languages. 739*** New input methods for the Urdu, Pashto, and Sindhi languages.
852These languages are spoken in Pakistan and Afghanistan. 740These languages are spoken in Pakistan and Afghanistan.
853 741
854---
855*** New input method "english-colemak". 742*** New input method "english-colemak".
856This input method supports the Colemak keyboard layout. 743This input method supports the Colemak keyboard layout.
857 744
858---
859*** Additional 'C-x 8' key translations for "æ" and "Æ". 745*** Additional 'C-x 8' key translations for "æ" and "Æ".
860These characters can now be input with 'C-x 8 a e' and 'C-x 8 A E', 746These characters can now be input with 'C-x 8 a e' and 'C-x 8 A E',
861respectively, in addition to the existing translations 'C-x 8 / e' and 747respectively, in addition to the existing translations 'C-x 8 / e' and
862'C-x 8 / E'. 748'C-x 8 / E'.
863 749
864---
865*** New 'C-x 8' key translations for "low" quotes "„", and "‚". 750*** New 'C-x 8' key translations for "low" quotes "„", and "‚".
866These can now be entered with 'C-x , "' and 'C-x , ''. 751These can now be entered with 'C-x , "' and 'C-x , ''.
867 752
868---
869*** New German language 'C-x 8' key translations for quotation marks. 753*** New German language 'C-x 8' key translations for quotation marks.
870The characters "„", "“", and "”" can now be entered with 'C-x 8 v', 754The characters "„", "“", and "”" can now be entered with 'C-x 8 v',
871'C-x 8 b' and 'C-x 8 n'. The single versions "‚", "‘", and "’" can now 755'C-x 8 b' and 'C-x 8 n'. The single versions "‚", "‘", and "’" can now
@@ -873,7 +757,6 @@ be entered with 'C-x 8 V', 'C-x 8 B' and 'C-x 8 N'. These characters
873are used for the official German quoting style. Using them requires 757are used for the official German quoting style. Using them requires
874activating German language support via 'iso-transl-set-language'. 758activating German language support via 'iso-transl-set-language'.
875 759
876---
877*** "latin-prefix" and "latin-postfix" quotation marks additions. 760*** "latin-prefix" and "latin-postfix" quotation marks additions.
878These input methods can now produce single, double and "low" left and 761These input methods can now produce single, double and "low" left and
879right quotation marks: 762right quotation marks:
@@ -883,20 +766,17 @@ right quotation marks:
883by using "[", "]", and "," for "left", "right", and "low" respectively 766by using "[", "]", and "," for "left", "right", and "low" respectively
884to modify "'" and """. 767to modify "'" and """.
885 768
886---
887*** "latin-prefix" and "latin-postfix" guillemets support. 769*** "latin-prefix" and "latin-postfix" guillemets support.
888These input methods can now produce single guillemets "‹" and "›". For 770These input methods can now produce single guillemets "‹" and "›". For
889"latin-prefix" use "~~<" and "~~>", for "latin-postfix" use "<~" and 771"latin-prefix" use "~~<" and "~~>", for "latin-postfix" use "<~" and
890">~". Double guillemets ("«" and "»") were already supported. 772">~". Double guillemets ("«" and "»") were already supported.
891 773
892---
893*** New French language 'C-x 8' key translations for "‹" and "›". 774*** New French language 'C-x 8' key translations for "‹" and "›".
894These characters can now be entered using 'C-x 8 ~ <' and 'C-x 8 ~ >', 775These characters can now be entered using 'C-x 8 ~ <' and 'C-x 8 ~ >',
895respectively, after activating French language support via 776respectively, after activating French language support via
896'iso-transl-set-language'. Double guillemets were already supported via 777'iso-transl-set-language'. Double guillemets were already supported via
897'C-x 8 <' and 'C-x 8 >' 778'C-x 8 <' and 'C-x 8 >'
898 779
899---
900*** Additional 'C-x 8' key translation for Euro "€" currency symbol. 780*** Additional 'C-x 8' key translation for Euro "€" currency symbol.
901This can now be entered using 'C-x 8 E' in addition to the existing 781This can now be entered using 'C-x 8 E' in addition to the existing
902'C-x 8 * E' translation. 782'C-x 8 * E' translation.
@@ -906,44 +786,37 @@ This can now be entered using 'C-x 8 E' in addition to the existing
906 786
907** Outline mode 787** Outline mode
908 788
909+++
910*** New commands to show/hide outlines by regexp. 789*** New commands to show/hide outlines by regexp.
911'C-c / h' ('outline-hide-by-heading-regexp') asks for a regexp and then 790'C-c / h' ('outline-hide-by-heading-regexp') asks for a regexp and then
912hides the body lines of all outlines whose heading lines match the 791hides the body lines of all outlines whose heading lines match the
913regexp. 'C-c / s' ('outline-show-by-heading-regexp') does the inverse: 792regexp. 'C-c / s' ('outline-show-by-heading-regexp') does the inverse:
914it shows the bodies of outlines that matched a regexp. 793it shows the bodies of outlines that matched a regexp.
915 794
916+++
917*** 'outline-minor-mode' is supported in tree-sitter major modes. 795*** 'outline-minor-mode' is supported in tree-sitter major modes.
918It can be used in all tree-sitter major modes that set either the 796It can be used in all tree-sitter major modes that set either the
919variable 'treesit-simple-imenu-settings' or 'treesit-outline-predicate'. 797variable 'treesit-simple-imenu-settings' or 'treesit-outline-predicate'.
920 798
921** Info 799** Info
922 800
923---
924*** New user option 'Info-url-alist'. 801*** New user option 'Info-url-alist'.
925This user option associates manual names with URLs. It affects the 802This user option associates manual names with URLs. It affects the
926'Info-goto-node-web' command. By default, associations for all 803'Info-goto-node-web' command. By default, associations for all
927Emacs-included manuals are set. Further associations can be added for 804Emacs-included manuals are set. Further associations can be added for
928arbitrary Info manuals. 805arbitrary Info manuals.
929 806
930---
931*** Emacs can now display Info manuals compressed with 'lzip'. 807*** Emacs can now display Info manuals compressed with 'lzip'.
932This requires the 'lzip' program to be installed on your system. 808This requires the 'lzip' program to be installed on your system.
933 809
934** GUD (Grand Unified Debugger) 810** GUD (Grand Unified Debugger)
935 811
936+++
937*** New user option 'gud-highlight-current-line'. 812*** New user option 'gud-highlight-current-line'.
938When enabled, GUD will visually emphasize the line being executed upon 813When enabled, GUD will visually emphasize the line being executed upon
939pauses in the debuggee's execution, such as those occasioned by 814pauses in the debuggee's execution, such as those occasioned by
940breakpoints being hit. 815breakpoints being hit.
941 816
942+++
943*** New command 'lldb'. 817*** New command 'lldb'.
944Run the LLDB debugger, analogous to the 'gud-gdb' command. 818Run the LLDB debugger, analogous to the 'gud-gdb' command.
945 819
946---
947*** Variable order and truncation can now be configured in 'gdb-many-windows'. 820*** Variable order and truncation can now be configured in 'gdb-many-windows'.
948The new user option 'gdb-locals-table-row-config' allows users to 821The new user option 'gdb-locals-table-row-config' allows users to
949configure the order and max length of various properties in the local 822configure the order and max length of various properties in the local
@@ -959,7 +832,6 @@ If you want to get back the old behavior, set the user option to the value
959 (setopt gdb-locals-table-row-config 832 (setopt gdb-locals-table-row-config
960 `((type . 0) (name . 0) (value . ,gdb-locals-value-limit))) 833 `((type . 0) (name . 0) (value . ,gdb-locals-value-limit)))
961 834
962+++
963*** New user option 'gdb-display-io-buffer'. 835*** New user option 'gdb-display-io-buffer'.
964If this is nil, command 'gdb' will neither create nor display a separate 836If this is nil, command 'gdb' will neither create nor display a separate
965buffer for the I/O of the program being debugged, but will instead 837buffer for the I/O of the program being debugged, but will instead
@@ -968,7 +840,6 @@ default is t, to preserve previous behavior.
968 840
969** Grep 841** Grep
970 842
971+++
972*** New user option 'grep-use-headings'. 843*** New user option 'grep-use-headings'.
973When non-nil, the output of Grep is split into sections, one for each 844When non-nil, the output of Grep is split into sections, one for each
974file, instead of having file names prefixed to each line. It is 845file, instead of having file names prefixed to each line. It is
@@ -978,13 +849,11 @@ The default is nil.
978 849
979** Compilation mode 850** Compilation mode
980 851
981---
982*** The 'omake' matching rule is now disabled by default. 852*** The 'omake' matching rule is now disabled by default.
983This is because it partly acts by modifying other rules which may 853This is because it partly acts by modifying other rules which may
984occasionally be surprising. It can be re-enabled by adding 'omake' to 854occasionally be surprising. It can be re-enabled by adding 'omake' to
985'compilation-error-regexp-alist'. 855'compilation-error-regexp-alist'.
986 856
987---
988*** Lua errors and stack traces are now recognized. 857*** Lua errors and stack traces are now recognized.
989Compilation mode now recognizes Lua language errors and stack traces. 858Compilation mode now recognizes Lua language errors and stack traces.
990Every Lua error is recognized as a compilation error, and every Lua 859Every Lua error is recognized as a compilation error, and every Lua
@@ -992,24 +861,20 @@ stack frame is recognized as a compilation info.
992 861
993** Project 862** Project
994 863
995+++
996*** New user option 'project-mode-line'. 864*** New user option 'project-mode-line'.
997When non-nil, display the name of the current project on the mode 865When non-nil, display the name of the current project on the mode
998line. Clicking 'mouse-1' on the project name pops up the project 866line. Clicking 'mouse-1' on the project name pops up the project
999menu. The default value is nil. 867menu. The default value is nil.
1000 868
1001---
1002*** New user option 'project-file-history-behavior'. 869*** New user option 'project-file-history-behavior'.
1003Customizing it to 'relativize' makes commands like 'project-find-file' 870Customizing it to 'relativize' makes commands like 'project-find-file'
1004and 'project-find-dir' display previous history entries relative to 871and 'project-find-dir' display previous history entries relative to
1005the current project. 872the current project.
1006 873
1007---
1008*** New user option 'project-key-prompt-style'. 874*** New user option 'project-key-prompt-style'.
1009The look of the key prompt in the project switcher has been changed 875The look of the key prompt in the project switcher has been changed
1010slightly. To get the previous one, set this option to 'brackets'. 876slightly. To get the previous one, set this option to 'brackets'.
1011 877
1012---
1013*** Function 'project-try-vc' tries harder to find the responsible VCS. 878*** Function 'project-try-vc' tries harder to find the responsible VCS.
1014When 'project-vc-extra-root-markers' is non-nil, and causes a 879When 'project-vc-extra-root-markers' is non-nil, and causes a
1015subdirectory project to be detected which is not a VCS root, Project now 880subdirectory project to be detected which is not a VCS root, Project now
@@ -1017,7 +882,6 @@ additionally traverses the parent directories until a VCS root is found
1017(if any), so that the ignore rules for that repository are used, and 882(if any), so that the ignore rules for that repository are used, and
1018the file listing's performance is still optimized. 883the file listing's performance is still optimized.
1019 884
1020+++
1021*** New commands 'project-any-command' and 'project-prefix-or-any-command'. 885*** New commands 'project-any-command' and 'project-prefix-or-any-command'.
1022The former is now bound to 'C-x p o' by default. 886The former is now bound to 'C-x p o' by default.
1023The latter is designed primarily for use as a value of 887The latter is designed primarily for use as a value of
@@ -1028,7 +892,6 @@ you can add this to your init script:
1028 892
1029 (setopt project-switch-commands #'project-prefix-or-any-command) 893 (setopt project-switch-commands #'project-prefix-or-any-command)
1030 894
1031---
1032*** New variable 'project-files-relative-names'. 895*** New variable 'project-files-relative-names'.
1033If it is non-nil, 'project-files' can return file names relative to the 896If it is non-nil, 'project-files' can return file names relative to the
1034project root. Project backends can use this to improve the performance 897project root. Project backends can use this to improve the performance
@@ -1036,26 +899,21 @@ of their 'project-files' implementation.
1036 899
1037** VC 900** VC
1038 901
1039---
1040*** Log-Edit buffers now display a tool bar. 902*** Log-Edit buffers now display a tool bar.
1041This tool bar contains items for committing log entries and editing or 903This tool bar contains items for committing log entries and editing or
1042generating log entries, among other editing operations. 904generating log entries, among other editing operations.
1043 905
1044---
1045*** New user option 'vc-git-shortlog-switches'. 906*** New user option 'vc-git-shortlog-switches'.
1046This is a string or a list of strings that specifies the Git log 907This is a string or a list of strings that specifies the Git log
1047switches for shortlogs, such as the one produced by 'C-x v L'. 908switches for shortlogs, such as the one produced by 'C-x v L'.
1048'vc-git-log-switches' is no longer used for shortlogs. 909'vc-git-log-switches' is no longer used for shortlogs.
1049 910
1050---
1051*** New value 'no-backend' for user option 'vc-display-status'. 911*** New value 'no-backend' for user option 'vc-display-status'.
1052With this value only the revision number is displayed on the mode-line. 912With this value only the revision number is displayed on the mode-line.
1053 913
1054---
1055*** Obsolete command 'vc-switch-backend' re-added as 'vc-change-backend'. 914*** Obsolete command 'vc-switch-backend' re-added as 'vc-change-backend'.
1056The command was previously obsoleted and unbound in Emacs 28. 915The command was previously obsoleted and unbound in Emacs 28.
1057 916
1058---
1059*** Support for viewing VC change history across renames. 917*** Support for viewing VC change history across renames.
1060When a fileset's VC change history ends at a rename, 'C-x v l' now 918When a fileset's VC change history ends at a rename, 'C-x v l' now
1061prints the old name(s) and shows a button which jumps to the history of 919prints the old name(s) and shows a button which jumps to the history of
@@ -1066,17 +924,14 @@ Unlike when the '--follow' switch is used, commands to see the diff of
1066the old revision ('d'), to check out an old file version ('f') or to 924the old revision ('d'), to check out an old file version ('f') or to
1067annotate it ('a'), also work on revisions which precede renames. 925annotate it ('a'), also work on revisions which precede renames.
1068 926
1069---
1070*** 'vc-annotate' now abbreviates the Git revision in the buffer name. 927*** 'vc-annotate' now abbreviates the Git revision in the buffer name.
1071When using the Git backend, 'vc-annotate' will use an abbreviated 928When using the Git backend, 'vc-annotate' will use an abbreviated
1072revision identifier in its buffer name. To restore the previous 929revision identifier in its buffer name. To restore the previous
1073behavior, set user option 'vc-annotate-use-short-revision' to nil. 930behavior, set user option 'vc-annotate-use-short-revision' to nil.
1074 931
1075---
1076*** New user option 'vc-git-file-name-changes-switches'. 932*** New user option 'vc-git-file-name-changes-switches'.
1077It allows tweaking the thresholds for rename and copy detection. 933It allows tweaking the thresholds for rename and copy detection.
1078 934
1079---
1080*** VC Directory buffers now display the upstream branch in Git repositories. 935*** VC Directory buffers now display the upstream branch in Git repositories.
1081The "upstream branch" is the branch from which 'vc-pull' fetches changes 936The "upstream branch" is the branch from which 'vc-pull' fetches changes
1082by default. In Git terms, the upstream branch of branch B is determined 937by default. In Git terms, the upstream branch of branch B is determined
@@ -1088,7 +943,6 @@ the "Tracking" header.
1088 943
1089** Diff mode 944** Diff mode
1090 945
1091---
1092*** New user option 'diff-refine-nonmodified'. 946*** New user option 'diff-refine-nonmodified'.
1093When this is non-nil, 'diff-refine-hunk' will highlight lines that were 947When this is non-nil, 'diff-refine-hunk' will highlight lines that were
1094added or removed in their entirety (as opposed to modified lines, where 948added or removed in their entirety (as opposed to modified lines, where
@@ -1096,26 +950,22 @@ some parts of the line were modified), using the same faces as for
1096highlighting the words added and removed within modified lines. The 950highlighting the words added and removed within modified lines. The
1097default value is nil. 951default value is nil.
1098 952
1099+++
1100*** 'diff-ignore-whitespace-hunk' can now be applied to all hunks. 953*** 'diff-ignore-whitespace-hunk' can now be applied to all hunks.
1101When called with a non-nil prefix argument, 954When called with a non-nil prefix argument,
1102'diff-ignore-whitespace-hunk' now iterates over all the hunks in the 955'diff-ignore-whitespace-hunk' now iterates over all the hunks in the
1103current diff, regenerating them without whitespace changes. 956current diff, regenerating them without whitespace changes.
1104 957
1105+++
1106*** New user option 'diff-ignore-whitespace-switches'. 958*** New user option 'diff-ignore-whitespace-switches'.
1107This allows changing which type of whitespace changes are ignored when 959This allows changing which type of whitespace changes are ignored when
1108regenerating hunks with 'diff-ignore-whitespace-hunk'. Defaults to 960regenerating hunks with 'diff-ignore-whitespace-hunk'. Defaults to
1109the previously hard-coded "-b". 961the previously hard-coded "-b".
1110 962
1111+++
1112*** New command 'diff-apply-buffer' bound to 'C-c RET a'. 963*** New command 'diff-apply-buffer' bound to 'C-c RET a'.
1113It applies the diff in the entire diff buffer and 964It applies the diff in the entire diff buffer and
1114saves all modified file buffers. 965saves all modified file buffers.
1115 966
1116** Dired 967** Dired
1117 968
1118---
1119*** New user option 'dired-movement-style'. 969*** New user option 'dired-movement-style'.
1120When non-nil, make 'dired-next-line', 'dired-previous-line', 970When non-nil, make 'dired-next-line', 'dired-previous-line',
1121'dired-next-dirline', 'dired-prev-dirline' skip empty lines. 971'dired-next-dirline', 'dired-prev-dirline' skip empty lines.
@@ -1123,7 +973,6 @@ It also controls how to move point when encountering a boundary
1123(e.g., if every line is visible, invoking 'dired-next-line' at 973(e.g., if every line is visible, invoking 'dired-next-line' at
1124the last line will move to the first line). The default is nil. 974the last line will move to the first line). The default is nil.
1125 975
1126---
1127*** New user option 'dired-filename-display-length'. 976*** New user option 'dired-filename-display-length'.
1128It is an integer representing the maximum display length of file names. 977It is an integer representing the maximum display length of file names.
1129The middle part of a file name whose length exceeds the restriction is 978The middle part of a file name whose length exceeds the restriction is
@@ -1131,7 +980,6 @@ hidden and an ellipsis is displayed instead. A value of 'window'
1131means using the right edge of window as the display restriction. The 980means using the right edge of window as the display restriction. The
1132default is nil. 981default is nil.
1133 982
1134---
1135*** New user option 'shell-command-guess-functions'. 983*** New user option 'shell-command-guess-functions'.
1136It defines how to populate a list of commands available 984It defines how to populate a list of commands available
1137for 'M-!', 'M-&', '!', '&' and the context menu "Open With" 985for 'M-!', 'M-&', '!', '&' and the context menu "Open With"
@@ -1140,32 +988,27 @@ based on marked files in Dired. Possible backends are
1140and a universal command such as "open" or "start" 988and a universal command such as "open" or "start"
1141that delegates to the OS. 989that delegates to the OS.
1142 990
1143+++
1144*** New command 'dired-do-open'. 991*** New command 'dired-do-open'.
1145This command is bound to 'E' (mnemonics "External"). Also it can be 992This command is bound to 'E' (mnemonics "External"). Also it can be
1146used by clicking "Open" in the context menu; it "opens" the marked or 993used by clicking "Open" in the context menu; it "opens" the marked or
1147clicked on files according to the OS conventions. For example, on 994clicked on files according to the OS conventions. For example, on
1148systems supporting XDG, this runs 'xdg-open' on the files. 995systems supporting XDG, this runs 'xdg-open' on the files.
1149 996
1150+++
1151*** New variable 'dired-guess-shell-alist-optional'. 997*** New variable 'dired-guess-shell-alist-optional'.
1152It contains commands for external viewers and players for various media 998It contains commands for external viewers and players for various media
1153formats, moved to this list from 'dired-guess-shell-alist-default'. 999formats, moved to this list from 'dired-guess-shell-alist-default'.
1154 1000
1155---
1156*** The default value of 'dired-omit-size-limit' was increased. 1001*** The default value of 'dired-omit-size-limit' was increased.
1157After performance improvements to omitting in large directories, the new 1002After performance improvements to omitting in large directories, the new
1158default value is 300k, up from 100k. This means 'dired-omit-mode' will 1003default value is 300k, up from 100k. This means 'dired-omit-mode' will
1159omit files in directories whose directory listing is up to 300 kilobytes 1004omit files in directories whose directory listing is up to 300 kilobytes
1160in size. 1005in size.
1161 1006
1162+++
1163*** 'dired-listing-switches' handles connection-local values if exist. 1007*** 'dired-listing-switches' handles connection-local values if exist.
1164This allows you to customize different switches for different remote machines. 1008This allows you to customize different switches for different remote machines.
1165 1009
1166** Ediff 1010** Ediff
1167 1011
1168---
1169*** New user option 'ediff-floating-control-frame'. 1012*** New user option 'ediff-floating-control-frame'.
1170If non-nil, try making the control frame be floating rather than tiled. 1013If non-nil, try making the control frame be floating rather than tiled.
1171 1014
@@ -1175,21 +1018,18 @@ This option is useful to set if you use such a window manager.
1175 1018
1176** Buffer Selection 1019** Buffer Selection
1177 1020
1178---
1179*** New user option 'bs-default-action-list'. 1021*** New user option 'bs-default-action-list'.
1180You can now configure how to display the "*buffer-selection*" buffer 1022You can now configure how to display the "*buffer-selection*" buffer
1181using this new option. (Or set 'display-buffer-alist' directly.) 1023using this new option. (Or set 'display-buffer-alist' directly.)
1182 1024
1183** Eshell 1025** Eshell
1184 1026
1185+++
1186*** You can now run Eshell scripts in batch mode. 1027*** You can now run Eshell scripts in batch mode.
1187By adding the following interpreter directive to an Eshell script, you 1028By adding the following interpreter directive to an Eshell script, you
1188can make it executable like other shell scripts: 1029can make it executable like other shell scripts:
1189 1030
1190 #!/usr/bin/env -S emacs --batch -f eshell-batch-file 1031 #!/usr/bin/env -S emacs --batch -f eshell-batch-file
1191 1032
1192+++
1193*** New builtin Eshell command 'compile'. 1033*** New builtin Eshell command 'compile'.
1194This command runs another command, sending its output to a compilation 1034This command runs another command, sending its output to a compilation
1195buffer when the command would output interactively. This can be useful 1035buffer when the command would output interactively. This can be useful
@@ -1198,14 +1038,12 @@ appropriate, but still allow piping the output elsewhere if desired.
1198For more information, see the "(eshell) Built-ins" node in the Eshell 1038For more information, see the "(eshell) Built-ins" node in the Eshell
1199manual. 1039manual.
1200 1040
1201+++
1202*** Eshell's 'env' command now supports running commands. 1041*** Eshell's 'env' command now supports running commands.
1203Like in many other shells, Eshell's 'env' command now lets you run a 1042Like in many other shells, Eshell's 'env' command now lets you run a
1204command passed as arguments to 'env'. If you pass any initial 1043command passed as arguments to 'env'. If you pass any initial
1205arguments of the form 'VAR=VALUE', 'env' will first set 'VAR' to 1044arguments of the form 'VAR=VALUE', 'env' will first set 'VAR' to
1206'VALUE' before running the command. 1045'VALUE' before running the command.
1207 1046
1208---
1209*** Eshell's 'umask' command now supports setting the mask symbolically. 1047*** Eshell's 'umask' command now supports setting the mask symbolically.
1210Now, you can pass an argument like "u+w,o-r" to Eshell's 'umask' 1048Now, you can pass an argument like "u+w,o-r" to Eshell's 'umask'
1211command, which will give write permission for owners of newly-created 1049command, which will give write permission for owners of newly-created
@@ -1213,7 +1051,6 @@ files and deny read permission for users who are not members of the
1213file's group. See the Info node "(coreutils) File permissions" for 1051file's group. See the Info node "(coreutils) File permissions" for
1214more information on this notation. 1052more information on this notation.
1215 1053
1216---
1217*** Performance improvements for interactive output in Eshell. 1054*** Performance improvements for interactive output in Eshell.
1218Interactive output in Eshell should now be significantly faster, 1055Interactive output in Eshell should now be significantly faster,
1219especially for commands that can print large amounts of output 1056especially for commands that can print large amounts of output
@@ -1222,12 +1059,10 @@ for password prompts in the last 256 characters of each block of output.
1222To restore the previous behavior when checking for password prompts, set 1059To restore the previous behavior when checking for password prompts, set
1223'eshell-password-prompt-max-length' to 'most-positive-fixnum'. 1060'eshell-password-prompt-max-length' to 'most-positive-fixnum'.
1224 1061
1225---
1226*** Eshell built-in commands can now display progress. 1062*** Eshell built-in commands can now display progress.
1227Eshell built-in commands like "cat" and "ls" now update the display 1063Eshell built-in commands like "cat" and "ls" now update the display
1228periodically while running to show their progress. 1064periodically while running to show their progress.
1229 1065
1230+++
1231*** New special reference type '#<marker POSITION BUFFER>'. 1066*** New special reference type '#<marker POSITION BUFFER>'.
1232This special reference type returns a marker at 'POSITION' in 1067This special reference type returns a marker at 'POSITION' in
1233'BUFFER'. You can insert it by typing or using the new interactive 1068'BUFFER'. You can insert it by typing or using the new interactive
@@ -1236,7 +1071,6 @@ references of any type using the new interactive command
1236'eshell-insert-special-reference'. See the "(eshell) Arguments" node 1071'eshell-insert-special-reference'. See the "(eshell) Arguments" node
1237in the Eshell manual for more details. 1072in the Eshell manual for more details.
1238 1073
1239+++
1240*** New splice operator for Eshell dollar expansions. 1074*** New splice operator for Eshell dollar expansions.
1241Dollar expansions in Eshell now let you splice the elements of the 1075Dollar expansions in Eshell now let you splice the elements of the
1242expansion in-place using '$@expr'. This makes it easier to fill lists 1076expansion in-place using '$@expr'. This makes it easier to fill lists
@@ -1244,21 +1078,18 @@ of arguments into a command, such as when defining aliases. For more
1244information, see the "(eshell) Dollars Expansion" node in the Eshell 1078information, see the "(eshell) Dollars Expansion" node in the Eshell
1245manual. 1079manual.
1246 1080
1247+++
1248*** You can now splice Eshell globs in-place into argument lists. 1081*** You can now splice Eshell globs in-place into argument lists.
1249By setting 'eshell-glob-splice-results' to a non-nil value, Eshell 1082By setting 'eshell-glob-splice-results' to a non-nil value, Eshell
1250will expand glob results in-place as if you had typed each matching 1083will expand glob results in-place as if you had typed each matching
1251file name individually. For more information, see the "(eshell) 1084file name individually. For more information, see the "(eshell)
1252Globbing" node in the Eshell manual. 1085Globbing" node in the Eshell manual.
1253 1086
1254+++
1255*** Eshell now supports negative numbers and ranges for indices. 1087*** Eshell now supports negative numbers and ranges for indices.
1256Now, you can retrieve the last element of a list with '$my-list[-1]' 1088Now, you can retrieve the last element of a list with '$my-list[-1]'
1257or get a sublist of elements 2 through 4 with '$my-list[2..5]'. For 1089or get a sublist of elements 2 through 4 with '$my-list[2..5]'. For
1258more information, see the "(eshell) Dollars Expansion" node in the 1090more information, see the "(eshell) Dollars Expansion" node in the
1259Eshell manual. 1091Eshell manual.
1260 1092
1261+++
1262*** Eshell commands can now be explicitly-remote (or local). 1093*** Eshell commands can now be explicitly-remote (or local).
1263By prefixing a command name in Eshell with a remote identifier, like 1094By prefixing a command name in Eshell with a remote identifier, like
1264"/ssh:user@remote:whoami", you can now run commands on a particular 1095"/ssh:user@remote:whoami", you can now run commands on a particular
@@ -1267,12 +1098,10 @@ command on your local system no matter your current directory via
1267"/local:whoami". For more information, see the "(eshell) Remote Access" 1098"/local:whoami". For more information, see the "(eshell) Remote Access"
1268node in the Eshell manual. 1099node in the Eshell manual.
1269 1100
1270+++
1271*** Eshell's '$UID' and '$GID' variables are now connection-aware. 1101*** Eshell's '$UID' and '$GID' variables are now connection-aware.
1272Now, when expanding '$UID' or '$GID' in a remote directory, the value 1102Now, when expanding '$UID' or '$GID' in a remote directory, the value
1273is the user or group ID associated with the remote connection. 1103is the user or group ID associated with the remote connection.
1274 1104
1275---
1276*** Eshell now uses 'field' properties in its output. 1105*** Eshell now uses 'field' properties in its output.
1277In particular, this means that pressing the '<home>' key moves the 1106In particular, this means that pressing the '<home>' key moves the
1278point to the beginning of your input, not the beginning of the whole 1107point to the beginning of your input, not the beginning of the whole
@@ -1284,25 +1113,20 @@ this to your configuration:
1284This also means you no longer need to adjust 'eshell-prompt-regexp' 1113This also means you no longer need to adjust 'eshell-prompt-regexp'
1285when customizing your Eshell prompt. 1114when customizing your Eshell prompt.
1286 1115
1287---
1288*** You can now properly unload Eshell. 1116*** You can now properly unload Eshell.
1289Calling '(unload-feature 'eshell)' no longer signals an error, and now 1117Calling '(unload-feature 'eshell)' no longer signals an error, and now
1290correctly unloads Eshell and all of its modules. 1118correctly unloads Eshell and all of its modules.
1291 1119
1292+++
1293*** 'eshell-read-aliases-list' is now an interactive command. 1120*** 'eshell-read-aliases-list' is now an interactive command.
1294After manually editing 'eshell-aliases-file', you can use this command 1121After manually editing 'eshell-aliases-file', you can use this command
1295to load the edited aliases. 1122to load the edited aliases.
1296 1123
1297+++
1298*** 'rgrep' is now a builtin Eshell command. 1124*** 'rgrep' is now a builtin Eshell command.
1299Running 'rgrep' in Eshell now uses the Emacs grep facility instead of 1125Running 'rgrep' in Eshell now uses the Emacs grep facility instead of
1300calling external rgrep. 1126calling external rgrep.
1301 1127
1302+++
1303*** If a command exits abnormally, the Eshell prompt now shows its exit code. 1128*** If a command exits abnormally, the Eshell prompt now shows its exit code.
1304 1129
1305+++
1306*** New user option 'eshell-history-append'. 1130*** New user option 'eshell-history-append'.
1307If non-nil, each Eshell session will save history by appending new 1131If non-nil, each Eshell session will save history by appending new
1308entries of that session to the history file rather than overwriting 1132entries of that session to the history file rather than overwriting
@@ -1310,25 +1134,21 @@ the file with the whole history of the session. The default is nil.
1310 1134
1311** Pcomplete 1135** Pcomplete
1312 1136
1313---
1314*** New user option 'pcomplete-remote-file-ignore'. 1137*** New user option 'pcomplete-remote-file-ignore'.
1315When this option is non-nil, remote file names are not completed by 1138When this option is non-nil, remote file names are not completed by
1316Pcomplete. Packages, like 'shell-mode', could set this in order to 1139Pcomplete. Packages, like 'shell-mode', could set this in order to
1317suppress remote file name completion at all. 1140suppress remote file name completion at all.
1318 1141
1319---
1320*** Completion for the 'doas' command has been added. 1142*** Completion for the 'doas' command has been added.
1321Command completion for 'doas' in Eshell and Shell mode will now work. 1143Command completion for 'doas' in Eshell and Shell mode will now work.
1322 1144
1323** Shell mode 1145** Shell mode
1324 1146
1325+++
1326*** New user option 'shell-get-old-input-include-continuation-lines'. 1147*** New user option 'shell-get-old-input-include-continuation-lines'.
1327When this user option is non-nil, 'shell-get-old-input' ('C-RET') 1148When this user option is non-nil, 'shell-get-old-input' ('C-RET')
1328includes multiple shell "\" continuation lines from command output. 1149includes multiple shell "\" continuation lines from command output.
1329Default is nil. 1150Default is nil.
1330 1151
1331+++
1332*** New user option 'shell-history-file-name'. 1152*** New user option 'shell-history-file-name'.
1333When this user option is set to t, 'shell-mode' does not read the shell 1153When this user option is set to t, 'shell-mode' does not read the shell
1334history file. Setting this user option to a string specifies the name 1154history file. Setting this user option to a string specifies the name
@@ -1337,7 +1157,6 @@ environment variable 'HISTFILE'.
1337 1157
1338In a 'shell' buffer, this user option is connection-local. 1158In a 'shell' buffer, this user option is connection-local.
1339 1159
1340---
1341*** Performance improvements for interactive output. 1160*** Performance improvements for interactive output.
1342Interactive output in Shell mode now scans more selectively for password 1161Interactive output in Shell mode now scans more selectively for password
1343prompts by only examining the last 256 characters of each block of 1162prompts by only examining the last 256 characters of each block of
@@ -1347,7 +1166,6 @@ To restore the old behavior, set 'comint-password-prompt-max-length' to
1347 1166
1348** Prog mode 1167** Prog mode
1349 1168
1350+++
1351*** New command 'prog-fill-reindent-defun'. 1169*** New command 'prog-fill-reindent-defun'.
1352This command either fills a single paragraph in a defun, such as a 1170This command either fills a single paragraph in a defun, such as a
1353docstring, or a comment, or (re)indents the surrounding defun if point 1171docstring, or a comment, or (re)indents the surrounding defun if point
@@ -1356,26 +1174,22 @@ is not in a comment or a string. By default, it is bound to 'M-q' in
1356 1174
1357** Imenu 1175** Imenu
1358 1176
1359+++
1360*** New user option 'imenu-flatten'. 1177*** New user option 'imenu-flatten'.
1361It controls whether to flatten the list of sections in an imenu, and 1178It controls whether to flatten the list of sections in an imenu, and
1362how to display the sections in the flattened list. 1179how to display the sections in the flattened list.
1363 1180
1364+++
1365*** The sort order of Imenu completions can now be customized. 1181*** The sort order of Imenu completions can now be customized.
1366You can customize the user option 'completion-category-overrides' 1182You can customize the user option 'completion-category-overrides'
1367and set 'display-sort-function' for the category 'imenu'. 1183and set 'display-sort-function' for the category 'imenu'.
1368 1184
1369** Which Function mode 1185** Which Function mode
1370 1186
1371+++
1372*** Which Function mode can now display function names on the header line. 1187*** Which Function mode can now display function names on the header line.
1373The new user option 'which-func-display' allows choosing where the 1188The new user option 'which-func-display' allows choosing where the
1374function name is displayed. The default is 'mode' to display in the 1189function name is displayed. The default is 'mode' to display in the
1375mode line. 'header' will display in the header line; 1190mode line. 'header' will display in the header line;
1376'mode-and-header' displays in both the header line and mode line. 1191'mode-and-header' displays in both the header line and mode line.
1377 1192
1378+++
1379*** New user option 'which-func-update-delay'. 1193*** New user option 'which-func-update-delay'.
1380This replaces the user option 'idle-update-delay', which was previously 1194This replaces the user option 'idle-update-delay', which was previously
1381used to control the delay before 'which-function-mode' updated its 1195used to control the delay before 'which-function-mode' updated its
@@ -1384,28 +1198,23 @@ Which Function mode, is now obsolete.
1384 1198
1385** Tramp 1199** Tramp
1386 1200
1387+++
1388*** Tramp methods can be optional. 1201*** Tramp methods can be optional.
1389An optional connection method is not enabled by default. The user must 1202An optional connection method is not enabled by default. The user must
1390enable it explicitly by the 'tramp-enable-method' command. The existing 1203enable it explicitly by the 'tramp-enable-method' command. The existing
1391methods "fcp", "krlogin", " ksu" and "nc" are optional now. 1204methods "fcp", "krlogin", " ksu" and "nc" are optional now.
1392 1205
1393+++
1394*** New optional connection method "androidsu". 1206*** New optional connection method "androidsu".
1395This provides access to system files with elevated privileges granted by 1207This provides access to system files with elevated privileges granted by
1396the idiosyncratic 'su' implementations and system utilities customary on 1208the idiosyncratic 'su' implementations and system utilities customary on
1397Android. 1209Android.
1398 1210
1399+++
1400*** New optional connection method "run0". 1211*** New optional connection method "run0".
1401This connection method is similar to "sudo", but it uses the 'systemd' 1212This connection method is similar to "sudo", but it uses the 'systemd'
1402framework internally. 1213framework internally.
1403 1214
1404+++
1405*** New connection methods "dockercp" and "podmancp". 1215*** New connection methods "dockercp" and "podmancp".
1406These are the external methods counterparts of "docker" and "podman". 1216These are the external methods counterparts of "docker" and "podman".
1407 1217
1408+++
1409*** New optional connection methods for containers. 1218*** New optional connection methods for containers.
1410There are new optional connection methods "toolbox", "distrobox", 1219There are new optional connection methods "toolbox", "distrobox",
1411"flatpak", "apptainer" and "nspawn". They allow accessing system 1220"flatpak", "apptainer" and "nspawn". They allow accessing system
@@ -1413,7 +1222,6 @@ containers provided by Toolbox or Distrobox, sandboxes provided by
1413Flatpak, instances managed by Apptainer, or accessing systemd-based 1222Flatpak, instances managed by Apptainer, or accessing systemd-based
1414light-weight containers.. 1223light-weight containers..
1415 1224
1416+++
1417*** Connection method "kubernetes" supports now optional container name. 1225*** Connection method "kubernetes" supports now optional container name.
1418The host name for Kubernetes connections can be of kind [CONTAINER.]POD, 1226The host name for Kubernetes connections can be of kind [CONTAINER.]POD,
1419in order to specify a dedicated container. If there is just the pod 1227in order to specify a dedicated container. If there is just the pod
@@ -1421,7 +1229,6 @@ name, the first container in the pod is taken. The new user options
1421'tramp-kubernetes-context' and 'tramp-kubernetes-namespace' allow 1229'tramp-kubernetes-context' and 'tramp-kubernetes-namespace' allow
1422accessing pods with different context or namespace but the default one. 1230accessing pods with different context or namespace but the default one.
1423 1231
1424+++
1425*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share'. 1232*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share'.
1426The old name still exists as obsolete variable alias. This user 1233The old name still exists as obsolete variable alias. This user
1427option controls now connection sharing for both ssh-based and 1234option controls now connection sharing for both ssh-based and
@@ -1430,39 +1237,33 @@ The latter suppresses also "ControlMaster" settings in the user's
1430"~/.ssh/config" file, or connection share configuration in PuTTY 1237"~/.ssh/config" file, or connection share configuration in PuTTY
1431sessions, respectively. 1238sessions, respectively.
1432 1239
1433+++
1434*** New command 'tramp-cleanup-some-buffers'. 1240*** New command 'tramp-cleanup-some-buffers'.
1435It kills only a subset of opened remote buffers, subject to the user 1241It kills only a subset of opened remote buffers, subject to the user
1436option 'tramp-cleanup-some-buffers-hook'. 1242option 'tramp-cleanup-some-buffers-hook'.
1437 1243
1438+++
1439*** New command 'inhibit-remote-files'. 1244*** New command 'inhibit-remote-files'.
1440This command disables the handling of file names with the special 1245This command disables the handling of file names with the special
1441remote file name syntax. It should be applied only when remote files 1246remote file name syntax. It should be applied only when remote files
1442won't be used in this Emacs instance. It provides a slightly improved 1247won't be used in this Emacs instance. It provides a slightly improved
1443performance of file name handling in Emacs. 1248performance of file name handling in Emacs.
1444 1249
1445+++
1446*** New macro 'without-remote-files'. 1250*** New macro 'without-remote-files'.
1447This macro could wrap code which handles local files only. Due to the 1251This macro could wrap code which handles local files only. Due to the
1448temporary deactivation of remote files, it results in a slightly 1252temporary deactivation of remote files, it results in a slightly
1449improved performance of file name handling in Emacs. 1253improved performance of file name handling in Emacs.
1450 1254
1451+++
1452*** New user option 'tramp-completion-multi-hop-methods'. 1255*** New user option 'tramp-completion-multi-hop-methods'.
1453It contains a list of connection methods for which completion should 1256It contains a list of connection methods for which completion should
1454be attempted at the end of a multi-hop chain. This allows completion 1257be attempted at the end of a multi-hop chain. This allows completion
1455candidates to include a list of, for example, containers running on a 1258candidates to include a list of, for example, containers running on a
1456remote docker host. 1259remote docker host.
1457 1260
1458+++
1459*** New command 'tramp-revert-buffer-with-sudo'. 1261*** New command 'tramp-revert-buffer-with-sudo'.
1460It reverts the current buffer to visit with "sudo" permissions. The 1262It reverts the current buffer to visit with "sudo" permissions. The
1461buffer must either visit a file, or it must run 'dired-mode'. Another 1263buffer must either visit a file, or it must run 'dired-mode'. Another
1462method but "sudo" can be configured with user option 1264method but "sudo" can be configured with user option
1463'tramp-file-name-with-method'. 1265'tramp-file-name-with-method'.
1464 1266
1465+++
1466*** Direct asynchronous processes are indicated by a connection-local variable. 1267*** Direct asynchronous processes are indicated by a connection-local variable.
1467If direct asynchronous processes shall be used, set the connection-local 1268If direct asynchronous processes shall be used, set the connection-local
1468variable 'tramp-direct-async-process' to a non-nil value. In previous 1269variable 'tramp-direct-async-process' to a non-nil value. In previous
@@ -1472,14 +1273,12 @@ properties and 'tramp-connection-properties' in general) is now
1472deprecated. See the Tramp manual "(tramp) Improving performance of 1273deprecated. See the Tramp manual "(tramp) Improving performance of
1473asynchronous remote processes". 1274asynchronous remote processes".
1474 1275
1475---
1476*** Direct asynchronous processes use 'tramp-remote-path'. 1276*** Direct asynchronous processes use 'tramp-remote-path'.
1477When a direct asynchronous process is invoked, it uses 'tramp-remote-path' 1277When a direct asynchronous process is invoked, it uses 'tramp-remote-path'
1478for setting the remote 'PATH' environment variable. 1278for setting the remote 'PATH' environment variable.
1479 1279
1480** SHR 1280** SHR
1481 1281
1482---
1483*** New user option 'shr-fill-text'. 1282*** New user option 'shr-fill-text'.
1484When 'shr-fill-text' is non-nil (the default), SHR will fill text 1283When 'shr-fill-text' is non-nil (the default), SHR will fill text
1485according to the width of the window. If you customize it to nil, SHR 1284according to the width of the window. If you customize it to nil, SHR
@@ -1489,7 +1288,6 @@ visually wrapped at word boundaries.
1489 1288
1490** EWW 1289** EWW
1491 1290
1492---
1493*** New mouse bindings in EWW buffers. 1291*** New mouse bindings in EWW buffers.
1494Certain form elements that were displayed as buttons, yet could only be 1292Certain form elements that were displayed as buttons, yet could only be
1495activated by keyboard input, are now operable using 'mouse-2'. With 1293activated by keyboard input, are now operable using 'mouse-2'. With
@@ -1497,45 +1295,38 @@ activated by keyboard input, are now operable using 'mouse-2'. With
1497other classes of buttons either toggle their values or prompt for user 1295other classes of buttons either toggle their values or prompt for user
1498input, as the case may be. 1296input, as the case may be.
1499 1297
1500---
1501*** EWW text input fields and areas are now fields. 1298*** EWW text input fields and areas are now fields.
1502In consequence, movement commands and OS input method features now 1299In consequence, movement commands and OS input method features now
1503recognize and confine their activities to the text input field around 1300recognize and confine their activities to the text input field around
1504point. See also the Info node "(elisp) Fields". 1301point. See also the Info node "(elisp) Fields".
1505 1302
1506+++
1507*** 'eww-open-file' can now display the file in a new buffer. 1303*** 'eww-open-file' can now display the file in a new buffer.
1508By default, the command reuses the "*eww*" buffer, but if called with 1304By default, the command reuses the "*eww*" buffer, but if called with
1509the new argument NEW-BUFFER non-nil, it will use a new buffer instead. 1305the new argument NEW-BUFFER non-nil, it will use a new buffer instead.
1510Interactively, invoke 'eww-open-file' with a prefix argument to 1306Interactively, invoke 'eww-open-file' with a prefix argument to
1511activate this behavior. 1307activate this behavior.
1512 1308
1513---
1514*** 'eww' URL or keyword prompt now has tab completion. 1309*** 'eww' URL or keyword prompt now has tab completion.
1515The interactive minibuffer prompt when invoking 'eww' now has support 1310The interactive minibuffer prompt when invoking 'eww' now has support
1516for tab completion. 1311for tab completion.
1517 1312
1518+++
1519*** 'eww' URL and keyword prompt now completes suggested URIs and bookmarks. 1313*** 'eww' URL and keyword prompt now completes suggested URIs and bookmarks.
1520The interactive minibuffer prompt when invoking 'eww' now provides 1314The interactive minibuffer prompt when invoking 'eww' now provides
1521completions from 'eww-suggest-uris'. 'eww-suggest-uris' now includes 1315completions from 'eww-suggest-uris'. 'eww-suggest-uris' now includes
1522bookmark URIs. 1316bookmark URIs.
1523 1317
1524+++
1525*** New command 'eww-copy-alternate-url'. 1318*** New command 'eww-copy-alternate-url'.
1526It copies an alternate link on the page currently visited in EWW into 1319It copies an alternate link on the page currently visited in EWW into
1527the kill ring. Alternate links are optional metadata that HTML pages 1320the kill ring. Alternate links are optional metadata that HTML pages
1528use for linking to their alternative representations, such as translated 1321use for linking to their alternative representations, such as translated
1529versions or associated RSS feeds. It is bound to 'A' by default. 1322versions or associated RSS feeds. It is bound to 'A' by default.
1530 1323
1531+++
1532*** 'eww-open-in-new-buffer' supports the prefix argument. 1324*** 'eww-open-in-new-buffer' supports the prefix argument.
1533When invoked with the prefix argument ('C-u'), 1325When invoked with the prefix argument ('C-u'),
1534'eww-open-in-new-buffer' will not make the new buffer the current one. 1326'eww-open-in-new-buffer' will not make the new buffer the current one.
1535This is useful for continuing reading the URL in the current buffer 1327This is useful for continuing reading the URL in the current buffer
1536when the new URL is fetched. 1328when the new URL is fetched.
1537 1329
1538---
1539*** History navigation in EWW now behaves as in other browsers. 1330*** History navigation in EWW now behaves as in other browsers.
1540Previously, when navigating back and forward through page history, EWW 1331Previously, when navigating back and forward through page history, EWW
1541would add a duplicate entry to the end of the history list each time. 1332would add a duplicate entry to the end of the history list each time.
@@ -1548,27 +1339,23 @@ entries newer than the current page. To change the behavior when
1548browsing from "historical" pages, you can customize 1339browsing from "historical" pages, you can customize
1549'eww-before-browse-history-function'. 1340'eww-before-browse-history-function'.
1550 1341
1551+++
1552*** 'eww-readable' now toggles display of the readable parts of a web page. 1342*** 'eww-readable' now toggles display of the readable parts of a web page.
1553When called interactively, 'eww-readable' toggles whether to display 1343When called interactively, 'eww-readable' toggles whether to display
1554only the readable parts of a page or the full page. With a positive 1344only the readable parts of a page or the full page. With a positive
1555prefix argument, it always displays the readable parts, and with a zero 1345prefix argument, it always displays the readable parts, and with a zero
1556or negative prefix, it always displays the full page. 1346or negative prefix, it always displays the full page.
1557 1347
1558+++
1559*** New user option 'eww-readable-urls'. 1348*** New user option 'eww-readable-urls'.
1560This is a list of regular expressions matching the URLs where EWW should 1349This is a list of regular expressions matching the URLs where EWW should
1561display only the readable parts by default. For more details, see 1350display only the readable parts by default. For more details, see
1562"(eww) Basics" in the EWW manual. 1351"(eww) Basics" in the EWW manual.
1563 1352
1564---
1565*** New user option 'eww-readable-adds-to-history'. 1353*** New user option 'eww-readable-adds-to-history'.
1566When non-nil (the default), calling 'eww-readable' adds a new entry to 1354When non-nil (the default), calling 'eww-readable' adds a new entry to
1567the EWW page history. 1355the EWW page history.
1568 1356
1569** Go-ts mode 1357** Go-ts mode
1570 1358
1571+++
1572*** New command 'go-ts-mode-docstring'. 1359*** New command 'go-ts-mode-docstring'.
1573This command adds a docstring comment to the current defun. If a 1360This command adds a docstring comment to the current defun. If a
1574comment already exists, point is only moved to the comment. It is 1361comment already exists, point is only moved to the comment. It is
@@ -1576,12 +1363,10 @@ bound to 'C-c C-d' in 'go-ts-mode'.
1576 1363
1577** Man mode 1364** Man mode
1578 1365
1579+++
1580*** New user option 'Man-prefer-synchronous-call'. 1366*** New user option 'Man-prefer-synchronous-call'.
1581When this is non-nil, run the 'man' command synchronously rather than 1367When this is non-nil, run the 'man' command synchronously rather than
1582asynchronously (which is the default behavior). 1368asynchronously (which is the default behavior).
1583 1369
1584+++
1585*** New user option 'Man-support-remote-systems'. 1370*** New user option 'Man-support-remote-systems'.
1586This option controls whether the man page is formatted on the remote 1371This option controls whether the man page is formatted on the remote
1587system when the current buffer's default-directory is remote. You can 1372system when the current buffer's default-directory is remote. You can
@@ -1590,12 +1375,10 @@ value of this option for the current invocation of 'man'.
1590 1375
1591** DocView 1376** DocView
1592 1377
1593---
1594*** New user option 'doc-view-mpdf-use-svg'. 1378*** New user option 'doc-view-mpdf-use-svg'.
1595If non-nil, DocView uses SVG images to display PDF documents. The 1379If non-nil, DocView uses SVG images to display PDF documents. The
1596default is non-nil if your system supports display of SVG images. 1380default is non-nil if your system supports display of SVG images.
1597 1381
1598---
1599*** New face 'doc-view-svg-face'. 1382*** New face 'doc-view-svg-face'.
1600This replaces 'doc-view-svg-foreground' and 'doc-view-svg-background'. 1383This replaces 'doc-view-svg-foreground' and 'doc-view-svg-background'.
1601By default, this face has black foreground on white background and 1384By default, this face has black foreground on white background and
@@ -1605,7 +1388,6 @@ current theme. However, this, or any non-standard values, can result in
1605poor contrast for documents which aren't simply black text on white 1388poor contrast for documents which aren't simply black text on white
1606background. 1389background.
1607 1390
1608---
1609*** DocView buffers now display a new tool bar. 1391*** DocView buffers now display a new tool bar.
1610This tool bar contains options for searching and navigating within the 1392This tool bar contains options for searching and navigating within the
1611document, replacing the incompatible items for incremental search and 1393document, replacing the incompatible items for incremental search and
@@ -1613,12 +1395,10 @@ editing within the default tool bar displayed in the past.
1613 1395
1614** Shortdoc 1396** Shortdoc
1615 1397
1616+++
1617*** New function 'shortdoc-function-examples'. 1398*** New function 'shortdoc-function-examples'.
1618This function returns examples of use of a given Emacs Lisp function 1399This function returns examples of use of a given Emacs Lisp function
1619from the available shortdoc information. 1400from the available shortdoc information.
1620 1401
1621+++
1622*** New function 'shortdoc-help-fns-examples-function'. 1402*** New function 'shortdoc-help-fns-examples-function'.
1623This function inserts into the current buffer examples of use of a 1403This function inserts into the current buffer examples of use of a
1624given Emacs Lisp function, which it gleans from the shortdoc 1404given Emacs Lisp function, which it gleans from the shortdoc
@@ -1631,24 +1411,20 @@ following to your init file:
1631 1411
1632** Package 1412** Package
1633 1413
1634---
1635*** New user option 'package-vc-register-as-project'. 1414*** New user option 'package-vc-register-as-project'.
1636When non-nil, 'package-vc-install' and 'package-vc-checkout' will 1415When non-nil, 'package-vc-install' and 'package-vc-checkout' will
1637automatically register every package they install as a project, that you 1416automatically register every package they install as a project, that you
1638can quickly select using 'project-switch-project' ('C-x p p'). Default 1417can quickly select using 'project-switch-project' ('C-x p p'). Default
1639is t. 1418is t.
1640 1419
1641---
1642*** New user option 'package-vc-allow-build-commands'. 1420*** New user option 'package-vc-allow-build-commands'.
1643Controls for which packages Emacs runs extra build commands when 1421Controls for which packages Emacs runs extra build commands when
1644installing directly from the package VCS repository. 1422installing directly from the package VCS repository.
1645 1423
1646---
1647*** New command 'package-vc-log-incoming'. 1424*** New command 'package-vc-log-incoming'.
1648This commands displays incoming changes for a VC package without 1425This commands displays incoming changes for a VC package without
1649modifying the current checkout. 1426modifying the current checkout.
1650 1427
1651---
1652*** New command to start an inferior Emacs loading only specific packages. 1428*** New command to start an inferior Emacs loading only specific packages.
1653The new command 'package-isolate' will start a new Emacs process, as 1429The new command 'package-isolate' will start a new Emacs process, as
1654a sub-process of Emacs where you invoke the command, in a way that 1430a sub-process of Emacs where you invoke the command, in a way that
@@ -1659,29 +1435,24 @@ in a clean environment.
1659 1435
1660** Flymake 1436** Flymake
1661 1437
1662+++
1663*** New user option 'flymake-indicator-type'. 1438*** New user option 'flymake-indicator-type'.
1664This controls which error indicator type Flymake should use in the 1439This controls which error indicator type Flymake should use in the
1665current buffer. Depending on your preference, this can either use 1440current buffer. Depending on your preference, this can either use
1666fringes or margins for indicating errors, the default is 'margins'. 1441fringes or margins for indicating errors, the default is 'margins'.
1667 1442
1668+++
1669*** New user option 'flymake-margin-indicators-string'. 1443*** New user option 'flymake-margin-indicators-string'.
1670It controls, for each error type, the string and its face to display as 1444It controls, for each error type, the string and its face to display as
1671the margin indicator. 1445the margin indicator.
1672 1446
1673+++
1674*** New user option 'flymake-autoresize-margins'. 1447*** New user option 'flymake-autoresize-margins'.
1675If non-nil (the default), Flymake will resize the margins when 1448If non-nil (the default), Flymake will resize the margins when
1676'flymake-mode' is turned on or off. 1449'flymake-mode' is turned on or off.
1677Only relevant if 'flymake-indicator-type' is set to 'margins'. 1450Only relevant if 'flymake-indicator-type' is set to 'margins'.
1678 1451
1679+++
1680*** New user option 'flymake-margin-indicator-position'. 1452*** New user option 'flymake-margin-indicator-position'.
1681It controls whether to use margins for margin indicators, and which 1453It controls whether to use margins for margin indicators, and which
1682margin (left or right) to use. Default is to use the left margin. 1454margin (left or right) to use. Default is to use the left margin.
1683 1455
1684+++
1685*** New user option 'flymake-show-diagnostics-at-end-of-line'. 1456*** New user option 'flymake-show-diagnostics-at-end-of-line'.
1686When non-nil, Flymake shows summarized descriptions of diagnostics at 1457When non-nil, Flymake shows summarized descriptions of diagnostics at
1687the end of the line. Depending on your preference, this can either be 1458the end of the line. Depending on your preference, this can either be
@@ -1691,13 +1462,11 @@ mouse to consult an error message. Default is nil.
1691 1462
1692** Flyspell 1463** Flyspell
1693 1464
1694+++
1695*** New user option 'flyspell-check-changes'. 1465*** New user option 'flyspell-check-changes'.
1696When non-nil, Flyspell mode spell-checks only words that you edited; it 1466When non-nil, Flyspell mode spell-checks only words that you edited; it
1697does not check unedited words just because you move point across them. 1467does not check unedited words just because you move point across them.
1698Default is nil. 1468Default is nil.
1699 1469
1700---
1701** JS mode. 1470** JS mode.
1702The binding 'M-.' has been removed from the major mode keymaps in 1471The binding 'M-.' has been removed from the major mode keymaps in
1703'js-mode' and 'js-ts-mode', having it default to the global binding 1472'js-mode' and 'js-ts-mode', having it default to the global binding
@@ -1705,7 +1474,6 @@ which calls 'xref-find-definitions'. If the previous one worked
1705better for you, use 'define-key' in your init script to bind 1474better for you, use 'define-key' in your init script to bind
1706'js-find-symbol' to that combination again. 1475'js-find-symbol' to that combination again.
1707 1476
1708---
1709** Json mode. 1477** Json mode.
1710'js-json-mode' does not derive from 'js-mode' any more so as not 1478'js-json-mode' does not derive from 'js-mode' any more so as not
1711to confuse tools like Eglot or YASnippet into thinking that those 1479to confuse tools like Eglot or YASnippet into thinking that those
@@ -1713,7 +1481,6 @@ buffers contain Javascript code.
1713 1481
1714** Python mode 1482** Python mode
1715 1483
1716---
1717*** New user option 'python-indent-block-paren-deeper'. 1484*** New user option 'python-indent-block-paren-deeper'.
1718If non-nil, increase the indentation of the lines inside parens in a 1485If non-nil, increase the indentation of the lines inside parens in a
1719header of a block when they are indented to the same level as the body 1486header of a block when they are indented to the same level as the body
@@ -1731,19 +1498,16 @@ instead of:
1731 1498
1732Default is nil. 1499Default is nil.
1733 1500
1734---
1735*** New user option 'python-interpreter-args'. 1501*** New user option 'python-interpreter-args'.
1736This allows the user to specify command line arguments to the non 1502This allows the user to specify command line arguments to the non
1737interactive Python interpreter specified by 'python-interpreter'. 1503interactive Python interpreter specified by 'python-interpreter'.
1738 1504
1739---
1740*** New function 'python-shell-send-block'. 1505*** New function 'python-shell-send-block'.
1741It sends the python block delimited by 'python-nav-beginning-of-block' 1506It sends the python block delimited by 'python-nav-beginning-of-block'
1742and 'python-nav-end-of-block' to the inferior Python process. 1507and 'python-nav-end-of-block' to the inferior Python process.
1743 1508
1744** Inferior Python mode 1509** Inferior Python mode
1745 1510
1746---
1747*** Default value of 'python-shell-compilation-regexp-alist' is changed. 1511*** Default value of 'python-shell-compilation-regexp-alist' is changed.
1748Support for Python's ExceptionGroup has been added, so in the Python 1512Support for Python's ExceptionGroup has been added, so in the Python
1749shell, the line indicating the source of an error in the error messages 1513shell, the line indicating the source of an error in the error messages
@@ -1751,13 +1515,11 @@ from ExceptionGroup will be recognized as well.
1751 1515
1752** Eldoc 1516** Eldoc
1753 1517
1754---
1755*** 'eldoc' no longer truncates to a single line by default. 1518*** 'eldoc' no longer truncates to a single line by default.
1756Previously, the entire docstring was not available to eldoc, which made 1519Previously, the entire docstring was not available to eldoc, which made
1757'eldoc-echo-area-use-multiline-p' ineffective. The old behavior may be 1520'eldoc-echo-area-use-multiline-p' ineffective. The old behavior may be
1758kept by customizing 'eldoc-echo-area-use-multiline-p'. 1521kept by customizing 'eldoc-echo-area-use-multiline-p'.
1759 1522
1760---
1761** Scheme mode. 1523** Scheme mode.
1762Scheme mode now handles the regular expression literal '#/regexp/' that 1524Scheme mode now handles the regular expression literal '#/regexp/' that
1763is available in some Scheme implementations. 1525is available in some Scheme implementations.
@@ -1765,47 +1527,39 @@ Also, it should now handle nested sexp-comments.
1765 1527
1766** Use package 1528** Use package
1767 1529
1768+++
1769*** New ':vc' keyword. 1530*** New ':vc' keyword.
1770This keyword enables the user to install packages using package-vc.el. 1531This keyword enables the user to install packages using package-vc.el.
1771 1532
1772+++
1773*** New user option 'use-package-vc-prefer-newest'. 1533*** New user option 'use-package-vc-prefer-newest'.
1774If non-nil, always install the newest commit of a package when using the 1534If non-nil, always install the newest commit of a package when using the
1775':vc' keyword rather than its stable release. Default is nil. 1535':vc' keyword rather than its stable release. Default is nil.
1776 1536
1777** Gnus 1537** Gnus
1778 1538
1779+++
1780*** New backend 'nnfeed'. 1539*** New backend 'nnfeed'.
1781This allows backend developers to easily create new backends for web 1540This allows backend developers to easily create new backends for web
1782feeds, as inheriting backends of 'nnfeed'. 1541feeds, as inheriting backends of 'nnfeed'.
1783 1542
1784+++
1785*** New backend 'nnatom'. 1543*** New backend 'nnatom'.
1786This allow users to add Atom Syndication Format feeds to Gnus as 1544This allow users to add Atom Syndication Format feeds to Gnus as
1787servers. 1545servers.
1788 1546
1789---
1790*** The 'nnweb-type' option 'gmane' has been removed. 1547*** The 'nnweb-type' option 'gmane' has been removed.
1791The gmane.org website is, sadly, down since a number of years with no 1548The gmane.org website is, sadly, down since a number of years with no
1792prospect of it coming back. Therefore, it is no longer valid to set 1549prospect of it coming back. Therefore, it is no longer valid to set
1793the server variable 'nnweb-type' to 'gmane'. 1550the server variable 'nnweb-type' to 'gmane'.
1794 1551
1795---
1796*** New user option 'gnus-mode-line-logo'. 1552*** New user option 'gnus-mode-line-logo'.
1797This allows the user to either disable the display of any logo or 1553This allows the user to either disable the display of any logo or
1798specify which logo will be displayed as part of the 1554specify which logo will be displayed as part of the
1799buffer-identification in the mode-line of Gnus buffers. 1555buffer-identification in the mode-line of Gnus buffers.
1800 1556
1801---
1802*** 'gnus-summary-limit-to-age' now counts days since midnight. 1557*** 'gnus-summary-limit-to-age' now counts days since midnight.
1803"Less than 1 day" now means "since last midnight", rather than "less 1558"Less than 1 day" now means "since last midnight", rather than "less
1804than 24 hours old". 1559than 24 hours old".
1805 1560
1806** Rmail 1561** Rmail
1807 1562
1808---
1809*** New commands for reading mailing lists. 1563*** New commands for reading mailing lists.
1810The new Rmail commands 'rmail-mailing-list-post', 1564The new Rmail commands 'rmail-mailing-list-post',
1811'rmail-mailing-list-unsubscribe', 'rmail-mailing-list-help', and 1565'rmail-mailing-list-unsubscribe', 'rmail-mailing-list-help', and
@@ -1816,7 +1570,6 @@ delivered.
1816 1570
1817** Dictionary 1571** Dictionary
1818 1572
1819---
1820*** New user option 'dictionary-search-interface'. 1573*** New user option 'dictionary-search-interface'.
1821Controls how the 'dictionary-search' command prompts for and displays 1574Controls how the 'dictionary-search' command prompts for and displays
1822dictionary definitions. Customize this user option to 'help' to have 1575dictionary definitions. Customize this user option to 'help' to have
@@ -1824,13 +1577,11 @@ dictionary definitions. Customize this user option to 'help' to have
1824provide dictionary-based minibuffer completion for word selection. 1577provide dictionary-based minibuffer completion for word selection.
1825Default is nil, which means to use a "*Dictionary*" buffer. 1578Default is nil, which means to use a "*Dictionary*" buffer.
1826 1579
1827---
1828*** New user option 'dictionary-read-word-prompt'. 1580*** New user option 'dictionary-read-word-prompt'.
1829This allows the user to customize the prompt that is used by 1581This allows the user to customize the prompt that is used by
1830'dictionary-search' when asking for a word to search in the 1582'dictionary-search' when asking for a word to search in the
1831dictionaries. 1583dictionaries.
1832 1584
1833---
1834*** New user option 'dictionary-display-definition-function'. 1585*** New user option 'dictionary-display-definition-function'.
1835This allows the user to customize the way in which 'dictionary-search' 1586This allows the user to customize the way in which 'dictionary-search'
1836displays word definitions. If non-nil, this user option should be set 1587displays word definitions. If non-nil, this user option should be set
@@ -1840,7 +1591,6 @@ dictionary server. The new function
1840the definition in a "*Help*" buffer, instead of the default 1591the definition in a "*Help*" buffer, instead of the default
1841"*Dictionary*" buffer. 1592"*Dictionary*" buffer.
1842 1593
1843---
1844*** New user option 'dictionary-read-word-function'. 1594*** New user option 'dictionary-read-word-function'.
1845This allows the user to customize the way in which 'dictionary-search' 1595This allows the user to customize the way in which 'dictionary-search'
1846prompts for a word to search in the dictionary. This user option 1596prompts for a word to search in the dictionary. This user option
@@ -1849,7 +1599,6 @@ returns it as a string. The new function
1849'dictionary-completing-read-word' can be used to prompt with 1599'dictionary-completing-read-word' can be used to prompt with
1850completion based on dictionary matches. 1600completion based on dictionary matches.
1851 1601
1852---
1853*** New user option 'dictionary-read-dictionary-function'. 1602*** New user option 'dictionary-read-dictionary-function'.
1854This allows the user to customize the way in which 'dictionary-search' 1603This allows the user to customize the way in which 'dictionary-search'
1855prompts for a dictionary to search in. This user option should be set 1604prompts for a dictionary to search in. This user option should be set
@@ -1858,7 +1607,6 @@ name as a string. The new function
1858'dictionary-completing-read-dictionary' can be used to prompt with 1607'dictionary-completing-read-dictionary' can be used to prompt with
1859completion based on dictionaries that the server supports. 1608completion based on dictionaries that the server supports.
1860 1609
1861---
1862*** The default value of 'dictionary-tooltip-dictionary' has changed. 1610*** The default value of 'dictionary-tooltip-dictionary' has changed.
1863The new default value is t, which means use the same dictionary as the 1611The new default value is t, which means use the same dictionary as the
1864value of 'dictionary-default-dictionary'. The previous default value 1612value of 'dictionary-default-dictionary'. The previous default value
@@ -1867,52 +1615,43 @@ the mode was turned on.
1867 1615
1868** Pp 1616** Pp
1869 1617
1870+++
1871*** New 'pp-default-function' user option replaces 'pp-use-max-width'. 1618*** New 'pp-default-function' user option replaces 'pp-use-max-width'.
1872Its default value is 'pp-fill', a new default pretty-printing function, 1619Its default value is 'pp-fill', a new default pretty-printing function,
1873which tries to obey 'fill-column'. 1620which tries to obey 'fill-column'.
1874 1621
1875---
1876*** 'pp-to-string' takes an additional PP-FUNCTION argument. 1622*** 'pp-to-string' takes an additional PP-FUNCTION argument.
1877This argument specifies the prettifying algorithm to use. 1623This argument specifies the prettifying algorithm to use.
1878 1624
1879---
1880*** 'pp' and 'pp-to-string' now always include a terminating newline. 1625*** 'pp' and 'pp-to-string' now always include a terminating newline.
1881In the past they included a terminating newline in most cases but not all. 1626In the past they included a terminating newline in most cases but not all.
1882 1627
1883** Emacs Lisp mode 1628** Emacs Lisp mode
1884 1629
1885+++
1886*** 'elisp-flymake-byte-compile' is disabled for untrusted files. 1630*** 'elisp-flymake-byte-compile' is disabled for untrusted files.
1887For security reasons, this backend can be used only in those files 1631For security reasons, this backend can be used only in those files
1888specified as trusted according to 'trusted-content' and emits an 1632specified as trusted according to 'trusted-content' and emits an
1889"untrusted content" warning otherwise. 1633"untrusted content" warning otherwise.
1890This fixes CVE-2024-53920. 1634This fixes CVE-2024-53920.
1891 1635
1892---
1893*** ',@' now has 'prefix' syntax. 1636*** ',@' now has 'prefix' syntax.
1894Previously, the '@' character, which normally has 'symbol' syntax, 1637Previously, the '@' character, which normally has 'symbol' syntax,
1895would combine with a following Lisp symbol and interfere with symbol 1638would combine with a following Lisp symbol and interfere with symbol
1896searching. 1639searching.
1897 1640
1898+++
1899*** 'emacs-lisp-docstring-fill-column' now defaults to 72. 1641*** 'emacs-lisp-docstring-fill-column' now defaults to 72.
1900It was previously 65. The new default formats documentation strings to 1642It was previously 65. The new default formats documentation strings to
1901fit on fewer lines without negatively impacting readability. 1643fit on fewer lines without negatively impacting readability.
1902 1644
1903** CPerl mode 1645** CPerl mode
1904 1646
1905---
1906*** Subroutine signatures are now supported. 1647*** Subroutine signatures are now supported.
1907CPerl mode fontifies subroutine signatures like variable declarations 1648CPerl mode fontifies subroutine signatures like variable declarations
1908which makes them visually distinct from subroutine prototypes. 1649which makes them visually distinct from subroutine prototypes.
1909 1650
1910---
1911*** Syntax of Perl up to version 5.40 is supported. 1651*** Syntax of Perl up to version 5.40 is supported.
1912CPerl mode supports the new keywords for exception handling and the 1652CPerl mode supports the new keywords for exception handling and the
1913object oriented syntax which were added in Perl 5.36, 5.38 and 5.40. 1653object oriented syntax which were added in Perl 5.36, 5.38 and 5.40.
1914 1654
1915---
1916*** New user option 'cperl-fontify-trailer'. 1655*** New user option 'cperl-fontify-trailer'.
1917This user option takes the values 'perl-code' or 'comment' and treats 1656This user option takes the values 'perl-code' or 'comment' and treats
1918text after an "__END__" or "__DATA__" token accordingly. The default 1657text after an "__END__" or "__DATA__" token accordingly. The default
@@ -1920,32 +1659,27 @@ value of 'perl-code' is useful for trailing POD and for AutoSplit
1920modules, the value 'comment' makes CPerl mode treat trailers as 1659modules, the value 'comment' makes CPerl mode treat trailers as
1921comment, like Perl mode does. 1660comment, like Perl mode does.
1922 1661
1923---
1924*** New command 'cperl-file-style'. 1662*** New command 'cperl-file-style'.
1925This command sets the indentation style for the current buffer. To 1663This command sets the indentation style for the current buffer. To
1926change the default style, either use the user option with the same name 1664change the default style, either use the user option with the same name
1927or use the command 'cperl-set-style'. 1665or use the command 'cperl-set-style'.
1928 1666
1929---
1930*** New minor mode 'cperl-extra-paired-delimiters-mode'. 1667*** New minor mode 'cperl-extra-paired-delimiters-mode'.
1931Perl 5.36 and newer allows using more than 200 non-ASCII paired 1668Perl 5.36 and newer allows using more than 200 non-ASCII paired
1932delimiters for quote-like constructs, e.g. "q«text»". Use this minor 1669delimiters for quote-like constructs, e.g. "q«text»". Use this minor
1933mode in buffers where this feature is activated. 1670mode in buffers where this feature is activated.
1934 1671
1935---
1936*** Commands using the Perl Info manual are obsolete. 1672*** Commands using the Perl Info manual are obsolete.
1937The Perl documentation in Info format is no longer distributed with 1673The Perl documentation in Info format is no longer distributed with
1938Perl or on CPAN since more than 10 years. Perl documentation can be 1674Perl or on CPAN since more than 10 years. Perl documentation can be
1939read with 'cperl-perldoc' instead. 1675read with 'cperl-perldoc' instead.
1940 1676
1941---
1942*** Highlighting trailing whitespace has been removed. 1677*** Highlighting trailing whitespace has been removed.
1943The user option 'cperl-invalid-face' is now obsolete, and does 1678The user option 'cperl-invalid-face' is now obsolete, and does
1944nothing. See the user option 'show-trailing-whitespace' instead. 1679nothing. See the user option 'show-trailing-whitespace' instead.
1945 1680
1946** Emacs Sessions (Desktop) 1681** Emacs Sessions (Desktop)
1947 1682
1948+++
1949*** Restoring buffers visiting remote files can now time out. 1683*** Restoring buffers visiting remote files can now time out.
1950When a buffer is restored which visits a remote file, the restoration 1684When a buffer is restored which visits a remote file, the restoration
1951of the session could hang if the remote host is off-line or slow to 1685of the session could hang if the remote host is off-line or slow to
@@ -1956,7 +1690,6 @@ desktop restoration to continue.
1956 1690
1957** Recentf 1691** Recentf
1958 1692
1959+++
1960*** Checking recent remote files can now time out. 1693*** Checking recent remote files can now time out.
1961Similarly to buffer restoration by Desktop, 'recentf-mode' checking 1694Similarly to buffer restoration by Desktop, 'recentf-mode' checking
1962of the accessibility of remote files can now time out if 1695of the accessibility of remote files can now time out if
@@ -1964,19 +1697,16 @@ of the accessibility of remote files can now time out if
1964 1697
1965** Image Dired 1698** Image Dired
1966 1699
1967+++
1968*** New user option 'image-dired-thumb-naming'. 1700*** New user option 'image-dired-thumb-naming'.
1969You can now configure how thumbnails are named using this option. 1701You can now configure how thumbnails are named using this option.
1970 1702
1971** ERT 1703** ERT
1972 1704
1973+++
1974*** New macro 'skip-when' to skip 'ert-deftest' tests. 1705*** New macro 'skip-when' to skip 'ert-deftest' tests.
1975This can help to avoid some awkward skip conditions. For example 1706This can help to avoid some awkward skip conditions. For example
1976'(skip-unless (not noninteractive))' can be changed to the easier 1707'(skip-unless (not noninteractive))' can be changed to the easier
1977to read '(skip-when noninteractive)'. 1708to read '(skip-when noninteractive)'.
1978 1709
1979+++
1980*** Syntax highlighting unit testing support. 1710*** Syntax highlighting unit testing support.
1981An ERT extension ('ert-font-lock') now provides support for face 1711An ERT extension ('ert-font-lock') now provides support for face
1982assignment unit testing. For more information, see the "(ert) Syntax 1712assignment unit testing. For more information, see the "(ert) Syntax
@@ -1984,21 +1714,18 @@ Highlighting Tests" node in the ERT manual.
1984 1714
1985** Socks 1715** Socks
1986 1716
1987+++
1988*** Socks supports version 4a. 1717*** Socks supports version 4a.
1989The 'socks-server' user option accepts '4a' as a value for its version 1718The 'socks-server' user option accepts '4a' as a value for its version
1990field. 1719field.
1991 1720
1992** Edmacro 1721** Edmacro
1993 1722
1994+++
1995*** New command 'edmacro-set-macro-to-region-lines'. 1723*** New command 'edmacro-set-macro-to-region-lines'.
1996Bound to 'C-c C-r', this command replaces the macro text with the 1724Bound to 'C-c C-r', this command replaces the macro text with the
1997lines of the region. If needed, the region is extended to include 1725lines of the region. If needed, the region is extended to include
1998whole lines. If the region ends at the beginning of a line, that last 1726whole lines. If the region ends at the beginning of a line, that last
1999line is excluded. 1727line is excluded.
2000 1728
2001+++
2002*** New user option 'edmacro-reverse-macro-lines'. 1729*** New user option 'edmacro-reverse-macro-lines'.
2003When this is non-nil, the lines of key sequences are displayed with 1730When this is non-nil, the lines of key sequences are displayed with
2004the most recent line first. This is can be useful when working with 1731the most recent line first. This is can be useful when working with
@@ -2006,7 +1733,6 @@ macros with many lines, such as from 'kmacro-edit-lossage'.
2006 1733
2007** Calc 1734** Calc
2008 1735
2009+++
2010*** Calc parses fractions written using U+2044 FRACTION SLASH. 1736*** Calc parses fractions written using U+2044 FRACTION SLASH.
2011Fractions of the form "123⁄456" are handled as if written "123:456". 1737Fractions of the form "123⁄456" are handled as if written "123:456".
2012Note in particular the difference in behavior from U+2215 DIVISION SLASH 1738Note in particular the difference in behavior from U+2215 DIVISION SLASH
@@ -2018,7 +1744,6 @@ was never mentioned in the NEWS, or even the Calc manual.)
2018 1744
2019** IELM 1745** IELM
2020 1746
2021---
2022*** IELM now remembers input history between sessions. 1747*** IELM now remembers input history between sessions.
2023The new user option 'ielm-history-file-name' is the name of the file 1748The new user option 'ielm-history-file-name' is the name of the file
2024where IELM input history will be saved. Customize it to nil to revert 1749where IELM input history will be saved. Customize it to nil to revert
@@ -2026,7 +1751,6 @@ to the old behavior of not remembering input history between sessions.
2026 1751
2027** EasyPG 1752** EasyPG
2028 1753
2029+++
2030*** New user option 'epa-keys-select-method'. 1754*** New user option 'epa-keys-select-method'.
2031This allows the user to customize the key selection method, which can be 1755This allows the user to customize the key selection method, which can be
2032either by using a pop-up buffer or from the minibuffer. The pop-up 1756either by using a pop-up buffer or from the minibuffer. The pop-up
@@ -2034,61 +1758,52 @@ buffer method is the default, which preserves previous behavior.
2034 1758
2035** Widget 1759** Widget
2036 1760
2037+++
2038*** New face 'widget-unselected'. 1761*** New face 'widget-unselected'.
2039Customize this face to a non-default value to visually distinguish the 1762Customize this face to a non-default value to visually distinguish the
2040labels of unselected active radio-button or checkbox widgets from the 1763labels of unselected active radio-button or checkbox widgets from the
2041labels of unselected inactive widgets (the default value inherits from 1764labels of unselected inactive widgets (the default value inherits from
2042the 'widget-inactive' face). 1765the 'widget-inactive' face).
2043 1766
2044+++
2045*** New user option 'widget-skip-inactive'. 1767*** New user option 'widget-skip-inactive'.
2046If non-nil, moving point forward or backward between widgets by typing 1768If non-nil, moving point forward or backward between widgets by typing
2047'TAB' or 'S-TAB' skips over inactive widgets. The default value is nil. 1769'TAB' or 'S-TAB' skips over inactive widgets. The default value is nil.
2048 1770
2049** Ruby mode 1771** Ruby mode
2050 1772
2051---
2052*** New user option 'ruby-rubocop-use-bundler'. 1773*** New user option 'ruby-rubocop-use-bundler'.
2053By default it retains the previous behavior: read the contents of 1774By default it retains the previous behavior: read the contents of
2054Gemfile and act accordingly. But you can also set it to t or nil to 1775Gemfile and act accordingly. But you can also set it to t or nil to
2055skip checking the Gemfile. 1776skip checking the Gemfile.
2056 1777
2057---
2058*** New user option 'ruby-bracketed-args-indent'. 1778*** New user option 'ruby-bracketed-args-indent'.
2059When it is set to nil, multiple consecutive open braces/brackets/parens 1779When it is set to nil, multiple consecutive open braces/brackets/parens
2060result in only one additional indentation level. Default is t. 1780result in only one additional indentation level. Default is t.
2061 1781
2062** Thingatpt 1782** Thingatpt
2063 1783
2064---
2065*** New variables for providing custom thingatpt implementations. 1784*** New variables for providing custom thingatpt implementations.
2066The new variables 'bounds-of-thing-at-point-provider-alist' and 1785The new variables 'bounds-of-thing-at-point-provider-alist' and
2067'forward-thing-provider-alist' now allow defining custom implementations 1786'forward-thing-provider-alist' now allow defining custom implementations
2068of 'bounds-of-thing-at-point' and 'forward-thing', respectively. 1787of 'bounds-of-thing-at-point' and 'forward-thing', respectively.
2069 1788
2070---
2071*** New helper functions for text property-based thingatpt providers. 1789*** New helper functions for text property-based thingatpt providers.
2072The new helper functions 'thing-at-point-for-char-property', 1790The new helper functions 'thing-at-point-for-char-property',
2073'bounds-of-thing-at-point-for-char-property', and 1791'bounds-of-thing-at-point-for-char-property', and
2074'forward-thing-for-char-property' can help to implement custom thingatpt 1792'forward-thing-for-char-property' can help to implement custom thingatpt
2075providers for "things" that are defined by text properties. 1793providers for "things" that are defined by text properties.
2076 1794
2077---
2078*** 'bug-reference-mode' now supports 'thing-at-point'. 1795*** 'bug-reference-mode' now supports 'thing-at-point'.
2079Now, calling '(thing-at-point 'url)' when point is on a bug reference 1796Now, calling '(thing-at-point 'url)' when point is on a bug reference
2080will return the URL for that bug. 1797will return the URL for that bug.
2081 1798
2082** Buffer-menu 1799** Buffer-menu
2083 1800
2084---
2085*** New user option 'Buffer-menu-group-by'. 1801*** New user option 'Buffer-menu-group-by'.
2086It controls how buffers are divided into groups that are displayed with 1802It controls how buffers are divided into groups that are displayed with
2087headings using Outline minor mode. Using commands that mark buffers 1803headings using Outline minor mode. Using commands that mark buffers
2088on the outline heading line will mark all buffers in the outline. By 1804on the outline heading line will mark all buffers in the outline. By
2089default, no grouping is performed. 1805default, no grouping is performed.
2090 1806
2091+++
2092*** New command 'Buffer-menu-toggle-internal'. 1807*** New command 'Buffer-menu-toggle-internal'.
2093This command toggles the display of internal buffers in Buffer Menu mode; 1808This command toggles the display of internal buffers in Buffer Menu mode;
2094that is, buffers not visiting a file and whose names start with a space. 1809that is, buffers not visiting a file and whose names start with a space.
@@ -2097,22 +1812,18 @@ in Buffer Menu mode.
2097 1812
2098** Miscellaneous 1813** Miscellaneous
2099 1814
2100+++
2101*** New user option 'rcirc-log-time-format'. 1815*** New user option 'rcirc-log-time-format'.
2102This allows for rcirc logs to use a custom timestamp format, which the 1816This allows for rcirc logs to use a custom timestamp format, which the
2103chat buffers use by default. 1817chat buffers use by default.
2104 1818
2105---
2106*** 'ffap-lax-url' now defaults to nil. 1819*** 'ffap-lax-url' now defaults to nil.
2107Previously, it was set to t, but this broke remote file name detection. 1820Previously, it was set to t, but this broke remote file name detection.
2108 1821
2109---
2110*** More control on automatic update of Proced buffers. 1822*** More control on automatic update of Proced buffers.
2111The user option 'proced-auto-update-flag' can now be set to an 1823The user option 'proced-auto-update-flag' can now be set to an
2112additional value 'visible', which controls automatic updates of Proced 1824additional value 'visible', which controls automatic updates of Proced
2113buffers that are displayed in some window. 1825buffers that are displayed in some window.
2114 1826
2115---
2116*** nXML Mode now comes with schemas for Mono/.NET development. 1827*** nXML Mode now comes with schemas for Mono/.NET development.
2117The following new XML schemas are now supported: 1828The following new XML schemas are now supported:
2118- MSBuild project files 1829- MSBuild project files
@@ -2123,48 +1834,39 @@ The following new XML schemas are now supported:
2123- Nuget package specification file 1834- Nuget package specification file
2124- Nuget packages config file 1835- Nuget packages config file
2125 1836
2126---
2127*** color.el now supports the Oklab color representation. 1837*** color.el now supports the Oklab color representation.
2128 1838
2129+++
2130*** New user option 'xwidget-webkit-disable-javascript'. 1839*** New user option 'xwidget-webkit-disable-javascript'.
2131This allows disabling JavaScript in xwidget Webkit sessions. 1840This allows disabling JavaScript in xwidget Webkit sessions.
2132 1841
2133---
2134*** 'ls-lisp--insert-directory' supports more long options of 'ls'. 1842*** 'ls-lisp--insert-directory' supports more long options of 'ls'.
2135'ls-lisp--insert-directory', the ls-lisp implementation of 1843'ls-lisp--insert-directory', the ls-lisp implementation of
2136'insert-directory', now supports the '--time=TIME' and '--sort=time' 1844'insert-directory', now supports the '--time=TIME' and '--sort=time'
2137options of GNU 'ls'. 1845options of GNU 'ls'.
2138 1846
2139---
2140*** 'M-x ping' can now give additional flags to the 'ping' program. 1847*** 'M-x ping' can now give additional flags to the 'ping' program.
2141Typing 'C-u M-x ping' prompts first for the host, and then for the flags 1848Typing 'C-u M-x ping' prompts first for the host, and then for the flags
2142to give to the 'ping' command. 1849to give to the 'ping' command.
2143 1850
2144---
2145*** Webjump now assumes URIs are HTTPS instead of HTTP. 1851*** Webjump now assumes URIs are HTTPS instead of HTTP.
2146For links in 'webjump-sites' without an explicit URI scheme, it was 1852For links in 'webjump-sites' without an explicit URI scheme, it was
2147previously assumed that they should be prefixed with "http://". Such 1853previously assumed that they should be prefixed with "http://". Such
2148URIs are now prefixed with "https://" instead. 1854URIs are now prefixed with "https://" instead.
2149 1855
2150---
2151*** Added prefixes in titdic-cnv library. 1856*** Added prefixes in titdic-cnv library.
2152Most of the variables and functions in the file have been renamed to 1857Most of the variables and functions in the file have been renamed to
2153make sure they all use a 'tit-' namespace prefix. 1858make sure they all use a 'tit-' namespace prefix.
2154 1859
2155---
2156*** 'xref-revert-buffer' is now an alias of 'revert-buffer'. 1860*** 'xref-revert-buffer' is now an alias of 'revert-buffer'.
2157The Xref buffer now sets up 'revert-buffer-function' such that 1861The Xref buffer now sets up 'revert-buffer-function' such that
2158'revert-buffer' behaves like 'xref-revert-buffer' did in previous Emacs 1862'revert-buffer' behaves like 'xref-revert-buffer' did in previous Emacs
2159versions, and the latter is now an alias of the former. 1863versions, and the latter is now an alias of the former.
2160 1864
2161---
2162*** The Makefile browser is now obsolete. 1865*** The Makefile browser is now obsolete.
2163The command 'makefile-switch-to-browser' command is now obsolete, 1866The command 'makefile-switch-to-browser' command is now obsolete,
2164together with related commands used in the "*Macros and Targets*" 1867together with related commands used in the "*Macros and Targets*"
2165buffer. We recommend using an alternative like 'imenu' instead. 1868buffer. We recommend using an alternative like 'imenu' instead.
2166 1869
2167---
2168*** 'jsonrpc-default-request-timeout' is now a defcustom. 1870*** 'jsonrpc-default-request-timeout' is now a defcustom.
2169 1871
2170 1872
@@ -2172,28 +1874,22 @@ buffer. We recommend using an alternative like 'imenu' instead.
2172 1874
2173** New major modes based on the tree-sitter library 1875** New major modes based on the tree-sitter library
2174 1876
2175+++
2176*** New major mode 'elixir-ts-mode'. 1877*** New major mode 'elixir-ts-mode'.
2177A major mode based on the tree-sitter library for editing Elixir files. 1878A major mode based on the tree-sitter library for editing Elixir files.
2178 1879
2179+++
2180*** New major mode 'heex-ts-mode'. 1880*** New major mode 'heex-ts-mode'.
2181A major mode based on the tree-sitter library for editing HEEx files. 1881A major mode based on the tree-sitter library for editing HEEx files.
2182 1882
2183+++
2184*** New major mode 'html-ts-mode'. 1883*** New major mode 'html-ts-mode'.
2185An optional major mode based on the tree-sitter library for editing 1884An optional major mode based on the tree-sitter library for editing
2186HTML files. 1885HTML files.
2187 1886
2188+++
2189*** New major mode 'lua-ts-mode'. 1887*** New major mode 'lua-ts-mode'.
2190A major mode based on the tree-sitter library for editing Lua files. 1888A major mode based on the tree-sitter library for editing Lua files.
2191 1889
2192+++
2193*** New major mode 'php-ts-mode'. 1890*** New major mode 'php-ts-mode'.
2194A major mode based on the tree-sitter library for editing PHP files. 1891A major mode based on the tree-sitter library for editing PHP files.
2195 1892
2196+++
2197** New package EditorConfig. 1893** New package EditorConfig.
2198This package provides support for the EditorConfig standard, 1894This package provides support for the EditorConfig standard,
2199an editor-neutral way to provide directory local (project-wide) settings. 1895an editor-neutral way to provide directory local (project-wide) settings.
@@ -2202,13 +1898,11 @@ which makes Emacs obey the '.editorconfig' files.
2202There is also a new major mode 'editorconfig-conf-mode' 1898There is also a new major mode 'editorconfig-conf-mode'
2203to edit those configuration files. 1899to edit those configuration files.
2204 1900
2205+++
2206** New global minor mode 'etags-regen-mode'. 1901** New global minor mode 'etags-regen-mode'.
2207This minor mode generates the tags table automatically based on the 1902This minor mode generates the tags table automatically based on the
2208current project configuration, and later updates it as you edit the 1903current project configuration, and later updates it as you edit the
2209files and save the changes. 1904files and save the changes.
2210 1905
2211+++
2212** New package 'which-key'. 1906** New package 'which-key'.
2213The 'which-key' package from GNU ELPA is now included in Emacs. It 1907The 'which-key' package from GNU ELPA is now included in Emacs. It
2214implements the global minor mode 'which-key-mode' that displays a table 1908implements the global minor mode 'which-key-mode' that displays a table
@@ -2217,7 +1911,6 @@ moment. For example, after enabling the minor mode, if you enter 'C-x'
2217and wait for one second, the minibuffer will expand with all available 1911and wait for one second, the minibuffer will expand with all available
2218key bindings that follow 'C-x' (or as many as space allows). 1912key bindings that follow 'C-x' (or as many as space allows).
2219 1913
2220+++
2221** New minor mode 'completion-preview-mode'. 1914** New minor mode 'completion-preview-mode'.
2222This minor mode shows you symbol completion suggestions as you type, 1915This minor mode shows you symbol completion suggestions as you type,
2223using an inline preview. New user options in the 'completion-preview' 1916using an inline preview. New user options in the 'completion-preview'
@@ -2225,7 +1918,6 @@ customization group control exactly when Emacs displays this preview.
2225'completion-preview-mode' is buffer-local, to enable it globally use 1918'completion-preview-mode' is buffer-local, to enable it globally use
2226'global-completion-preview-mode'. 1919'global-completion-preview-mode'.
2227 1920
2228+++
2229** New package Window-Tool-Bar. 1921** New package Window-Tool-Bar.
2230This provides a new minor mode, 'window-tool-bar-mode'. When this minor 1922This provides a new minor mode, 'window-tool-bar-mode'. When this minor
2231mode is enabled, a tool bar is displayed at the top of a window. To 1923mode is enabled, a tool bar is displayed at the top of a window. To
@@ -2233,7 +1925,6 @@ conserve space, no tool bar is shown if 'tool-bar-map' is nil. The
2233global minor mode 'global-window-tool-bar-mode' enables this minor mode 1925global minor mode 'global-window-tool-bar-mode' enables this minor mode
2234in all buffers. 1926in all buffers.
2235 1927
2236+++
2237** New library Track-Changes. 1928** New library Track-Changes.
2238This library is a layer of abstraction above 'before-change-functions' 1929This library is a layer of abstraction above 'before-change-functions'
2239and 'after-change-functions' which provides a superset of 1930and 'after-change-functions' which provides a superset of
@@ -2245,7 +1936,6 @@ the functionality of 'after-change-functions':
2245 reported (calls to 'before/after-change-functions' that are 1936 reported (calls to 'before/after-change-functions' that are
2246 incorrectly paired, missing, etc...) and reports them adequately. 1937 incorrectly paired, missing, etc...) and reports them adequately.
2247 1938
2248+++
2249** New global minor mode 'minibuffer-regexp-mode'. 1939** New global minor mode 'minibuffer-regexp-mode'.
2250This is a minor mode for editing regular expressions in the minibuffer, 1940This is a minor mode for editing regular expressions in the minibuffer,
2251for example in 'query-replace-regexp'. It correctly highlights parens 1941for example in 'query-replace-regexp'. It correctly highlights parens
@@ -2254,7 +1944,6 @@ avoids reporting alleged paren mismatches and makes sexp navigation more
2254intuitive. It is enabled by default, 'minibuffer-regexp-prompts' can be 1944intuitive. It is enabled by default, 'minibuffer-regexp-prompts' can be
2255used to tune when it takes effect. 1945used to tune when it takes effect.
2256 1946
2257---
2258** The highly accessible Modus themes collection has eight items. 1947** The highly accessible Modus themes collection has eight items.
2259The 'modus-operandi' and 'modus-vivendi' are the main themes that have 1948The 'modus-operandi' and 'modus-vivendi' are the main themes that have
2260been part of Emacs since version 28. The former is light, the latter 1949been part of Emacs since version 28. The former is light, the latter
@@ -2266,7 +1955,6 @@ the needs of users with red-green or blue-yellow color deficiency.
2266The Info manual "(modus-themes) Top" describes the details and 1955The Info manual "(modus-themes) Top" describes the details and
2267showcases all their user options. 1956showcases all their user options.
2268 1957
2269+++
2270** New library PEG. 1958** New library PEG.
2271Emacs now includes a library for writing Parsing Expression 1959Emacs now includes a library for writing Parsing Expression
2272Grammars (PEG), an approach to text parsing that provides more structure 1960Grammars (PEG), an approach to text parsing that provides more structure
@@ -2274,14 +1962,12 @@ than regular expressions, but less complexity than context-free
2274grammars. The Info manual "(elisp) Parsing Expression Grammars" has 1962grammars. The Info manual "(elisp) Parsing Expression Grammars" has
2275documentation and examples. 1963documentation and examples.
2276 1964
2277---
2278** New major mode 'shell-command-mode'. 1965** New major mode 'shell-command-mode'.
2279This mode is used by default for the output of asynchronous 'shell-command'. 1966This mode is used by default for the output of asynchronous 'shell-command'.
2280To revert to the previous behavior, set the (also new) variable 1967To revert to the previous behavior, set the (also new) variable
2281'async-shell-command-mode' to 'shell-mode'. Any hooks or mode-specific 1968'async-shell-command-mode' to 'shell-mode'. Any hooks or mode-specific
2282variables used should be adapted appropriately. 1969variables used should be adapted appropriately.
2283 1970
2284+++
2285** New package Compat. 1971** New package Compat.
2286Emacs now comes with a stub implementation of the 1972Emacs now comes with a stub implementation of the
2287forwards-compatibility Compat package from GNU ELPA. This allows 1973forwards-compatibility Compat package from GNU ELPA. This allows
@@ -2291,7 +1977,6 @@ preventing the installation of Compat if unnecessary.
2291 1977
2292* Incompatible Lisp Changes in Emacs 30.1 1978* Incompatible Lisp Changes in Emacs 30.1
2293 1979
2294+++
2295** Evaluating a 'lambda' returns an object of type 'interpreted-function'. 1980** Evaluating a 'lambda' returns an object of type 'interpreted-function'.
2296Instead of representing interpreted functions as lists that start with 1981Instead of representing interpreted functions as lists that start with
2297either 'lambda' or 'closure', Emacs now represents them as objects 1982either 'lambda' or 'closure', Emacs now represents them as objects
@@ -2308,17 +1993,14 @@ no longer work and will need to use 'aref' instead to extract its
2308various subparts (when 'interactive-form', 'documentation', and 1993various subparts (when 'interactive-form', 'documentation', and
2309'help-function-arglist' aren't adequate). 1994'help-function-arglist' aren't adequate).
2310 1995
2311---
2312** The escape sequence '\x' not followed by hex digits is now an error. 1996** The escape sequence '\x' not followed by hex digits is now an error.
2313Previously, '\x' without at least one hex digit denoted character code 1997Previously, '\x' without at least one hex digit denoted character code
2314zero (NUL) but as this was neither intended nor documented or even 1998zero (NUL) but as this was neither intended nor documented or even
2315known by anyone, it is now treated as an error by the Lisp reader. 1999known by anyone, it is now treated as an error by the Lisp reader.
2316 2000
2317---
2318** 'subr-native-elisp-p' is renamed to 'native-comp-function-p'. 2001** 'subr-native-elisp-p' is renamed to 'native-comp-function-p'.
2319The previous name still exists but is marked as obsolete. 2002The previous name still exists but is marked as obsolete.
2320 2003
2321+++
2322** 'define-globalized-minor-mode' requires that modes use 'run-mode-hooks'. 2004** 'define-globalized-minor-mode' requires that modes use 'run-mode-hooks'.
2323Minor modes defined with 'define-globalized-minor-mode', such as 2005Minor modes defined with 'define-globalized-minor-mode', such as
2324'global-font-lock-mode', will not be enabled any more in those buffers 2006'global-font-lock-mode', will not be enabled any more in those buffers
@@ -2326,7 +2008,6 @@ whose major modes fail to use 'run-mode-hooks'. Major modes defined
2326with 'define-derived-mode' are not affected. 'run-mode-hooks' has been the 2008with 'define-derived-mode' are not affected. 'run-mode-hooks' has been the
2327recommended way to run major mode hooks since Emacs 22. 2009recommended way to run major mode hooks since Emacs 22.
2328 2010
2329+++
2330** 'buffer-match-p' and 'match-buffers' take '&rest ARGS'. 2011** 'buffer-match-p' and 'match-buffers' take '&rest ARGS'.
2331They used to take a single '&optional ARG' and were documented to use 2012They used to take a single '&optional ARG' and were documented to use
2332an unreliable hack to try and support condition predicates that 2013an unreliable hack to try and support condition predicates that
@@ -2334,18 +2015,14 @@ don't accept this optional ARG.
2334The new semantics makes no such accommodation, but the code still 2015The new semantics makes no such accommodation, but the code still
2335supports it (with a warning) for backward compatibility. 2016supports it (with a warning) for backward compatibility.
2336 2017
2337---
2338** 'post-gc-hook' runs after updating 'gcs-done' and 'gc-elapsed'. 2018** 'post-gc-hook' runs after updating 'gcs-done' and 'gc-elapsed'.
2339 2019
2340---
2341** Connection-local variables are applied in buffers visiting remote files. 2020** Connection-local variables are applied in buffers visiting remote files.
2342This overrides possible directory-local or file-local variables with 2021This overrides possible directory-local or file-local variables with
2343the same name. 2022the same name.
2344 2023
2345+++
2346** 'copy-tree' now copies records when its optional 2nd argument is non-nil. 2024** 'copy-tree' now copies records when its optional 2nd argument is non-nil.
2347 2025
2348+++
2349** Regexp zero-width assertions followed by operators are better defined. 2026** Regexp zero-width assertions followed by operators are better defined.
2350Previously, regexps such as "xy\\B*" would have ill-defined behavior. 2027Previously, regexps such as "xy\\B*" would have ill-defined behavior.
2351Now any operator following a zero-width assertion applies to that 2028Now any operator following a zero-width assertion applies to that
@@ -2353,7 +2030,6 @@ assertion only (which is useless). For historical compatibility, an
2353operator character following '^' or '\`' becomes literal, but we 2030operator character following '^' or '\`' becomes literal, but we
2354advise against relying on this. 2031advise against relying on this.
2355 2032
2356+++
2357** Infinities and NaNs no longer act as symbols on non-IEEE platforms. 2033** Infinities and NaNs no longer act as symbols on non-IEEE platforms.
2358On old platforms like the VAX that do not support IEEE floating-point, 2034On old platforms like the VAX that do not support IEEE floating-point,
2359tokens like '0.0e+NaN' and '1.0e+INF' are no longer read as symbols. 2035tokens like '0.0e+NaN' and '1.0e+INF' are no longer read as symbols.
@@ -2361,7 +2037,6 @@ Instead, the Lisp reader approximates an infinity with the nearest
2361finite value, and a NaN with some other non-numeric object that 2037finite value, and a NaN with some other non-numeric object that
2362provokes an error if used numerically. 2038provokes an error if used numerically.
2363 2039
2364+++
2365** Conversion of strings to and from byte-arrays works with multibyte strings. 2040** Conversion of strings to and from byte-arrays works with multibyte strings.
2366The functions 'dbus-string-to-byte-array' and 2041The functions 'dbus-string-to-byte-array' and
2367'dbus-byte-array-to-string' now accept and return multibyte Lisp 2042'dbus-byte-array-to-string' now accept and return multibyte Lisp
@@ -2372,60 +2047,48 @@ UTF-8 byte sequence, and the optional parameter MULTIBYTE of
2372'dbus-string-to-byte-array' should be a regular Lisp string, not a 2047'dbus-string-to-byte-array' should be a regular Lisp string, not a
2373unibyte string. 2048unibyte string.
2374 2049
2375+++
2376** 'minibuffer-allow-text-properties' now can be set buffer-local. 2050** 'minibuffer-allow-text-properties' now can be set buffer-local.
2377'read-from-minibuffer' and functions that use it can take the 2051'read-from-minibuffer' and functions that use it can take the
2378buffer-local value from the minibuffer. 2052buffer-local value from the minibuffer.
2379 2053
2380+++
2381** 'minibuffer-allow-text-properties' now also affects completions. 2054** 'minibuffer-allow-text-properties' now also affects completions.
2382When it has a non-nil value, then completion functions like 2055When it has a non-nil value, then completion functions like
2383'completing-read' don't discard text properties from the returned 2056'completing-read' don't discard text properties from the returned
2384completion candidate. 2057completion candidate.
2385 2058
2386+++
2387** X color support compatibility aliases are now obsolete. 2059** X color support compatibility aliases are now obsolete.
2388The compatibility aliases 'x-defined-colors', 'x-color-defined-p', 2060The compatibility aliases 'x-defined-colors', 'x-color-defined-p',
2389'x-color-values', and 'x-display-color-p' are now obsolete. 2061'x-color-values', and 'x-display-color-p' are now obsolete.
2390 2062
2391+++
2392** 'easy-mmode-define-{minor,global}-mode' aliases are now obsolete. 2063** 'easy-mmode-define-{minor,global}-mode' aliases are now obsolete.
2393Use 'define-minor-mode' and 'define-globalized-minor-mode' instead. 2064Use 'define-minor-mode' and 'define-globalized-minor-mode' instead.
2394 2065
2395+++
2396** The 'millisec' argument of 'sleep-for' is now obsolete. 2066** The 'millisec' argument of 'sleep-for' is now obsolete.
2397Use a float value for the first argument instead. 2067Use a float value for the first argument instead.
2398 2068
2399---
2400** User options 'eshell-NAME-unload-hook' are now obsolete. 2069** User options 'eshell-NAME-unload-hook' are now obsolete.
2401These hooks were named incorrectly, and so they never actually ran 2070These hooks were named incorrectly, and so they never actually ran
2402when unloading the corresponding feature. Instead, you should use 2071when unloading the corresponding feature. Instead, you should use
2403hooks named after the feature name, like 'esh-mode-unload-hook'. 2072hooks named after the feature name, like 'esh-mode-unload-hook'.
2404 2073
2405---
2406** User options 'eshell-process-wait-{seconds,milliseconds}' are now obsolete. 2074** User options 'eshell-process-wait-{seconds,milliseconds}' are now obsolete.
2407Instead, use 'eshell-process-wait-time', which supports floating-point 2075Instead, use 'eshell-process-wait-time', which supports floating-point
2408values. 2076values.
2409 2077
2410---
2411** User option 'tramp-completion-reread-directory-timeout' has been removed. 2078** User option 'tramp-completion-reread-directory-timeout' has been removed.
2412This user option was obsoleted in Emacs 27, use 2079This user option was obsoleted in Emacs 27, use
2413'remote-file-name-inhibit-cache' instead. 2080'remote-file-name-inhibit-cache' instead.
2414 2081
2415+++
2416** The obsolete calling convention of 'sit-for' has been removed. 2082** The obsolete calling convention of 'sit-for' has been removed.
2417That convention was: '(sit-for SECONDS MILLISEC &optional NODISP)'. 2083That convention was: '(sit-for SECONDS MILLISEC &optional NODISP)'.
2418 2084
2419---
2420** 'defadvice' is marked as obsolete. 2085** 'defadvice' is marked as obsolete.
2421See the "(elisp) Porting Old Advice" Info node for help converting 2086See the "(elisp) Porting Old Advice" Info node for help converting
2422them to use 'advice-add' or 'define-advice' instead. 2087them to use 'advice-add' or 'define-advice' instead.
2423 2088
2424---
2425** 'cl-old-struct-compat-mode' is marked as obsolete. 2089** 'cl-old-struct-compat-mode' is marked as obsolete.
2426You may need to recompile your code if it was compiled with Emacs < 24.3. 2090You may need to recompile your code if it was compiled with Emacs < 24.3.
2427 2091
2428---
2429** Old derived.el functions removed. 2092** Old derived.el functions removed.
2430The following functions have been deleted because they were only used 2093The following functions have been deleted because they were only used
2431by code compiled with Emacs < 21: 2094by code compiled with Emacs < 21:
@@ -2438,40 +2101,33 @@ by code compiled with Emacs < 21:
2438 2101
2439* Lisp Changes in Emacs 30.1 2102* Lisp Changes in Emacs 30.1
2440 2103
2441+++
2442** The 'wheel-up/down/left/right' events are now bound unconditionally. 2104** The 'wheel-up/down/left/right' events are now bound unconditionally.
2443The 'mouse-wheel-up/down/left/right-event' variables are thus used only 2105The 'mouse-wheel-up/down/left/right-event' variables are thus used only
2444to specify the 'mouse-4/5/6/7' events that might still happen to be 2106to specify the 'mouse-4/5/6/7' events that might still happen to be
2445generated by some old packages (or if 'mouse-wheel-buttons' has been set 2107generated by some old packages (or if 'mouse-wheel-buttons' has been set
2446to nil). 2108to nil).
2447 2109
2448---
2449** Xterm Mouse mode now emits 'wheel-up/down/right/left' events. 2110** Xterm Mouse mode now emits 'wheel-up/down/right/left' events.
2450This is instead of 'mouse-4/5/6/7' events for the mouse wheel. It uses 2111This is instead of 'mouse-4/5/6/7' events for the mouse wheel. It uses
2451the new variable 'mouse-wheel-buttons' to decide which button maps to 2112the new variable 'mouse-wheel-buttons' to decide which button maps to
2452which wheel event (if any). 2113which wheel event (if any).
2453 2114
2454---
2455** In batch mode, tracing now sends the trace to stdout. 2115** In batch mode, tracing now sends the trace to stdout.
2456 2116
2457+++
2458** New hook 'hack-dir-local-get-variables-functions'. 2117** New hook 'hack-dir-local-get-variables-functions'.
2459This can be used to provide support for other directory-local settings 2118This can be used to provide support for other directory-local settings
2460beside ".dir-locals.el". 2119beside ".dir-locals.el".
2461 2120
2462+++
2463** 'auto-coding-functions' can know the name of the file. 2121** 'auto-coding-functions' can know the name of the file.
2464The functions on this hook can now find the name of the file to 2122The functions on this hook can now find the name of the file to
2465which the text belongs by consulting the variable 'auto-coding-file-name'. 2123which the text belongs by consulting the variable 'auto-coding-file-name'.
2466 2124
2467+++
2468** New user option 'compilation-safety' to control safety of native code. 2125** New user option 'compilation-safety' to control safety of native code.
2469It is now possible to control how safe is the code generated by native 2126It is now possible to control how safe is the code generated by native
2470compilation, by customizing this user option. It is also possible to 2127compilation, by customizing this user option. It is also possible to
2471control this at function granularity by using the new 'safety' parameter 2128control this at function granularity by using the new 'safety' parameter
2472in the function's 'declare' form. 2129in the function's 'declare' form.
2473 2130
2474+++
2475** New types 'closure' and 'interpreted-function'. 2131** New types 'closure' and 'interpreted-function'.
2476'interpreted-function' is the new type used for interpreted functions, 2132'interpreted-function' is the new type used for interpreted functions,
2477and 'closure' is the common parent type of 'interpreted-function' 2133and 'closure' is the common parent type of 'interpreted-function'
@@ -2481,91 +2137,75 @@ Those new types come with the associated new predicates 'closurep' and
2481'interpreted-function-p' as well as a new constructor 2137'interpreted-function-p' as well as a new constructor
2482'make-interpreted-closure'. 2138'make-interpreted-closure'.
2483 2139
2484---
2485** New function 'help-fns-function-name'. 2140** New function 'help-fns-function-name'.
2486For named functions, it just returns the name and otherwise 2141For named functions, it just returns the name and otherwise
2487it returns a short "unique" string that identifies the function. 2142it returns a short "unique" string that identifies the function.
2488In either case, the string is propertized so clicking on it gives 2143In either case, the string is propertized so clicking on it gives
2489further details. 2144further details.
2490 2145
2491+++
2492** New function 'char-to-name'. 2146** New function 'char-to-name'.
2493This is a convenience function to return the Unicode name of a char (if 2147This is a convenience function to return the Unicode name of a char (if
2494it has one). 2148it has one).
2495 2149
2496+++
2497** New function 'cl-type-of'. 2150** New function 'cl-type-of'.
2498This function is like 'type-of' except that it sometimes returns 2151This function is like 'type-of' except that it sometimes returns
2499a more precise type. For example, for nil and t it returns 'null' 2152a more precise type. For example, for nil and t it returns 'null'
2500and 'boolean' respectively, instead of just 'symbol'. 2153and 'boolean' respectively, instead of just 'symbol'.
2501 2154
2502+++
2503** New functions 'primitive-function-p' and 'cl-functionp'. 2155** New functions 'primitive-function-p' and 'cl-functionp'.
2504'primitive-function-p' is like 'subr-primitive-p' except that it returns 2156'primitive-function-p' is like 'subr-primitive-p' except that it returns
2505t only if the argument is a function rather than a special-form, 2157t only if the argument is a function rather than a special-form,
2506and 'cl-functionp' is like 'functionp' except it returns nil 2158and 'cl-functionp' is like 'functionp' except it returns nil
2507for lists and symbols. 2159for lists and symbols.
2508 2160
2509---
2510** Built-in types now have corresponding classes. 2161** Built-in types now have corresponding classes.
2511At the Lisp level, this means that things like '(cl-find-class 'integer)' 2162At the Lisp level, this means that things like '(cl-find-class 'integer)'
2512will now return a class object, and at the UI level it means that 2163will now return a class object, and at the UI level it means that
2513things like 'C-h o integer RET' will show some information about that type. 2164things like 'C-h o integer RET' will show some information about that type.
2514 2165
2515---
2516** New variable 'major-mode-remap-defaults' and function 'major-mode-remap'. 2166** New variable 'major-mode-remap-defaults' and function 'major-mode-remap'.
2517The first is like Emacs-29's 'major-mode-remap-alist' but to be set by 2167The first is like Emacs-29's 'major-mode-remap-alist' but to be set by
2518packages (instead of users). The second looks up those two variables. 2168packages (instead of users). The second looks up those two variables.
2519 2169
2520+++
2521** Pcase's functions (in 'pred' and 'app') can specify the argument position. 2170** Pcase's functions (in 'pred' and 'app') can specify the argument position.
2522For example, instead of '(pred (< 5))' you can write '(pred (> _ 5))'. 2171For example, instead of '(pred (< 5))' you can write '(pred (> _ 5))'.
2523 2172
2524+++
2525** 'define-advice' now sets the new advice's 'name' property to NAME. 2173** 'define-advice' now sets the new advice's 'name' property to NAME.
2526Named advices defined with 'define-advice' can now be removed with 2174Named advices defined with 'define-advice' can now be removed with
2527'(advice-remove SYMBOL NAME)' in addition to '(advice-remove SYMBOL 2175'(advice-remove SYMBOL NAME)' in addition to '(advice-remove SYMBOL
2528SYMBOL@NAME)'. 2176SYMBOL@NAME)'.
2529 2177
2530+++
2531** New function 'require-with-check' to detect new versions shadowing. 2178** New function 'require-with-check' to detect new versions shadowing.
2532This is like 'require', but it checks whether the argument 'feature' 2179This is like 'require', but it checks whether the argument 'feature'
2533is already loaded, in which case it either signals an error or 2180is already loaded, in which case it either signals an error or
2534forcibly reloads the file that defines the feature. 2181forcibly reloads the file that defines the feature.
2535 2182
2536+++
2537** New variable 'lisp-eval-depth-reserve'. 2183** New variable 'lisp-eval-depth-reserve'.
2538It puts a limit to the amount by which Emacs can temporarily increase 2184It puts a limit to the amount by which Emacs can temporarily increase
2539'max-lisp-eval-depth' when handling signals. 2185'max-lisp-eval-depth' when handling signals.
2540 2186
2541+++
2542** New special form 'handler-bind'. 2187** New special form 'handler-bind'.
2543It provides a functionality similar to 'condition-case' except it runs 2188It provides a functionality similar to 'condition-case' except it runs
2544the handler code without unwinding the stack, such that we can record 2189the handler code without unwinding the stack, such that we can record
2545the backtrace and other dynamic state at the point of the error. See 2190the backtrace and other dynamic state at the point of the error. See
2546the Info node "(elisp) Handling Errors". 2191the Info node "(elisp) Handling Errors".
2547 2192
2548+++
2549** New text properties add tooltips on fringes. 2193** New text properties add tooltips on fringes.
2550It is now possible to provide tooltips on fringes by adding special text 2194It is now possible to provide tooltips on fringes by adding special text
2551properties 'left-fringe-help' and 'right-fringe-help'. See the "(elisp) 2195properties 'left-fringe-help' and 'right-fringe-help'. See the "(elisp)
2552Special Properties" Info node in the Emacs Lisp Reference Manual for 2196Special Properties" Info node in the Emacs Lisp Reference Manual for
2553more details. 2197more details.
2554 2198
2555+++
2556** New 'display-buffer' action alist entry 'pop-up-frames'. 2199** New 'display-buffer' action alist entry 'pop-up-frames'.
2557This has the same effect as the variable of the same name and takes 2200This has the same effect as the variable of the same name and takes
2558precedence over the variable when present. 2201precedence over the variable when present.
2559 2202
2560---
2561** New function 'merge-ordered-lists'. 2203** New function 'merge-ordered-lists'.
2562Mostly used internally to do a kind of topological sort of 2204Mostly used internally to do a kind of topological sort of
2563inheritance hierarchies. 2205inheritance hierarchies.
2564 2206
2565+++
2566** 'drop' is now an alias for the function 'nthcdr'. 2207** 'drop' is now an alias for the function 'nthcdr'.
2567 2208
2568+++
2569** New polymorphic comparison function 'value<'. 2209** New polymorphic comparison function 'value<'.
2570This function returns non-nil if the first argument is less than the 2210This function returns non-nil if the first argument is less than the
2571second. It works for any two values of the same type with reasonable 2211second. It works for any two values of the same type with reasonable
@@ -2575,7 +2215,6 @@ lexicographically.
2575It is intended as a convenient ordering predicate for sorting, and is 2215It is intended as a convenient ordering predicate for sorting, and is
2576likely to be faster than hand-written Lisp functions. 2216likely to be faster than hand-written Lisp functions.
2577 2217
2578+++
2579** New 'sort' arguments and features. 2218** New 'sort' arguments and features.
2580The 'sort' function can now be called using the signature 2219The 'sort' function can now be called using the signature
2581 2220
@@ -2602,13 +2241,11 @@ its input in-place as before.
2602 2241
2603** New API for 'derived-mode-p' and control of the graph of major modes 2242** New API for 'derived-mode-p' and control of the graph of major modes
2604 2243
2605+++
2606*** 'derived-mode-p' now takes the list of modes as a single argument. 2244*** 'derived-mode-p' now takes the list of modes as a single argument.
2607The same holds for 'provided-mode-derived-p'. 2245The same holds for 'provided-mode-derived-p'.
2608The old calling convention where multiple modes are passed as 2246The old calling convention where multiple modes are passed as
2609separate arguments is deprecated. 2247separate arguments is deprecated.
2610 2248
2611+++
2612*** New functions to access the graph of major modes. 2249*** New functions to access the graph of major modes.
2613While 'define-derived-mode' still only supports single inheritance, 2250While 'define-derived-mode' still only supports single inheritance,
2614modes can declare additional parents (for tests like 'derived-mode-p') 2251modes can declare additional parents (for tests like 'derived-mode-p')
@@ -2617,7 +2254,6 @@ Accessing the 'derived-mode-parent' property directly is now
2617deprecated in favor of the new functions 'derived-mode-set-parent' 2254deprecated in favor of the new functions 'derived-mode-set-parent'
2618and 'derived-mode-all-parents'. 2255and 'derived-mode-all-parents'.
2619 2256
2620+++
2621** Drag-and-drop functions can now be called once for compound drops. 2257** Drag-and-drop functions can now be called once for compound drops.
2622It is now possible for drag-and-drop handler functions to respond to 2258It is now possible for drag-and-drop handler functions to respond to
2623drops incorporating more than one URL. Functions capable of this must 2259drops incorporating more than one URL. Functions capable of this must
@@ -2627,7 +2263,6 @@ See the Info node "(elisp) Drag and Drop".
2627The function 'dnd-handle-one-url' has been made obsolete, since it 2263The function 'dnd-handle-one-url' has been made obsolete, since it
2628cannot take these new handlers into account. 2264cannot take these new handlers into account.
2629 2265
2630+++
2631** 'notifications-notify' can use Icon Naming Specification for ':app-icon'. 2266** 'notifications-notify' can use Icon Naming Specification for ':app-icon'.
2632You can use a symbol as the value for ':app-icon' to provide icon name 2267You can use a symbol as the value for ':app-icon' to provide icon name
2633without specifying a file, like this: 2268without specifying a file, like this:
@@ -2635,54 +2270,45 @@ without specifying a file, like this:
2635 (notifications-notify 2270 (notifications-notify
2636 :title "I am playing music" :app-icon 'multimedia-player) 2271 :title "I am playing music" :app-icon 'multimedia-player)
2637 2272
2638---
2639** New function 're-disassemble' to see the innards of a regexp. 2273** New function 're-disassemble' to see the innards of a regexp.
2640If you built Emacs with '--enable-checking', you can use this to help 2274If you built Emacs with '--enable-checking', you can use this to help
2641debug either your regexp performance problems or the regexp engine. 2275debug either your regexp performance problems or the regexp engine.
2642 2276
2643+++
2644** XLFDs are no longer restricted to 255 characters. 2277** XLFDs are no longer restricted to 255 characters.
2645'font-xlfd-name' now returns an XLFD even if it is greater than 255 2278'font-xlfd-name' now returns an XLFD even if it is greater than 255
2646characters in length, provided that the LONG_XLFDs argument is true. 2279characters in length, provided that the LONG_XLFDs argument is true.
2647Other features in Emacs which employ XLFDs have been modified to 2280Other features in Emacs which employ XLFDs have been modified to
2648produce and understand XLFDs larger than 255 characters. 2281produce and understand XLFDs larger than 255 characters.
2649 2282
2650+++
2651** New macro 'static-if' for conditional evaluation of code. 2283** New macro 'static-if' for conditional evaluation of code.
2652This macro hides a form from the evaluator or byte-compiler based on a 2284This macro hides a form from the evaluator or byte-compiler based on a
2653compile-time condition. This is handy for avoiding byte-compilation 2285compile-time condition. This is handy for avoiding byte-compilation
2654warnings about code that will never actually run under some conditions. 2286warnings about code that will never actually run under some conditions.
2655 2287
2656+++
2657** Desktop notifications are now supported on the Haiku operating system. 2288** Desktop notifications are now supported on the Haiku operating system.
2658The new function 'haiku-notifications-notify' provides a subset of the 2289The new function 'haiku-notifications-notify' provides a subset of the
2659capabilities of the 'notifications-notify' function in a manner 2290capabilities of the 'notifications-notify' function in a manner
2660analogous to 'w32-notification-notify'. 2291analogous to 'w32-notification-notify'.
2661 2292
2662---
2663** New Haiku specific variable 'haiku-pass-control-tab-to-system'. 2293** New Haiku specific variable 'haiku-pass-control-tab-to-system'.
2664This sets whether Emacs should pass 'C-TAB' on to the system instead of 2294This sets whether Emacs should pass 'C-TAB' on to the system instead of
2665handling it, fixing a problem where window switching would not activate 2295handling it, fixing a problem where window switching would not activate
2666if an Emacs frame had focus on the Haiku operating system. Default 2296if an Emacs frame had focus on the Haiku operating system. Default
2667value is t. 2297value is t.
2668 2298
2669+++
2670** New value 'if-regular' for the REPLACE argument to 'insert-file-contents'. 2299** New value 'if-regular' for the REPLACE argument to 'insert-file-contents'.
2671It results in 'insert-file-contents' erasing the buffer instead of 2300It results in 'insert-file-contents' erasing the buffer instead of
2672preserving markers if the file being inserted is not a regular file, 2301preserving markers if the file being inserted is not a regular file,
2673rather than signaling an error. 2302rather than signaling an error.
2674 2303
2675+++
2676** New variable 'current-key-remap-sequence'. 2304** New variable 'current-key-remap-sequence'.
2677It is bound to the key sequence that caused a call to a function bound 2305It is bound to the key sequence that caused a call to a function bound
2678within 'function-key-map' or 'input-decode-map' around those calls. 2306within 'function-key-map' or 'input-decode-map' around those calls.
2679 2307
2680+++
2681** The function 'key-translate' can now remove translations. 2308** The function 'key-translate' can now remove translations.
2682If the second argument TO is nil, the existing key translation is 2309If the second argument TO is nil, the existing key translation is
2683removed. 2310removed.
2684 2311
2685+++
2686** New variables describing the names of built in programs. 2312** New variables describing the names of built in programs.
2687The new variables 'ctags-program-name', 'ebrowse-program-name', 2313The new variables 'ctags-program-name', 'ebrowse-program-name',
2688'etags-program-name', 'hexl-program-name', 'emacsclient-program-name' 2314'etags-program-name', 'hexl-program-name', 'emacsclient-program-name'
@@ -2690,7 +2316,6 @@ The new variables 'ctags-program-name', 'ebrowse-program-name',
2690instead of "ctags", "ebrowse", "etags", "hexl", "emacsclient", and 2316instead of "ctags", "ebrowse", "etags", "hexl", "emacsclient", and
2691"rcs2log", when starting one of these built in programs in a subprocess. 2317"rcs2log", when starting one of these built in programs in a subprocess.
2692 2318
2693+++
2694** New variable 'case-symbols-as-words' affects case operations for symbols. 2319** New variable 'case-symbols-as-words' affects case operations for symbols.
2695If non-nil, then case operations such as 'upcase-initials' or 2320If non-nil, then case operations such as 'upcase-initials' or
2696'replace-match' (with nil FIXEDCASE) will treat the entire symbol name 2321'replace-match' (with nil FIXEDCASE) will treat the entire symbol name
@@ -2698,7 +2323,6 @@ as a single word. This is useful for programming languages and styles
2698where only the first letter of a symbol's name is ever capitalized. 2323where only the first letter of a symbol's name is ever capitalized.
2699The default value of this variable is nil. 2324The default value of this variable is nil.
2700 2325
2701---
2702** Bytecode is now always loaded eagerly. 2326** Bytecode is now always loaded eagerly.
2703Bytecode compiled with older Emacs versions for lazy loading using 2327Bytecode compiled with older Emacs versions for lazy loading using
2704'byte-compile-dynamic' is now loaded all at once. 2328'byte-compile-dynamic' is now loaded all at once.
@@ -2706,7 +2330,6 @@ As a consequence, 'fetch-bytecode' has no use, does nothing, and is
2706now obsolete. The variable 'byte-compile-dynamic' has no effect any 2330now obsolete. The variable 'byte-compile-dynamic' has no effect any
2707more; compilation will always yield bytecode for eager loading. 2331more; compilation will always yield bytecode for eager loading.
2708 2332
2709+++
2710** Returned strings from functions and macros are never docstrings. 2333** Returned strings from functions and macros are never docstrings.
2711Functions and macros whose bodies consist of a single string literal now 2334Functions and macros whose bodies consist of a single string literal now
2712only return that string, and will not use it as a docstring. Example: 2335only return that string, and will not use it as a docstring. Example:
@@ -2724,7 +2347,6 @@ forms; other defining forms such as 'cl-defun' already worked this way.
2724 2347
2725** New or changed byte-compilation warnings 2348** New or changed byte-compilation warnings
2726 2349
2727---
2728*** Warn about missing 'lexical-binding' directive. 2350*** Warn about missing 'lexical-binding' directive.
2729The compiler now warns if an Elisp file lacks the standard 2351The compiler now warns if an Elisp file lacks the standard
2730'-*- lexical-binding: ... -*-' cookie on the first line. 2352'-*- lexical-binding: ... -*-' cookie on the first line.
@@ -2748,7 +2370,6 @@ the line
2748 2370
2749first in the file to declare that it uses the old dialect. 2371first in the file to declare that it uses the old dialect.
2750 2372
2751---
2752*** Warn about empty bodies for more special forms and macros. 2373*** Warn about empty bodies for more special forms and macros.
2753The compiler now warns about an empty body argument to 'when', 2374The compiler now warns about an empty body argument to 'when',
2754'unless', 'ignore-error' and 'with-suppressed-warnings' in addition to 2375'unless', 'ignore-error' and 'with-suppressed-warnings' in addition to
@@ -2759,7 +2380,6 @@ the existing warnings for 'let' and 'let*'. Example:
2759This warning can be suppressed using 'with-suppressed-warnings' with 2380This warning can be suppressed using 'with-suppressed-warnings' with
2760the warning name 'empty-body'. 2381the warning name 'empty-body'.
2761 2382
2762---
2763*** Warn about quoted error names in 'condition-case' and 'ignore-error'. 2383*** Warn about quoted error names in 'condition-case' and 'ignore-error'.
2764The compiler now warns about quoted condition (error) names 2384The compiler now warns about quoted condition (error) names
2765in 'condition-case' and 'ignore-error'. Example: 2385in 'condition-case' and 'ignore-error'. Example:
@@ -2771,7 +2391,6 @@ in 'condition-case' and 'ignore-error'. Example:
2771Quoting them adds the error name 'quote' to those handled or ignored 2391Quoting them adds the error name 'quote' to those handled or ignored
2772respectively, which was probably not intended. 2392respectively, which was probably not intended.
2773 2393
2774---
2775*** Warn about comparison with literal constants without defined identity. 2394*** Warn about comparison with literal constants without defined identity.
2776The compiler now warns about comparisons by identity with a literal 2395The compiler now warns about comparisons by identity with a literal
2777string, cons, vector, record, function, large integer or float as this 2396string, cons, vector, record, function, large integer or float as this
@@ -2792,7 +2411,6 @@ compared reliably at all.
2792This warning can be suppressed using 'with-suppressed-warnings' with 2411This warning can be suppressed using 'with-suppressed-warnings' with
2793the warning name 'suspicious'. 2412the warning name 'suspicious'.
2794 2413
2795---
2796*** Warn about 'condition-case' without handlers. 2414*** Warn about 'condition-case' without handlers.
2797The compiler now warns when the 'condition-case' form is used without 2415The compiler now warns when the 'condition-case' form is used without
2798any actual handlers, as in 2416any actual handlers, as in
@@ -2807,7 +2425,6 @@ was to catch all errors, add an explicit handler for 'error', or use
2807This warning can be suppressed using 'with-suppressed-warnings' with 2425This warning can be suppressed using 'with-suppressed-warnings' with
2808the warning name 'suspicious'. 2426the warning name 'suspicious'.
2809 2427
2810---
2811*** Warn about 'unwind-protect' without unwind forms. 2428*** Warn about 'unwind-protect' without unwind forms.
2812The compiler now warns when the 'unwind-protect' form is used without 2429The compiler now warns when the 'unwind-protect' form is used without
2813any unwind forms, as in 2430any unwind forms, as in
@@ -2822,7 +2439,6 @@ simplified away.
2822This warning can be suppressed using 'with-suppressed-warnings' with 2439This warning can be suppressed using 'with-suppressed-warnings' with
2823the warning name 'suspicious'. 2440the warning name 'suspicious'.
2824 2441
2825---
2826*** Warn about useless trailing 'cond' clauses. 2442*** Warn about useless trailing 'cond' clauses.
2827The compiler now warns when a 'cond' form contains clauses following a 2443The compiler now warns when a 'cond' form contains clauses following a
2828default (unconditional) clause. Example: 2444default (unconditional) clause. Example:
@@ -2837,7 +2453,6 @@ perhaps due to misplaced parens.
2837This warning can be suppressed using 'with-suppressed-warnings' with 2453This warning can be suppressed using 'with-suppressed-warnings' with
2838the warning name 'suspicious'. 2454the warning name 'suspicious'.
2839 2455
2840---
2841*** Warn about mutation of constant values. 2456*** Warn about mutation of constant values.
2842The compiler now warns about code that modifies program constants in 2457The compiler now warns about code that modifies program constants in
2843some obvious cases. Examples: 2458some obvious cases. Examples:
@@ -2857,7 +2472,6 @@ instead.
2857This warning can be suppressed using 'with-suppressed-warnings' with 2472This warning can be suppressed using 'with-suppressed-warnings' with
2858the warning name 'mutate-constant'. 2473the warning name 'mutate-constant'.
2859 2474
2860---
2861*** Warn about more ignored function return values. 2475*** Warn about more ignored function return values.
2862The compiler now warns when the return value from certain functions is 2476The compiler now warns when the return value from certain functions is
2863implicitly ignored. Example: 2477implicitly ignored. Example:
@@ -2875,7 +2489,6 @@ name 'ignored-return-value'.
2875The warning will only be issued for calls to functions declared 2489The warning will only be issued for calls to functions declared
2876'important-return-value' or 'side-effect-free' (but not 'error-free'). 2490'important-return-value' or 'side-effect-free' (but not 'error-free').
2877 2491
2878---
2879*** Warn about docstrings that contain control characters. 2492*** Warn about docstrings that contain control characters.
2880The compiler now warns about docstrings with control characters other 2493The compiler now warns about docstrings with control characters other
2881than newline and tab. This is often a result of improper escaping. 2494than newline and tab. This is often a result of improper escaping.
@@ -2890,11 +2503,9 @@ where the docstring contains the four control characters 'CR', 'DEL',
2890 2503
2891The warning name is 'docstrings-control-chars'. 2504The warning name is 'docstrings-control-chars'.
2892 2505
2893---
2894*** The warning about wide docstrings can now be disabled separately. 2506*** The warning about wide docstrings can now be disabled separately.
2895Its warning name is 'docstrings-wide'. 2507Its warning name is 'docstrings-wide'.
2896 2508
2897+++
2898** 'fset', 'defalias' and 'defvaralias' now signal an error for cyclic aliases. 2509** 'fset', 'defalias' and 'defvaralias' now signal an error for cyclic aliases.
2899Previously, 'fset', 'defalias' and 'defvaralias' could be made to 2510Previously, 'fset', 'defalias' and 'defvaralias' could be made to
2900build circular function and variable indirection chains as in 2511build circular function and variable indirection chains as in
@@ -2911,25 +2522,20 @@ Their 'noerror' arguments have no effect and are therefore obsolete.
2911 2522
2912** Touch Screen support 2523** Touch Screen support
2913 2524
2914+++
2915*** 'x-popup-menu' now understands touch screen events. 2525*** 'x-popup-menu' now understands touch screen events.
2916When a 'touchscreen-begin' or 'touchscreen-end' event is passed as the 2526When a 'touchscreen-begin' or 'touchscreen-end' event is passed as the
2917POSITION argument, it will behave as if that event was a mouse event. 2527POSITION argument, it will behave as if that event was a mouse event.
2918 2528
2919+++
2920*** New functions for handling touch screen events. 2529*** New functions for handling touch screen events.
2921The new functions 'touch-screen-track-tap' and 'touch-screen-track-drag' 2530The new functions 'touch-screen-track-tap' and 'touch-screen-track-drag'
2922handle tracking common touch screen gestures from within a command. 2531handle tracking common touch screen gestures from within a command.
2923 2532
2924+++
2925*** New parameter to 'touchscreen-end' events. 2533*** New parameter to 'touchscreen-end' events.
2926CANCEL non-nil establishes that the touch sequence has been intercepted 2534CANCEL non-nil establishes that the touch sequence has been intercepted
2927by programs such as window managers and should be ignored with Emacs. 2535by programs such as window managers and should be ignored with Emacs.
2928 2536
2929---
2930** New variable 'inhibit-auto-fill' to temporarily prevent auto-fill. 2537** New variable 'inhibit-auto-fill' to temporarily prevent auto-fill.
2931 2538
2932+++
2933** New variable 'secondary-tool-bar-map'. 2539** New variable 'secondary-tool-bar-map'.
2934If non-nil, this variable contains a keymap of menu items that are 2540If non-nil, this variable contains a keymap of menu items that are
2935displayed along tool bar items defined by 'tool-bar-map'. These items 2541displayed along tool bar items defined by 'tool-bar-map'. These items
@@ -2937,7 +2543,6 @@ are displayed below the tool bar if the value of 'tool-bar-position' is
2937'top', and above it if the value is 'bottom'. This is used by 2543'top', and above it if the value is 'bottom'. This is used by
2938'modifier-bar-mode'. 2544'modifier-bar-mode'.
2939 2545
2940---
2941** New variable 'completion-lazy-hilit'. 2546** New variable 'completion-lazy-hilit'.
2942Lisp programs that present completion candidates may bind this 2547Lisp programs that present completion candidates may bind this
2943variable non-nil around calls to functions such as 2548variable non-nil around calls to functions such as
@@ -2946,12 +2551,10 @@ styles to skip eager fontification of completion candidates, which
2946improves performance. Such a Lisp program can then use the 2551improves performance. Such a Lisp program can then use the
2947'completion-lazy-hilit' function to fontify candidates just in time. 2552'completion-lazy-hilit' function to fontify candidates just in time.
2948 2553
2949+++
2950** New primitive 'buffer-last-name'. 2554** New primitive 'buffer-last-name'.
2951It returns the name of a buffer before the last time it was renamed or 2555It returns the name of a buffer before the last time it was renamed or
2952killed. 2556killed.
2953 2557
2954+++
2955** New primitive 'marker-last-position'. 2558** New primitive 'marker-last-position'.
2956It returns the last position of a marker in its buffer even if that 2559It returns the last position of a marker in its buffer even if that
2957buffer has been killed. ('marker-position' would return nil in that 2560buffer has been killed. ('marker-position' would return nil in that
@@ -2959,34 +2562,28 @@ case.)
2959 2562
2960** Functions and variables to transpose sexps 2563** Functions and variables to transpose sexps
2961 2564
2962---
2963*** New helper variable 'transpose-sexps-function'. 2565*** New helper variable 'transpose-sexps-function'.
2964Lisp programs can now set this variable to customize the behavior of the 2566Lisp programs can now set this variable to customize the behavior of the
2965'transpose-sexps' command. 2567'transpose-sexps' command.
2966 2568
2967---
2968*** New function 'transpose-sexps-default-function'. 2569*** New function 'transpose-sexps-default-function'.
2969The previous implementation of 'transpose-sexps' was moved into its own 2570The previous implementation of 'transpose-sexps' was moved into its own
2970function, to be used in 'transpose-sexps-function'. 2571function, to be used in 'transpose-sexps-function'.
2971 2572
2972---
2973*** New function 'treesit-transpose-sexps'. 2573*** New function 'treesit-transpose-sexps'.
2974Tree-sitter now unconditionally sets 'transpose-sexps-function' for all 2574Tree-sitter now unconditionally sets 'transpose-sexps-function' for all
2975tree-sitter enabled modes to this function. 2575tree-sitter enabled modes to this function.
2976 2576
2977** Functions and variables to move by program statements 2577** Functions and variables to move by program statements
2978 2578
2979+++
2980*** New variable 'forward-sentence-function'. 2579*** New variable 'forward-sentence-function'.
2981Major modes can now set this variable to customize the behavior of the 2580Major modes can now set this variable to customize the behavior of the
2982'forward-sentence' command. 2581'forward-sentence' command.
2983 2582
2984---
2985*** New function 'forward-sentence-default-function'. 2583*** New function 'forward-sentence-default-function'.
2986The previous implementation of 'forward-sentence' is moved into its 2584The previous implementation of 'forward-sentence' is moved into its
2987own function, to be bound by 'forward-sentence-function'. 2585own function, to be bound by 'forward-sentence-function'.
2988 2586
2989+++
2990*** New function 'treesit-forward-sentence'. 2587*** New function 'treesit-forward-sentence'.
2991All tree-sitter enabled modes that define 'sentence' in 2588All tree-sitter enabled modes that define 'sentence' in
2992'treesit-thing-settings' now set 'forward-sentence-function' to call 2589'treesit-thing-settings' now set 'forward-sentence-function' to call
@@ -2994,13 +2591,11 @@ All tree-sitter enabled modes that define 'sentence' in
2994 2591
2995** Functions and variables to move by program sexps 2592** Functions and variables to move by program sexps
2996 2593
2997+++
2998*** New function 'treesit-forward-sexp'. 2594*** New function 'treesit-forward-sexp'.
2999Tree-sitter conditionally sets 'forward-sexp-function' for major modes 2595Tree-sitter conditionally sets 'forward-sexp-function' for major modes
3000that have defined 'sexp' in 'treesit-thing-settings' to enable 2596that have defined 'sexp' in 'treesit-thing-settings' to enable
3001sexp-related motion commands. 2597sexp-related motion commands.
3002 2598
3003---
3004** New user option 'native-comp-async-warnings-errors-kind'. 2599** New user option 'native-comp-async-warnings-errors-kind'.
3005It allows control of what kinds of warnings and errors from asynchronous 2600It allows control of what kinds of warnings and errors from asynchronous
3006native compilation are reported to the parent Emacs process. The 2601native compilation are reported to the parent Emacs process. The
@@ -3011,7 +2606,6 @@ and see if you get only warnings that matter.
3011 2606
3012** Function 'declare' forms 2607** Function 'declare' forms
3013 2608
3014+++
3015*** New 'ftype' function declaration. 2609*** New 'ftype' function declaration.
3016The declaration '(ftype TYPE)' specifies the type of a function. 2610The declaration '(ftype TYPE)' specifies the type of a function.
3017Example: 2611Example:
@@ -3027,24 +2621,20 @@ native compiler to produce better code, but specifying an incorrect type
3027may lead to Emacs crashing. See the Info node "(elisp) Declare Form" 2621may lead to Emacs crashing. See the Info node "(elisp) Declare Form"
3028for further information. 2622for further information.
3029 2623
3030+++
3031*** New 'important-return-value' function declaration and property. 2624*** New 'important-return-value' function declaration and property.
3032The declaration '(important-return-value t)' sets the 2625The declaration '(important-return-value t)' sets the
3033'important-return-value' property which indicates that the function 2626'important-return-value' property which indicates that the function
3034return value should probably not be thrown away implicitly. 2627return value should probably not be thrown away implicitly.
3035 2628
3036+++
3037** New functions 'file-user-uid' and 'file-group-gid'. 2629** New functions 'file-user-uid' and 'file-group-gid'.
3038These functions are like 'user-uid' and 'group-gid', respectively, but 2630These functions are like 'user-uid' and 'group-gid', respectively, but
3039are aware of file name handlers, so they will return the remote UID or 2631are aware of file name handlers, so they will return the remote UID or
3040GID for remote files (or -1 if the connection has no associated user). 2632GID for remote files (or -1 if the connection has no associated user).
3041 2633
3042+++
3043** 'treesit-font-lock-rules' now accepts additional global keywords. 2634** 'treesit-font-lock-rules' now accepts additional global keywords.
3044When supplied with ':default-language LANGUAGE', rules after it will 2635When supplied with ':default-language LANGUAGE', rules after it will
3045default to use 'LANGUAGE'. 2636default to use 'LANGUAGE'.
3046 2637
3047---
3048** New optional argument to 'modify-dir-local-variable'. 2638** New optional argument to 'modify-dir-local-variable'.
3049An optional 5th argument FILE has been added to 2639An optional 5th argument FILE has been added to
3050'modify-dir-local-variable'. It can be used to specify which file to 2640'modify-dir-local-variable'. It can be used to specify which file to
@@ -3052,7 +2642,6 @@ modify instead of the default ".dir-locals.el".
3052 2642
3053** Connection local variables 2643** Connection local variables
3054 2644
3055+++
3056*** New macros 'connection-local-p' and 'connection-local-value'. 2645*** New macros 'connection-local-p' and 'connection-local-value'.
3057The former macro returns non-nil if a variable has a connection-local 2646The former macro returns non-nil if a variable has a connection-local
3058binding. The latter macro returns the connection-local value of a 2647binding. The latter macro returns the connection-local value of a
@@ -3060,14 +2649,12 @@ variable if any, or its current value.
3060 2649
3061** Hash tables 2650** Hash tables
3062 2651
3063+++
3064*** ':rehash-size' and ':rehash-threshold' args no longer have any effect. 2652*** ':rehash-size' and ':rehash-threshold' args no longer have any effect.
3065These keyword arguments are now ignored by 'make-hash-table'. Emacs 2653These keyword arguments are now ignored by 'make-hash-table'. Emacs
3066manages the memory for all hash table objects in the same way. 2654manages the memory for all hash table objects in the same way.
3067The functions 'hash-table-rehash-size' and 'hash-table-rehash-threshold' 2655The functions 'hash-table-rehash-size' and 'hash-table-rehash-threshold'
3068remain for compatibility but now always return the old default values. 2656remain for compatibility but now always return the old default values.
3069 2657
3070+++
3071*** The printed representation has been shrunk and simplified. 2658*** The printed representation has been shrunk and simplified.
3072The 'test' parameter is omitted if it is 'eql' (the default), as is 2659The 'test' parameter is omitted if it is 'eql' (the default), as is
3073'data' if empty. 'rehash-size', 'rehash-threshold' and 'size' are 2660'data' if empty. 'rehash-size', 'rehash-threshold' and 'size' are
@@ -3075,7 +2662,6 @@ always omitted, and ignored if present when the object is read back in.
3075 2662
3076** Obarrays 2663** Obarrays
3077 2664
3078+++
3079*** New obarray type. 2665*** New obarray type.
3080Obarrays are now represented by an opaque type instead of using vectors. 2666Obarrays are now represented by an opaque type instead of using vectors.
3081They are created by 'obarray-make' and manage their internal storage 2667They are created by 'obarray-make' and manage their internal storage
@@ -3091,14 +2677,11 @@ with something other than 0, as in '(make-vector N nil)', will no longer
3091work, and should be rewritten to use 'obarray-make'. Alternatively, you 2677work, and should be rewritten to use 'obarray-make'. Alternatively, you
3092can fill the vector with 0. 2678can fill the vector with 0.
3093 2679
3094+++
3095*** New function 'obarray-clear' removes all symbols from an obarray. 2680*** New function 'obarray-clear' removes all symbols from an obarray.
3096 2681
3097---
3098*** 'obarray-size' and 'obarray-default-size' are now obsolete. 2682*** 'obarray-size' and 'obarray-default-size' are now obsolete.
3099They pertained to the internal storage size which is now irrelevant. 2683They pertained to the internal storage size which is now irrelevant.
3100 2684
3101+++
3102** 'treesit-install-language-grammar' can handle local directory instead of URL. 2685** 'treesit-install-language-grammar' can handle local directory instead of URL.
3103It is now possible to pass a directory of a local repository as URL 2686It is now possible to pass a directory of a local repository as URL
3104inside 'treesit-language-source-alist', so that calling 2687inside 'treesit-language-source-alist', so that calling
@@ -3106,22 +2689,18 @@ inside 'treesit-language-source-alist', so that calling
3106It may be useful, for example, for the purposes of bisecting a 2689It may be useful, for example, for the purposes of bisecting a
3107treesitter grammar. 2690treesitter grammar.
3108 2691
3109+++
3110** New buffer-local variable 'tabulated-list-groups'. 2692** New buffer-local variable 'tabulated-list-groups'.
3111It controls display and separate sorting of groups of entries. By 2693It controls display and separate sorting of groups of entries. By
3112default no grouping or sorting is done. 2694default no grouping or sorting is done.
3113 2695
3114+++
3115** New variable 'revert-buffer-restore-functions'. 2696** New variable 'revert-buffer-restore-functions'.
3116It helps to preserve various states after reverting the buffer. 2697It helps to preserve various states after reverting the buffer.
3117 2698
3118---
3119** New text property 'context-menu-functions'. 2699** New text property 'context-menu-functions'.
3120Like the variable with the same name, it adds menus from the list that 2700Like the variable with the same name, it adds menus from the list that
3121is the value of the property to context menus shown when clicking on the 2701is the value of the property to context menus shown when clicking on the
3122text which as this property. 2702text which as this property.
3123 2703
3124---
3125** Detecting the end of an iteration of a keyboard macro. 2704** Detecting the end of an iteration of a keyboard macro.
3126'read-event', 'read-char', and 'read-char-exclusive' no longer return -1 2705'read-event', 'read-char', and 'read-char-exclusive' no longer return -1
3127when called at the end of an iteration of the execution of a keyboard 2706when called at the end of an iteration of the execution of a keyboard
@@ -3133,7 +2712,6 @@ aforementioned functions:
3133 (and (arrayp executing-kbd-macro) 2712 (and (arrayp executing-kbd-macro)
3134 (>= executing-kbd-macro-index (length executing-kbd-macro))) 2713 (>= executing-kbd-macro-index (length executing-kbd-macro)))
3135 2714
3136+++
3137** 'vtable-update-object' updates an existing object with just two arguments. 2715** 'vtable-update-object' updates an existing object with just two arguments.
3138It is now possible to update the representation of an object in a vtable 2716It is now possible to update the representation of an object in a vtable
3139by calling 'vtable-update-object' with just the vtable and the object as 2717by calling 'vtable-update-object' with just the vtable and the object as
@@ -3142,7 +2720,6 @@ this case, would mean repeating the object in the argument list.) When
3142replacing an object with a different one, passing both the new and old 2720replacing an object with a different one, passing both the new and old
3143objects is still necessary. 2721objects is still necessary.
3144 2722
3145+++
3146** 'vtable-insert-object' can insert "before" or at an index. 2723** 'vtable-insert-object' can insert "before" or at an index.
3147The signature of 'vtable-insert-object' has changed and is now: 2724The signature of 'vtable-insert-object' has changed and is now:
3148 2725
@@ -3155,7 +2732,6 @@ this was not possible.) In addition, LOCATION can be an integer, a
3155(zero-based) index into the table at which the new object is inserted 2732(zero-based) index into the table at which the new object is inserted
3156(BEFORE is ignored in this case). 2733(BEFORE is ignored in this case).
3157 2734
3158+++
3159** New function 'sqlite-execute-batch'. 2735** New function 'sqlite-execute-batch'.
3160This function lets the user execute multiple SQL statements in one go. 2736This function lets the user execute multiple SQL statements in one go.
3161It is useful, for example, when a Lisp program needs to evaluate an 2737It is useful, for example, when a Lisp program needs to evaluate an
@@ -3163,45 +2739,37 @@ entire SQL file.
3163 2739
3164** JSON 2740** JSON
3165 2741
3166+++
3167*** 'json-serialize' now always returns a unibyte string. 2742*** 'json-serialize' now always returns a unibyte string.
3168This is appropriate since it is an encoding operation. In the unlikely 2743This is appropriate since it is an encoding operation. In the unlikely
3169event that a multibyte string is needed, the result can be decoded using 2744event that a multibyte string is needed, the result can be decoded using
3170 2745
3171 (decode-coding-string RESULT 'utf-8) 2746 (decode-coding-string RESULT 'utf-8)
3172 2747
3173---
3174*** The parser keeps duplicated object keys in alist and plist output. 2748*** The parser keeps duplicated object keys in alist and plist output.
3175A JSON object such as '{"a":1,"a":2}' will now be translated into the 2749A JSON object such as '{"a":1,"a":2}' will now be translated into the
3176Lisp values '((a . 1) (a . 2))' or '(:a 1 :a 2)' if alist or plist 2750Lisp values '((a . 1) (a . 2))' or '(:a 1 :a 2)' if alist or plist
3177object types are requested. 2751object types are requested.
3178 2752
3179---
3180*** The parser sometimes signals different types of errors. 2753*** The parser sometimes signals different types of errors.
3181It will now signal 'json-utf8-decode-error' for inputs that are not 2754It will now signal 'json-utf8-decode-error' for inputs that are not
3182correctly UTF-8 encoded. 2755correctly UTF-8 encoded.
3183 2756
3184---
3185*** The parser and encoder now accept arbitrarily large integers. 2757*** The parser and encoder now accept arbitrarily large integers.
3186Previously, they were limited to the range of signed 64-bit integers. 2758Previously, they were limited to the range of signed 64-bit integers.
3187 2759
3188** New tree-sitter functions and variables for defining and using "things" 2760** New tree-sitter functions and variables for defining and using "things"
3189 2761
3190+++
3191*** New variable 'treesit-thing-settings'. 2762*** New variable 'treesit-thing-settings'.
3192It allows modes to define "things" like 'defun', 'text', 'sexp', and 2763It allows modes to define "things" like 'defun', 'text', 'sexp', and
3193'sentence' for navigation commands and tree-traversal functions. 2764'sentence' for navigation commands and tree-traversal functions.
3194 2765
3195+++
3196*** New functions for navigating "things". 2766*** New functions for navigating "things".
3197There are new navigation functions 'treesit-thing-prev', 2767There are new navigation functions 'treesit-thing-prev',
3198'treesit-thing-next', 'treesit-navigate-thing', 2768'treesit-thing-next', 'treesit-navigate-thing',
3199'treesit-beginning-of-thing', and 'treesit-end-of-thing'. 2769'treesit-beginning-of-thing', and 'treesit-end-of-thing'.
3200 2770
3201+++
3202*** New functions 'treesit-thing-at', 'treesit-thing-at-point'. 2771*** New functions 'treesit-thing-at', 'treesit-thing-at-point'.
3203 2772
3204+++
3205*** Tree-traversing functions. 2773*** Tree-traversing functions.
3206The functions 'treesit-search-subtree', 'treesit-search-forward', 2774The functions 'treesit-search-subtree', 'treesit-search-forward',
3207'treesit-search-forward-goto', and 'treesit-induce-sparse-tree' now 2775'treesit-search-forward-goto', and 'treesit-induce-sparse-tree' now
@@ -3211,14 +2779,12 @@ for the predicate argument.
3211 2779
3212** Other tree-sitter function and variable changes 2780** Other tree-sitter function and variable changes
3213 2781
3214+++
3215*** 'treesit-parser-list' now takes additional optional arguments. 2782*** 'treesit-parser-list' now takes additional optional arguments.
3216The additional arguments are LANGUAGE and TAG. If LANGUAGE is given, 2783The additional arguments are LANGUAGE and TAG. If LANGUAGE is given,
3217only return parsers for that language. If TAG is given, only return 2784only return parsers for that language. If TAG is given, only return
3218parsers with that tag. Note that passing nil as tag doesn't mean return 2785parsers with that tag. Note that passing nil as tag doesn't mean return
3219all parsers, but rather "all parsers with no tags". 2786all parsers, but rather "all parsers with no tags".
3220 2787
3221+++
3222*** New variable 'treesit-primary-parser'. 2788*** New variable 'treesit-primary-parser'.
3223This variable should be set by multi-langauge major modes before calling 2789This variable should be set by multi-langauge major modes before calling
3224'treesit-major-mode-setup', in order for tree-sitter integration 2790'treesit-major-mode-setup', in order for tree-sitter integration
@@ -3229,7 +2795,6 @@ functionalities to operate correctly.
3229 2795
3230** MS-Windows 2796** MS-Windows
3231 2797
3232+++
3233*** You can now opt out of following MS-Windows' Dark mode. 2798*** You can now opt out of following MS-Windows' Dark mode.
3234By default, Emacs on MS-Windows follows the system's Dark mode for its 2799By default, Emacs on MS-Windows follows the system's Dark mode for its
3235title bars' and scroll bars' appearance. If the new user option 2800title bars' and scroll bars' appearance. If the new user option
@@ -3237,7 +2802,6 @@ title bars' and scroll bars' appearance. If the new user option
3237will disregard the system's Dark mode and will always use the default 2802will disregard the system's Dark mode and will always use the default
3238Light mode. 2803Light mode.
3239 2804
3240---
3241*** You can now use Image-Dired even if the 'convert' program is not installed. 2805*** You can now use Image-Dired even if the 'convert' program is not installed.
3242If you don't have GraphicsMagick or ImageMagick installed, and thus the 2806If you don't have GraphicsMagick or ImageMagick installed, and thus the
3243'gm convert'/'convert' program is not available, Emacs on MS-Windows 2807'gm convert'/'convert' program is not available, Emacs on MS-Windows
@@ -3246,7 +2810,6 @@ thumbnail images and show them in the thumbnail buffer. Unlike with
3246using 'convert', this fallback method is synchronous, so Emacs will wait 2810using 'convert', this fallback method is synchronous, so Emacs will wait
3247until all the thumbnails are created and displayed, before showing them. 2811until all the thumbnails are created and displayed, before showing them.
3248 2812
3249---
3250*** Emacs on MS-Windows now supports the ':stipple' face attribute. 2813*** Emacs on MS-Windows now supports the ':stipple' face attribute.
3251 2814
3252 2815