aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Kangas2023-01-06 06:30:10 +0100
committerStefan Kangas2023-01-06 06:30:10 +0100
commit3fcbb865853d7c364cf7c2986ead9e258f449f97 (patch)
treec25714a8d349280168f57016f49612478bc04e74
parent15fc7b3cde92e420f48dfe188251e6af4d832af5 (diff)
parent0f5e74f17349dde4bd561f2a703a2bb2c4b97c54 (diff)
downloademacs-3fcbb865853d7c364cf7c2986ead9e258f449f97.tar.gz
emacs-3fcbb865853d7c364cf7c2986ead9e258f449f97.zip
Merge from origin/emacs-29
0f5e74f1734 ruby-ts-mode: Highlight method and block parameters f1aa306f915 ruby-ts-mode: Highlight variable assignments 089b08eb3eb ruby-ts-mode: Move 'self' and 'super' from constants to k... 7ede600273c (ruby-ts-mode): Split font-lock feature 'builtin' into two ec172d748f3 Avoid assertion violation due to fill-column indicator face 62c2963ce60 Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/... 2e6070f16c4 ; Another review of etc/NEWS 16eca92415b ; * src/gnutls.c (Fgnutls_deinit): Fix typo in doc string... 4753b587868 * lisp/cedet/semantic/symref/grep.el: Support ts-modes (b... 8a18369afdc ; Another fix for doc strings of 2 treesit.el functions 3fc68833517 ; Fix the doc strings of 2 treesit.el functions 83ce7c861e1 Make 'toml-ts-mode' optional # Conflicts: # etc/NEWS
-rw-r--r--etc/NEWS.29257
-rw-r--r--lisp/cedet/semantic/symref/grep.el5
-rw-r--r--lisp/progmodes/ruby-ts-mode.el67
-rw-r--r--lisp/textmodes/toml-ts-mode.el1
-rw-r--r--lisp/treesit.el24
-rw-r--r--src/gnutls.c2
-rw-r--r--src/xdisp.c15
7 files changed, 207 insertions, 164 deletions
diff --git a/etc/NEWS.29 b/etc/NEWS.29
index 91e470306c7..059278b08a1 100644
--- a/etc/NEWS.29
+++ b/etc/NEWS.29
@@ -332,7 +332,7 @@ this off, disable the new 'isearch-fold-quotes-mode' minor mode.
332 332
333--- 333---
334** Sorting commands no longer necessarily change modification status. 334** Sorting commands no longer necessarily change modification status.
335In earlier Emacs versions, commands like 'M-x sort-lines' would always 335In earlier Emacs versions, commands like 'sort-lines' would always
336change buffer modification status to "modified", whether they changed 336change buffer modification status to "modified", whether they changed
337something in the buffer or not. This has been changed: the buffer is 337something in the buffer or not. This has been changed: the buffer is
338marked as modified only if the sorting ended up actually changing the 338marked as modified only if the sorting ended up actually changing the
@@ -383,7 +383,7 @@ files that were compiled with an old EIEIO (Emacs<25).
383This is to open up the 'C-x 8 .' map to bind further characters there. 383This is to open up the 'C-x 8 .' map to bind further characters there.
384 384
385--- 385---
386** 'C-x 8 =' moved to 'C-x 8 = ='. 386** 'C-x 8 =' has been moved to 'C-x 8 = ='.
387You can now use 'C-x 8 =' to insert several characters with macron; 387You can now use 'C-x 8 =' to insert several characters with macron;
388for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH 388for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH
389MACRON. To insert a lone macron, type 'C-x 8 = =' instead of the 389MACRON. To insert a lone macron, type 'C-x 8 = =' instead of the
@@ -393,8 +393,8 @@ previous 'C-x ='.
393 393
394*** Eshell's PATH is now derived from 'exec-path'. 394*** Eshell's PATH is now derived from 'exec-path'.
395For consistency with remote connections, Eshell now uses 'exec-path' 395For consistency with remote connections, Eshell now uses 'exec-path'
396to determine the execution path on the local system, instead of using 396to determine the execution path on the local or remote system, instead
397the PATH environment variable directly. 397of using the PATH environment variable directly.
398 398
399--- 399---
400*** 'source' and '.' no longer accept the '--help' option. 400*** 'source' and '.' no longer accept the '--help' option.
@@ -416,12 +416,12 @@ To pipe both stdout and stderr, use the '|&' operator instead of '|'.
416 416
417--- 417---
418** The 'delete-forward-char' command now deletes by grapheme clusters. 418** The 'delete-forward-char' command now deletes by grapheme clusters.
419This command is by default bound to the <Delete> function key 419This command is by default bound to the '<Delete>' function key
420(a.k.a. <deletechar>). When invoked without a prefix argument or with 420(a.k.a. '<deletechar>'). When invoked without a prefix argument or
421a positive prefix numeric argument, the command will now delete 421with a positive prefix numeric argument, the command will now delete
422complete grapheme clusters produced by character composition. For 422complete grapheme clusters produced by character composition. For
423example, if point is before an Emoji sequence, pressing <Delete> will 423example, if point is before an Emoji sequence, pressing '<Delete>'
424delete the entire sequence, not just a single character at its 424will delete the entire sequence, not just a single character at its
425beginning. 425beginning.
426 426
427+++ 427+++
@@ -510,7 +510,7 @@ performance, but the latter is closer to a drop-in replacement.
510 510
511--- 511---
512** The thumbs.el library is now obsolete. 512** The thumbs.el library is now obsolete.
513We recommend using 'M-x image-dired' instead. 513We recommend using command 'image-dired' instead.
514 514
515--- 515---
516** The autoarg.el library is now marked obsolete. 516** The autoarg.el library is now marked obsolete.
@@ -648,7 +648,7 @@ duplicated on its right-hand side.
648 648
649+++ 649+++
650** 'network-lookup-address-info' can now check numeric IP address validity. 650** 'network-lookup-address-info' can now check numeric IP address validity.
651Specifying 'numeric' as the new optional 'hints' argument makes it 651Specifying 'numeric' as the new optional HINTS argument makes it
652check if the passed address is a valid IPv4/IPv6 address (without DNS 652check if the passed address is a valid IPv4/IPv6 address (without DNS
653traffic). 653traffic).
654 654
@@ -697,7 +697,7 @@ This is like 'save-buffers-kill-emacs', but instead of just killing
697the current Emacs process at the end, it starts a new Emacs process 697the current Emacs process at the end, it starts a new Emacs process
698(using the same command line arguments as the running Emacs process). 698(using the same command line arguments as the running Emacs process).
699'kill-emacs' and 'save-buffers-kill-emacs' have also gained new 699'kill-emacs' and 'save-buffers-kill-emacs' have also gained new
700optional parameters to restart instead of just killing the current 700optional arguments to restart instead of just killing the current
701process. 701process.
702 702
703** Drag and Drop 703** Drag and Drop
@@ -902,7 +902,7 @@ the 'COLORTERM' environment variable is set to the value "truecolor".
902 902
903--- 903---
904*** Select active regions with xterm selection support. 904*** Select active regions with xterm selection support.
905On terminals with xterm setSelection support, the active region may be 905On terminals with xterm "setSelection" support, the active region may be
906saved to the X primary selection, following the 906saved to the X primary selection, following the
907'select-active-regions' variable. This support is enabled when 907'select-active-regions' variable. This support is enabled when
908'tty-select-active-regions' is non-nil. 908'tty-select-active-regions' is non-nil.
@@ -1041,7 +1041,7 @@ instead.
1041*** New user option 'help-enable-variable-value-editing'. 1041*** New user option 'help-enable-variable-value-editing'.
1042If enabled, 'e' on a value in "*Help*" will pop you to a new buffer 1042If enabled, 'e' on a value in "*Help*" will pop you to a new buffer
1043where you can edit the value. This is not enabled by default, because 1043where you can edit the value. This is not enabled by default, because
1044it's easy to make an edit that yields an invalid result. 1044it is easy to make an edit that yields an invalid result.
1045 1045
1046--- 1046---
1047*** 'C-h b' uses outlining by default. 1047*** 'C-h b' uses outlining by default.
@@ -1086,7 +1086,7 @@ helpful commands for various tasks. You can toggle the display using
1086'C-h C-q'. 1086'C-h C-q'.
1087 1087
1088** Emacs now comes with Org v9.6. 1088** Emacs now comes with Org v9.6.
1089See the file ORG-NEWS for user-visible changes in Org. 1089See the file "ORG-NEWS" for user-visible changes in Org.
1090 1090
1091** Outline Mode 1091** Outline Mode
1092 1092
@@ -1135,14 +1135,14 @@ buffer on that frame.
1135*** 'display-buffer' now can set up the body size of the chosen window. 1135*** 'display-buffer' now can set up the body size of the chosen window.
1136For example, a 'display-buffer-alist' entry of 1136For example, a 'display-buffer-alist' entry of
1137 1137
1138 '(window-width . (body-columns . 40))' 1138 (window-width . (body-columns . 40))
1139 1139
1140will make the body of the chosen window 40 columns wide. For the 1140will make the body of the chosen window 40 columns wide. For the
1141height use 'window-height' and 'body-lines', respectively. 1141height use 'window-height' and 'body-lines', respectively.
1142 1142
1143--- 1143---
1144*** You can customize on which window 'scroll-other-window' operates. 1144*** You can customize on which window 'scroll-other-window' operates.
1145This is controlled by the new 'other-window-scroll-default' user option. 1145This is controlled by the new 'other-window-scroll-default' variable.
1146 1146
1147** Frames 1147** Frames
1148 1148
@@ -1182,7 +1182,7 @@ LRI). The new command 'highlight-confusing-reorderings' finds and
1182highlights segments of buffer text whose reordering for display is 1182highlights segments of buffer text whose reordering for display is
1183suspicious and could be malicious. 1183suspicious and could be malicious.
1184 1184
1185** Emacs server and client changes 1185** Emacs Server and Client
1186 1186
1187+++ 1187+++
1188*** New command-line option '-r'/'--reuse-frame' for emacsclient. 1188*** New command-line option '-r'/'--reuse-frame' for emacsclient.
@@ -1215,9 +1215,9 @@ available options can be restored by enabling this option.
1215*** New user option 'rcirc-bridge-bot-alist'. 1215*** New user option 'rcirc-bridge-bot-alist'.
1216If you are in a channel where a bot is responsible for bridging 1216If you are in a channel where a bot is responsible for bridging
1217between networks, you can use this variable to make these messages 1217between networks, you can use this variable to make these messages
1218appear more native. For example you might set the option to: 1218appear more native. For example, you might set the option to:
1219 1219
1220 (setq rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+"))) 1220 (setopt rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+")))
1221 1221
1222for messages like 1222for messages like
1223 1223
@@ -1256,6 +1256,7 @@ will wait forever for redisplay to finish. (We believe you won't need
1256this feature, given the ability to display buffers with very long 1256this feature, given the ability to display buffers with very long
1257lines.) 1257lines.)
1258 1258
1259
1259* Editing Changes in Emacs 29.1 1260* Editing Changes in Emacs 29.1
1260 1261
1261+++ 1262+++
@@ -1313,12 +1314,12 @@ dragged.
1313--- 1314---
1314** New user option 'yank-menu-max-items'. 1315** New user option 'yank-menu-max-items'.
1315Customize this option to limit the number of entries in the menu 1316Customize this option to limit the number of entries in the menu
1316"Edit->Paste from Kill Menu". The default is 60. 1317"EditPaste from Kill Menu". The default is 60.
1317 1318
1318+++ 1319+++
1319** Performing a pinch gesture on a touchpad now increases the text scale. 1320** Performing a pinch gesture on a touchpad now increases the text scale.
1320 1321
1321** show-paren-mode 1322** Show Paren Mode
1322 1323
1323+++ 1324+++
1324*** New user option 'show-paren-context-when-offscreen'. 1325*** New user option 'show-paren-context-when-offscreen'.
@@ -1358,15 +1359,16 @@ you don't want to enable input fontification by default.
1358 1359
1359--- 1360---
1360*** New user options for alternate wheel events. 1361*** New user options for alternate wheel events.
1361The options 'mouse-wheel-down-alternate-event', 1362The user options 'mouse-wheel-down-alternate-event' and
1362'mouse-wheel-up-alternate-event', 'mouse-wheel-left-alternate-event', 1363'mouse-wheel-up-alternate-event' as well as the variables
1363and 'mouse-wheel-right-alternate-event' have been added to better 1364'mouse-wheel-left-alternate-event' and
1364support systems where two kinds of wheel events can be received. 1365'mouse-wheel-right-alternate-event' have been added to better support
1366systems where two kinds of wheel events can be received.
1365 1367
1366** Internationalization changes 1368** Internationalization
1367 1369
1368--- 1370---
1369*** The <Delete> function key now allows deleting the entire composed sequence. 1371*** The '<Delete>' function key now allows deleting the entire composed sequence.
1370For the details, see the item about the 'delete-forward-char' command 1372For the details, see the item about the 'delete-forward-char' command
1371above. 1373above.
1372 1374
@@ -1471,7 +1473,7 @@ change the input method's translation rules, customize the user option
1471'tamil-translation-rules'. 1473'tamil-translation-rules'.
1472 1474
1473--- 1475---
1474*** New tamil99 input method for the Tamil language. 1476*** New 'tamil99' input method for the Tamil language.
1475This supports the keyboard layout specifically designed for the Tamil 1477This supports the keyboard layout specifically designed for the Tamil
1476language. 1478language.
1477 1479
@@ -1505,7 +1507,7 @@ If non-nil and there's only one matching option, auto-select that.
1505If non-nil, this user option describes what entries not to add to the 1507If non-nil, this user option describes what entries not to add to the
1506database stored on disk. 1508database stored on disk.
1507 1509
1508** Auth-Source 1510** Auth Source
1509 1511
1510+++ 1512+++
1511*** New user option 'auth-source-pass-extra-query-keywords'. 1513*** New user option 'auth-source-pass-extra-query-keywords'.
@@ -1537,7 +1539,7 @@ The corresponding key 'Y' is now bound by default in Dired.
1537 1539
1538+++ 1540+++
1539*** 'dired-do-relsymlink-regexp' moved from dired-x to dired. 1541*** 'dired-do-relsymlink-regexp' moved from dired-x to dired.
1540The corresponding key '% Y' is now bound by default in Dired. 1542The corresponding key sequence '% Y' is now bound by default in Dired.
1541 1543
1542--- 1544---
1543*** 'M-G' is now bound to 'dired-goto-subdir'. 1545*** 'M-G' is now bound to 'dired-goto-subdir'.
@@ -1583,7 +1585,7 @@ Dired will now, by default, include the free space in the first line
1583instead of having it on a separate line. To get the previous behavior 1585instead of having it on a separate line. To get the previous behavior
1584back, say: 1586back, say:
1585 1587
1586 (setq dired-free-space 'separate) 1588 (setopt dired-free-space 'separate)
1587 1589
1588--- 1590---
1589*** New user option 'dired-make-directory-clickable'. 1591*** New user option 'dired-make-directory-clickable'.
@@ -1676,7 +1678,7 @@ this invocation as its default.
1676This is bound to 'H' and toggles whether to hide or show the widget 1678This is bound to 'H' and toggles whether to hide or show the widget
1677contents. 1679contents.
1678 1680
1679** Diff mode 1681** Diff Mode
1680 1682
1681--- 1683---
1682*** New user option 'diff-whitespace-style'. 1684*** New user option 'diff-whitespace-style'.
@@ -1826,7 +1828,7 @@ only jump if the location of the first error is known), and
1826 1828
1827+++ 1829+++
1828*** New user option 'compilation-max-output-line-length'. 1830*** New user option 'compilation-max-output-line-length'.
1829Lines longer than the value of this variable will have their ends 1831Lines longer than the value of this option will have their ends
1830hidden, with a button to reveal the hidden text. This speeds up 1832hidden, with a button to reveal the hidden text. This speeds up
1831operations like grepping on files that have few newlines. The default 1833operations like grepping on files that have few newlines. The default
1832value is 400; set to nil to disable hiding. 1834value is 400; set to nil to disable hiding.
@@ -1858,10 +1860,10 @@ uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form'
1858 1860
1859--- 1861---
1860** savehist.el can now truncate variables that are too long. 1862** savehist.el can now truncate variables that are too long.
1861An element of 'savehist-additional-variables' can now be of the form 1863An element of user option 'savehist-additional-variables' can now be
1862'(VARIABLE . MAX-ELTS)', which means to truncate the VARIABLE's value to 1864of the form '(VARIABLE . MAX-ELTS)', which means to truncate the
1863at most MAX-ELTS elements (if the value is a list) before saving the 1865VARIABLE's value to at most MAX-ELTS elements (if the value is a list)
1864value. 1866before saving the value.
1865 1867
1866** Minibuffer and Completions 1868** Minibuffer and Completions
1867 1869
@@ -1978,7 +1980,7 @@ command accepts the Unicode name of an Emoji (for example, "smiling
1978face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer 1980face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer
1979completion, and adds the Emoji into the search string. 1981completion, and adds the Emoji into the search string.
1980 1982
1981** Glyphless characters 1983** Glyphless Characters
1982 1984
1983+++ 1985+++
1984*** New minor mode 'glyphless-display-mode'. 1986*** New minor mode 'glyphless-display-mode'.
@@ -1995,7 +1997,7 @@ and GUI terminals.
1995*** "Replacement character" feature for undisplayable characters on TTYs. 1997*** "Replacement character" feature for undisplayable characters on TTYs.
1996The 'acronym' method of displaying glyphless characters on text-mode 1998The 'acronym' method of displaying glyphless characters on text-mode
1997frames treats single-character acronyms specially: they are displayed 1999frames treats single-character acronyms specially: they are displayed
1998without the surrounding [..] "box", thus in effect treating such 2000without the surrounding '[..]' "box", thus in effect treating such
1999"acronyms" as replacement characters. 2001"acronyms" as replacement characters.
2000 2002
2001** Registers 2003** Registers
@@ -2007,7 +2009,7 @@ For instance, to enable jumping to the "*Messages*" buffer with
2007 2009
2008 (set-register ?m '(buffer . "*Messages*")) 2010 (set-register ?m '(buffer . "*Messages*"))
2009 2011
2010** Pixel-fill 2012** Pixel Fill
2011 2013
2012+++ 2014+++
2013*** This is a new package that deals with filling variable-pitch text. 2015*** This is a new package that deals with filling variable-pitch text.
@@ -2019,11 +2021,11 @@ This fills the region to be no wider than a specified pixel width.
2019** Info 2021** Info
2020 2022
2021+++ 2023+++
2022*** 'M-x info-apropos' now takes a prefix argument to search for regexps. 2024*** Command 'info-apropos' now takes a prefix argument to search for regexps.
2023 2025
2024--- 2026---
2025*** New command 'Info-goto-node-web' and key binding 'G'. 2027*** New command 'Info-goto-node-web' and key binding 'G'.
2026This will take you to the gnu.org web server's version of the current 2028This will take you to the "gnu.org" web server's version of the current
2027info node. This command only works for the Emacs and Emacs Lisp manuals. 2029info node. This command only works for the Emacs and Emacs Lisp manuals.
2028 2030
2029** Shortdoc 2031** Shortdoc
@@ -2164,9 +2166,9 @@ main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el").
2164 2166
2165+++ 2167+++
2166*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'. 2168*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'.
2167'eudc-expansion-overwrites-query' is renamed to 2169The user option 'eudc-expansion-overwrites-query' is renamed to
2168'eudc-expansion-save-query-as-kill' to reflect the actual behavior of 2170'eudc-expansion-save-query-as-kill' to reflect the actual behavior of
2169the user option. 2171the user option. The former is kept as alias.
2170 2172
2171+++ 2173+++
2172*** New command 'eudc-expand-try-all'. 2174*** New command 'eudc-expand-try-all'.
@@ -2180,7 +2182,7 @@ for a name that happens to match a contact in one's BBDB.
2180*** New behavior and default for user option 'eudc-inline-expansion-format'. 2182*** New behavior and default for user option 'eudc-inline-expansion-format'.
2181EUDC inline expansion result formatting defaulted to 2183EUDC inline expansion result formatting defaulted to
2182 2184
2183 '("%s %s <%s>" firstname name email) 2185 ("%s %s <%s>" firstname name email)
2184 2186
2185Since email address specifications need to comply with RFC 5322 in 2187Since email address specifications need to comply with RFC 5322 in
2186order to be useful in messages, there was a risk to produce syntax 2188order to be useful in messages, there was a risk to produce syntax
@@ -2227,8 +2229,9 @@ are supported only.
2227The 'eww-auto-rename-buffer' user option can be configured to rename 2229The 'eww-auto-rename-buffer' user option can be configured to rename
2228rendered web pages by using their title, URL, or a user-defined 2230rendered web pages by using their title, URL, or a user-defined
2229function which returns a string. For the first two cases, the length 2231function which returns a string. For the first two cases, the length
2230of the resulting name is controlled by 'eww-buffer-name-length'. By 2232of the resulting name is controlled by the user option
2231default, no automatic renaming is performed. 2233'eww-buffer-name-length'. By default, no automatic renaming is
2234performed.
2232 2235
2233+++ 2236+++
2234*** New user option 'shr-allowed-images'. 2237*** New user option 'shr-allowed-images'.
@@ -2247,7 +2250,7 @@ doesn't work on other systems. Also see etc/PROBLEMS.
2247These are used to alter an URL before using it. By default it removes 2250These are used to alter an URL before using it. By default it removes
2248the common "utm_" trackers from URLs. 2251the common "utm_" trackers from URLs.
2249 2252
2250** Find-Dired 2253** Find Dired
2251 2254
2252--- 2255---
2253*** New command 'find-dired-with-command'. 2256*** New command 'find-dired-with-command'.
@@ -2264,14 +2267,14 @@ Message, referred to as 'gnus-summary-tool-bar-retro',
2264'gnus-group-tool-bar-retro' and 'message-tool-bar-retro', and 2267'gnus-group-tool-bar-retro' and 'message-tool-bar-retro', and
2265'gnus-summary-tool-bar-gnome', 'gnus-group-tool-bar-gnome' and 2268'gnus-summary-tool-bar-gnome', 'gnus-group-tool-bar-gnome' and
2266'message-tool-bar-gnome'. The "retro" tool bars have been removed (as 2269'message-tool-bar-gnome'. The "retro" tool bars have been removed (as
2267well as the icons used), and the "Gnome" tool bars are now the only 2270well as the icons used), and the "gnome" tool bars are now the only
2268pre-defined toolbars. 2271pre-defined toolbars.
2269 2272
2270--- 2273---
2271*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed. 2274*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed.
2272The 'gnus-summary-down-thread' binding to "M-C-d" was shadowed by 2275The 'gnus-summary-down-thread' binding to 'M-C-d' was shadowed by
2273'gnus-summary-read-document', and these commands are also available on 2276'gnus-summary-read-document', and these commands are also available on
2274"T-u" and "T-d" respectively. 2277'T u' and 'T d' respectively.
2275 2278
2276--- 2279---
2277*** Gnus now uses a variable-pitch font in the headers by default. 2280*** Gnus now uses a variable-pitch font in the headers by default.
@@ -2355,7 +2358,7 @@ displayed in the "*Help*" buffer will be linked to the documentation
2355for the command they are bound to. This does not affect listings of 2358for the command they are bound to. This does not affect listings of
2356key bindings and functions (such as 'C-h b'). 2359key bindings and functions (such as 'C-h b').
2357 2360
2358** Info-look 2361** Info Look
2359 2362
2360--- 2363---
2361*** info-look specs can now be expanded at run time instead of a load time. 2364*** info-look specs can now be expanded at run time instead of a load time.
@@ -2363,14 +2366,14 @@ The new ':doc-spec-function' element can be used to compute the
2363':doc-spec' element when the user asks for info on that particular 2366':doc-spec' element when the user asks for info on that particular
2364mode (instead of at load time). 2367mode (instead of at load time).
2365 2368
2366** Ansi-color 2369** Ansi Color
2367 2370
2368--- 2371---
2369*** Support for ANSI 256-color and 24-bit colors. 2372*** Support for ANSI 256-color and 24-bit colors.
2370256-color and 24-bit color codes are now handled by ANSI color 2373256-color and 24-bit color codes are now handled by ANSI color
2371filters and displayed with the specified color. 2374filters and displayed with the specified color.
2372 2375
2373** Term-mode 2376** Term Mode
2374 2377
2375--- 2378---
2376*** New user option 'term-bind-function-keys'. 2379*** New user option 'term-bind-function-keys'.
@@ -2434,7 +2437,7 @@ matches.
2434--- 2437---
2435*** New function 'xref-show-xrefs'. 2438*** New function 'xref-show-xrefs'.
2436 2439
2437** File notifications 2440** File Notifications
2438 2441
2439+++ 2442+++
2440*** The new command 'file-notify-rm-all-watches' removes all file notifications. 2443*** The new command 'file-notify-rm-all-watches' removes all file notifications.
@@ -2505,7 +2508,7 @@ The old name was confusing, and is now an obsolete function alias.
2505*** Users can now add special image conversion functions. 2508*** Users can now add special image conversion functions.
2506This is done via 'image-converter-add-handler'. 2509This is done via 'image-converter-add-handler'.
2507 2510
2508** Image-Dired 2511** Image Dired
2509 2512
2510+++ 2513+++
2511*** 'image-dired-image-mode' is now based on 'image-mode'. 2514*** 'image-dired-image-mode' is now based on 'image-mode'.
@@ -2606,9 +2609,9 @@ programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and
2606to use it; it is not enabled by default. 2609to use it; it is not enabled by default.
2607 2610
2608--- 2611---
2609*** Reduce dependency on external "exiftool" command. 2612*** Reduce dependency on external "exiftool" program.
2610The 'image-dired-copy-with-exif-file-name' no longer requires an 2613The 'image-dired-copy-with-exif-file-name' command no longer requires
2611external "exiftool" command to be available. The user options 2614an external "exiftool" program to be available. The user options
2612'image-dired-cmd-read-exif-data-program' and 2615'image-dired-cmd-read-exif-data-program' and
2613'image-dired-cmd-read-exif-data-options' are now obsolete. 2616'image-dired-cmd-read-exif-data-options' are now obsolete.
2614 2617
@@ -2712,7 +2715,7 @@ fringe (or nil to disable showing this marker).
2712This is a convenience function to extract the field data from 2715This is a convenience function to extract the field data from
2713'exif-parse-file' and 'exif-parse-buffer'. 2716'exif-parse-file' and 'exif-parse-buffer'.
2714 2717
2715** Xwidgets 2718** Xwidget
2716 2719
2717--- 2720---
2718*** New user option 'xwidget-webkit-buffer-name-format'. 2721*** New user option 'xwidget-webkit-buffer-name-format'.
@@ -2755,7 +2758,7 @@ and friends.
2755 2758
2756+++ 2759+++
2757*** New connection methods "docker", "podman" and "kubernetes". 2760*** New connection methods "docker", "podman" and "kubernetes".
2758They allow accessing environments provided by Docker and similar 2761They allow accessing containers provided by Docker and similar
2759programs. 2762programs.
2760 2763
2761--- 2764---
@@ -2853,7 +2856,7 @@ will cause the whole command to be passed to the operating system
2853shell. This is particularly useful to bypass Eshell's own pipelining 2856shell. This is particularly useful to bypass Eshell's own pipelining
2854support for pipelines which will move a lot of data. See section 2857support for pipelines which will move a lot of data. See section
2855"Running Shell Pipelines Natively" in the Eshell manual, node 2858"Running Shell Pipelines Natively" in the Eshell manual, node
2856"(eshell) Input/Output". 2859"(eshell) Pipelines".
2857 2860
2858+++ 2861+++
2859*** New module to help supplying absolute file names to remote commands. 2862*** New module to help supplying absolute file names to remote commands.
@@ -2908,8 +2911,8 @@ values passed as a single token, such as '-oVALUE' or
2908commands" in the "(eshell) Built-ins" node of the Eshell manual. 2911commands" in the "(eshell) Built-ins" node of the Eshell manual.
2909 2912
2910--- 2913---
2911*** Eshell globs ending with '/' now match only directories. 2914*** Eshell globs ending with "/" now match only directories.
2912Additionally, globs ending with '**/' or '***/' no longer raise an 2915Additionally, globs ending with "**/" or "***/" no longer raise an
2913error, and now expand to all directories recursively (following 2916error, and now expand to all directories recursively (following
2914symlinks in the latter case). 2917symlinks in the latter case).
2915 2918
@@ -3052,7 +3055,7 @@ The old name is still available as an obsolete function alias.
3052*** The url-irc library now understands "ircs://" links. 3055*** The url-irc library now understands "ircs://" links.
3053 3056
3054--- 3057---
3055*** New command 'world-clock-copy-time-as-kill' for 'M-x world-clock'. 3058*** New command 'world-clock-copy-time-as-kill' for 'world-clock-mode'.
3056It copies the current line into the kill ring. 3059It copies the current line into the kill ring.
3057 3060
3058--- 3061---
@@ -3061,17 +3064,17 @@ The new face 'abbrev-table-name' is used to display the abbrev table
3061name. 3064name.
3062 3065
3063--- 3066---
3064*** New key binding 'O' in 'M-x list-buffers'. 3067*** New key binding 'O' in "*Buffer List*".
3065This key is now bound to 'Buffer-menu-view-other-window', which will 3068This key is now bound to 'Buffer-menu-view-other-window', which will
3066view this line's buffer in View mode in another window. 3069view this line's buffer in View mode in another window.
3067 3070
3068** Scheme mode 3071** Scheme Mode
3069 3072
3070--- 3073---
3071*** Auto-detection of Scheme library files. 3074*** Auto-detection of Scheme library files.
3072Emacs now automatically enables the Scheme mode when opening R6RS 3075Emacs now automatically enables the Scheme mode when opening R6RS
3073Scheme Library Source ('.sls') files and R7RS Scheme Library 3076Scheme Library Source (".sls") files and R7RS Scheme Library
3074Definition ('.sld') files. 3077Definition (".sld") files.
3075 3078
3076--- 3079---
3077*** Imenu members for R6RS and R7RS library members. 3080*** Imenu members for R6RS and R7RS library members.
@@ -3086,10 +3089,10 @@ Imenu now lists the members directly nested in R6RS Scheme libraries
3086Emacs now comes with the Eglot package, which enhances various Emacs 3089Emacs now comes with the Eglot package, which enhances various Emacs
3087features, such as completion, documentation, error detection, etc., 3090features, such as completion, documentation, error detection, etc.,
3088based on data provided by language servers using the Language Server 3091based on data provided by language servers using the Language Server
3089Protocol (LSP). 3092Protocol (LSP). See the new Info manual "(eglot) Top" for more.
3090 3093
3091+++ 3094+++
3092*** use-package: Declarative package configuration. 3095** use-package: Declarative package configuration.
3093use-package is now shipped with Emacs. It provides the 'use-package' 3096use-package is now shipped with Emacs. It provides the 'use-package'
3094macro, which allows you to isolate package configuration in your init 3097macro, which allows you to isolate package configuration in your init
3095file in a way that is declarative, tidy, and performance-oriented. 3098file in a way that is declarative, tidy, and performance-oriented.
@@ -3164,7 +3167,7 @@ such files, and will display a warning if the tree-sitter library or
3164the parser grammar library is not available. To prevent the warnings, 3167the parser grammar library is not available. To prevent the warnings,
3165either build Emacs with tree-sitter and install the grammar libraries, 3168either build Emacs with tree-sitter and install the grammar libraries,
3166or customize 'auto-mode-alist' to specify some other major mode (or 3169or customize 'auto-mode-alist' to specify some other major mode (or
3167even Fundamental mode) for those kinds of files. 3170even 'fundamental-mode') for those kinds of files.
3168 3171
3169Each major mode based on tree-sitter needs a language grammar library, 3172Each major mode based on tree-sitter needs a language grammar library,
3170usually named "libtree-sitter-LANG.so" ("libtree-sitter-LANG.dll" on 3173usually named "libtree-sitter-LANG.so" ("libtree-sitter-LANG.dll" on
@@ -3251,9 +3254,8 @@ extension is ".cmake".
3251 3254
3252+++ 3255+++
3253*** New major mode 'toml-ts-mode'. 3256*** New major mode 'toml-ts-mode'.
3254A major mode based on the tree-sitter library for editing files 3257An optional major mode based on the tree-sitter library for editing
3255written in TOML, a format for writing configuration files. It is 3258files written in TOML, a format for writing configuration files.
3256auto-enabled for files with the ".toml" extension.
3257 3259
3258+++ 3260+++
3259*** New major mode 'go-ts-mode'. 3261*** New major mode 'go-ts-mode'.
@@ -3332,13 +3334,13 @@ auto-scaling applied. (This only makes a difference on HiDPI
3332displays.) 3334displays.)
3333 3335
3334+++ 3336+++
3335** Changes in how "raw" in-memory xbm images are specified. 3337** Changes in how "raw" in-memory XBM images are specified.
3336Some years back Emacs gained the ability to scale images, and you 3338Some years back Emacs gained the ability to scale images, and you
3337could then specify ':width' and ':height' when using 'create-image' on all 3339could then specify ':width' and ':height' when using 'create-image' on all
3338image types -- except xbm images, because this format already used the 3340image types -- except XBM images, because this format already used the
3339':width' and ':height' arguments to specify the width/height of the "raw" 3341':width' and ':height' arguments to specify the width/height of the "raw"
3340in-memory format. This meant that if you used these specifications 3342in-memory format. This meant that if you used these specifications
3341on, for instance, xbm files, Emacs would refuse to display them. This 3343on, for instance, XBM files, Emacs would refuse to display them. This
3342has been changed, and ':width'/':height' now works as with all other image 3344has been changed, and ':width'/':height' now works as with all other image
3343formats, and the way to specify the width/height of the "raw" 3345formats, and the way to specify the width/height of the "raw"
3344in-memory format is now by using ':data-width' and ':data-height'. 3346in-memory format is now by using ':data-width' and ':data-height'.
@@ -3349,7 +3351,7 @@ The various "loaddefs.el" files in the Emacs tree (which contain
3349information about autoloads, built-in packages and package prefixes) 3351information about autoloads, built-in packages and package prefixes)
3350used to be generated by functions in autoloads.el. These are now 3352used to be generated by functions in autoloads.el. These are now
3351generated by loaddefs-gen.el instead. This leads to functionally 3353generated by loaddefs-gen.el instead. This leads to functionally
3352equivalent "loaddef.el" files, but they do not use exactly the same 3354equivalent "loaddefs.el" files, but they do not use exactly the same
3353syntax, so using 'M-x update-file-autoloads' no longer works. (This 3355syntax, so using 'M-x update-file-autoloads' no longer works. (This
3354didn't work well in most files in the past, either, but it will now 3356didn't work well in most files in the past, either, but it will now
3355signal an error in any file.) 3357signal an error in any file.)
@@ -3494,7 +3496,7 @@ This change is now applied in 'dired-insert-directory'.
3494 3496
3495--- 3497---
3496** 'compilation-last-buffer' is (finally) declared obsolete. 3498** 'compilation-last-buffer' is (finally) declared obsolete.
3497It's been obsolete since Emacs-22.1, actually. 3499It has been obsolete since Emacs 22.1, actually.
3498 3500
3499--- 3501---
3500** Calling 'lsh' now elicits a byte-compiler warning. 3502** Calling 'lsh' now elicits a byte-compiler warning.
@@ -3524,9 +3526,9 @@ but switching to 'ash' is generally much preferable.
3524'command-history-map', 'compilation-parse-errors-function', 3526'command-history-map', 'compilation-parse-errors-function',
3525'completion-annotate-function', 'condition-case-no-debug', 3527'completion-annotate-function', 'condition-case-no-debug',
3526'count-lines-region', 'crisp-mode-modeline-string', 3528'count-lines-region', 'crisp-mode-modeline-string',
3527'custom-print-functions', 'custom-print-functions', 3529'custom-print-functions', 'cvs-string-prefix-p', 'data-debug-map',
3528'cvs-string-prefix-p', 'data-debug-map', 'deferred-action-function', 3530'deferred-action-function', 'deferred-action-list',
3529'deferred-action-list', 'dired-pop-to-buffer', 'dired-shrink-to-fit', 3531'dired-pop-to-buffer', 'dired-shrink-to-fit',
3530'dired-sort-set-modeline', 'dired-x-submit-report', 3532'dired-sort-set-modeline', 'dired-x-submit-report',
3531'display-buffer-function', 3533'display-buffer-function',
3532'ediff-choose-window-setup-function-automatically', 3534'ediff-choose-window-setup-function-automatically',
@@ -3548,11 +3550,10 @@ but switching to 'ash' is generally much preferable.
3548'inhibit-first-line-modes-suffixes', 'input-method-inactivate-hook', 3550'inhibit-first-line-modes-suffixes', 'input-method-inactivate-hook',
3549'intdos', 'javascript-generic-mode', 'javascript-generic-mode-hook', 3551'intdos', 'javascript-generic-mode', 'javascript-generic-mode-hook',
3550'latex-string-prefix-p', 'macro-declaration-function' (function), 3552'latex-string-prefix-p', 'macro-declaration-function' (function),
3551'macro-declaration-function' (variable), 'mail-complete-function', 3553'macro-declaration-function' (variable), 'mail-complete',
3552'mail-completion-at-point-function', 3554'mail-complete-function', 'mail-mailer-swallows-blank-line',
3553'mail-mailer-swallows-blank-line', 'mail-sent-via', 'make-register', 3555'mail-sent-via', 'make-register', 'makefile-complete',
3554'makefile-complete', 'menu-bar-kill-ring-save', 3556'menu-bar-kill-ring-save', 'meta-complete-symbol', 'meta-mode-map',
3555'meta-complete-symbol', 'meta-mode-map',
3556'mh-kill-folder-suppress-prompt-hooks', 3557'mh-kill-folder-suppress-prompt-hooks',
3557'minibuffer-completing-symbol', 3558'minibuffer-completing-symbol',
3558'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350', 3559'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350',
@@ -3723,7 +3724,7 @@ This can be used to specify what forms to put into 'command-history'
3723when executing commands interactively. 3724when executing commands interactively.
3724 3725
3725+++ 3726+++
3726** The FORM arg of 'time-convert' is mandatory. 3727** The FORM argument of 'time-convert' is mandatory.
3727'time-convert' can still be called without it, as before, but the 3728'time-convert' can still be called without it, as before, but the
3728compiler now emits a warning about this deprecated usage. 3729compiler now emits a warning about this deprecated usage.
3729 3730
@@ -3740,7 +3741,7 @@ TIMEOUT is the idle time after which to deactivate the transient map.
3740The default timeout value can be defined by the new variable 3741The default timeout value can be defined by the new variable
3741'set-transient-map-timeout'. 3742'set-transient-map-timeout'.
3742 3743
3743** Connection-local variables 3744** Connection Local Variables
3744 3745
3745+++ 3746+++
3746*** Some connection-local variables are now user options. 3747*** Some connection-local variables are now user options.
@@ -3769,7 +3770,7 @@ Reference manual for more information.
3769 3770
3770+++ 3771+++
3771** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'. 3772** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'.
3772These function now take an optional comparison predicate argument. 3773These function now take an optional comparison PREDICATE argument.
3773 3774
3774+++ 3775+++
3775** 'read-multiple-choice' can now use long-form answers. 3776** 'read-multiple-choice' can now use long-form answers.
@@ -3829,7 +3830,7 @@ When called with a new optional argument UNICODE non-nil, 'max-char'
3829will now report the maximum valid codepoint defined by the Unicode 3830will now report the maximum valid codepoint defined by the Unicode
3830Standard. 3831Standard.
3831 3832
3832** seq 3833** Seq
3833 3834
3834+++ 3835+++
3835*** New function 'seq-split'. 3836*** New function 'seq-split'.
@@ -3867,8 +3868,8 @@ It is called whenever the configuration of different monitors on a
3867display changes. 3868display changes.
3868 3869
3869+++ 3870+++
3870** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES parameter. 3871** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES argument.
3871This parameter can be used to override values of print-related settings. 3872This argument can be used to override values of print-related settings.
3872 3873
3873+++ 3874+++
3874** New minor mode 'header-line-indent-mode'. 3875** New minor mode 'header-line-indent-mode'.
@@ -3877,9 +3878,9 @@ be kept aligned with the buffer contents when the user switches
3877'display-line-numbers-mode' on or off. 3878'display-line-numbers-mode' on or off.
3878 3879
3879+++ 3880+++
3880** New minor mode 'lost-selection-mode'. 3881** New global minor mode 'lost-selection-mode'.
3881This minor mode makes Emacs deactivate the mark in all buffers when 3882This global minor mode makes Emacs deactivate the mark in all buffers
3882the primary selection is obtained by another program. 3883when the primary selection is obtained by another program.
3883 3884
3884--- 3885---
3885** On X, Emacs will try to preserve selection ownership when a frame is deleted. 3886** On X, Emacs will try to preserve selection ownership when a frame is deleted.
@@ -3894,7 +3895,7 @@ setting the user option 'x-auto-preserve-selections' to nil.
3894** New predicate 'char-uppercase-p'. 3895** New predicate 'char-uppercase-p'.
3895This returns non-nil if its argument its an uppercase character. 3896This returns non-nil if its argument its an uppercase character.
3896 3897
3897** Byte compilation 3898** Byte Compilation
3898 3899
3899--- 3900---
3900*** Byte compilation will now warn about some quoting mistakes in docstrings. 3901*** Byte compilation will now warn about some quoting mistakes in docstrings.
@@ -3912,7 +3913,7 @@ should really be present in the docstring, they should be quoted with
3912 3913
3913--- 3914---
3914*** Byte compilation will now warn about some malformed 'defcustom' types. 3915*** Byte compilation will now warn about some malformed 'defcustom' types.
3915It's very common to write 'defcustom' types on the form: 3916It is very common to write 'defcustom' types on the form:
3916 3917
3917 :type '(choice (const :tag "foo" 'bar)) 3918 :type '(choice (const :tag "foo" 'bar))
3918 3919
@@ -3991,7 +3992,7 @@ batch-based Emacs scripts.
3991This works like 'buttonize', but for a region instead of a string. 3992This works like 'buttonize', but for a region instead of a string.
3992 3993
3993+++ 3994+++
3994** 'macroexp-let2*' can omit TEST arg and use single-var bindings. 3995** 'macroexp-let2*' can omit TEST argument and use single-var bindings.
3995 3996
3996+++ 3997+++
3997** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'. 3998** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'.
@@ -4004,7 +4005,7 @@ from which the last input event originated, and 'device-class' can be
4004used to determine the type of an input device. 4005used to determine the type of an input device.
4005 4006
4006+++ 4007+++
4007** 'track-mouse' can have a new value 'drag-source'. 4008** Variable 'track-mouse' can have a new value 'drag-source'.
4008This means the same as 'dropping', but modifies the mouse position 4009This means the same as 'dropping', but modifies the mouse position
4009list in reported motion events if there is no frame underneath the 4010list in reported motion events if there is no frame underneath the
4010mouse pointer. 4011mouse pointer.
@@ -4052,7 +4053,7 @@ frequently than once in a second.
4052 4053
4053--- 4054---
4054** New function 'bidi-string-strip-control-characters'. 4055** New function 'bidi-string-strip-control-characters'.
4055This utility function is meant for displaying strings when it's 4056This utility function is meant for displaying strings when it is
4056essential that there's no bidirectional context. It removes all the 4057essential that there's no bidirectional context. It removes all the
4057bidirectional formatting control characters (such as RLM, LRO, PDF, 4058bidirectional formatting control characters (such as RLM, LRO, PDF,
4058etc.) from its argument string. The characters it removes are listed 4059etc.) from its argument string. The characters it removes are listed
@@ -4110,21 +4111,21 @@ them towards or away from each other.
4110 4111
4111+++ 4112+++
4112** New hook 'x-pre-popup-menu-hook'. 4113** New hook 'x-pre-popup-menu-hook'.
4113This hook is run before 'x-popup-menu' is about to display a 4114This hook, run before 'x-popup-menu', is about to display a
4114deck-of-cards menu on screen. 4115deck-of-cards menu on screen.
4115 4116
4116--- 4117---
4117** New hook 'post-select-region-hook'. 4118** New hook 'post-select-region-hook'.
4118This hook is run immediately after 'select-active-regions' causes the 4119This hook is run immediately after 'select-active-regions'. It causes
4119region to be set as the primary selection. 4120the region to be set as the primary selection.
4120 4121
4121+++ 4122+++
4122** New function 'buffer-match-p'. 4123** New function 'buffer-match-p'.
4123Check if a buffer satisfies some condition. Some examples for 4124Check if a buffer satisfies some condition. Some examples for
4124conditions can be regular expressions that match a buffer name, a 4125conditions can be regular expressions that match a buffer name, a
4125cons-cell like '(major-mode . shell-mode)' that matches any buffer 4126cons-cell like '(major-mode . shell-mode)' that matches any buffer
4126where 'major-mode' is 'shell-mode' or a combined with a condition like 4127where 'major-mode' is 'shell-mode' or a combination with a condition
4127'(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'. 4128like '(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'.
4128 4129
4129+++ 4130+++
4130** New function 'match-buffers'. 4131** New function 'match-buffers'.
@@ -4132,19 +4133,19 @@ It uses 'buffer-match-p' to gather a list of buffers that match a
4132condition. 4133condition.
4133 4134
4134--- 4135---
4135** New optional arguments 'text-face' and 'default-face' for 'tooltip-show'. 4136** New optional arguments TEXT-FACE and DEFAULT-FACE for 'tooltip-show'.
4136They allow changing the faces used for the tooltip text and frame 4137They allow changing the faces used for the tooltip text and frame
4137colors of the resulting tooltip frame from the default 'tooltip' face. 4138colors of the resulting tooltip frame from the default 'tooltip' face.
4138 4139
4139** Text security and suspiciousness 4140** Text Security and Suspiciousness
4140 4141
4141+++ 4142+++
4142*** New library textsec.el. 4143*** New library textsec.el.
4143This library contains a number of checks for whether a string is 4144This library contains a number of checks for whether a string is
4144"suspicious". This usually means that the string contains characters 4145"suspicious". This usually means that the string contains characters
4145that have glyphs that can be confused with other, more commonly used 4146that have glyphs that can be confused with other, more commonly used
4146glyphs, or contain bidirectional (or other) formatting characters that 4147glyphs, or contains bidirectional (or other) formatting characters
4147may be used to confuse a user. 4148that may be used to confuse a user.
4148 4149
4149+++ 4150+++
4150*** New user option 'textsec-check'. 4151*** New user option 'textsec-check'.
@@ -4162,7 +4163,7 @@ This is the main function Emacs applications should be using to check
4162whether a string is suspicious. It heeds the 'textsec-check' user 4163whether a string is suspicious. It heeds the 'textsec-check' user
4163option. 4164option.
4164 4165
4165** Keymaps and key definitions 4166** Keymaps and Key Definitions
4166 4167
4167+++ 4168+++
4168*** 'where-is-internal' can now filter events marked as non key events. 4169*** 'where-is-internal' can now filter events marked as non key events.
@@ -4198,7 +4199,7 @@ de-emphasized in the documentation.
4198*** Use 'keymap-set-after' instead of 'define-key-after'. 4199*** Use 'keymap-set-after' instead of 'define-key-after'.
4199 4200
4200+++ 4201+++
4201*** Use 'keymap-lookup' instead of 'lookup-keymap' and 'key-binding'. 4202*** Use 'keymap-lookup' instead of 'lookup-key' and 'key-binding'.
4202 4203
4203+++ 4204+++
4204*** Use 'keymap-local-lookup' instead of 'local-key-binding'. 4205*** Use 'keymap-local-lookup' instead of 'local-key-binding'.
@@ -4286,9 +4287,9 @@ instance) when covering huge amounts of data (that has no meaningful
4286searchable data, like image data) with a 'display' text property. 4287searchable data, like image data) with a 'display' text property.
4287 4288
4288+++ 4289+++
4289** 'insert-image' now takes an INHIBIT-ISEARCH optional parameter. 4290** 'insert-image' now takes an INHIBIT-ISEARCH optional argument.
4290It marks the image with the 'inhibit-isearch' text property, which 4291It marks the image with the 'inhibit-isearch' text property, which
4291inhibits 'isearch' matching the STRING parameter. 4292inhibits 'isearch' matching the STRING argument.
4292 4293
4293--- 4294---
4294** New variable 'replace-regexp-function'. 4295** New variable 'replace-regexp-function'.
@@ -4356,7 +4357,7 @@ character width/height.
4356This means the vscroll will not be reset when set on a window that is 4357This means the vscroll will not be reset when set on a window that is
4357"frozen" due to a mini-window being resized. 4358"frozen" due to a mini-window being resized.
4358 4359
4359** XDG support 4360** XDG Support
4360 4361
4361--- 4362---
4362*** New function 'xdg-state-home'. 4363*** New function 'xdg-state-home'.
@@ -4402,7 +4403,7 @@ This holds the value of the previous call to 'set-locale-environment'.
4402This macro can be used to change the locale temporarily while 4403This macro can be used to change the locale temporarily while
4403executing code. 4404executing code.
4404 4405
4405** table.el 4406** Table
4406 4407
4407--- 4408---
4408*** New user option 'table-latex-environment'. 4409*** New user option 'table-latex-environment'.
@@ -4428,8 +4429,8 @@ local variables and removes overlays and text properties.
4428 4429
4429+++ 4430+++
4430** 'kill-all-local-variables' can now kill all local variables. 4431** 'kill-all-local-variables' can now kill all local variables.
4431If given the new optional KILL-PERMANENT argument, also kill permanent 4432If given the new optional KILL-PERMANENT argument, it also kills
4432local variables. 4433permanent local variables.
4433 4434
4434+++ 4435+++
4435** Third 'mapconcat' argument SEPARATOR is now optional. 4436** Third 'mapconcat' argument SEPARATOR is now optional.
@@ -4447,7 +4448,7 @@ This macro allows defining keymap variables more conveniently.
4447Use ':repeat t' to have all bindings be repeatable or for more 4448Use ':repeat t' to have all bindings be repeatable or for more
4448advanced usage: 4449advanced usage:
4449 4450
4450 ':repeat (:enter (commands ...) :exit (commands ...))' 4451 :repeat (:enter (commands ...) :exit (commands ...))
4451 4452
4452--- 4453---
4453** 'kbd' can now be used in built-in, preloaded libraries. 4454** 'kbd' can now be used in built-in, preloaded libraries.
@@ -4488,7 +4489,7 @@ an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
4488'[menu-bar foo-bar]'. This further improves backwards-compatibility 4489'[menu-bar foo-bar]'. This further improves backwards-compatibility
4489when converting menus to use 'easy-menu-define'. 4490when converting menus to use 'easy-menu-define'.
4490 4491
4491** xwidgets 4492** Xwidget
4492 4493
4493+++ 4494+++
4494*** The function 'make-xwidget' now accepts an optional RELATED argument. 4495*** The function 'make-xwidget' now accepts an optional RELATED argument.
@@ -4540,7 +4541,7 @@ commits to the load.
4540 4541
4541+++ 4542+++
4542*** New event type 'xwidget-display-event'. 4543*** New event type 'xwidget-display-event'.
4543These events are sent whenever an xwidget requests that Emacs display 4544These events are sent whenever an xwidget requests that Emacs displays
4544another xwidget. The only arguments to this event are the xwidget 4545another xwidget. The only arguments to this event are the xwidget
4545that should be displayed, and the xwidget that asked to display it. 4546that should be displayed, and the xwidget that asked to display it.
4546 4547
@@ -4565,10 +4566,10 @@ temporary transition aid for Emacs 27, has served its purpose.
4565'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'. 4566'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'.
4566 4567
4567+++ 4568+++
4568** 'date-to-time' now accepts arguments that lacks month, day, or time. 4569** 'date-to-time' now accepts arguments that lack month, day, or time.
4569The function now assumes the earliest possible values if its argument 4570The function now assumes the earliest possible values if its argument
4570lacks month, day, or time. For example, (date-to-time "2021-12-04") 4571lacks month, day, or time. For example, (date-to-time "2021-12-04")
4571now assumes a time of 00:00 instead of signaling an error. 4572now assumes a time of "00:00" instead of signaling an error.
4572 4573
4573+++ 4574+++
4574** 'format-seconds' now allows suppressing zero-value trailing elements. 4575** 'format-seconds' now allows suppressing zero-value trailing elements.
@@ -4577,7 +4578,7 @@ elements that appear after "%x".
4577 4578
4578+++ 4579+++
4579** New events for taking advantage of touchscreen devices. 4580** New events for taking advantage of touchscreen devices.
4580The events 'touchscreen-begin, 'touchscreen-update', and 4581The events 'touchscreen-begin', 'touchscreen-update', and
4581'touchscreen-end' have been added to take better advantage of 4582'touchscreen-end' have been added to take better advantage of
4582touch-capable display panels. 4583touch-capable display panels.
4583 4584
@@ -4611,7 +4612,7 @@ Use 'indian-tml-itrans-digits-v5-hash' if you want digits
4611translation. 4612translation.
4612 4613
4613+++ 4614+++
4614** 'shell-quote-argument' has a new optional parameter POSIX. 4615** 'shell-quote-argument' has a new optional argument POSIX.
4615This is useful when quoting shell arguments for a remote shell 4616This is useful when quoting shell arguments for a remote shell
4616invocation. Such shells are POSIX conformant by default. 4617invocation. Such shells are POSIX conformant by default.
4617 4618
@@ -4728,7 +4729,7 @@ has built-in support for displaying BMP images.
4728--- 4729---
4729*** GUI Yes/No dialogs now include a "Cancel" button. 4730*** GUI Yes/No dialogs now include a "Cancel" button.
4730The "Cancel" button is in addition to "Yes" and "No", and is intended 4731The "Cancel" button is in addition to "Yes" and "No", and is intended
4731to allow users to quit the dialog, as an equivalent of C-g when Emacs 4732to allow users to quit the dialog, as an equivalent of 'C-g' when Emacs
4732asks a yes/no question via the echo area. This is controlled by the 4733asks a yes/no question via the echo area. This is controlled by the
4733new variable 'w32-yes-no-dialog-show-cancel', by default t. Set it to 4734new variable 'w32-yes-no-dialog-show-cancel', by default t. Set it to
4734nil to get back the old behavior of showing a modal dialog with only 4735nil to get back the old behavior of showing a modal dialog with only
diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el
index c698c2ef5a2..cebeac3adca 100644
--- a/lisp/cedet/semantic/symref/grep.el
+++ b/lisp/cedet/semantic/symref/grep.el
@@ -44,7 +44,9 @@ those hits returned.")
44 44
45(defvar semantic-symref-filepattern-alist 45(defvar semantic-symref-filepattern-alist
46 '((c-mode "*.[ch]") 46 '((c-mode "*.[ch]")
47 (c-ts-mode "*.[ch]")
47 (c++-mode "*.[chCH]" "*.[ch]pp" "*.cc" "*.hh") 48 (c++-mode "*.[chCH]" "*.[ch]pp" "*.cc" "*.hh")
49 (c++-ts-mode "*.[chCH]" "*.[ch]pp" "*.cc" "*.hh")
48 (html-mode "*.html" "*.shtml" "*.php") 50 (html-mode "*.html" "*.shtml" "*.php")
49 (mhtml-mode "*.html" "*.shtml" "*.php") ; FIXME: remove 51 (mhtml-mode "*.html" "*.shtml" "*.php") ; FIXME: remove
50 ; duplication of 52 ; duplication of
@@ -53,7 +55,10 @@ those hits returned.")
53 ; major mode definition? 55 ; major mode definition?
54 (ruby-mode "*.r[bu]" "*.rake" "*.gemspec" "*.erb" "*.haml" 56 (ruby-mode "*.r[bu]" "*.rake" "*.gemspec" "*.erb" "*.haml"
55 "Rakefile" "Thorfile" "Capfile" "Guardfile" "Vagrantfile") 57 "Rakefile" "Thorfile" "Capfile" "Guardfile" "Vagrantfile")
58 (ruby-ts-mode "*.r[bu]" "*.rake" "*.gemspec" "*.erb" "*.haml"
59 "Rakefile" "Thorfile" "Capfile" "Guardfile" "Vagrantfile")
56 (python-mode "*.py" "*.pyi" "*.pyw") 60 (python-mode "*.py" "*.pyi" "*.pyw")
61 (python-ts-mode "*.py" "*.pyi" "*.pyw")
57 (perl-mode "*.pl" "*.PL") 62 (perl-mode "*.pl" "*.PL")
58 (cperl-mode "*.pl" "*.PL") 63 (cperl-mode "*.pl" "*.PL")
59 (lisp-interaction-mode "*.el" "*.ede" ".emacs" "_emacs") 64 (lisp-interaction-mode "*.el" "*.ede" ".emacs" "_emacs")
diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index 5c173ad24c7..349318e7579 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -52,9 +52,10 @@
52;; following levels: 52;; following levels:
53;; 1: comment method-definition 53;; 1: comment method-definition
54;; 2: keyword regexp string type 54;; 2: keyword regexp string type
55;; 3: builtin constant delimiter escape-sequence 55;; 3: builtin-variable builtin-constant constant
56;; delimiter escape-sequence
56;; global instance 57;; global instance
57;; interpolation literal symbol variable 58;; interpolation literal symbol assignment
58;; 4: bracket error function operator punctuation 59;; 4: bracket error function operator punctuation
59 60
60;; Thus if treesit-font-lock-level is set to level 3 which is its 61;; Thus if treesit-font-lock-level is set to level 3 which is its
@@ -87,11 +88,6 @@
87 :prefix "ruby-ts-" 88 :prefix "ruby-ts-"
88 :group 'languages) 89 :group 'languages)
89 90
90(defcustom ruby-ts-highlight-predefined-constants t
91 "When non-nil, the pre-defined constants are highlighted.
92They will be highlighted the same way as the pre-defined variables."
93 :type 'boolean)
94
95(defvar ruby-ts--operators 91(defvar ruby-ts--operators
96 '("+" "-" "*" "/" "%" "**" 92 '("+" "-" "*" "/" "%" "**"
97 "==" "!=" ">" "<" ">=" "<=" "<=>" "===" 93 "==" "!=" ">" "<" ">=" "<=" "<=>" "==="
@@ -113,8 +109,7 @@ They will be highlighted the same way as the pre-defined variables."
113 "RUBY_PATCHLEVEL" "RUBY_PLATFORM" "RUBY_RELEASE_DATE" 109 "RUBY_PATCHLEVEL" "RUBY_PLATFORM" "RUBY_RELEASE_DATE"
114 "RUBY_REVISION" "RUBY_VERSION" "STDERR" "STDIN" "STDOUT" 110 "RUBY_REVISION" "RUBY_VERSION" "STDERR" "STDIN" "STDOUT"
115 "TOPLEVEL_BINDING")) 111 "TOPLEVEL_BINDING"))
116 "Ruby predefined global constants. 112 "Ruby predefined global constants.")
117These are currently unused")
118 113
119(defvar ruby-ts--predefined-variables 114(defvar ruby-ts--predefined-variables
120 (rx (or "$!" "$@" "$~" "$&" "$‘" "$‘" "$+" "$=" "$/" "$\\" "$," "$;" 115 (rx (or "$!" "$@" "$~" "$&" "$‘" "$‘" "$+" "$=" "$/" "$\\" "$," "$;"
@@ -122,7 +117,7 @@ These are currently unused")
122 "$LOADED_FEATURES" "$DEBUG" "$FILENAME" "$stderr" "$stdin" 117 "$LOADED_FEATURES" "$DEBUG" "$FILENAME" "$stderr" "$stdin"
123 "$stdout" "$VERBOSE" "$-a" "$-i" "$-l" "$-p" 118 "$stdout" "$VERBOSE" "$-a" "$-i" "$-l" "$-p"
124 (seq "$" (+ digit)))) 119 (seq "$" (+ digit))))
125 "Ruby global variables (but not global constants.") 120 "Ruby predefined global variables.")
126 121
127(defconst ruby-ts--class-or-module-regex 122(defconst ruby-ts--class-or-module-regex
128 (rx string-start 123 (rx string-start
@@ -201,22 +196,24 @@ values of OVERRIDE"
201 '((comment) @ruby-ts--comment-font-lock) 196 '((comment) @ruby-ts--comment-font-lock)
202 197
203 :language language 198 :language language
204 :feature 'builtin 199 :feature 'builtin-variable
205 `(((global_variable) @var (:match ,ruby-ts--predefined-variables @var)) @font-lock-builtin-face 200 `(((global_variable) @var (:match ,ruby-ts--predefined-variables @var)) @font-lock-builtin-face)
206 ,@(when ruby-ts-highlight-predefined-constants 201
207 `(((constant) @var (:match ,ruby-ts--predefined-constants @var)) @font-lock-builtin-face))) 202 :language language
203 :feature 'builtin-constant
204 `(((constant) @var (:match ,ruby-ts--predefined-constants @var)) @font-lock-builtin-face)
208 205
209 :language language 206 :language language
210 :feature 'keyword 207 :feature 'keyword
211 `([,@ruby-ts--keywords] @font-lock-keyword-face) 208 `([,@ruby-ts--keywords] @font-lock-keyword-face
209 (self) @font-lock-keyword-face
210 (super) @font-lock-keyword-face)
212 211
213 :language language 212 :language language
214 :feature 'constant 213 :feature 'constant
215 '((true) @font-lock-doc-markup-face 214 '((true) @font-lock-doc-markup-face
216 (false) @font-lock-doc-markup-face 215 (false) @font-lock-doc-markup-face
217 (nil) @font-lock-doc-markup-face 216 (nil) @font-lock-doc-markup-face)
218 (self) @font-lock-doc-markup-face
219 (super) @font-lock-doc-markup-face)
220 217
221 :language language 218 :language language
222 :feature 'symbol 219 :feature 'symbol
@@ -293,6 +290,21 @@ values of OVERRIDE"
293 (method 290 (method
294 name: (setter) @font-lock-function-name-face)) 291 name: (setter) @font-lock-function-name-face))
295 292
293 :language language
294 :feature 'parameter-definition
295 '((method_parameters
296 (identifier) @font-lock-variable-name-face)
297 (block_parameters
298 (identifier) @font-lock-variable-name-face)
299 (optional_parameter
300 name: (identifier) @font-lock-variable-name-face)
301 (splat_parameter
302 name: (identifier) @font-lock-variable-name-face)
303 (hash_splat_parameter
304 name: (identifier) @font-lock-variable-name-face)
305 (block_parameter
306 name: (identifier) @font-lock-variable-name-face))
307
296 ;; Yuan recommends also putting method definitions into the 308 ;; Yuan recommends also putting method definitions into the
297 ;; 'function' category (thus keeping it in both). I've opted to 309 ;; 'function' category (thus keeping it in both). I've opted to
298 ;; just use separate categories for them -- dgutov. 310 ;; just use separate categories for them -- dgutov.
@@ -302,6 +314,15 @@ values of OVERRIDE"
302 method: (identifier) @font-lock-function-name-face)) 314 method: (identifier) @font-lock-function-name-face))
303 315
304 :language language 316 :language language
317 :feature 'assignment
318 '((assignment
319 left: (identifier) @font-lock-variable-name-face)
320 (assignment
321 left: (left_assignment_list (identifier) @font-lock-variable-name-face))
322 (operator_assignment
323 left: (identifier) @font-lock-variable-name-face))
324
325 :language language
305 :feature 'error 326 :feature 'error
306 '((ERROR) @font-lock-warning-face) 327 '((ERROR) @font-lock-warning-face)
307 328
@@ -930,12 +951,12 @@ leading double colon is not added."
930 (setq-local treesit-font-lock-settings (ruby-ts--font-lock-settings 'ruby)) 951 (setq-local treesit-font-lock-settings (ruby-ts--font-lock-settings 'ruby))
931 ;; Level 3 is the default. 952 ;; Level 3 is the default.
932 (setq-local treesit-font-lock-feature-list 953 (setq-local treesit-font-lock-feature-list
933 '(( comment method-definition ) 954 '(( comment method-definition parameter-definition)
934 ( keyword regexp string type) 955 ( keyword regexp string type)
935 ( builtin constant 956 ( builtin-variable builtin-constant constant
936 delimiter escape-sequence global 957 delimiter escape-sequence
937 instance 958 global instance
938 interpolation literal symbol variable) 959 interpolation literal symbol assignment)
939 ( bracket error function operator punctuation))) 960 ( bracket error function operator punctuation)))
940 961
941 (treesit-major-mode-setup)) 962 (treesit-major-mode-setup))
diff --git a/lisp/textmodes/toml-ts-mode.el b/lisp/textmodes/toml-ts-mode.el
index 1b68632f58c..2430c5f3e76 100644
--- a/lisp/textmodes/toml-ts-mode.el
+++ b/lisp/textmodes/toml-ts-mode.el
@@ -117,7 +117,6 @@ Return nil if there is no name or if NODE is not a defun node."
117 (or (treesit-node-text (treesit-node-child node 1) t) 117 (or (treesit-node-text (treesit-node-child node 1) t)
118 "Root table")))) 118 "Root table"))))
119 119
120;;;###autoload
121(add-to-list 'auto-mode-alist '("\\.toml\\'" . toml-ts-mode)) 120(add-to-list 'auto-mode-alist '("\\.toml\\'" . toml-ts-mode))
122 121
123;;;###autoload 122;;;###autoload
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 1b3b557ee03..e7de110b9dd 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -302,9 +302,15 @@ properties."
302(defun treesit-parent-until (node pred &optional include-node) 302(defun treesit-parent-until (node pred &optional include-node)
303 "Return the closest parent of NODE that satisfies PRED. 303 "Return the closest parent of NODE that satisfies PRED.
304 304
305Return nil if none was found. PRED should be a function that 305This function successively examines the parent of NODE, then
306takes one argument, the parent node, and return non-nil/nil for 306the parent of the parent, etc., until it finds the first
307match/no match. 307ancestor node which satisfies the predicate PRED; then it
308returns that ancestor node. It returns nil if no ancestor
309node was found that satisfies PRED.
310
311PRED should be a function that takes one argument, the node to
312examine, and returns a boolean value indicating whether that
313node is a match.
308 314
309If INCLUDE-NODE is non-nil, return NODE if it satisfies PRED." 315If INCLUDE-NODE is non-nil, return NODE if it satisfies PRED."
310 (let ((node (if include-node node 316 (let ((node (if include-node node
@@ -315,8 +321,16 @@ If INCLUDE-NODE is non-nil, return NODE if it satisfies PRED."
315 321
316(defun treesit-parent-while (node pred) 322(defun treesit-parent-while (node pred)
317 "Return the furthest parent of NODE that satisfies PRED. 323 "Return the furthest parent of NODE that satisfies PRED.
318Return nil if none was found. PRED should be a function that 324
319takes one argument, the parent node." 325This function successively examines the parent of NODE, then
326the parent of the parent, etc., until it finds an ancestor node
327which no longer satisfies the predicate PRED; it returns the last
328examined ancestor that satisfies PRED. It returns nil if no
329ancestor node was found that satisfies PRED.
330
331PRED should be a function that takes one argument, the node to
332examine, and returns a boolean value indicating whether that
333node is a match."
320 (let ((last nil)) 334 (let ((last nil))
321 (while (and node (funcall pred node)) 335 (while (and node (funcall pred node))
322 (setq last node 336 (setq last node
diff --git a/src/gnutls.c b/src/gnutls.c
index 8320c928a4e..e8528381efd 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -1072,7 +1072,7 @@ usage: (gnutls-error-string ERROR) */)
1072 1072
1073DEFUN ("gnutls-deinit", Fgnutls_deinit, Sgnutls_deinit, 1, 1, 0, 1073DEFUN ("gnutls-deinit", Fgnutls_deinit, Sgnutls_deinit, 1, 1, 0,
1074 doc: /* Deallocate GnuTLS resources associated with process PROC. 1074 doc: /* Deallocate GnuTLS resources associated with process PROC.
1075See also `gnutls-init'. */) 1075See also `gnutls-boot'. */)
1076 (Lisp_Object proc) 1076 (Lisp_Object proc)
1077{ 1077{
1078 return emacs_gnutls_deinit (proc); 1078 return emacs_gnutls_deinit (proc);
diff --git a/src/xdisp.c b/src/xdisp.c
index 66c72aea6da..2e962b011a6 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -23322,8 +23322,9 @@ extend_face_to_end_of_line (struct it *it)
23322 it->avoid_cursor_p = true; 23322 it->avoid_cursor_p = true;
23323 it->object = Qnil; 23323 it->object = Qnil;
23324 23324
23325 const int stretch_ascent = (((it->ascent + it->descent) 23325 const int stretch_height = it->ascent + it->descent;
23326 * FONT_BASE (font)) / FONT_HEIGHT (font)); 23326 const int stretch_ascent =
23327 (stretch_height * FONT_BASE (font)) / FONT_HEIGHT (font);
23327 23328
23328 if (indicator_column >= 0 23329 if (indicator_column >= 0
23329 && indicator_column > it->current_x 23330 && indicator_column > it->current_x
@@ -23343,8 +23344,7 @@ extend_face_to_end_of_line (struct it *it)
23343 if (stretch_width > 0) 23344 if (stretch_width > 0)
23344 { 23345 {
23345 append_stretch_glyph (it, Qnil, stretch_width, 23346 append_stretch_glyph (it, Qnil, stretch_width,
23346 it->ascent + it->descent, 23347 stretch_height, stretch_ascent);
23347 stretch_ascent);
23348 } 23348 }
23349 23349
23350 /* Generate the glyph indicator only if 23350 /* Generate the glyph indicator only if
@@ -23352,6 +23352,8 @@ extend_face_to_end_of_line (struct it *it)
23352 if (it->current_x < indicator_column) 23352 if (it->current_x < indicator_column)
23353 { 23353 {
23354 const int save_face_id = it->face_id; 23354 const int save_face_id = it->face_id;
23355 const int save_ascent = it->ascent;
23356 const int save_descent = it->descent;
23355 it->char_to_display 23357 it->char_to_display
23356 = XFIXNAT (Vdisplay_fill_column_indicator_character); 23358 = XFIXNAT (Vdisplay_fill_column_indicator_character);
23357 it->face_id 23359 it->face_id
@@ -23359,6 +23361,8 @@ extend_face_to_end_of_line (struct it *it)
23359 0, extend_face_id); 23361 0, extend_face_id);
23360 PRODUCE_GLYPHS (it); 23362 PRODUCE_GLYPHS (it);
23361 it->face_id = save_face_id; 23363 it->face_id = save_face_id;
23364 it->ascent = save_ascent;
23365 it->descent = save_descent;
23362 } 23366 }
23363 } 23367 }
23364 23368
@@ -23372,8 +23376,7 @@ extend_face_to_end_of_line (struct it *it)
23372 { 23376 {
23373 clear_position (it); 23377 clear_position (it);
23374 append_stretch_glyph (it, Qnil, stretch_width, 23378 append_stretch_glyph (it, Qnil, stretch_width,
23375 it->ascent + it->descent, 23379 stretch_height, stretch_ascent);
23376 stretch_ascent);
23377 } 23380 }
23378 } 23381 }
23379 23382