aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2022-12-25 14:54:33 +0200
committerEli Zaretskii2022-12-25 14:54:33 +0200
commitdad73e4de194f6f652c22fcd542d8796926d4ec6 (patch)
tree07c5b1c46beb4f226a07f4d12a3edf5892996339
parent72786ae237e66ff42385a2ac36f422ebb21072df (diff)
downloademacs-dad73e4de194f6f652c22fcd542d8796926d4ec6.tar.gz
emacs-dad73e4de194f6f652c22fcd542d8796926d4ec6.zip
; Review and fix NEWS and related documentation
* etc/NEWS: Fix wording, punctuation, and markup. * lisp/emacs-lisp/subr-x.el (string-glyph-split): Doc fix. * doc/lispref/display.texi (Displaying Messages): Document 'set-message-functions'.
-rw-r--r--doc/lispref/display.texi14
-rw-r--r--etc/NEWS559
-rw-r--r--lisp/emacs-lisp/subr-x.el5
3 files changed, 338 insertions, 240 deletions
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 4111a86aa7e..e67b99b769c 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -346,6 +346,20 @@ The default value is the function that clears the message displayed in
346an active minibuffer. 346an active minibuffer.
347@end defvar 347@end defvar
348 348
349@defopt set-message-functions
350The value of this user option is a list of functions to be called for
351handling display of echo-area messages. Each function is called with
352one argument, the text of the message to display. If the function
353returns a string, that string replaces the original message, and the
354next function in the list is called with the new message text. If the
355function returns @code{nil}, the next function in the list is called
356with the same text; if the last function in the list returns
357@code{nil}, the message text is displayed in the echo area. If the
358function returns a non-@code{nil} value that is not a string, the
359message is considered to be handled, and no further functions in the
360list are called.
361@end defopt
362
349@defvar inhibit-message 363@defvar inhibit-message
350When this variable is non-@code{nil}, @code{message} and related functions 364When this variable is non-@code{nil}, @code{message} and related functions
351will not use the Echo Area to display messages. 365will not use the Echo Area to display messages.
diff --git a/etc/NEWS b/etc/NEWS
index 6f2f74fab46..5b804b82b7f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -106,7 +106,7 @@ If a constant file name is required, the file can be renamed to
106"emacs.pdmp", and Emacs will find it during startup anyway. 106"emacs.pdmp", and Emacs will find it during startup anyway.
107 107
108--- 108---
109** Emacs now uses XInput 2 for input events. 109** Emacs on X now uses XInput 2 for input events.
110If your X server has support and you have the XInput 2 development 110If your X server has support and you have the XInput 2 development
111headers installed, Emacs will use the X Input Extension for handling 111headers installed, Emacs will use the X Input Extension for handling
112input. If this causes problems, you can configure Emacs with the 112input. If this causes problems, you can configure Emacs with the
@@ -115,6 +115,19 @@ option '--without-xinput2' to disable this support.
115'(featurep 'xinput2)' can be used to test for the presence of XInput 2 115'(featurep 'xinput2)' can be used to test for the presence of XInput 2
116support from Lisp programs. 116support from Lisp programs.
117 117
118+++
119** Emacs now supports being built with pure GTK.
120To use this option, make sure the GTK 3 (version 3.22.23 or later) and
121Cairo development files are installed, and configure Emacs with the
122option '--with-pgtk'. Unlike the default X and GTK build, the
123resulting Emacs binary will work on any underlying window system
124supported by GDK, such as Wayland and Broadway. We recommend that you
125use this configuration only if you are running a window system other
126than X that's supported by GDK. Running this configuration on X is
127known to have problems, such as undesirable frame positioning and
128various issues with keyboard input of sequences such as 'C-;' and
129'C-S-u'.
130
118--- 131---
119** Emacs no longer reduces the size of the Japanese dictionary. 132** Emacs no longer reduces the size of the Japanese dictionary.
120Building Emacs includes generation of a Japanese dictionary, which is 133Building Emacs includes generation of a Japanese dictionary, which is
@@ -130,23 +143,10 @@ by saying
130 143
131after deleting "lisp/leim/ja-dic/ja-dic.el". 144after deleting "lisp/leim/ja-dic/ja-dic.el".
132 145
133+++
134** Emacs now supports being built with pure GTK.
135To use this option, make sure the GTK 3 (version 3.22.23 or later) and
136Cairo development files are installed, and configure Emacs with the
137option '--with-pgtk'. Unlike the default X and GTK build, the
138resulting Emacs binary will work on any underlying window system
139supported by GDK, such as Wayland and Broadway. We do not recommend
140that you use this configuration, unless you are running a window
141system that's supported by GDK other than X. Running this
142configuration on X is known to have problems, such as undesirable
143frame positioning and various issues with keyboard input of sequences
144such as 'C-;' and 'C-S-u'.
145
146--- 146---
147** The docstrings of preloaded files are not in "etc/DOC" any more. 147** The docstrings of preloaded files are not in "etc/DOC" any more.
148Instead, they're fetched as needed from the corresponding ".elc" file, 148Instead, they're fetched as needed from the corresponding ".elc"
149as was already the case for all the non-preloaded files. 149files, as was already the case for all the non-preloaded files.
150 150
151 151
152* Startup Changes in Emacs 29.1 152* Startup Changes in Emacs 29.1
@@ -172,16 +172,18 @@ the value of the final form.
172 172
173+++ 173+++
174** Emacs now supports setting 'user-emacs-directory' via '--init-directory'. 174** Emacs now supports setting 'user-emacs-directory' via '--init-directory'.
175Use the '--init-directory' command-line option to set
176'user-emacs-directory'.
175 177
176+++ 178+++
177** Emacs now has a '--fingerprint' option. 179** Emacs now has a '--fingerprint' option.
178This will output a string identifying the current Emacs build. 180This will output a string identifying the current Emacs build, and exit.
179 181
180+++ 182+++
181** New hook 'after-pdump-load-hook'. 183** New hook 'after-pdump-load-hook'.
182This is run at the end of the Emacs startup process, and is meant to 184This is run at the end of the Emacs startup process, and is meant to
183be used to reinitialize structures that would normally be done at load 185be used to reinitialize data structures that would normally be done at
184time. 186load time.
185 187
186** Native Compilation 188** Native Compilation
187 189
@@ -189,13 +191,15 @@ time.
189*** New variable 'inhibit-automatic-native-compilation'. 191*** New variable 'inhibit-automatic-native-compilation'.
190If set, Emacs will inhibit native compilation (and won't write 192If set, Emacs will inhibit native compilation (and won't write
191anything to the eln cache automatically). The variable is initialized 193anything to the eln cache automatically). The variable is initialized
192from the 'EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION' environment 194during Emacs startup from the environment variable
193variable on Emacs startup. 195'EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION'.
194 196
195--- 197---
196*** New command 'native-compile-prune-cache'. 198*** New command 'native-compile-prune-cache'.
197This command deletes older eln cache entries (but not the ones for 199This command deletes old subdirectories of the eln cache (but not the
198the current Emacs version). 200ones for the current Emacs version). Note that subdirectories of the
201system directory where the "*.eln" files are installed (usually, the
202last entry in 'native-comp-eln-load-path') are not deleted.
199 203
200--- 204---
201*** New function 'startup-redirect-eln-cache'. 205*** New function 'startup-redirect-eln-cache'.
@@ -219,12 +223,12 @@ moved to the 'i' keymap, so '+' is now 'i +', '-' is now 'i -', and
219you can rotate an image twice by saying 'i r r', for instance. 223you can rotate an image twice by saying 'i r r', for instance.
220 224
221+++ 225+++
222** Emacs now picks the correct coding system for X input methods. 226** Emacs now picks the correct coding-system for X input methods.
223Previously, Emacs would use the locale coding system for input 227Previously, Emacs would use 'locale-coding-system' for input
224methods, which could in some circumstances be incorrect, especially 228methods, which could in some circumstances be incorrect, especially
225when the input method chose to fall back to some other coding system. 229when the input method chose to fall back to some other coding system.
226 230
227Now, Emacs automatically detects the coding system used by input 231Emacs now automatically detects the coding-system used by input
228methods, and uses that to decode input in preference to the value of 232methods, and uses that to decode input in preference to the value of
229'locale-coding-system'. This unfortunately means that users who have 233'locale-coding-system'. This unfortunately means that users who have
230changed the coding system used to decode X keyboard input must adjust 234changed the coding system used to decode X keyboard input must adjust
@@ -244,7 +248,7 @@ names to be excluded from adding such excerpts.
244In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted 248In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted
245off. In Emacs 28.1, the mode was switched on in all buffers. In 249off. In Emacs 28.1, the mode was switched on in all buffers. In
246Emacs 29.1, this was changed to be switched on in all editing-related 250Emacs 29.1, this was changed to be switched on in all editing-related
247buffers, but not in buffers that inherit from 'special-mode'. To get 251buffers, but not in buffers that inherit from 'special-mode'. To go
248back to how things worked in Emacs 28.1, put the following in your 252back to how things worked in Emacs 28.1, put the following in your
249init file: 253init file:
250 254
@@ -291,7 +295,7 @@ mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot
291files. These now work equivalently. 295files. These now work equivalently.
292 296
293+++ 297+++
294** Warning about "eager macro-expansion failure" is changed into an error. 298** Warning about "eager macro-expansion failure" is now an error.
295 299
296--- 300---
297** Previously, the X "reverseVideo" value at startup was heeded for all frames. 301** Previously, the X "reverseVideo" value at startup was heeded for all frames.
@@ -324,9 +328,9 @@ this off, disable the new 'isearch-fold-quotes-mode' minor mode.
324** Sorting commands no longer necessarily change modification status. 328** Sorting commands no longer necessarily change modification status.
325In earlier Emacs versions, commands like 'M-x sort-lines' would always 329In earlier Emacs versions, commands like 'M-x sort-lines' would always
326change buffer modification status to "modified", whether they changed 330change buffer modification status to "modified", whether they changed
327something in the buffer or not. This has been changed: The buffer is 331something in the buffer or not. This has been changed: the buffer is
328marked as modified only if the sorting ended up changing the contents 332marked as modified only if the sorting ended up actually changing the
329of the buffer. 333contents of the buffer.
330 334
331--- 335---
332** 'string-lines' handles trailing newlines differently. 336** 'string-lines' handles trailing newlines differently.
@@ -355,7 +359,7 @@ your Init file:
355 359
356--- 360---
357** New user option 'term-clear-full-screen-programs'. 361** New user option 'term-clear-full-screen-programs'.
358By default, term will now work like most terminals when displaying 362By default, term.el will now work like most terminals when displaying
359full-screen programs: When they exit, the output is cleared, leaving 363full-screen programs: When they exit, the output is cleared, leaving
360what was displayed in the window before the programs started. Set 364what was displayed in the window before the programs started. Set
361this user option to nil to revert back to the old behavior. 365this user option to nil to revert back to the old behavior.
@@ -452,8 +456,8 @@ Names of thumbnail files generated when 'image-dired-thumbnail-storage'
452is 'image-dired' now always end in ".jpg". This fixes various issues 456is 'image-dired' now always end in ".jpg". This fixes various issues
453on different platforms, but means that thumbnails generated in Emacs 28 457on different platforms, but means that thumbnails generated in Emacs 28
454will not be used in Emacs 29, and vice-versa. If disk space is an 458will not be used in Emacs 29, and vice-versa. If disk space is an
455issue, consider deleting the 'image-dired-dir' directory after 459issue, consider deleting the 'image-dired-dir' directory (usually
456upgrading (usually "~/.emacs.d/image-dired/"). 460"~/.emacs.d/image-dired/") after upgrading to Emacs 29.
457 461
458--- 462---
459** The 'rlogin' method in the URL library is now obsolete. 463** The 'rlogin' method in the URL library is now obsolete.
@@ -506,7 +510,7 @@ We recommend using 'M-x image-dired' instead.
506** The autoarg.el library is now marked obsolete. 510** The autoarg.el library is now marked obsolete.
507This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor 511This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor
508modes to emulate the behavior of the historical editor Twenex Emacs. 512modes to emulate the behavior of the historical editor Twenex Emacs.
509It is believed to no longer be useful. 513We believe it is no longer useful.
510 514
511--- 515---
512** The quickurl.el library is now obsolete. 516** The quickurl.el library is now obsolete.
@@ -521,7 +525,7 @@ Use something like 'M-x shell RET ssh <host> RET' instead.
521 525
522--- 526---
523** The autoload.el library is now obsolete. 527** The autoload.el library is now obsolete.
524It is superseded by the loaddefs-gen.el library. 528It is superseded by the new loaddefs-gen.el library.
525 529
526--- 530---
527** The netrc.el library is now obsolete. 531** The netrc.el library is now obsolete.
@@ -566,7 +570,8 @@ optimizations are in effect.
566 570
567A companion variable 'large-hscroll-threshold' controls when another 571A companion variable 'large-hscroll-threshold' controls when another
568set of display optimizations are in effect, which are aimed 572set of display optimizations are in effect, which are aimed
569specifically at speeding up display of long lines that are truncated. 573specifically at speeding up display of long lines that are truncated
574on display.
570 575
571If you still experience slowdowns while editing files with long lines, 576If you still experience slowdowns while editing files with long lines,
572this may be due to line truncation, or to one of the enabled minor 577this may be due to line truncation, or to one of the enabled minor
@@ -594,14 +599,15 @@ increase and decrease the font size globally. Additionally, the
594user option 'global-text-scale-adjust-resizes-frames' controls whether 599user option 'global-text-scale-adjust-resizes-frames' controls whether
595the frames are resized when the font size is changed. 600the frames are resized when the font size is changed.
596 601
602---
597** New config variable 'syntax-wholeline-max' to reduce the cost of long lines. 603** New config variable 'syntax-wholeline-max' to reduce the cost of long lines.
598This variable is used by some operations (mostly syntax-propertization 604This variable is used by some operations (mostly syntax-propertization
599and font-locking) to treat lines longer than this variable as if they 605and font-locking) to treat lines longer than this variable as if they
600were made up of various smaller lines. This can help reduce the 606were made up of various smaller lines. This can help reduce the
601slowdowns seen in buffers made of a single long line, but can also 607slowdowns seen in buffers made of a single long line, but can also
602cause misbehavior in the presence of such long lines (tho most of that 608cause misbehavior in the presence of such long lines (though most of
603misbehavior should usually be limited to mis-highlighting). You can 609that misbehavior should usually be limited to mis-highlighting). You
604recover the previous behavior with: 610can recover the previous behavior with:
605 611
606 (setq syntax-wholeline-max most-positive-fixnum) 612 (setq syntax-wholeline-max most-positive-fixnum)
607 613
@@ -616,7 +622,7 @@ and 'C-x 5 L' is now bound to 'find-library-other-frame'.
616Emacs allows different completion predicates to be used with 'M-x' 622Emacs allows different completion predicates to be used with 'M-x'
617(i.e., 'execute-extended-command') via the 623(i.e., 'execute-extended-command') via the
618'read-extended-command-predicate' user option. Emacs also has the 624'read-extended-command-predicate' user option. Emacs also has the
619'M-X' (note upper case) command, which only displays commands 625'M-X' (note upper case X) command, which only displays commands
620especially relevant to the current buffer. Emacs now allows toggling 626especially relevant to the current buffer. Emacs now allows toggling
621between these modes while the user is inputting a command by hitting 627between these modes while the user is inputting a command by hitting
622'M-X' while in the minibuffer. 628'M-X' while in the minibuffer.
@@ -662,7 +668,8 @@ match those regexps will be ignored by 'switch-to-prev-buffer' and
662+++ 668+++
663** New command 'rename-visited-file'. 669** New command 'rename-visited-file'.
664This command renames the file visited by the current buffer by moving 670This command renames the file visited by the current buffer by moving
665it to a new location, and also makes the buffer visit this new file. 671it to a new name or location, and also makes the buffer visit this new
672file.
666 673
667** Menus 674** Menus
668 675
@@ -687,19 +694,21 @@ the current Emacs process at the end, it starts a new Emacs process
687optional parameters to restart instead of just killing the current 694optional parameters to restart instead of just killing the current
688process. 695process.
689 696
697** Drag and Drop
698
690+++ 699+++
691** New user option 'mouse-drag-mode-line-buffer'. 700*** New user option 'mouse-drag-mode-line-buffer'.
692If non-nil, dragging on the buffer name part of the mode-line will 701If non-nil, dragging on the buffer name part of the mode-line will
693drag the buffer's associated file to other programs. This option is 702drag the buffer's associated file to other programs. This option is
694currently only available on X, Haiku and Nextstep (GNUstep or macOS). 703currently only available on X, Haiku and Nextstep (GNUstep or macOS).
695 704
696+++ 705+++
697** New user option 'mouse-drag-and-drop-region-cross-program'. 706*** New user option 'mouse-drag-and-drop-region-cross-program'.
698If non-nil, this option allows dragging text in the region from Emacs 707If non-nil, this option allows dragging text in the region from Emacs
699to another program. 708to another program.
700 709
701--- 710---
702** New user option 'mouse-drag-and-drop-region-scroll-margin'. 711*** New user option 'mouse-drag-and-drop-region-scroll-margin'.
703If non-nil, this option allows scrolling a window while dragging text 712If non-nil, this option allows scrolling a window while dragging text
704around without a scroll wheel. 713around without a scroll wheel.
705 714
@@ -709,12 +718,12 @@ This prevents mouse drag gestures from putting empty strings onto the
709kill ring. 718kill ring.
710 719
711+++ 720+++
712** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'. 721*** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'.
713These options allow adjusting point and scrolling a window when 722These options allow adjusting point and scrolling a window when
714dragging items from another program. 723dragging items from another program.
715 724
716+++ 725+++
717** The X Direct Save (XDS) protocol is now supported. 726*** The X Direct Save (XDS) protocol is now supported.
718This means dropping an image or file link from programs such as 727This means dropping an image or file link from programs such as
719Firefox will no longer create a temporary file in a random directory, 728Firefox will no longer create a temporary file in a random directory,
720instead asking you where to save the file first. 729instead asking you where to save the file first.
@@ -746,6 +755,7 @@ part of the buffer.
746+++ 755+++
747** 'count-words' will now report sentence count when used interactively. 756** 'count-words' will now report sentence count when used interactively.
748 757
758+++
749** New user option 'set-message-functions'. 759** New user option 'set-message-functions'.
750It allows selecting more functions for 'set-message-function' 760It allows selecting more functions for 'set-message-function'
751in addition to the default function that handles messages 761in addition to the default function that handles messages
@@ -884,6 +894,7 @@ This is in addition to previously-supported ways of discovering 24-bit
884color support: either via the "RGB" or "setf24" capabilities, or if 894color support: either via the "RGB" or "setf24" capabilities, or if
885the 'COLORTERM' environment variable is set to the value "truecolor". 895the 'COLORTERM' environment variable is set to the value "truecolor".
886 896
897---
887*** Select active regions with xterm selection support. 898*** Select active regions with xterm selection support.
888On terminals with xterm setSelection support, the active region may be 899On terminals with xterm setSelection support, the active region may be
889saved to the X primary selection, following the 900saved to the X primary selection, following the
@@ -895,7 +906,8 @@ saved to the X primary selection, following the
895The new command 'standard-display-by-replacement-char' produces Lisp 906The new command 'standard-display-by-replacement-char' produces Lisp
896code that sets up the 'standard-display-table' to use a replacement 907code that sets up the 'standard-display-table' to use a replacement
897character for display of characters that the text-mode terminal 908character for display of characters that the text-mode terminal
898doesn't support. It is most useful with the Linux console and similar 909doesn't support. This code is intended to be used in your init files.
910This feature is most useful with the Linux console and similar
899terminals, where Emacs has a reliable way of determining which 911terminals, where Emacs has a reliable way of determining which
900characters have glyphs in the font loaded into the terminal's memory. 912characters have glyphs in the font loaded into the terminal's memory.
901 913
@@ -936,7 +948,7 @@ This affects the 'ert-select-tests' function and its callers.
936** Emoji 948** Emoji
937 949
938+++ 950+++
939*** Emacs now has several new methods for inserting Emojis. 951*** Emacs now has several new methods for inserting Emoji.
940The Emoji commands are under the new 'C-x 8 e' prefix. 952The Emoji commands are under the new 'C-x 8 e' prefix.
941 953
942+++ 954+++
@@ -946,42 +958,42 @@ combinations in a graphical menu system.
946 958
947+++ 959+++
948*** New command 'emoji-search' (bound to 'C-x 8 e s'). 960*** New command 'emoji-search' (bound to 'C-x 8 e s').
949This command lets you search for Emojis based on names. 961This command lets you search for Emoji based on names.
950 962
951+++ 963+++
952*** New command 'emoji-list' (bound to 'C-x 8 e l'). 964*** New command 'emoji-list' (bound to 'C-x 8 e l').
953This command lists all Emojis (categorized by themes) in a special 965This command lists all Emoji (categorized by themes) in a special
954buffer and lets you choose one of them. 966buffer and lets you choose one of them.
955 967
956--- 968---
957*** New command 'emoji-recent' (bound to 'C-x 8 e r'). 969*** New command 'emoji-recent' (bound to 'C-x 8 e r').
958This command lets you choose among the Emojis you have recently 970This command lets you choose among the Emoji you have recently
959inserted. 971inserted.
960 972
961+++ 973+++
962*** New command 'emoji-describe' (bound to 'C-x 8 e d'). 974*** New command 'emoji-describe' (bound to 'C-x 8 e d').
963This command will tell you the name of the Emoji at point. (This 975This command will tell you the name of the Emoji at point. (It also
964command also works for non-Emoji characters.) 976works for non-Emoji characters.)
965 977
966--- 978---
967*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'. 979*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'.
968These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They 980These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They
969can be used on any character, but are mainly useful for emoji. 981can be used on any character, but are mainly useful for Emoji.
970 982
971--- 983---
972*** New input method 'emoji'. 984*** New input method 'emoji'.
973This allows you to enter emoji using short strings, eg ':face_palm:' 985This allows you to enter Emoji using short strings, eg ':face_palm:'
974or ':scream:'. 986or ':scream:'.
975 987
976** Help 988** Help
977 989
978--- 990---
979*** Variable values displayed by 'C-h v' in "*Help*" are now font-locked. 991*** Variable values displayed by 'C-h v' in "*Help*" are now fontified.
980 992
981+++ 993+++
982*** New user option 'help-clean-buttons'. 994*** New user option 'help-clean-buttons'.
983If non-nil, link buttons in "*Help*" will have any surrounding quotes 995If non-nil, link buttons in "*Help*" buffers will have any surrounding
984removed. 996quotes removed.
985 997
986--- 998---
987*** 'M-x apropos-variable' output now includes values of variables. 999*** 'M-x apropos-variable' output now includes values of variables.
@@ -992,13 +1004,13 @@ When displaying docstrings in "*Help*" buffers, strings that are
992"`like-this'" are made into links (if they point to a bound 1004"`like-this'" are made into links (if they point to a bound
993function/variable). This can lead to false positives when talking 1005function/variable). This can lead to false positives when talking
994about values that are symbols that happen to have the same names as 1006about values that are symbols that happen to have the same names as
995functions/variables. To inhibit this buttonification, the new 1007functions/variables. To inhibit this buttonification, use the new
996"\\+`like-this'" syntax can be used. 1008"\\+`like-this'" syntax.
997 1009
998+++ 1010+++
999*** New user option 'help-window-keep-selected'. 1011*** New user option 'help-window-keep-selected'.
1000If non-nil, commands to show the info manual and the source will reuse 1012If non-nil, commands to show the info manual and the source will reuse
1001the same window the "*Help*" buffer is shown in. 1013the same window in which the "*Help*" buffer is shown.
1002 1014
1003--- 1015---
1004*** Commands like 'C-h f' have changed how they describe menu bindings. 1016*** Commands like 'C-h f' have changed how they describe menu bindings.
@@ -1027,19 +1039,19 @@ it's easy to make an edit that yields an invalid result.
1027 1039
1028--- 1040---
1029*** 'C-h b' uses outlining by default. 1041*** 'C-h b' uses outlining by default.
1030Set 'describe-bindings-outline' to nil to get the old behavior. 1042Set 'describe-bindings-outline' to nil to get back the old behavior.
1031 1043
1032--- 1044---
1033*** Jumping to function/variable source now saves mark before moving point. 1045*** Jumping to function/variable source now saves mark before moving point.
1034Jumping to source from "*Help*" buffer moves the point when the source 1046Jumping to source from a "*Help*" buffer moves point when the source
1035buffer is already open. Now, the old point is pushed to mark ring. 1047buffer is already open. Now, the old point is pushed onto mark ring.
1036 1048
1037+++ 1049+++
1038*** New key bindings in "*Help*" buffers: 'n' and 'p'. 1050*** New key bindings in "*Help*" buffers: 'n' and 'p'.
1039These will take you (respectively) to the next and previous "page". 1051These will take you (respectively) to the next and previous "page".
1040 1052
1041--- 1053---
1042*** 'describe-char' now also outputs the name of emoji combinations. 1054*** 'describe-char' now also outputs the name of Emoji sequences.
1043 1055
1044+++ 1056+++
1045*** New key binding in "*Help*" buffer: 'I'. 1057*** New key binding in "*Help*" buffer: 'I'.
@@ -1067,7 +1079,7 @@ The command pops up a buffer at the bottom of the screen with a few
1067helpful commands for various tasks. You can toggle the display using 1079helpful commands for various tasks. You can toggle the display using
1068'C-h q'. 1080'C-h q'.
1069 1081
1070** Emacs 29.1 comes with Org v9.6. 1082** Emacs now comes with Org v9.6.
1071See the file ORG-NEWS for user-visible changes in Org. 1083See the file ORG-NEWS for user-visible changes in Org.
1072 1084
1073** Outline Mode 1085** Outline Mode
@@ -1075,12 +1087,12 @@ See the file ORG-NEWS for user-visible changes in Org.
1075+++ 1087+++
1076*** Support for customizing the default visibility state of headings. 1088*** Support for customizing the default visibility state of headings.
1077Customize the user option 'outline-default-state' to define what 1089Customize the user option 'outline-default-state' to define what
1078headings will be visible after Outline mode is turned on. When equal 1090headings will be visible initially, after Outline mode is turned on.
1079to a number, the user option 'outline-default-rules' determines the 1091When the value is a number, the user option 'outline-default-rules'
1080visibility of the subtree starting at the corresponding level. Values 1092determines the visibility of the subtree starting at the corresponding
1081are provided to control showing a heading subtree depending on whether 1093level. Values are provided to control showing a heading subtree
1082the heading matches a regexp, or on whether its subtree has long lines 1094depending on whether the heading matches a regexp, or on whether its
1083or is itself too long. 1095subtree has long lines or is itself too long.
1084 1096
1085** Outline Minor Mode 1097** Outline Minor Mode
1086 1098
@@ -1088,10 +1100,10 @@ or is itself too long.
1088*** New user option 'outline-minor-mode-use-buttons'. 1100*** New user option 'outline-minor-mode-use-buttons'.
1089If non-nil, Outline Minor Mode will use buttons to hide/show outlines 1101If non-nil, Outline Minor Mode will use buttons to hide/show outlines
1090in addition to the ellipsis. The default is nil, but in 'help-mode' 1102in addition to the ellipsis. The default is nil, but in 'help-mode'
1091it has the value 'insert' that inserts the buttons directly to the 1103it has the value 'insert' that inserts the buttons directly into the
1092buffer where you can use 'RET' to cycle outline visibility. When 1104buffer, and you can use 'RET' to cycle outline visibility. When
1093the value is 'in-margins', Outline Minor Mode uses the window margins 1105the value is 'in-margins', Outline Minor Mode uses the window margins
1094to hide/show outlines. 1106to hide/show buttons.
1095 1107
1096** Windows 1108** Windows
1097 1109
@@ -1099,17 +1111,19 @@ to hide/show outlines.
1099*** New commands 'split-root-window-below' and 'split-root-window-right'. 1111*** New commands 'split-root-window-below' and 'split-root-window-right'.
1100These commands split the root window in two, and are bound to 'C-x w 2' 1112These commands split the root window in two, and are bound to 'C-x w 2'
1101and 'C-x w 3', respectively. A number of other useful window-related 1113and 'C-x w 3', respectively. A number of other useful window-related
1102commands are now available on the 'C-x w' prefix. 1114commands are now available with key sequences that start with the
1115'C-x w' prefix.
1103 1116
1104+++ 1117+++
1105*** New user option 'display-buffer-avoid-small-windows'. 1118*** New user option 'display-buffer-avoid-small-windows'.
1106If non-nil, this should be a window height, a number. Windows smaller 1119If non-nil, this should be a window height in lines, a number.
1107than this will be avoided by 'display-buffer', if possible. 1120Windows smaller than this will be avoided by 'display-buffer', if
1121possible.
1108 1122
1109+++ 1123+++
1110*** New display action 'display-buffer-full-frame'. 1124*** New display action 'display-buffer-full-frame'.
1111This action removes other windows on the frame when displaying a 1125This action removes other windows from the frame when displaying a
1112buffer. 1126buffer on that frame.
1113 1127
1114+++ 1128+++
1115*** 'display-buffer' now can set up the body size of the chosen window. 1129*** 'display-buffer' now can set up the body size of the chosen window.
@@ -1118,10 +1132,10 @@ For example, a 'display-buffer-alist' entry of
1118 '(window-width . (body-columns . 40))' 1132 '(window-width . (body-columns . 40))'
1119 1133
1120will make the body of the chosen window 40 columns wide. For the 1134will make the body of the chosen window 40 columns wide. For the
1121height use 'window-height' in combination with 'body-lines'. 1135height use 'window-height' and 'body-lines', respectively.
1122 1136
1123--- 1137---
1124*** You can customize which window 'scroll-other-window' operates on. 1138*** You can customize on which window 'scroll-other-window' operates.
1125This is controlled by the new 'other-window-scroll-default' user option. 1139This is controlled by the new 'other-window-scroll-default' user option.
1126 1140
1127** Frames 1141** Frames
@@ -1145,6 +1159,8 @@ before its name on display is truncated.
1145 1159
1146--- 1160---
1147*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist. 1161*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist.
1162It prompts for the name of a tab and switches to it, creating a new
1163tab if no tab exists by that name.
1148 1164
1149--- 1165---
1150*** New keymap 'tab-bar-history-mode-map'. 1166*** New keymap 'tab-bar-history-mode-map'.
@@ -1211,7 +1227,7 @@ Most IRC clients (including rcirc) support basic formatting using
1211control codes. Under the 'C-c C-f' prefix a few commands have been 1227control codes. Under the 'C-c C-f' prefix a few commands have been
1212added to insert these automatically. For example, if a region is 1228added to insert these automatically. For example, if a region is
1213active and 'C-c C-f C-b' is invoked, markup is inserted for the region 1229active and 'C-c C-f C-b' is invoked, markup is inserted for the region
1214to be highlighted bold. 1230to be highlighted in bold.
1215 1231
1216** Imenu 1232** Imenu
1217 1233
@@ -1223,13 +1239,16 @@ to be highlighted bold.
1223Use it if you want Imenu to forget the buffer's index alist and 1239Use it if you want Imenu to forget the buffer's index alist and
1224recreate it anew next time 'imenu' is invoked. 1240recreate it anew next time 'imenu' is invoked.
1225 1241
1226+++ 1242---
1227** Emacs is now capable of abandoning a window's redisplay that takes too long. 1243** Emacs is now capable of abandoning a window's redisplay that takes too long.
1228This is controlled by the new variable 'max-redisplay-ticks'. If that 1244This is controlled by the new variable 'max-redisplay-ticks'. If that
1229variable is set to a non-zero value, display of a window will be 1245variable is set to a non-zero value, display of a window will be
1230aborted after that many low-level redisplay operations, thus 1246aborted after that many low-level redisplay operations, thus
1231preventing Emacs from becoming wedged when visiting files with very 1247preventing Emacs from becoming wedged when visiting files with very
1232long lines. 1248long lines. The default is zero, which disables the feature: Emacs
1249will wait forever for redisplay to finish. (We believe you won't need
1250this feature, given the ability to display buffers with very long
1251lines.)
1233 1252
1234* Editing Changes in Emacs 29.1 1253* Editing Changes in Emacs 29.1
1235 1254
@@ -1242,15 +1261,15 @@ option 'cycle-spacing-actions'.
1242--- 1261---
1243** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars. 1262** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars.
1244These commands now behave as case-sensitive for interactive calls when 1263These commands now behave as case-sensitive for interactive calls when
1245they are invoked with an uppercase character, regardless of the 1264they are invoked with an uppercase character, regardless of the value
1246'case-fold-search' value. 1265of 'case-fold-search'.
1247 1266
1248--- 1267---
1249** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping. 1268** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping.
1250These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other 1269These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other
1251windows without looking a customizations in that other window. These 1270windows without looking at customizations in that other window. These
1252functions now check whether they have been rebound in the buffer in 1271functions now check whether they have been rebound in the buffer shown
1253that other window, and then call the remapped function instead. In 1272in that other window, and then call the remapped function instead. In
1254addition, these commands now also respect the 1273addition, these commands now also respect the
1255'scroll-error-top-bottom' user option. 1274'scroll-error-top-bottom' user option.
1256 1275
@@ -1267,8 +1286,8 @@ This change also affects 'cl-macrolet', 'cl-flet*' and
1267 1286
1268+++ 1287+++
1269** New user option 'translate-upper-case-key-bindings'. 1288** New user option 'translate-upper-case-key-bindings'.
1270Set this option to nil to inhibit translating upper case keys to lower 1289Set this option to nil to inhibit the default translation of upper
1271case keys. 1290case keys to their lower case variants.
1272 1291
1273+++ 1292+++
1274** New command 'ensure-empty-lines'. 1293** New command 'ensure-empty-lines'.
@@ -1279,8 +1298,8 @@ point.
1279** Improved mouse behavior with auto-scrolling modes. 1298** Improved mouse behavior with auto-scrolling modes.
1280When clicking inside the 'scroll-margin' or 'hscroll-margin' region, 1299When clicking inside the 'scroll-margin' or 'hscroll-margin' region,
1281point is now moved only when releasing the mouse button. This no 1300point is now moved only when releasing the mouse button. This no
1282longer results in a bogus selection, unless the mouse has been 1301longer results in a bogus selection, unless the mouse has also been
1283effectively dragged. 1302dragged.
1284 1303
1285+++ 1304+++
1286** 'kill-ring-max' now defaults to 120. 1305** 'kill-ring-max' now defaults to 120.
@@ -1301,10 +1320,11 @@ When non-nil, if the point is in a closing delimiter and the opening
1301delimiter is offscreen, shows some context around the opening 1320delimiter is offscreen, shows some context around the opening
1302delimiter in the echo area. The default is nil. 1321delimiter in the echo area. The default is nil.
1303 1322
1304May also be set to the symbols 'overlay' or 'child-frame', in which 1323This option can also be set to the symbols 'overlay' or 'child-frame',
1305case the context is shown in an overlay or child-frame at the top-left 1324in which case the context is shown in an overlay or child-frame at the
1306of the current window. The latter option requires a graphical frame. 1325top-left of the current window. The latter option requires a
1307On non-graphical frames, the context is shown in the echo area. 1326graphical frame. On non-graphical frames, the context is shown in the
1327echo area.
1308 1328
1309** Comint 1329** Comint
1310 1330
@@ -1318,7 +1338,7 @@ change the terminal used on a remote host.
1318*** New user option 'comint-delete-old-input'. 1338*** New user option 'comint-delete-old-input'.
1319When nil, this prevents comint from deleting the current input when 1339When nil, this prevents comint from deleting the current input when
1320inserting previous input using '<mouse-2>'. The default is t, to 1340inserting previous input using '<mouse-2>'. The default is t, to
1321preserve past behavior. 1341preserve previous behavior.
1322 1342
1323--- 1343---
1324*** New minor mode 'comint-fontify-input-mode'. 1344*** New minor mode 'comint-fontify-input-mode'.
@@ -1339,55 +1359,88 @@ support systems where two kinds of wheel events can be received.
1339 1359
1340** Internationalization changes 1360** Internationalization changes
1341 1361
1362---
1342*** The <Delete> function key now allows deleting the entire composed sequence. 1363*** The <Delete> function key now allows deleting the entire composed sequence.
1343For the details, see the item about the 'delete-forward-char' command 1364For the details, see the item about the 'delete-forward-char' command
1344above. 1365above.
1345 1366
1367---
1346*** New user option 'composition-break-at-point'. 1368*** New user option 'composition-break-at-point'.
1347Setting it to a non-nil value temporarily disables automatic 1369Setting it to a non-nil value temporarily disables automatic
1348composition of character sequences at point, and thus makes it easier 1370composition of character sequences at point, and thus makes it easier
1349to edit such sequences by allowing point to "enter" the sequence. 1371to edit such sequences by allowing point to "enter" the composed
1372sequence.
1350 1373
1351--- 1374---
1352*** Support for many old scripts and writing systems. 1375*** Support for many old scripts and writing systems.
1353Emacs now supports and has language-environments and input methods for 1376Emacs now supports, and has language-environments and input methods,
1354several dozens of old scripts that were used in the past for various 1377for several dozens of old scripts that were used in the past for
1355languages. For each such script Emacs now has font-selection and 1378various languages. For each such script Emacs now has font-selection
1356character composition rules, a language environment, and an input 1379and character composition rules, a language environment, and an input
1357method. The newly-added scripts and the corresponding language 1380method. The newly-added scripts and the corresponding language
1358environments are: 1381environments are:
1359 1382
1360Tai Tham script and the Northern Thai language environment 1383 Tai Tham script and the Northern Thai language environment
1361Brahmi script and language environment 1384
1362Kaithi script and language environment 1385 Brahmi script and language environment
1363Tirhuta script and language environment 1386
1364Sharada script and language environment 1387 Kaithi script and language environment
1365Siddham script and language environment 1388
1366Syloti Nagri script and language environment 1389 Tirhuta script and language environment
1367Modi script and language environment 1390
1368Baybayin script and Tagalog language environment 1391 Sharada script and language environment
1369Hanunoo script and language environment 1392
1370Buhid script and language environment 1393 Siddham script and language environment
1371Tagbanwa script and language environment 1394
1372Limbu script and language environment 1395 Syloti Nagri script and language environment
1373Balinese script and language environment 1396
1374Javanese script and language environment 1397 Modi script and language environment
1375Sundanese script and language environment 1398
1376Batak script and language environment 1399 Baybayin script and Tagalog language environment
1377Rejang script and language environment 1400
1378Makasar script and language environment 1401 Hanunoo script and language environment
1379Lontara script and language environment 1402
1380Hanifi Rohingya script and language environment 1403 Buhid script and language environment
1381Grantha script and language environment 1404
1382Kharoshthi script and language environment 1405 Tagbanwa script and language environment
1383Lepcha script and language environment 1406
1384Meetei Mayek script and language environment 1407 Limbu script and language environment
1385Adlam script and language environment 1408
1386Mende Kikakui script and language environment 1409 Balinese script and language environment
1387Wancho script and language environment 1410
1388Toto script and language environment 1411 Javanese script and language environment
1389Gothic script and language environment 1412
1390Coptic script and language environment 1413 Sundanese script and language environment
1414
1415 Batak script and language environment
1416
1417 Rejang script and language environment
1418
1419 Makasar script and language environment
1420
1421 Lontara script and language environment
1422
1423 Hanifi Rohingya script and language environment
1424
1425 Grantha script and language environment
1426
1427 Kharoshthi script and language environment
1428
1429 Lepcha script and language environment
1430
1431 Meetei Mayek script and language environment
1432
1433 Adlam script and language environment
1434
1435 Mende Kikakui script and language environment
1436
1437 Wancho script and language environment
1438
1439 Toto script and language environment
1440
1441 Gothic script and language environment
1442
1443 Coptic script and language environment
1391 1444
1392--- 1445---
1393*** The "Oriya" language environment was renamed to "Odia". 1446*** The "Oriya" language environment was renamed to "Odia".
@@ -1423,8 +1476,9 @@ the QWERTY Slovak keyboards.
1423 1476
1424--- 1477---
1425*** New input method 'cyrillic-chuvash'. 1478*** New input method 'cyrillic-chuvash'.
1426This input method is based on the russian-computer, and is intended 1479This input method is based on the russian-computer input method, and
1427for the Chuvash language written in the Cyrillic script. 1480is intended for typing in the Chuvash language written in the Cyrillic
1481script.
1428 1482
1429 1483
1430* Changes in Specialized Modes and Packages in Emacs 29.1 1484* Changes in Specialized Modes and Packages in Emacs 29.1
@@ -1506,6 +1560,40 @@ the following to your Init file:
1506*** New command 'dired-do-eww'. 1560*** New command 'dired-do-eww'.
1507This command visits the file on the current line with EWW. 1561This command visits the file on the current line with EWW.
1508 1562
1563---
1564*** New user option 'dired-omit-lines'.
1565This is used by 'dired-omit-mode', and now allows you to hide based on
1566other things than just the file names.
1567
1568+++
1569*** New user option 'dired-mouse-drag-files'.
1570If non-nil, dragging file names with the mouse in a Dired buffer will
1571initiate a drag-and-drop session allowing them to be opened in other
1572programs.
1573
1574+++
1575*** New user option 'dired-free-space'.
1576Dired will now, by default, include the free space in the first line
1577instead of having it on a separate line. To get the previous behavior
1578back, say:
1579
1580 (setq dired-free-space 'separate)
1581
1582---
1583*** New user option 'dired-make-directory-clickable'.
1584If non-nil (which is the default), hitting 'RET' or 'mouse-1' on
1585the directory components at the directory displayed at the start of
1586the buffer will take you to that directory.
1587
1588---
1589*** Search and replace in Dired/Wdired supports more regexps.
1590For example, the regexp ".*" will match only characters that are part
1591of the file name. Also "^.*$" can be used to match at the beginning
1592of the file name and at the end of the file name. This is used only
1593when searching on file names. In Wdired this can be used when the new
1594user option 'wdired-search-replace-filenames' is non-nil (which is the
1595default).
1596
1509** Elisp 1597** Elisp
1510 1598
1511--- 1599---
@@ -1522,7 +1610,7 @@ byte-compile the visited file and the current buffer, respectively.
1522--- 1610---
1523*** New user option 'tetris-allow-repetitions'. 1611*** New user option 'tetris-allow-repetitions'.
1524This controls how randomness is implemented (whether to use pure 1612This controls how randomness is implemented (whether to use pure
1525randomness as before or whether to use a bag). 1613randomness as before, or to use a bag).
1526 1614
1527** Battery 1615** Battery
1528 1616
@@ -1553,7 +1641,7 @@ command is installed.
1553** CC Mode 1641** CC Mode
1554 1642
1555--- 1643---
1556*** C++ Mode now supports most of the new features in the C++20 standard. 1644*** C++ Mode now supports most of the new features in the C++20 Standard.
1557 1645
1558** Cperl Mode 1646** Cperl Mode
1559 1647
@@ -1566,8 +1654,8 @@ be used as a file-local variable.
1566 1654
1567--- 1655---
1568*** 'gud-go' is now bound to 'C-c C-v'. 1656*** 'gud-go' is now bound to 'C-c C-v'.
1569If given a prefix, it will query the user for an argument to use for 1657If given a prefix, it will prompt for an argument to use for the
1570the run/continue command. 1658run/continue command.
1571 1659
1572--- 1660---
1573*** 'perldb' now recognizes '-E'. 1661*** 'perldb' now recognizes '-E'.
@@ -1588,7 +1676,7 @@ contents.
1588*** New user option 'diff-whitespace-style'. 1676*** New user option 'diff-whitespace-style'.
1589Sets the value of the buffer-local variable 'whitespace-style' in 1677Sets the value of the buffer-local variable 'whitespace-style' in
1590'diff-mode' buffers. By default, this variable is '(face trailing)', 1678'diff-mode' buffers. By default, this variable is '(face trailing)',
1591which preserves behavior from previous Emacs versions. 1679which preserves behavior of previous Emacs versions.
1592 1680
1593+++ 1681+++
1594*** New user option 'diff-add-log-use-relative-names'. 1682*** New user option 'diff-add-log-use-relative-names'.
@@ -1636,8 +1724,8 @@ it isn't already, and remove it if it is installed.
1636 1724
1637+++ 1725+++
1638*** New command 'package-vc-install'. 1726*** New command 'package-vc-install'.
1639Packages can now be installed directly from source by cloning from a 1727Packages can now be installed directly from source by cloning from
1640repository. 1728their repository.
1641 1729
1642+++ 1730+++
1643*** New command 'package-vc-install-from-checkout'. 1731*** New command 'package-vc-install-from-checkout'.
@@ -1673,7 +1761,7 @@ The option 'desktop-load-locked-desktop' can now be set to the value
1673file if the Emacs process which locked it is no longer running on the 1761file if the Emacs process which locked it is no longer running on the
1674local machine. This allows avoiding questions about locked desktop 1762local machine. This allows avoiding questions about locked desktop
1675files when the Emacs session which locked it crashes, or was otherwise 1763files when the Emacs session which locked it crashes, or was otherwise
1676interrupted, and didn't exit gracefully. See the "(emacs) Saving 1764interrupted and didn't exit gracefully. See the "(emacs) Saving
1677Emacs Sessions" node in the Emacs manual for more details. 1765Emacs Sessions" node in the Emacs manual for more details.
1678 1766
1679** Miscellaneous 1767** Miscellaneous
@@ -1732,9 +1820,10 @@ only jump if the location of the first error is known), and
1732 1820
1733+++ 1821+++
1734*** New user option 'compilation-max-output-line-length'. 1822*** New user option 'compilation-max-output-line-length'.
1735Lines longer than this will have the ends hidden, with a button to 1823Lines longer than the value of this variable will have their ends
1736reveal the hidden text. This speeds up operations like grepping on 1824hidden, with a button to reveal the hidden text. This speeds up
1737files that have few newlines. 1825operations like grepping on files that have few newlines. The default
1826value is 400; set to nil to disable hiding.
1738 1827
1739** Flymake 1828** Flymake
1740 1829
@@ -1748,12 +1837,12 @@ characters instead of just 'SPC' and 'TAB'.
1748 1837
1749--- 1838---
1750** New mode, 'emacs-news-mode', for editing the NEWS file. 1839** New mode, 'emacs-news-mode', for editing the NEWS file.
1751This mode adds some highlighting, fixes the 'M-q' command, and has 1840This mode adds some highlighting, makes the 'M-q' command aware of the
1752commands for doing maintenance of the Emacs NEWS files. In addition, 1841format of NEWS entries, and has special commands for doing maintenance
1753this mode turns on 'outline-minor-mode', and thus displays 1842of the Emacs NEWS files. In addition, this mode turns on
1754customizable icons (see 'icon-preference') in the margins. To 1843'outline-minor-mode', and thus displays customizable icons (see
1755disable these icons, set 'outline-minor-mode-use-buttons' to a 1844'icon-preference') in the margins. To disable these icons, set
1756nil value. 1845'outline-minor-mode-use-buttons' to a nil value.
1757 1846
1758--- 1847---
1759** Kmacro 1848** Kmacro
@@ -1808,6 +1897,7 @@ to complete. The value 'visual' is like 'always', but only updates
1808the completions if they are already visible. The default value t 1897the completions if they are already visible. The default value t
1809always hides the completion buffer after some completion is made. 1898always hides the completion buffer after some completion is made.
1810 1899
1900---
1811*** New commands to complete the minibuffer history. 1901*** New commands to complete the minibuffer history.
1812'minibuffer-complete-history' ('C-x <up>') is like 'minibuffer-complete' 1902'minibuffer-complete-history' ('C-x <up>') is like 'minibuffer-complete'
1813but completes on the history items instead of the default completion 1903but completes on the history items instead of the default completion
@@ -1830,16 +1920,17 @@ This option limits the height of the "*Completions*" buffer.
1830 1920
1831+++ 1921+++
1832*** New user option 'completions-header-format'. 1922*** New user option 'completions-header-format'.
1833This is a string to control the heading line to show in the 1923This is a string to control the header line to show in the
1834"*Completions*" buffer before the list of completions. 1924"*Completions*" buffer before the list of completions.
1835If it contains "%s", that is replaced with the number of completions. 1925If it contains "%s", that is replaced with the number of completions.
1836If nil, the heading line is not shown. 1926If nil, the header line is not shown.
1837 1927
1838+++ 1928+++
1839*** New user option 'completions-highlight-face'. 1929*** New user option 'completions-highlight-face'.
1840When this user option names a face, the current 1930When this user option names a face, the current
1841candidate in the "*Completions*" buffer is highlighted with that face. 1931candidate in the "*Completions*" buffer is highlighted with that face.
1842The nil value disables this highlighting. 1932The nil value disables this highlighting. The default is to highlight
1933using the 'completions-highlight' face.
1843 1934
1844+++ 1935+++
1845*** Choosing a completion with a prefix argument doesn't exit the minibuffer. 1936*** Choosing a completion with a prefix argument doesn't exit the minibuffer.
@@ -1848,7 +1939,7 @@ This means that typing 'C-u RET' on a completion candidate in the
1848but doesn't exit the minibuffer. 1939but doesn't exit the minibuffer.
1849 1940
1850+++ 1941+++
1851*** You can now define abbrevs for the fundamental minibuffer modes. 1942*** You can now define abbrevs for the minibuffer modes.
1852'minibuffer-mode-abbrev-table' and 1943'minibuffer-mode-abbrev-table' and
1853'minibuffer-inactive-mode-abbrev-table' are now defined. 1944'minibuffer-inactive-mode-abbrev-table' are now defined.
1854 1945
@@ -1944,7 +2035,7 @@ This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'.
1944--- 2035---
1945*** New command 'vc-pull-and-push'. 2036*** New command 'vc-pull-and-push'.
1946This commands first does a "pull" command, and if that is successful, 2037This commands first does a "pull" command, and if that is successful,
1947do a "push" command afterwards. 2038does a "push" command afterwards.
1948 2039
1949+++ 2040+++
1950*** 'C-x v b' prefix key is used now for branch commands. 2041*** 'C-x v b' prefix key is used now for branch commands.
@@ -1983,7 +2074,7 @@ in the Git repository in "~/foo/bar". This makes this command
1983consistent with 'vc-responsible-backend'. 2074consistent with 'vc-responsible-backend'.
1984 2075
1985--- 2076---
1986*** Log Edit now font locks long Git commit summary lines. 2077*** Log Edit now fontifies long Git commit summary lines.
1987Writing shorter summary lines avoids truncation in contexts in which 2078Writing shorter summary lines avoids truncation in contexts in which
1988Git commands display summary lines. See the two new user options 2079Git commands display summary lines. See the two new user options
1989'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'. 2080'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'.
@@ -2192,13 +2283,13 @@ All other 'gnus-header-*' faces inherit from this face now.
2192 2283
2193+++ 2284+++
2194*** New user option 'gnus-treat-emojize-symbols'. 2285*** New user option 'gnus-treat-emojize-symbols'.
2195If non-nil, symbols that have an emoji representation will be 2286If non-nil, symbols that have an Emoji representation will be
2196displayed as emojis. The default is nil. 2287displayed as emojis. The default is nil.
2197 2288
2198+++ 2289+++
2199*** New command 'gnus-article-emojize-symbols'. 2290*** New command 'gnus-article-emojize-symbols'.
2200This is bound to 'W D e' and will display symbols that have emoji 2291This is bound to 'W D e' and will display symbols that have Emoji
2201representation as emojis. 2292representation as Emoji.
2202 2293
2203+++ 2294+++
2204*** New mu backend for gnus-search. 2295*** New mu backend for gnus-search.
@@ -2310,6 +2401,11 @@ or projects outside of VCS repositories.
2310As a consequence, the 'VC project backend' is formally renamed to 2401As a consequence, the 'VC project backend' is formally renamed to
2311'VC-aware project backend'. 2402'VC-aware project backend'.
2312 2403
2404+++
2405*** New user option 'project-vc-include-untracked'.
2406If non-nil, files untracked by a VCS are considered to be part of
2407the project by a VC project based on that VCS.
2408
2313** Xref 2409** Xref
2314 2410
2315+++ 2411+++
@@ -2494,7 +2590,7 @@ PDF file in the thumbnail buffer to visit the corresponding PDF.
2494--- 2590---
2495*** Support GraphicsMagick command line tools. 2591*** Support GraphicsMagick command line tools.
2496Support for the GraphicsMagick command line tool ("gm") has been 2592Support for the GraphicsMagick command line tool ("gm") has been
2497added, and is used instead of ImageMagick when it is available. 2593added, and is used when it is available instead of ImageMagick.
2498 2594
2499--- 2595---
2500*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020). 2596*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020).
@@ -2582,42 +2678,6 @@ some commands and user options are no longer needed and are now obsolete:
2582'image-dired-display-window-width-correction', 2678'image-dired-display-window-width-correction',
2583'image-dired-temp-image-file'. 2679'image-dired-temp-image-file'.
2584 2680
2585** Dired
2586
2587---
2588*** New user option 'dired-omit-lines'.
2589This is used by 'dired-omit-mode', and now allows you to hide based on
2590other things than just the file names.
2591
2592+++
2593*** New user option 'dired-mouse-drag-files'.
2594If non-nil, dragging file names with the mouse in a Dired buffer will
2595initiate a drag-and-drop session allowing them to be opened in other
2596programs.
2597
2598+++
2599*** New user option 'dired-free-space'.
2600Dired will now, by default, include the free space in the first line
2601instead of having it on a separate line. To get the previous behavior
2602back, say:
2603
2604 (setq dired-free-space 'separate)
2605
2606---
2607*** New user option 'dired-make-directory-clickable'.
2608If non-nil (which is the default), hitting 'RET' or 'mouse-1' on
2609the directory components at the directory displayed at the start of
2610the buffer will take you to that directory.
2611
2612---
2613*** Search and replace in Dired/Wdired supports more regexps.
2614For example, the regexp ".*" will match only characters that are part
2615of the file name. Also "^.*$" can be used to match at the beginning
2616of the file name and at the end of the file name. This is used only
2617when searching on file names. In Wdired this can be used when the new
2618user option 'wdired-search-replace-filenames' is non-nil (which is the
2619default).
2620
2621** Bookmarks 2681** Bookmarks
2622 2682
2623--- 2683---
@@ -2830,7 +2890,7 @@ if only one line of output). Previously, this only converted numbers
2830when there was a single line of output. 2890when there was a single line of output.
2831 2891
2832--- 2892---
2833*** Built-in Eshell commands now follow POSIX/GNU argument syntax conventions. 2893*** Built-in Eshell commands now follow Posix/GNU argument syntax conventions.
2834Built-in commands in Eshell now accept command-line options with 2894Built-in commands in Eshell now accept command-line options with
2835values passed as a single token, such as '-oVALUE' or 2895values passed as a single token, such as '-oVALUE' or
2836'--option=VALUE'. New commands can take advantage of this with the 2896'--option=VALUE'. New commands can take advantage of this with the
@@ -2944,11 +3004,6 @@ filtered out.
2944The list of handlers (already covering OSC 7 and 8) has been extended 3004The list of handlers (already covering OSC 7 and 8) has been extended
2945with a handler for OSC 2, the command to set a window title. 3005with a handler for OSC 2, the command to set a window title.
2946 3006
2947+++
2948*** New user option 'project-vc-include-untracked'.
2949If non-nil, files untracked by a VCS are considered to be part of
2950the project by a VC project based on that VCS.
2951
2952--- 3007---
2953*** 'recentf-mode' now uses abbreviated file names by default. 3008*** 'recentf-mode' now uses abbreviated file names by default.
2954This means that e.g. "/home/foo/bar" is now displayed as "~/bar". 3009This means that e.g. "/home/foo/bar" is now displayed as "~/bar".
@@ -3012,7 +3067,7 @@ Protocol (LSP).
3012 3067
3013+++ 3068+++
3014*** use-package: Declarative package configuration. 3069*** use-package: Declarative package configuration.
3015use-package is shipped with Emacs. It provides the 'use-package' 3070use-package is now shipped with Emacs. It provides the 'use-package'
3016macro, which allows you to isolate package configuration in your init 3071macro, which allows you to isolate package configuration in your init
3017file in a way that is declarative, tidy, and performance-oriented. 3072file in a way that is declarative, tidy, and performance-oriented.
3018See the new Info manual "(use-package) Top" for more. 3073See the new Info manual "(use-package) Top" for more.
@@ -3037,8 +3092,8 @@ manually if needed, using the new user options 'wallpaper-command' and
3037 3092
3038+++ 3093+++
3039** New package 'oclosure'. 3094** New package 'oclosure'.
3040Allows the creation of "functions with slots" or "function objects" 3095This allows the creation of "functions with slots" or "function
3041via the macros 'oclosure-define' and 'oclosure-lambda'. 3096objects" via the macros 'oclosure-define' and 'oclosure-lambda'.
3042 3097
3043+++ 3098+++
3044*** New generic function 'oclosure-interactive-form'. 3099*** New generic function 'oclosure-interactive-form'.
@@ -3061,10 +3116,12 @@ Emacs buffers, like indentation and the like. The new ert function
3061This is a lightweight variant of 'js-mode' that is used by default 3116This is a lightweight variant of 'js-mode' that is used by default
3062when visiting JSON files. 3117when visiting JSON files.
3063 3118
3119+++
3064** New major mode 'csharp-mode'. 3120** New major mode 'csharp-mode'.
3065A major mode based on CC Mode for editing programs in the C# language. 3121A major mode based on CC Mode for editing programs in the C# language.
3066This mode is auto-enabled for files with the ".cs" extension. 3122This mode is auto-enabled for files with the ".cs" extension.
3067 3123
3124+++
3068** New major modes based on the tree-sitter library. 3125** New major modes based on the tree-sitter library.
3069These new major modes are available if Emacs was built with the 3126These new major modes are available if Emacs was built with the
3070tree-sitter library. They provide support for font-locking, 3127tree-sitter library. They provide support for font-locking,
@@ -3095,77 +3152,94 @@ If a language grammar library required by a mode is not found in any
3095of the above places, the mode will signal an error when you try to 3152of the above places, the mode will signal an error when you try to
3096turn it on. 3153turn it on.
3097 3154
3155+++
3098*** New major mode 'typescript-ts-mode'. 3156*** New major mode 'typescript-ts-mode'.
3099A major mode based on the tree-sitter library for editing programs 3157A major mode based on the tree-sitter library for editing programs
3100in the TypeScript language. This mode is auto-enabled for files with 3158in the TypeScript language. This mode is auto-enabled for files with
3101the ".ts" extension. 3159the ".ts" extension.
3102 3160
3161+++
3103*** New major mode 'tsx-ts-mode'. 3162*** New major mode 'tsx-ts-mode'.
3104A major mode based on the tree-sitter library for editing programs 3163A major mode based on the tree-sitter library for editing programs
3105in the TypeScript language, with support for TSX. This mode is 3164in the TypeScript language, with support for TSX. This mode is
3106auto-enabled for files with the ".tsx" extension. 3165auto-enabled for files with the ".tsx" extension.
3107 3166
3167+++
3108*** New major mode 'c-ts-mode'. 3168*** New major mode 'c-ts-mode'.
3109An optional major mode based on the tree-sitter library for editing 3169An optional major mode based on the tree-sitter library for editing
3110programs in the C language. 3170programs in the C language.
3111 3171
3172+++
3112*** New major mode 'c++-ts-mode'. 3173*** New major mode 'c++-ts-mode'.
3113An optional major mode based on the tree-sitter library for editing 3174An optional major mode based on the tree-sitter library for editing
3114programs in the C++ language. 3175programs in the C++ language.
3115 3176
3177+++
3116*** New major mode 'java-ts-mode'. 3178*** New major mode 'java-ts-mode'.
3117An optional major mode based on the tree-sitter library for editing 3179An optional major mode based on the tree-sitter library for editing
3118programs in the Java language. 3180programs in the Java language.
3119 3181
3182+++
3120*** New major mode 'python-ts-mode'. 3183*** New major mode 'python-ts-mode'.
3121An optional major mode based on the tree-sitter library for editing 3184An optional major mode based on the tree-sitter library for editing
3122programs in the Python language. 3185programs in the Python language.
3123 3186
3187+++
3124*** New major mode 'css-ts-mode'. 3188*** New major mode 'css-ts-mode'.
3125An optional major mode based on the tree-sitter library for editing 3189An optional major mode based on the tree-sitter library for editing
3126CSS (Cascading Style Sheets). 3190CSS (Cascading Style Sheets).
3127 3191
3192+++
3128*** New major mode 'json-ts-mode'. 3193*** New major mode 'json-ts-mode'.
3129An optional major mode based on the tree-sitter library for editing 3194An optional major mode based on the tree-sitter library for editing
3130programs in the JSON language. 3195programs in the JSON language.
3131 3196
3197+++
3132*** New major mode 'csharp-ts-mode'. 3198*** New major mode 'csharp-ts-mode'.
3133An optional major mode based on the tree-sitter library for editing 3199An optional major mode based on the tree-sitter library for editing
3134programs in the C# language. 3200programs in the C# language.
3135 3201
3202+++
3136*** New major mode 'bash-ts-mode'. 3203*** New major mode 'bash-ts-mode'.
3137Am optional major mode based on the tree-sitter library for editing 3204Am optional major mode based on the tree-sitter library for editing
3138Bash shell scripts. 3205Bash shell scripts.
3139 3206
3207+++
3140*** New major mode 'dockerfile-ts-mode'. 3208*** New major mode 'dockerfile-ts-mode'.
3141A major mode based on the tree-sitter library for editing 3209A major mode based on the tree-sitter library for editing
3142Dockerfiles. This mode is auto-enabled for files which are named 3210Dockerfiles. This mode is auto-enabled for files which are named
3143"Dockerfile", have the "Dockerfile." prefix, or have the ".dockerfile" 3211"Dockerfile", have the "Dockerfile." prefix, or have the ".dockerfile"
3144extension. 3212extension.
3145 3213
3214+++
3146*** New major mode 'cmake-ts-mode'. 3215*** New major mode 'cmake-ts-mode'.
3147A major mode based on the tree-sitter library for editing CMake files. 3216A major mode based on the tree-sitter library for editing CMake files.
3148It is auto-enabled for files whose name is "CMakeLists.txt" or whose 3217It is auto-enabled for files whose name is "CMakeLists.txt" or whose
3149extension is ".cmake". 3218extension is ".cmake".
3150 3219
3220+++
3151*** New major mode 'toml-ts-mode'. 3221*** New major mode 'toml-ts-mode'.
3152A major mode based on the tree-sitter library for editing files 3222A major mode based on the tree-sitter library for editing files
3153written in TOML, a format for writing configuration files. It is 3223written in TOML, a format for writing configuration files. It is
3154auto-enabled for files with the ".toml" extension. 3224auto-enabled for files with the ".toml" extension.
3155 3225
3226+++
3156*** New major mode 'go-ts-mode'. 3227*** New major mode 'go-ts-mode'.
3157A major mode based on the tree-sitter library for editing programs in 3228A major mode based on the tree-sitter library for editing programs in
3158the Go language. It is auto-enabled for files with the ".go" extension. 3229the Go language. It is auto-enabled for files with the ".go" extension.
3159 3230
3231+++
3160*** New major mode 'go-mod-ts-mode'. 3232*** New major mode 'go-mod-ts-mode'.
3161A major mode based on the tree-sitter library for editing "go.mod" 3233A major mode based on the tree-sitter library for editing "go.mod"
3162files. It is auto-enabled for files which are named "go.mod". 3234files. It is auto-enabled for files which are named "go.mod".
3163 3235
3236+++
3164*** New major mode 'yaml-ts-mode'. 3237*** New major mode 'yaml-ts-mode'.
3165A major mode based on the tree-sitter library for editing files 3238A major mode based on the tree-sitter library for editing files
3166written in YAML. It is auto-enabled for files with the ".yaml" or 3239written in YAML. It is auto-enabled for files with the ".yaml" or
3167".yml" extensions. 3240".yml" extensions.
3168 3241
3242+++
3169*** New major mode 'rust-ts-mode'. 3243*** New major mode 'rust-ts-mode'.
3170A major mode based on the tree-sitter library for editing programs in 3244A major mode based on the tree-sitter library for editing programs in
3171the Rust language. It is auto-enabled for files with the ".rs" extension. 3245the Rust language. It is auto-enabled for files with the ".rs" extension.
@@ -3187,15 +3261,17 @@ or user level, with the exception of better performance and the order
3187of overlays returned by functions that don't promise any particular 3261of overlays returned by functions that don't promise any particular
3188order. 3262order.
3189 3263
3264---
3190*** The function 'overlay-recenter' is now a no-op. 3265*** The function 'overlay-recenter' is now a no-op.
3191This function does nothing, and in particular has no effect on the 3266This function does nothing, and in particular has no effect on the
3192value returned by 'overlay-lists'. The purpose of 'overlay-recenter' 3267value returned by 'overlay-lists'. The purpose of 'overlay-recenter'
3193was to allow more efficient lookup of overlays around certain buffer 3268was to allow more efficient lookup of overlays around a certain buffer
3194position; however with the new implementation the lookup of overlays 3269position; however with the new implementation the lookup of overlays
3195is efficient regardless of their position, and there's no longer any 3270is efficient regardless of their position, and there's no longer any
3196need to "optimize" the lookup, nor any notion of "center" of the 3271need to "optimize" the lookup, nor any notion of a "center" of the
3197overlays. 3272overlays.
3198 3273
3274---
3199*** The function 'overlay-lists' returns one unified list of overlays. 3275*** The function 'overlay-lists' returns one unified list of overlays.
3200This function used to return a cons of two lists, one with overlays 3276This function used to return a cons of two lists, one with overlays
3201before the "center" position, the other after that "center". It now 3277before the "center" position, the other after that "center". It now
@@ -3219,7 +3295,7 @@ auto-scaling applied. (This only makes a difference on HiDPI
3219displays.) 3295displays.)
3220 3296
3221+++ 3297+++
3222** Changes to "raw" in-memory xbm images are specified. 3298** Changes in how "raw" in-memory xbm images are specified.
3223Some years back Emacs gained the ability to scale images, and you 3299Some years back Emacs gained the ability to scale images, and you
3224could then specify ':width' and ':height' when using 'create-image' on all 3300could then specify ':width' and ':height' when using 'create-image' on all
3225image types -- except xbm images, because this format already used the 3301image types -- except xbm images, because this format already used the
@@ -3244,7 +3320,7 @@ signal an error in any file.)
3244In addition, files are scanned in a slightly different way. 3320In addition, files are scanned in a slightly different way.
3245Previously, ';;;###' specs inside a top-level form (i.e., something 3321Previously, ';;;###' specs inside a top-level form (i.e., something
3246like '(when ... ;;;### ...)' would be ignored. They are now parsed as 3322like '(when ... ;;;### ...)' would be ignored. They are now parsed as
3247normal. 3323usual.
3248 3324
3249--- 3325---
3250** Themes have special autoload cookies. 3326** Themes have special autoload cookies.
@@ -3284,7 +3360,7 @@ they will still be escaped, so the '.foo' symbol is still printed as
3284"\.foo" and the '?bar' symbol is still printed as "\?bar". 3360"\.foo" and the '?bar' symbol is still printed as "\?bar".
3285 3361
3286+++ 3362+++
3287** Remapping 'mode-line' no longer works as expected. 3363** Remapping 'mode-line' face no longer works as expected.
3288'mode-line' is now the parent face of the new 'mode-line-active' face, 3364'mode-line' is now the parent face of the new 'mode-line-active' face,
3289and remapping parent of basic faces does not work reliably. 3365and remapping parent of basic faces does not work reliably.
3290Instead of remapping 'mode-line', you have to remap 'mode-line-active'. 3366Instead of remapping 'mode-line', you have to remap 'mode-line-active'.
@@ -3307,10 +3383,10 @@ needed.
3307*** Emacs now supports 'medium' fonts. 3383*** Emacs now supports 'medium' fonts.
3308Emacs previously didn't distinguish between the 'regular'/'normal' 3384Emacs previously didn't distinguish between the 'regular'/'normal'
3309weight and the 'medium' weight, but it now also supports the (heavier) 3385weight and the 'medium' weight, but it now also supports the (heavier)
3310'medium' weight. However, this means that if you previously specified 3386'medium' weight. However, this means that if you specify a weight of
3311a weight of 'normal' and the font doesn't have this weight, Emacs 3387'normal' and the font doesn't have this weight, Emacs won't find the
3312won't find the font spec. In these cases, replacing ":weight 'normal" 3388font spec. In these cases, replacing ":weight 'normal" with ":weight
3313with ":weight 'medium" should fix the issue. 3389'medium" should fix the issue.
3314 3390
3315--- 3391---
3316** Keymap descriptions have changed. 3392** Keymap descriptions have changed.
@@ -3505,9 +3581,8 @@ but switching to 'ash' is generally much preferable.
3505 3581
3506+++ 3582+++
3507** New generic function 'function-documentation'. 3583** New generic function 'function-documentation'.
3508Can dynamically generate a raw docstring depending on the type of 3584It can dynamically generate a raw docstring depending on the type of a
3509a function. 3585function. Used mainly for docstrings of OClosures.
3510Used mainly for docstrings of OClosures.
3511 3586
3512+++ 3587+++
3513** Base64 encoding no longer tolerates latin-1 input. 3588** Base64 encoding no longer tolerates latin-1 input.
@@ -3515,7 +3590,7 @@ The functions 'base64-encode-string', 'base64url-encode-string',
3515'base64-encode-region' and 'base64url-encode-region' no longer accept 3590'base64-encode-region' and 'base64url-encode-region' no longer accept
3516characters in the range U+0080..U+00FF as substitutes for single bytes 3591characters in the range U+0080..U+00FF as substitutes for single bytes
3517in the range 128..255, but signal an error for all multibyte characters. 3592in the range 128..255, but signal an error for all multibyte characters.
3518The input must be encoded text. 3593The input must be unibyte encoded text.
3519 3594
3520+++ 3595+++
3521** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'. 3596** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'.
@@ -3667,7 +3742,7 @@ These function now take an optional comparison predicate argument.
3667 3742
3668+++ 3743+++
3669** 'completing-read' now allows a function as its REQUIRE-MATCH argument. 3744** 'completing-read' now allows a function as its REQUIRE-MATCH argument.
3670This function is called to see whether what the user has typed in is a 3745This function is called to see whether what the user has typed is a
3671match. This is also available from functions that call 3746match. This is also available from functions that call
3672'completing-read', like 'read-file-name'. 3747'completing-read', like 'read-file-name'.
3673 3748
@@ -3679,10 +3754,10 @@ Previously, it reported data only based on the frame.
3679** 'file-expand-wildcards' can now also take a regexp as PATTERN argument. 3754** 'file-expand-wildcards' can now also take a regexp as PATTERN argument.
3680 3755
3681--- 3756---
3682** vc-mtn (the backend for Monotone) has been made obsolete. 3757** vc-mtn (the VC backend for Monotone) has been made obsolete.
3683 3758
3684+++ 3759+++
3685** 'gui-set-selection' can now specify different values for different data types. 3760** 'gui-set-selection' can specify different values for different data types.
3686If DATA is a string, then its text properties are searched for values 3761If DATA is a string, then its text properties are searched for values
3687for each specific data type while the selection is being converted. 3762for each specific data type while the selection is being converted.
3688 3763
@@ -3702,6 +3777,7 @@ things to be saved.
3702** New function 'string-equal-ignore-case'. 3777** New function 'string-equal-ignore-case'.
3703This compares strings ignoring case differences. 3778This compares strings ignoring case differences.
3704 3779
3780+++
3705** 'symbol-file' can now report natively-compiled ".eln" files. 3781** 'symbol-file' can now report natively-compiled ".eln" files.
3706If Emacs was built with native-compilation enabled, Lisp programs can 3782If Emacs was built with native-compilation enabled, Lisp programs can
3707now call 'symbol-file' with the new optional 3rd argument non-nil to 3783now call 'symbol-file' with the new optional 3rd argument non-nil to
@@ -3838,7 +3914,7 @@ available only when Emacs was built with glibc as the C library.
3838 3914
3839--- 3915---
3840** 'x-show-tip' no longer hard-codes a timeout default. 3916** 'x-show-tip' no longer hard-codes a timeout default.
3841The new 'x-show-tooltip-timeout' variable allows the user to alter 3917The new variable 'x-show-tooltip-timeout' allows the user to alter
3842this for packages that don't use 'tooltip-show', but instead call the 3918this for packages that don't use 'tooltip-show', but instead call the
3843lower level function directly. 3919lower level function directly.
3844 3920
@@ -3850,8 +3926,8 @@ example for benchmarking purposes.
3850--- 3926---
3851** New function 'string-edit'. 3927** New function 'string-edit'.
3852This is meant to be used when the user has to edit a (potentially) 3928This is meant to be used when the user has to edit a (potentially)
3853long string. It pops you to a new buffer where you can edit the 3929long string. It pops up a new buffer where you can edit the string,
3854string, and a callback is called when the user types 'C-c C-c'. 3930and a callback is called when the user types 'C-c C-c'.
3855 3931
3856+++ 3932+++
3857** New function 'read-string-from-buffer'. 3933** New function 'read-string-from-buffer'.
@@ -3870,8 +3946,8 @@ putting the modes on the first line of a file).
3870 3946
3871+++ 3947+++
3872** New function 'flush-standard-output'. 3948** New function 'flush-standard-output'.
3873This enables you to display incomplete lines from batch-based Emacs 3949This enables display of lines that don't end in a newline from
3874scripts. 3950batch-based Emacs scripts.
3875 3951
3876+++ 3952+++
3877** New convenience function 'buttonize-region'. 3953** New convenience function 'buttonize-region'.
@@ -3891,7 +3967,7 @@ from which the last input event originated, and 'device-class' can be
3891used to determine the type of an input device. 3967used to determine the type of an input device.
3892 3968
3893+++ 3969+++
3894** 'track-mouse' can be a new value 'drag-source'. 3970** 'track-mouse' can have a new value 'drag-source'.
3895This means the same as 'dropping', but modifies the mouse position 3971This means the same as 'dropping', but modifies the mouse position
3896list in reported motion events if there is no frame underneath the 3972list in reported motion events if there is no frame underneath the
3897mouse pointer. 3973mouse pointer.
@@ -3940,7 +4016,10 @@ frequently than once in a second.
3940--- 4016---
3941** New function 'bidi-string-strip-control-characters'. 4017** New function 'bidi-string-strip-control-characters'.
3942This utility function is meant for displaying strings when it's 4018This utility function is meant for displaying strings when it's
3943essential that there's no bidirectional context. 4019essential that there's no bidirectional context. It removes all the
4020bidirectional formatting control characters (such as RLM, LRO, PDF,
4021etc.) from its argument string. The characters it removes are listed
4022in the value of 'bidi-control-characters'.
3944 4023
3945--- 4024---
3946** The Gnus range functions have been moved to a new library, range.el. 4025** The Gnus range functions have been moved to a new library, range.el.
@@ -4037,8 +4116,8 @@ to attackers trying to confuse the users will use the textsec library
4037to mark suspicious text. For instance shr/eww will mark suspicious 4116to mark suspicious text. For instance shr/eww will mark suspicious
4038URLs and links, Gnus will mark suspicious From addresses, and 4117URLs and links, Gnus will mark suspicious From addresses, and
4039Message mode will query the user if the user is sending mail to a 4118Message mode will query the user if the user is sending mail to a
4040suspicious address. If this variable is nil, these checks aren't 4119suspicious address. If this variable is nil, these checks are
4041performed. 4120disabled.
4042 4121
4043+++ 4122+++
4044*** New function 'textsec-suspicious-p'. 4123*** New function 'textsec-suspicious-p'.
@@ -4357,7 +4436,8 @@ aren't integer multiples of the default font.
4357** New function 'string-glyph-split'. 4436** New function 'string-glyph-split'.
4358This function splits a string into a list of strings representing 4437This function splits a string into a list of strings representing
4359separate glyphs. This takes into account combining characters and 4438separate glyphs. This takes into account combining characters and
4360grapheme clusters. 4439grapheme clusters, by treating each sequence of characters composed on
4440display as a single unit.
4361 4441
4362--- 4442---
4363** 'lookup-key' is more permissive when searching for extended menu items. 4443** 'lookup-key' is more permissive when searching for extended menu items.
@@ -4448,9 +4528,10 @@ temporary transition aid for Emacs 27, has served its purpose.
4448'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'. 4528'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'.
4449 4529
4450+++ 4530+++
4451** 'date-to-time' now assumes earliest values if its argument lacks 4531** 'date-to-time' now accepts arguments that lacks month, day, or time.
4452month, day, or time. For example, (date-to-time "2021-12-04") now 4532The function now assumes the earliest possible values if its argument
4453assumes a time of 00:00 instead of signaling an error. 4533lacks month, day, or time. For example, (date-to-time "2021-12-04")
4534now assumes a time of 00:00 instead of signaling an error.
4454 4535
4455+++ 4536+++
4456** 'format-seconds' now allows suppressing zero-value trailing elements. 4537** 'format-seconds' now allows suppressing zero-value trailing elements.
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index 4896f4c2937..415f8db52ca 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -333,7 +333,10 @@ as the new values of the bound variables in the recursive invocation."
333;;;###autoload 333;;;###autoload
334(defun string-glyph-split (string) 334(defun string-glyph-split (string)
335 "Split STRING into a list of strings representing separate glyphs. 335 "Split STRING into a list of strings representing separate glyphs.
336This takes into account combining characters and grapheme clusters." 336This takes into account combining characters and grapheme clusters:
337if compositions are enbaled, each sequence of characters composed
338on display into a single grapheme cluster is treated as a single
339indivisible unit."
337 (let ((result nil) 340 (let ((result nil)
338 (start 0) 341 (start 0)
339 comp) 342 comp)