diff options
| author | Eli Zaretskii | 2023-04-21 07:29:14 -0400 |
|---|---|---|
| committer | Eli Zaretskii | 2023-04-21 07:29:14 -0400 |
| commit | f1ce49d148b334a8fb5302c4dd596aceffbb6b57 (patch) | |
| tree | e551bef8b4c260e79f920b495a206c993de7fc7c | |
| parent | 4416262f59f5e74d3991fdf9c06ad776eca50663 (diff) | |
| parent | 3899acbb3367984d66c7484a208b40a6851f4cc2 (diff) | |
| download | emacs-f1ce49d148b334a8fb5302c4dd596aceffbb6b57.tar.gz emacs-f1ce49d148b334a8fb5302c4dd596aceffbb6b57.zip | |
Merge from origin/emacs-29
3899acbb336 ; * src/fringe.c: Fix description of large circle. (Bug#...
2b10e1827d3 sql: add missing postgresql types
9ac12592781 Fix display of menu-bar bindings of commands in *Help* bu...
ecdd3a9efac Improve Completion Example section in the Emacs manual
626e1ac62b2 Improve 'message-server-alist' docstring
327986936c3 Add index entry for fallback modes
1c4783c3300 ; * etc/NEWS: Copyedits and grammar fixes.
3d6f7553319 xref-search-program-alist: Fix searching larger file list...
1b8b2cf61bd Fix typo and inaccuracy in the ELisp Reference manual
df17682ebf1 ; Support 'dart-ts-mode' in Eglot
e0dc60e0780 ; Fix typos in gdb-mi.el
60560cc7adf Fix description of lexical environment's internals
1456adf4248 ; Eglot: fix a typo in a customization type
2f59595f5f4 ; * etc/NEWS: Grammar fixes.
596b780ab71 Update to Org 9.6.4-2-g0f6ae7
a0b04a22479 Documentation copyedits for 'package-install-upgrade-buil...
580d8278c5f Allow upgrading built-in packages with 'package-install'
329304c23fa ; * src/term.c (init_tty): Fix last change. (Bug#62877)
200dbf7d302 Minor changes in c-ts-mode.el's support of DEFUNs
9686b015a0d Fix strike-through attribute support on TTY frames
39035fbfc5f Avoid crashes in 'describe-keymap' due to shadowing
# Conflicts:
# etc/NEWS
# lisp/progmodes/c-ts-mode.el
# lisp/progmodes/eglot.el
| -rw-r--r-- | doc/emacs/custom.texi | 1 | ||||
| -rw-r--r-- | doc/emacs/mini.texi | 18 | ||||
| -rw-r--r-- | doc/lispref/customize.texi | 7 | ||||
| -rw-r--r-- | doc/lispref/loading.texi | 2 | ||||
| -rw-r--r-- | doc/lispref/variables.texi | 17 | ||||
| -rw-r--r-- | doc/misc/org.org | 5 | ||||
| -rw-r--r-- | etc/NEWS.29 | 132 | ||||
| -rw-r--r-- | etc/refcards/orgcard.tex | 2 | ||||
| -rw-r--r-- | lisp/emacs-lisp/package.el | 47 | ||||
| -rw-r--r-- | lisp/gnus/message.el | 6 | ||||
| -rw-r--r-- | lisp/help-fns.el | 17 | ||||
| -rw-r--r-- | lisp/org/ob-tangle.el | 10 | ||||
| -rw-r--r-- | lisp/org/org-agenda.el | 3 | ||||
| -rw-r--r-- | lisp/org/org-element.el | 2 | ||||
| -rw-r--r-- | lisp/org/org-macs.el | 6 | ||||
| -rw-r--r-- | lisp/org/org-table.el | 6 | ||||
| -rw-r--r-- | lisp/org/org-version.el | 4 | ||||
| -rw-r--r-- | lisp/org/org.el | 5 | ||||
| -rw-r--r-- | lisp/org/ox-latex.el | 2 | ||||
| -rw-r--r-- | lisp/org/ox-odt.el | 10 | ||||
| -rw-r--r-- | lisp/progmodes/c-ts-mode.el | 60 | ||||
| -rw-r--r-- | lisp/progmodes/eglot.el | 10 | ||||
| -rw-r--r-- | lisp/progmodes/gdb-mi.el | 2 | ||||
| -rw-r--r-- | lisp/progmodes/sql.el | 19 | ||||
| -rw-r--r-- | lisp/progmodes/xref.el | 28 | ||||
| -rw-r--r-- | src/fringe.c | 4 | ||||
| -rw-r--r-- | src/keymap.c | 19 | ||||
| -rw-r--r-- | src/term.c | 8 |
28 files changed, 285 insertions, 167 deletions
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index ee818a74b57..87290734cc9 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi | |||
| @@ -1245,6 +1245,7 @@ Manual}. | |||
| 1245 | These four keywords are not really variables; setting them in any | 1245 | These four keywords are not really variables; setting them in any |
| 1246 | other context has no special meaning. | 1246 | other context has no special meaning. |
| 1247 | 1247 | ||
| 1248 | @cindex fallback modes | ||
| 1248 | If you're editing a file across Emacs versions, and a new mode has | 1249 | If you're editing a file across Emacs versions, and a new mode has |
| 1249 | been introduced to handle a file in a newer Emacs version, you can use | 1250 | been introduced to handle a file in a newer Emacs version, you can use |
| 1250 | several @code{mode} entries to use the new mode (called | 1251 | several @code{mode} entries to use the new mode (called |
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index 898d9e904f6..d380ba7ef4b 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi | |||
| @@ -313,19 +313,27 @@ may be defined in your Emacs session. For example, if a command | |||
| 313 | called @code{authorize-me} was defined, Emacs could only complete | 313 | called @code{authorize-me} was defined, Emacs could only complete |
| 314 | as far as @samp{aut}.) | 314 | as far as @samp{aut}.) |
| 315 | 315 | ||
| 316 | If you type @key{TAB} again immediately, it cannot determine the | 316 | If you type @kbd{@key{TAB}} again immediately, it cannot determine |
| 317 | next character; it could be @samp{-}, @samp{a}, or @samp{c}. So it | 317 | the next character; it could be @samp{-}, @samp{a}, or @samp{c}. So |
| 318 | does not add any characters; instead, @key{TAB} displays a list of all | 318 | it does not add any characters; instead, @key{TAB} displays a list of |
| 319 | possible completions in another window. | 319 | all possible completions in another window. |
| 320 | 320 | ||
| 321 | Next, type @kbd{-f}. The minibuffer now contains @samp{auto-f}, and | 321 | Next, type @kbd{-f}. The minibuffer now contains @samp{auto-f}, and |
| 322 | the only command name that starts with this is @code{auto-fill-mode}. | 322 | the only command name that starts with this is @code{auto-fill-mode}. |
| 323 | If you now type @key{TAB}, completion fills in the rest of the | 323 | If you now type @kbd{@key{TAB}}, completion fills in the rest of the |
| 324 | argument @samp{auto-fill-mode} into the minibuffer. | 324 | argument @samp{auto-fill-mode} into the minibuffer. |
| 325 | 325 | ||
| 326 | Hence, typing just @kbd{a u @key{TAB} - f @key{TAB}} allows you to | 326 | Hence, typing just @kbd{a u @key{TAB} - f @key{TAB}} allows you to |
| 327 | enter @samp{auto-fill-mode}. | 327 | enter @samp{auto-fill-mode}. |
| 328 | 328 | ||
| 329 | @key{TAB} also works while point is not at the end of the | ||
| 330 | minibuffer. In that case, it will fill in text both at point and at | ||
| 331 | the end of the minibuffer. If you type @kbd{M-x autocm}, then press | ||
| 332 | @kbd{C-b} to move point before the @samp{m}, you can type | ||
| 333 | @kbd{@key{TAB}} to insert the text @samp{onf-} at point and @samp{ode} | ||
| 334 | at the end of the minibuffer, so that the minibuffer contains | ||
| 335 | @samp{autoconf-mode}. | ||
| 336 | |||
| 329 | @node Completion Commands | 337 | @node Completion Commands |
| 330 | @subsection Completion Commands | 338 | @subsection Completion Commands |
| 331 | 339 | ||
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index 6015c134d21..6d5d9e0a2bc 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi | |||
| @@ -264,11 +264,12 @@ have any number of prefixes. | |||
| 264 | @end table | 264 | @end table |
| 265 | 265 | ||
| 266 | @cindex @code{custom-group} property | 266 | @cindex @code{custom-group} property |
| 267 | The variables and subgroups of a group are stored in the | 267 | The variables, faces, and subgroups of a group are stored in the |
| 268 | @code{custom-group} property of the group's symbol. @xref{Symbol | 268 | @code{custom-group} property of the group's symbol. @xref{Symbol |
| 269 | Plists}. The value of that property is a list of pairs whose | 269 | Plists}. The value of that property is a list of pairs whose |
| 270 | @code{car} is the variable or subgroup symbol and the @code{cdr} is | 270 | @code{car} is the symbol of the variable or the face or the subgroup, |
| 271 | either @code{custom-variable} or @code{custom-group}. | 271 | and the @code{cdr} is one of the corresponding symbols |
| 272 | @code{custom-variable}, @code{custom-face}, or @code{custom-group}. | ||
| 272 | @end defmac | 273 | @end defmac |
| 273 | 274 | ||
| 274 | @defopt custom-unlispify-remove-prefixes | 275 | @defopt custom-unlispify-remove-prefixes |
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 5c84ba4b1eb..d6fc4e8d636 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi | |||
| @@ -1338,7 +1338,7 @@ specified @var{file} and perform the necessary initialization of the | |||
| 1338 | module. This is the primitive which makes sure the module exports the | 1338 | module. This is the primitive which makes sure the module exports the |
| 1339 | @code{plugin_is_GPL_compatible} symbol, calls the module's | 1339 | @code{plugin_is_GPL_compatible} symbol, calls the module's |
| 1340 | @code{emacs_module_init} function, and signals an error if that | 1340 | @code{emacs_module_init} function, and signals an error if that |
| 1341 | function returns an error indication, or if the use typed @kbd{C-g} | 1341 | function returns an error indication, or if the user typed @kbd{C-g} |
| 1342 | during the initialization. If the initialization succeeds, | 1342 | during the initialization. If the initialization succeeds, |
| 1343 | @code{module-load} returns @code{t}. Note that @var{file} must | 1343 | @code{module-load} returns @code{t}. Note that @var{file} must |
| 1344 | already have the proper file-name extension, as this function doesn't | 1344 | already have the proper file-name extension, as this function doesn't |
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index f92c02ae5ed..eadb5c36de6 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi | |||
| @@ -1183,13 +1183,16 @@ wants the current value of a variable, it looks first in the lexical | |||
| 1183 | environment; if the variable is not specified in there, it looks in | 1183 | environment; if the variable is not specified in there, it looks in |
| 1184 | the symbol's value cell, where the dynamic value is stored. | 1184 | the symbol's value cell, where the dynamic value is stored. |
| 1185 | 1185 | ||
| 1186 | (Internally, the lexical environment is an alist of symbol-value | 1186 | (Internally, the lexical environment is a list whose members are |
| 1187 | pairs, with the final element in the alist being the symbol @code{t} | 1187 | usually cons cells that are symbol-value pairs, but some of its |
| 1188 | rather than a cons cell. Such an alist can be passed as the second | 1188 | members can be symbols rather than cons cells. A symbol in the list |
| 1189 | argument to the @code{eval} function, in order to specify a lexical | 1189 | means the lexical environment declared that symbol's variable as |
| 1190 | environment in which to evaluate a form. @xref{Eval}. Most Emacs | 1190 | locally considered to be dynamically bound. This list can be passed |
| 1191 | Lisp programs, however, should not interact directly with lexical | 1191 | as the second argument to the @code{eval} function, in order to |
| 1192 | environments in this way; only specialized programs like debuggers.) | 1192 | specify a lexical environment in which to evaluate a form. |
| 1193 | @xref{Eval}. Most Emacs Lisp programs, however, should not interact | ||
| 1194 | directly with lexical environments in this way; only specialized | ||
| 1195 | programs like debuggers.) | ||
| 1193 | 1196 | ||
| 1194 | @cindex closures, example of using | 1197 | @cindex closures, example of using |
| 1195 | Lexical bindings have indefinite extent. Even after a binding | 1198 | Lexical bindings have indefinite extent. Even after a binding |
diff --git a/doc/misc/org.org b/doc/misc/org.org index 7ff0933de75..ae3fae0623e 100644 --- a/doc/misc/org.org +++ b/doc/misc/org.org | |||
| @@ -5958,8 +5958,9 @@ the agenda (see [[*Weekly/daily agenda]]). We distinguish: | |||
| 5958 | #+findex: org-block | 5958 | #+findex: org-block |
| 5959 | 5959 | ||
| 5960 | For more complex date specifications, Org mode supports using the | 5960 | For more complex date specifications, Org mode supports using the |
| 5961 | special expression diary entries implemented in the Emacs Calendar | 5961 | special expression diary entries implemented in the |
| 5962 | package[fn:20]. For example, with optional time: | 5962 | [[info:emacs#Special Diary Entries][Emacs Calendar package]][fn:20]. |
| 5963 | For example, with optional time: | ||
| 5963 | 5964 | ||
| 5964 | #+begin_example | 5965 | #+begin_example |
| 5965 | ,* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month | 5966 | ,* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month |
diff --git a/etc/NEWS.29 b/etc/NEWS.29 index 84dbb94a71a..62d2fdcd3a4 100644 --- a/etc/NEWS.29 +++ b/etc/NEWS.29 | |||
| @@ -218,13 +218,13 @@ of 'user-emacs-directory'. | |||
| 218 | 218 | ||
| 219 | +++ | 219 | +++ |
| 220 | ** The image commands have changed key bindings. | 220 | ** The image commands have changed key bindings. |
| 221 | In previous Emacs versions, images have had the '+', '-' and 'r' keys | 221 | In previous Emacs versions, the '+', '-' and 'r' keys were bound when |
| 222 | bound when point is over an image. In Emacs 29.1, additional commands | 222 | point was over an image. In Emacs 29.1, additional commands have been |
| 223 | were added, and this made it more likely that users would trigger the | 223 | added, and this made it more likely that users would trigger the image |
| 224 | image commands by mistake. To avoid this, all image commands have | 224 | commands by mistake. To avoid this, all image commands have been |
| 225 | moved to the 'i' prefix keymap, so '+' is now 'i +', '-' is now 'i -', | 225 | moved to the 'i' prefix keymap, so '+' is now 'i +', '-' is now 'i -', |
| 226 | and 'r' is now 'i r'. In addition, these commands are now repeating, | 226 | and 'r' is now 'i r'. In addition, these commands are now repeating, |
| 227 | so, for example, you can rotate an image twice by typing 'i r r'. | 227 | so you can rotate an image twice by saying 'i r r', for instance. |
| 228 | 228 | ||
| 229 | +++ | 229 | +++ |
| 230 | ** Emacs now picks the correct coding-system for X input methods. | 230 | ** Emacs now picks the correct coding-system for X input methods. |
| @@ -380,7 +380,7 @@ this user option to nil to revert back to the old behavior. | |||
| 380 | --- | 380 | --- |
| 381 | ** Support for old EIEIO functions is not autoloaded any more. | 381 | ** Support for old EIEIO functions is not autoloaded any more. |
| 382 | You need an explicit '(require 'eieio-compat)' to use 'defmethod' | 382 | You need an explicit '(require 'eieio-compat)' to use 'defmethod' |
| 383 | and 'defgeneric' (which have been made obsolete in Emacs 25.1 with | 383 | and 'defgeneric' (which were made obsolete in Emacs 25.1 by |
| 384 | 'cl-defmethod' and 'cl-defgeneric'). | 384 | 'cl-defmethod' and 'cl-defgeneric'). |
| 385 | Similarly you might need to '(require 'eieio-compat)' before loading | 385 | Similarly you might need to '(require 'eieio-compat)' before loading |
| 386 | files that were compiled with an old EIEIO (Emacs<25). | 386 | files that were compiled with an old EIEIO (Emacs<25). |
| @@ -497,7 +497,7 @@ the 'nlinum' package from GNU ELPA instead. The former has better | |||
| 497 | performance, but the latter is closer to a drop-in replacement. | 497 | performance, but the latter is closer to a drop-in replacement. |
| 498 | 498 | ||
| 499 | 1. To use 'display-line-numbers-mode', add something like this to your | 499 | 1. To use 'display-line-numbers-mode', add something like this to your |
| 500 | Init file: | 500 | init file: |
| 501 | 501 | ||
| 502 | (global-display-line-numbers-mode 1) | 502 | (global-display-line-numbers-mode 1) |
| 503 | ;; Alternatively, to use it only in programming modes: | 503 | ;; Alternatively, to use it only in programming modes: |
| @@ -517,7 +517,7 @@ performance, but the latter is closer to a drop-in replacement. | |||
| 517 | 517 | ||
| 518 | --- | 518 | --- |
| 519 | ** The thumbs.el library is now obsolete. | 519 | ** The thumbs.el library is now obsolete. |
| 520 | We recommend using command 'image-dired' instead. | 520 | We recommend using the 'image-dired' command instead. |
| 521 | 521 | ||
| 522 | --- | 522 | --- |
| 523 | ** The autoarg.el library is now marked obsolete. | 523 | ** The autoarg.el library is now marked obsolete. |
| @@ -577,7 +577,7 @@ encoding, only for decoding. | |||
| 577 | ** New user option 'major-mode-remap-alist' to specify favorite major modes. | 577 | ** New user option 'major-mode-remap-alist' to specify favorite major modes. |
| 578 | This user option lets you remap the default modes (e.g. 'perl-mode' or | 578 | This user option lets you remap the default modes (e.g. 'perl-mode' or |
| 579 | 'latex-mode') to your favorite ones (e.g. 'cperl-mode' or | 579 | 'latex-mode') to your favorite ones (e.g. 'cperl-mode' or |
| 580 | 'LaTeX-mode') without having to use 'defalias', which can have | 580 | 'LaTeX-mode') instead of having to use 'defalias', which can have |
| 581 | undesirable side effects. | 581 | undesirable side effects. |
| 582 | This applies to all modes specified via 'auto-mode-alist', file-local | 582 | This applies to all modes specified via 'auto-mode-alist', file-local |
| 583 | variables, etc. | 583 | variables, etc. |
| @@ -587,6 +587,8 @@ variables, etc. | |||
| 587 | 587 | ||
| 588 | --- | 588 | --- |
| 589 | ** New user option 'electric-quote-replace-consecutive'. | 589 | ** New user option 'electric-quote-replace-consecutive'. |
| 590 | This allows you to disable the default behavior of consecutive single | ||
| 591 | quotes being replaced with a double quote. | ||
| 590 | 592 | ||
| 591 | --- | 593 | --- |
| 592 | ** Emacs is now capable of editing files with very long lines. | 594 | ** Emacs is now capable of editing files with very long lines. |
| @@ -801,7 +803,7 @@ element: 'set-minibuffer-message', which displays echo-area messages | |||
| 801 | at the end of the minibuffer text when the minibuffer is active. | 803 | at the end of the minibuffer text when the minibuffer is active. |
| 802 | Other useful functions include 'inhibit-message', which allows | 804 | Other useful functions include 'inhibit-message', which allows |
| 803 | specifying, via 'inhibit-message-regexps', the list of messages whose | 805 | specifying, via 'inhibit-message-regexps', the list of messages whose |
| 804 | display shall be inhibited; and 'set-multi-message' that accumulates | 806 | display should be inhibited; and 'set-multi-message' that accumulates |
| 805 | recent messages and displays them stacked together. | 807 | recent messages and displays them stacked together. |
| 806 | 808 | ||
| 807 | --- | 809 | --- |
| @@ -902,7 +904,7 @@ frame's contents will be hidden, leaving only the title bar on display. | |||
| 902 | --- | 904 | --- |
| 903 | ** New user option 'x-gtk-use-native-input'. | 905 | ** New user option 'x-gtk-use-native-input'. |
| 904 | This controls whether or not GTK input methods are used by Emacs, | 906 | This controls whether or not GTK input methods are used by Emacs, |
| 905 | instead of XIM input methods. | 907 | instead of XIM input methods. Defaults to nil. |
| 906 | 908 | ||
| 907 | +++ | 909 | +++ |
| 908 | ** New user option 'use-system-tooltips'. | 910 | ** New user option 'use-system-tooltips'. |
| @@ -999,17 +1001,17 @@ combinations in a graphical menu system. | |||
| 999 | 1001 | ||
| 1000 | +++ | 1002 | +++ |
| 1001 | *** New command 'emoji-search' (bound to 'C-x 8 e s'). | 1003 | *** New command 'emoji-search' (bound to 'C-x 8 e s'). |
| 1002 | This command lets you search for Emoji based on names. | 1004 | This command lets you search for and insert an Emoji based on names. |
| 1003 | 1005 | ||
| 1004 | +++ | 1006 | +++ |
| 1005 | *** New command 'emoji-list' (bound to 'C-x 8 e l'). | 1007 | *** New command 'emoji-list' (bound to 'C-x 8 e l'). |
| 1006 | This command lists all Emoji (categorized by themes) in a special | 1008 | This command lists all Emoji (categorized by themes) in a special |
| 1007 | buffer and lets you choose one of them. | 1009 | buffer and lets you choose one of them to insert. |
| 1008 | 1010 | ||
| 1009 | --- | 1011 | --- |
| 1010 | *** New command 'emoji-recent' (bound to 'C-x 8 e r'). | 1012 | *** New command 'emoji-recent' (bound to 'C-x 8 e r'). |
| 1011 | This command lets you choose among the Emoji you have recently | 1013 | This command lets you choose among the Emoji you have recently |
| 1012 | inserted. | 1014 | inserted and insert it. |
| 1013 | 1015 | ||
| 1014 | +++ | 1016 | +++ |
| 1015 | *** New command 'emoji-describe' (bound to 'C-x 8 e d'). | 1017 | *** New command 'emoji-describe' (bound to 'C-x 8 e d'). |
| @@ -1043,7 +1045,7 @@ quotes removed. | |||
| 1043 | 1045 | ||
| 1044 | --- | 1046 | --- |
| 1045 | *** 'M-x apropos-variable' output now includes values of variables. | 1047 | *** 'M-x apropos-variable' output now includes values of variables. |
| 1046 | Such apropos buffer is more easily viewed with outlining after | 1048 | Such an apropos buffer is more easily viewed with outlining after |
| 1047 | enabling 'outline-minor-mode' in 'apropos-mode'. | 1049 | enabling 'outline-minor-mode' in 'apropos-mode'. |
| 1048 | 1050 | ||
| 1049 | +++ | 1051 | +++ |
| @@ -1075,7 +1077,7 @@ This has been changed to: | |||
| 1075 | +++ | 1077 | +++ |
| 1076 | *** The 'C-h .' command now accepts a prefix argument. | 1078 | *** The 'C-h .' command now accepts a prefix argument. |
| 1077 | 'C-u C-h .' would previously inhibit displaying a warning message if | 1079 | 'C-u C-h .' would previously inhibit displaying a warning message if |
| 1078 | there's no local help at point. This has been changed to call | 1080 | there was no local help at point. This has been changed to call |
| 1079 | 'button-describe'/'widget-describe' and display button/widget help | 1081 | 'button-describe'/'widget-describe' and display button/widget help |
| 1080 | instead. | 1082 | instead. |
| 1081 | 1083 | ||
| @@ -1128,7 +1130,7 @@ helpful commands for various tasks. You can toggle the display using | |||
| 1128 | 'C-h C-q'. | 1130 | 'C-h C-q'. |
| 1129 | 1131 | ||
| 1130 | ** Emacs now comes with Org v9.6. | 1132 | ** Emacs now comes with Org v9.6. |
| 1131 | See the file "ORG-NEWS" for user-visible changes in Org. | 1133 | See the file "etc/ORG-NEWS" for user-visible changes in Org. |
| 1132 | 1134 | ||
| 1133 | ** Outline Mode | 1135 | ** Outline Mode |
| 1134 | 1136 | ||
| @@ -1191,12 +1193,13 @@ the display of several buffers in a row more amenable. | |||
| 1191 | 1193 | ||
| 1192 | +++ | 1194 | +++ |
| 1193 | *** New buffer display action alist entry 'lru-frames'. | 1195 | *** New buffer display action alist entry 'lru-frames'. |
| 1194 | This allows to specify which frames 'display-buffer' should consider | 1196 | This allows specifying which frames 'display-buffer' should consider |
| 1195 | when using a window that shows another buffer. | 1197 | when using a window that shows another buffer. It is interpreted as |
| 1198 | per the ALL-FRAMES argument of 'get-lru-window'. | ||
| 1196 | 1199 | ||
| 1197 | +++ | 1200 | +++ |
| 1198 | *** New buffer display action alist entry 'lru-time'. | 1201 | *** New buffer display action alist entry 'lru-time'. |
| 1199 | 'display-buffer' will ignore windows with a use time higher than that | 1202 | 'display-buffer' will ignore windows with a use time higher than this |
| 1200 | when using a window that shows another buffer. | 1203 | when using a window that shows another buffer. |
| 1201 | 1204 | ||
| 1202 | +++ | 1205 | +++ |
| @@ -1206,12 +1209,14 @@ making it a less likely candidate for displaying another buffer. | |||
| 1206 | 1209 | ||
| 1207 | +++ | 1210 | +++ |
| 1208 | *** New buffer display action alist entry 'window-min-width'. | 1211 | *** New buffer display action alist entry 'window-min-width'. |
| 1209 | This allows to specify a minimum width of the window used to display a | 1212 | This allows specifying a preferred minimum width of the window used to |
| 1210 | buffer. | 1213 | display a buffer. |
| 1211 | 1214 | ||
| 1212 | --- | 1215 | --- |
| 1213 | *** You can customize on which window 'scroll-other-window' operates. | 1216 | *** You can specify on which window 'scroll-other-window' operates. |
| 1214 | This is controlled by the new 'other-window-scroll-default' variable. | 1217 | This is controlled by the new 'other-window-scroll-default' variable, |
| 1218 | which should be set to a function that returns a window. When this | ||
| 1219 | variable is nil, 'next-window' is used. | ||
| 1215 | 1220 | ||
| 1216 | ** Frames | 1221 | ** Frames |
| 1217 | 1222 | ||
| @@ -1274,17 +1279,19 @@ respond within N seconds. The default is to wait forever. | |||
| 1274 | +++ | 1279 | +++ |
| 1275 | *** 'server-stop-automatically' can be used to automatically stop the server. | 1280 | *** 'server-stop-automatically' can be used to automatically stop the server. |
| 1276 | The Emacs server will be automatically stopped when certain conditions | 1281 | The Emacs server will be automatically stopped when certain conditions |
| 1277 | are met. The conditions are given by the argument, which can be | 1282 | are met. The conditions are determined by the argument to |
| 1278 | 'empty', 'delete-frame' or 'kill-terminal'. | 1283 | 'server-stop-automatically', which can be 'empty', 'delete-frame' or |
| 1284 | 'kill-terminal'. | ||
| 1279 | 1285 | ||
| 1280 | ** Rcirc | 1286 | ** Rcirc |
| 1281 | 1287 | ||
| 1282 | +++ | 1288 | +++ |
| 1283 | *** New command 'rcirc-when'. | 1289 | *** New command 'rcirc-when'. |
| 1290 | This shows the reception time of the message at point (if available). | ||
| 1284 | 1291 | ||
| 1285 | +++ | 1292 | +++ |
| 1286 | *** New user option 'rcirc-cycle-completion-flag'. | 1293 | *** New user option 'rcirc-cycle-completion-flag'. |
| 1287 | Rcirc will use the default 'completion-at-point' mechanism. The | 1294 | Rcirc now uses the default 'completion-at-point' mechanism. The |
| 1288 | conventional IRC behavior of completing by cycling through the | 1295 | conventional IRC behavior of completing by cycling through the |
| 1289 | available options can be restored by enabling this option. | 1296 | available options can be restored by enabling this option. |
| 1290 | 1297 | ||
| @@ -1869,13 +1876,26 @@ packages checked out using 'package-vc-install'. | |||
| 1869 | +++ | 1876 | +++ |
| 1870 | *** New command 'package-report-bug'. | 1877 | *** New command 'package-report-bug'. |
| 1871 | This command helps you compose an email for sending bug reports to | 1878 | This command helps you compose an email for sending bug reports to |
| 1872 | package maintainers. | 1879 | package maintainers, and is bound to 'b' in the "*Packages*" buffer. |
| 1873 | 1880 | ||
| 1874 | +++ | 1881 | +++ |
| 1875 | *** New user option 'package-vc-selected-packages'. | 1882 | *** New user option 'package-vc-selected-packages'. |
| 1876 | By customizing this user option you can specify specific packages to | 1883 | By customizing this user option you can specify specific packages to |
| 1877 | install. | 1884 | install. |
| 1878 | 1885 | ||
| 1886 | --- | ||
| 1887 | *** New user option 'package-install-upgrade-built-in'. | ||
| 1888 | When enabled, 'package-install' will include in the list of | ||
| 1889 | upgradeable packages those built-in packages (like Eglot and | ||
| 1890 | use-package, for example) for which a newer version is available in | ||
| 1891 | package archives, and will allow installing those newer versions. By | ||
| 1892 | default, this is disabled; however, if 'package-install' is invoked | ||
| 1893 | with a prefix argument, it will act as if this new option were | ||
| 1894 | enabled. | ||
| 1895 | |||
| 1896 | If you customize this option, we recommend you place its non-default | ||
| 1897 | setting in your early-init file. | ||
| 1898 | |||
| 1879 | ** Emacs Sessions (Desktop) | 1899 | ** Emacs Sessions (Desktop) |
| 1880 | 1900 | ||
| 1881 | +++ | 1901 | +++ |
| @@ -1933,8 +1953,8 @@ displayed in a window. | |||
| 1933 | 1953 | ||
| 1934 | +++ | 1954 | +++ |
| 1935 | *** New user option 'compilation-hidden-output'. | 1955 | *** New user option 'compilation-hidden-output'. |
| 1936 | This can be used to make specific parts of compilation output | 1956 | This regular expression can be used to make specific parts of |
| 1937 | invisible. | 1957 | compilation output invisible. |
| 1938 | 1958 | ||
| 1939 | +++ | 1959 | +++ |
| 1940 | *** The 'compilation-auto-jump-to-first-error' user option has been extended. | 1960 | *** The 'compilation-auto-jump-to-first-error' user option has been extended. |
| @@ -2317,7 +2337,7 @@ EUDC inline expansion result formatting defaulted to | |||
| 2317 | ("%s %s <%s>" firstname name email) | 2337 | ("%s %s <%s>" firstname name email) |
| 2318 | 2338 | ||
| 2319 | Since email address specifications need to comply with RFC 5322 in | 2339 | Since email address specifications need to comply with RFC 5322 in |
| 2320 | order to be useful in messages, there was a risk to produce syntax | 2340 | order to be useful in messages, there was a risk of producing syntax |
| 2321 | which was standard with RFC 822, but is marked as obsolete syntax by | 2341 | which was standard with RFC 822, but is marked as obsolete syntax by |
| 2322 | its successor RFC 5322. Also, the first and last name part was never | 2342 | its successor RFC 5322. Also, the first and last name part was never |
| 2323 | enclosed in double quotes, potentially producing invalid address | 2343 | enclosed in double quotes, potentially producing invalid address |
| @@ -2351,8 +2371,8 @@ used to select the entry type in the ecomplete database. | |||
| 2351 | +++ | 2371 | +++ |
| 2352 | *** New back-end for mailabbrev. | 2372 | *** New back-end for mailabbrev. |
| 2353 | A new back-end for mailabbrev allows information from that database to | 2373 | A new back-end for mailabbrev allows information from that database to |
| 2354 | be queried by EUDC, too. The attributes 'email', 'name', and 'firstname' | 2374 | be queried by EUDC, too. Only the attributes 'email', 'name', and |
| 2355 | are supported only. | 2375 | 'firstname' are supported. |
| 2356 | 2376 | ||
| 2357 | ** EWW/SHR | 2377 | ** EWW/SHR |
| 2358 | 2378 | ||
| @@ -2599,14 +2619,14 @@ as opposed to via the command-line. | |||
| 2599 | +++ | 2619 | +++ |
| 2600 | *** New command 'image-transform-fit-to-window'. | 2620 | *** New command 'image-transform-fit-to-window'. |
| 2601 | This command fits the image to the current window by scaling down or | 2621 | This command fits the image to the current window by scaling down or |
| 2602 | up as necessary. Unlike 'image-transform-fit-both', this does not | 2622 | up as necessary. Unlike 'image-transform-fit-both', this can scale |
| 2603 | only scale the image down, but up as well. It is bound to 's w' in | 2623 | the image up as well as down. It is bound to 's w' in Image Mode by |
| 2604 | Image Mode by default. | 2624 | default. |
| 2605 | 2625 | ||
| 2606 | --- | 2626 | --- |
| 2607 | *** New command 'image-mode-wallpaper-set'. | 2627 | *** New command 'image-mode-wallpaper-set'. |
| 2608 | This command sets the desktop background to the current image. It is | 2628 | This command sets the desktop background to the current image. It is |
| 2609 | bound to 'W' by default. | 2629 | bound to 'W' in Image Mode by default. |
| 2610 | 2630 | ||
| 2611 | +++ | 2631 | +++ |
| 2612 | *** 'image-transform-fit-to-{height,width}' are now obsolete. | 2632 | *** 'image-transform-fit-to-{height,width}' are now obsolete. |
| @@ -2624,14 +2644,14 @@ much (in percent). It is nil by default, which means no limit. | |||
| 2624 | 2644 | ||
| 2625 | --- | 2645 | --- |
| 2626 | *** New user option 'image-text-based-formats'. | 2646 | *** New user option 'image-text-based-formats'. |
| 2627 | This controls whether or not to show a message when opening certain | 2647 | This controls whether or not to show a message, when opening certain |
| 2628 | image formats saying how to edit it as text. The default is to show | 2648 | image formats, explaining how to edit it as text. The default is to |
| 2629 | this message for SVG and XPM. | 2649 | show this message for SVG and XPM. |
| 2630 | 2650 | ||
| 2631 | +++ | 2651 | +++ |
| 2632 | *** New command 'image-transform-set-percent'. | 2652 | *** New command 'image-transform-set-percent'. |
| 2633 | It allows setting the image size to a percentage of its original size, | 2653 | It allows resizing the image to a percentage of its original size, and |
| 2634 | and is bound to 's p' in Image mode. | 2654 | is bound to 's p' in Image mode. |
| 2635 | 2655 | ||
| 2636 | +++ | 2656 | +++ |
| 2637 | *** 'image-transform-original' renamed to 'image-transform-reset-to-original'. | 2657 | *** 'image-transform-original' renamed to 'image-transform-reset-to-original'. |
| @@ -3244,6 +3264,10 @@ based on data provided by language servers using the Language Server | |||
| 3244 | Protocol (LSP). See the new Info manual "(eglot) Top" for more. Also | 3264 | Protocol (LSP). See the new Info manual "(eglot) Top" for more. Also |
| 3245 | see "etc/EGLOT-NEWS". | 3265 | see "etc/EGLOT-NEWS". |
| 3246 | 3266 | ||
| 3267 | If you want to be able to use 'package-install' to upgrade Eglot to | ||
| 3268 | newer versions released on GNU ELPA, customize the new option | ||
| 3269 | 'package-install-upgrade-built-in' to a non-nil value. | ||
| 3270 | |||
| 3247 | +++ | 3271 | +++ |
| 3248 | ** use-package: Declarative package configuration. | 3272 | ** use-package: Declarative package configuration. |
| 3249 | use-package is now shipped with Emacs. It provides the 'use-package' | 3273 | use-package is now shipped with Emacs. It provides the 'use-package' |
| @@ -3251,6 +3275,10 @@ macro, which allows you to isolate package configuration in your init | |||
| 3251 | file in a way that is declarative, tidy, and performance-oriented. | 3275 | file in a way that is declarative, tidy, and performance-oriented. |
| 3252 | See the new Info manual "(use-package) Top" for more. | 3276 | See the new Info manual "(use-package) Top" for more. |
| 3253 | 3277 | ||
| 3278 | If you want to be able to use 'package-install' to upgrade use-package | ||
| 3279 | to newer versions released on GNU ELPA, customize the new option | ||
| 3280 | 'package-install-upgrade-built-in' to a non-nil value. | ||
| 3281 | |||
| 3254 | --- | 3282 | --- |
| 3255 | ** New package 'wallpaper'. | 3283 | ** New package 'wallpaper'. |
| 3256 | This package provides the command 'wallpaper-set', which sets the | 3284 | This package provides the command 'wallpaper-set', which sets the |
| @@ -3915,9 +3943,9 @@ connection-local profile. | |||
| 3915 | +++ | 3943 | +++ |
| 3916 | *** New macro 'with-connection-local-application-variables'. | 3944 | *** New macro 'with-connection-local-application-variables'. |
| 3917 | This macro works like 'with-connection-local-variables', but it allows | 3945 | This macro works like 'with-connection-local-variables', but it allows |
| 3918 | to use another application but 'tramp'. This is useful when running | 3946 | using another application instead of 'tramp'. This is useful when |
| 3919 | code in a buffer where Tramp has already set some connection-local | 3947 | running code in a buffer where Tramp has already set some |
| 3920 | variables. | 3948 | connection-local variables. |
| 3921 | 3949 | ||
| 3922 | +++ | 3950 | +++ |
| 3923 | *** New macro 'setq-connection-local'. | 3951 | *** New macro 'setq-connection-local'. |
| @@ -3996,8 +4024,8 @@ This returns a list of sub-sequences of the specified sequence. | |||
| 3996 | 4024 | ||
| 3997 | +++ | 4025 | +++ |
| 3998 | *** New function 'seq-remove-at-position'. | 4026 | *** New function 'seq-remove-at-position'. |
| 3999 | This function returns a copy of the specified sequence where the | 4027 | This function returns a copy of the specified sequence with the |
| 4000 | element at a given (zero-based) index got removed. | 4028 | element at a given (zero-based) index removed. |
| 4001 | 4029 | ||
| 4002 | +++ | 4030 | +++ |
| 4003 | *** New function 'seq-positions'. | 4031 | *** New function 'seq-positions'. |
| @@ -4065,7 +4093,7 @@ that quote character has to be escaped to avoid Emacs displaying it as | |||
| 4065 | 4093 | ||
| 4066 | (setq foo '(1 2 3)) | 4094 | (setq foo '(1 2 3)) |
| 4067 | 4095 | ||
| 4068 | invalid. Emacs will now warn during byte compilation if it seems | 4096 | invalid. Emacs will now warn during byte compilation if it sees |
| 4069 | something like that, and also warn about when using RIGHT/LEFT SINGLE | 4097 | something like that, and also warn about when using RIGHT/LEFT SINGLE |
| 4070 | QUOTATION MARK directly. In both these cases, if these characters | 4098 | QUOTATION MARK directly. In both these cases, if these characters |
| 4071 | should really be present in the docstring, they should be quoted with | 4099 | should really be present in the docstring, they should be quoted with |
| @@ -4125,7 +4153,7 @@ example for benchmarking purposes. | |||
| 4125 | ** New function 'string-edit'. | 4153 | ** New function 'string-edit'. |
| 4126 | This is meant to be used when the user has to edit a (potentially) | 4154 | This is meant to be used when the user has to edit a (potentially) |
| 4127 | long string. It pops up a new buffer where you can edit the string, | 4155 | long string. It pops up a new buffer where you can edit the string, |
| 4128 | and a callback is called when the user types 'C-c C-c'. | 4156 | and the provided callback is called when the user types 'C-c C-c'. |
| 4129 | 4157 | ||
| 4130 | +++ | 4158 | +++ |
| 4131 | ** New function 'read-string-from-buffer'. | 4159 | ** New function 'read-string-from-buffer'. |
| @@ -4271,7 +4299,7 @@ them towards or away from each other. | |||
| 4271 | 4299 | ||
| 4272 | +++ | 4300 | +++ |
| 4273 | ** New hook 'x-pre-popup-menu-hook'. | 4301 | ** New hook 'x-pre-popup-menu-hook'. |
| 4274 | This hook, run before 'x-popup-menu', is about to display a | 4302 | This hook is run before 'x-popup-menu' is about to display a |
| 4275 | deck-of-cards menu on screen. | 4303 | deck-of-cards menu on screen. |
| 4276 | 4304 | ||
| 4277 | --- | 4305 | --- |
| @@ -4372,8 +4400,8 @@ switch to these new functions. | |||
| 4372 | +++ | 4400 | +++ |
| 4373 | *** 'define-key' now takes an optional REMOVE argument. | 4401 | *** 'define-key' now takes an optional REMOVE argument. |
| 4374 | If non-nil, remove the definition from the keymap. This is subtly | 4402 | If non-nil, remove the definition from the keymap. This is subtly |
| 4375 | different from setting a definition to nil (when the keymap has a | 4403 | different from setting a definition to nil: when the keymap has a |
| 4376 | parent). | 4404 | parent such a definition will shadow the parent's definition. |
| 4377 | 4405 | ||
| 4378 | +++ | 4406 | +++ |
| 4379 | *** 'read-multiple-choice' now takes an optional SHOW-HELP argument. | 4407 | *** 'read-multiple-choice' now takes an optional SHOW-HELP argument. |
diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index f8894d9dc1c..c5d112dba72 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | % Reference Card for Org Mode | 1 | % Reference Card for Org Mode |
| 2 | \def\orgversionnumber{9.6.3} | 2 | \def\orgversionnumber{9.6.4} |
| 3 | \def\versionyear{2023} % latest update | 3 | \def\versionyear{2023} % latest update |
| 4 | \input emacsver.tex | 4 | \input emacsver.tex |
| 5 | 5 | ||
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 685f983e285..240ea10cbfc 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el | |||
| @@ -795,6 +795,21 @@ specifying the minimum acceptable version." | |||
| 795 | (require 'finder-inf nil t) ; For `package--builtins'. | 795 | (require 'finder-inf nil t) ; For `package--builtins'. |
| 796 | (assq package package--builtins)))))) | 796 | (assq package package--builtins)))))) |
| 797 | 797 | ||
| 798 | (defun package--active-built-in-p (package) | ||
| 799 | "Return non-nil if the built-in version of PACKAGE is used. | ||
| 800 | If the built-in version of PACKAGE is used and PACKAGE is | ||
| 801 | also available for installation from an archive, it is an | ||
| 802 | indication that PACKAGE was never upgraded to any newer | ||
| 803 | version from the archive." | ||
| 804 | (and (not (assq (cond | ||
| 805 | ((package-desc-p package) | ||
| 806 | (package-desc-name package)) | ||
| 807 | ((stringp package) (intern package)) | ||
| 808 | ((symbolp package) package) | ||
| 809 | ((error "Unknown package format: %S" package))) | ||
| 810 | (package--alist))) | ||
| 811 | (package-built-in-p package))) | ||
| 812 | |||
| 798 | (defun package--autoloads-file-name (pkg-desc) | 813 | (defun package--autoloads-file-name (pkg-desc) |
| 799 | "Return the absolute name of the autoloads file, sans extension. | 814 | "Return the absolute name of the autoloads file, sans extension. |
| 800 | PKG-DESC is a `package-desc' object." | 815 | PKG-DESC is a `package-desc' object." |
| @@ -2178,12 +2193,18 @@ using `package-compute-transaction'." | |||
| 2178 | (unless package-archive-contents | 2193 | (unless package-archive-contents |
| 2179 | (package-refresh-contents))) | 2194 | (package-refresh-contents))) |
| 2180 | 2195 | ||
| 2196 | (defcustom package-install-upgrade-built-in nil | ||
| 2197 | "Non-nil means that built-in packages can be upgraded via a package archive. | ||
| 2198 | If disabled, then `package-install' will not suggest to replace a | ||
| 2199 | built-in package with a (possibly newer) version from a package archive." | ||
| 2200 | :type 'boolean | ||
| 2201 | :version "29.1") | ||
| 2202 | |||
| 2181 | ;;;###autoload | 2203 | ;;;###autoload |
| 2182 | (defun package-install (pkg &optional dont-select) | 2204 | (defun package-install (pkg &optional dont-select) |
| 2183 | "Install the package PKG. | 2205 | "Install the package PKG. |
| 2184 | PKG can be a `package-desc' or a symbol naming one of the | 2206 | PKG can be a `package-desc' or a symbol naming one of the |
| 2185 | available packages in an archive in `package-archives'. When | 2207 | available packages in an archive in `package-archives'. |
| 2186 | called interactively, prompt for the package name. | ||
| 2187 | 2208 | ||
| 2188 | Mark the installed package as selected by adding it to | 2209 | Mark the installed package as selected by adding it to |
| 2189 | `package-selected-packages'. | 2210 | `package-selected-packages'. |
| @@ -2193,7 +2214,11 @@ non-nil, install the package but do not add it to | |||
| 2193 | `package-selected-packages'. | 2214 | `package-selected-packages'. |
| 2194 | 2215 | ||
| 2195 | If PKG is a `package-desc' and it is already installed, don't try | 2216 | If PKG is a `package-desc' and it is already installed, don't try |
| 2196 | to install it but still mark it as selected." | 2217 | to install it but still mark it as selected. |
| 2218 | |||
| 2219 | If the command is invoked with a prefix argument, it will allow | ||
| 2220 | upgrading of built-in packages, as if `package-install-upgrade-built-in' | ||
| 2221 | had been enabled." | ||
| 2197 | (interactive | 2222 | (interactive |
| 2198 | (progn | 2223 | (progn |
| 2199 | ;; Initialize the package system to get the list of package | 2224 | ;; Initialize the package system to get the list of package |
| @@ -2201,11 +2226,14 @@ to install it but still mark it as selected." | |||
| 2201 | (package--archives-initialize) | 2226 | (package--archives-initialize) |
| 2202 | (list (intern (completing-read | 2227 | (list (intern (completing-read |
| 2203 | "Install package: " | 2228 | "Install package: " |
| 2204 | (delq nil | 2229 | (mapcan |
| 2205 | (mapcar (lambda (elt) | 2230 | (lambda (elt) |
| 2206 | (unless (package-installed-p (car elt)) | 2231 | (and (or (and (or current-prefix-arg |
| 2207 | (symbol-name (car elt)))) | 2232 | package-install-upgrade-built-in) |
| 2208 | package-archive-contents)) | 2233 | (package--active-built-in-p (car elt))) |
| 2234 | (not (package-installed-p (car elt)))) | ||
| 2235 | (list (symbol-name (car elt))))) | ||
| 2236 | package-archive-contents) | ||
| 2209 | nil t)) | 2237 | nil t)) |
| 2210 | nil))) | 2238 | nil))) |
| 2211 | (package--archives-initialize) | 2239 | (package--archives-initialize) |
| @@ -2216,6 +2244,9 @@ to install it but still mark it as selected." | |||
| 2216 | (unless (or dont-select (package--user-selected-p name)) | 2244 | (unless (or dont-select (package--user-selected-p name)) |
| 2217 | (package--save-selected-packages | 2245 | (package--save-selected-packages |
| 2218 | (cons name package-selected-packages))) | 2246 | (cons name package-selected-packages))) |
| 2247 | (when (and (or current-prefix-arg package-install-upgrade-built-in) | ||
| 2248 | (package--active-built-in-p pkg)) | ||
| 2249 | (setq pkg (or (cadr (assq name package-archive-contents)) pkg))) | ||
| 2219 | (if-let* ((transaction | 2250 | (if-let* ((transaction |
| 2220 | (if (package-desc-p pkg) | 2251 | (if (package-desc-p pkg) |
| 2221 | (unless (package-installed-p pkg) | 2252 | (unless (package-installed-p pkg) |
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 8d3fe010af4..b35424a8581 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el | |||
| @@ -4359,8 +4359,10 @@ If COND is a function, METHOD will be inserted if COND returns | |||
| 4359 | a non-nil value when called in the message buffer without any | 4359 | a non-nil value when called in the message buffer without any |
| 4360 | arguments. If METHOD is nil in this case, the return value of | 4360 | arguments. If METHOD is nil in this case, the return value of |
| 4361 | the function will be inserted instead. | 4361 | the function will be inserted instead. |
| 4362 | If the buffer already has a\"X-Message-SMTP-Method\" header, | 4362 | |
| 4363 | it is left unchanged." | 4363 | Note: if the buffer already has a \"X-Message-SMTP-Method\" |
| 4364 | header, these rules are ignored, and the header is left | ||
| 4365 | unchanged." | ||
| 4364 | :type '(alist :key-type (choice | 4366 | :type '(alist :key-type (choice |
| 4365 | (string :tag "From Address") | 4367 | (string :tag "From Address") |
| 4366 | (function :tag "Predicate")) | 4368 | (function :tag "Predicate")) |
diff --git a/lisp/help-fns.el b/lisp/help-fns.el index a939cc0b509..1966193d1a7 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el | |||
| @@ -592,22 +592,22 @@ the C sources, too." | |||
| 592 | ;; First collect all the printed representations of menus. | 592 | ;; First collect all the printed representations of menus. |
| 593 | (dolist (menu menus) | 593 | (dolist (menu menus) |
| 594 | (let ((map (lookup-key global-map (seq-take menu 1))) | 594 | (let ((map (lookup-key global-map (seq-take menu 1))) |
| 595 | (string nil)) | 595 | (string nil) |
| 596 | (sep (if (char-displayable-p ?→) " → " " => "))) | ||
| 596 | (seq-do-indexed | 597 | (seq-do-indexed |
| 597 | (lambda (entry level) | 598 | (lambda (entry level) |
| 598 | (when (symbolp map) | 599 | (when (symbolp map) |
| 599 | (setq map (symbol-function map))) | 600 | (setq map (symbol-function map))) |
| 600 | (when-let ((elem (assq entry (cdr map)))) | 601 | (when-let ((elem (assq entry (cdr map)))) |
| 601 | (when (> level 0) | 602 | (when (> level 0) |
| 602 | (push (if (char-displayable-p ?→) | 603 | (push sep string)) |
| 603 | " → " | ||
| 604 | " => ") | ||
| 605 | string)) | ||
| 606 | (if (eq (nth 1 elem) 'menu-item) | 604 | (if (eq (nth 1 elem) 'menu-item) |
| 607 | (progn | 605 | (progn |
| 608 | (push (nth 2 elem) string) | 606 | (push (propertize (nth 2 elem) 'face 'help-key-binding) |
| 607 | string) | ||
| 609 | (setq map (cadddr elem))) | 608 | (setq map (cadddr elem))) |
| 610 | (push (nth 1 elem) string) | 609 | (push (propertize (nth 1 elem) 'face 'help-key-binding) |
| 610 | string) | ||
| 611 | (setq map (cddr elem))))) | 611 | (setq map (cddr elem))))) |
| 612 | (cdr (seq-into menu 'list))) | 612 | (cdr (seq-into menu 'list))) |
| 613 | (when string | 613 | (when string |
| @@ -622,8 +622,7 @@ the C sources, too." | |||
| 622 | (cond ((zerop i) "") | 622 | (cond ((zerop i) "") |
| 623 | ((= i (1- (length menus))) " and ") | 623 | ((= i (1- (length menus))) " and ") |
| 624 | (t ", ")) | 624 | (t ", ")) |
| 625 | (propertize (string-join (nreverse string)) | 625 | (string-join (nreverse string)))) |
| 626 | 'face 'help-key-binding))) | ||
| 627 | strings)))) | 626 | strings)))) |
| 628 | 627 | ||
| 629 | (defun help-fns--compiler-macro (function) | 628 | (defun help-fns--compiler-macro (function) |
diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el index 27443fc2e81..980d4a12054 100644 --- a/lisp/org/ob-tangle.el +++ b/lisp/org/ob-tangle.el | |||
| @@ -158,9 +158,9 @@ result. The default value is `org-remove-indentation'." | |||
| 158 | :version "24.1" | 158 | :version "24.1" |
| 159 | :type 'function) | 159 | :type 'function) |
| 160 | 160 | ||
| 161 | (defcustom org-babel-tangle-default-file-mode #o544 | 161 | (defcustom org-babel-tangle-default-file-mode #o644 |
| 162 | "The default mode used for tangled files, as an integer. | 162 | "The default mode used for tangled files, as an integer. |
| 163 | The default value 356 correspands to the octal #o544, which is | 163 | The default value 420 correspands to the octal #o644, which is |
| 164 | read-write permissions for the user, read-only for everyone else." | 164 | read-write permissions for the user, read-only for everyone else." |
| 165 | :group 'org-babel-tangle | 165 | :group 'org-babel-tangle |
| 166 | :package-version '(Org . "9.6") | 166 | :package-version '(Org . "9.6") |
| @@ -361,9 +361,9 @@ Did you give the decimal value %1$d by mistake?" mode))) | |||
| 361 | ;; Match regexp taken from `file-modes-symbolic-to-number'. | 361 | ;; Match regexp taken from `file-modes-symbolic-to-number'. |
| 362 | (file-modes-symbolic-to-number mode org-babel-tangle-default-file-mode)) | 362 | (file-modes-symbolic-to-number mode org-babel-tangle-default-file-mode)) |
| 363 | ((string-match-p "^[r-][w-][xs-][r-][w-][xs-][r-][w-][x-]$" mode) | 363 | ((string-match-p "^[r-][w-][xs-][r-][w-][xs-][r-][w-][x-]$" mode) |
| 364 | (file-modes-symbolic-to-number (concat "u=" (substring mode 0 3) | 364 | (file-modes-symbolic-to-number (concat "u=" (delete ?- (substring mode 0 3)) |
| 365 | ",g=" (substring mode 3 6) | 365 | ",g=" (delete ?- (substring mode 3 6)) |
| 366 | ",o=" (substring mode 6 9)) | 366 | ",o=" (delete ?- (substring mode 6 9))) |
| 367 | 0)) | 367 | 0)) |
| 368 | (t (error "File mode %S not recognized as a valid format. See `org-babel-interpret-file-mode'." mode)))) | 368 | (t (error "File mode %S not recognized as a valid format. See `org-babel-interpret-file-mode'." mode)))) |
| 369 | 369 | ||
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 2ec2f4c00bc..d3e61643190 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el | |||
| @@ -7724,8 +7724,7 @@ The optional argument TYPE tells the agenda type." | |||
| 7724 | (unless (string= org-agenda-todo-keyword-format "") | 7724 | (unless (string= org-agenda-todo-keyword-format "") |
| 7725 | ;; Remove `display' property as the icon could leak | 7725 | ;; Remove `display' property as the icon could leak |
| 7726 | ;; on the white space. | 7726 | ;; on the white space. |
| 7727 | (org-add-props " " (org-plist-delete (text-properties-at 0 x) | 7727 | (apply #'propertize " " (org-plist-delete (text-properties-at 0 x) 'display))) |
| 7728 | 'display))) | ||
| 7729 | (substring x (match-end 3))))))) | 7728 | (substring x (match-end 3))))))) |
| 7730 | x))) | 7729 | x))) |
| 7731 | 7730 | ||
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index 51729b3f33d..517d45b0224 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el | |||
| @@ -5329,7 +5329,7 @@ seconds.") | |||
| 5329 | "Duration, as a time value, of the pause between synchronizations. | 5329 | "Duration, as a time value, of the pause between synchronizations. |
| 5330 | See `org-element-cache-sync-duration' for more information.") | 5330 | See `org-element-cache-sync-duration' for more information.") |
| 5331 | 5331 | ||
| 5332 | (defvar org-element--cache-self-verify t | 5332 | (defvar org-element--cache-self-verify nil |
| 5333 | "Activate extra consistency checks for the cache. | 5333 | "Activate extra consistency checks for the cache. |
| 5334 | 5334 | ||
| 5335 | This may cause serious performance degradation depending on the value | 5335 | This may cause serious performance degradation depending on the value |
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index 8d7b0b034f8..aef05bc6ee6 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el | |||
| @@ -36,6 +36,10 @@ | |||
| 36 | 36 | ||
| 37 | ;;; Org version verification. | 37 | ;;; Org version verification. |
| 38 | 38 | ||
| 39 | (defconst org--built-in-p nil | ||
| 40 | "When non-nil, assume that Org is a part of Emacs source. | ||
| 41 | For internal use only. See Emacs bug #62762. | ||
| 42 | This variable is only supposed to be changed by Emacs build scripts.") | ||
| 39 | (defmacro org-assert-version () | 43 | (defmacro org-assert-version () |
| 40 | "Assert compile time and runtime version match." | 44 | "Assert compile time and runtime version match." |
| 41 | ;; We intentionally use a more permissive `org-release' instead of | 45 | ;; We intentionally use a more permissive `org-release' instead of |
| @@ -45,7 +49,7 @@ | |||
| 45 | ;; `org-assert-version' calls would fail using strict | 49 | ;; `org-assert-version' calls would fail using strict |
| 46 | ;; `org-git-version' check because the generated Org version strings | 50 | ;; `org-git-version' check because the generated Org version strings |
| 47 | ;; will not match. | 51 | ;; will not match. |
| 48 | `(unless (equal (org-release) ,(org-release)) | 52 | `(unless (or org--built-in-p (equal (org-release) ,(org-release))) |
| 49 | (warn "Org version mismatch. Org loading aborted. | 53 | (warn "Org version mismatch. Org loading aborted. |
| 50 | This warning usually appears when a built-in Org version is loaded | 54 | This warning usually appears when a built-in Org version is loaded |
| 51 | prior to the more recent Org version. | 55 | prior to the more recent Org version. |
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el index a38f2a283d7..42f234790c5 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el | |||
| @@ -5414,12 +5414,10 @@ overwritten, and the table is not marked as requiring realignment." | |||
| 5414 | (self-insert-command N)) | 5414 | (self-insert-command N)) |
| 5415 | (setq org-table-may-need-update t) | 5415 | (setq org-table-may-need-update t) |
| 5416 | (let* (orgtbl-mode | 5416 | (let* (orgtbl-mode |
| 5417 | a | ||
| 5418 | (cmd (or (key-binding | 5417 | (cmd (or (key-binding |
| 5419 | (or (and (listp function-key-map) | 5418 | (or (and (listp function-key-map) |
| 5420 | (setq a (assoc last-input-event function-key-map)) | 5419 | (cdr (assoc last-command-event function-key-map))) |
| 5421 | (cdr a)) | 5420 | (vector last-command-event))) |
| 5422 | (vector last-input-event))) | ||
| 5423 | 'self-insert-command))) | 5421 | 'self-insert-command))) |
| 5424 | (call-interactively cmd) | 5422 | (call-interactively cmd) |
| 5425 | (if (and org-self-insert-cluster-for-undo | 5423 | (if (and org-self-insert-cluster-for-undo |
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index 43fdcb82832..15e4a50877a 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el | |||
| @@ -5,13 +5,13 @@ | |||
| 5 | (defun org-release () | 5 | (defun org-release () |
| 6 | "The release version of Org. | 6 | "The release version of Org. |
| 7 | Inserted by installing Org mode or when a release is made." | 7 | Inserted by installing Org mode or when a release is made." |
| 8 | (let ((org-release "9.6.3")) | 8 | (let ((org-release "9.6.4")) |
| 9 | org-release)) | 9 | org-release)) |
| 10 | ;;;###autoload | 10 | ;;;###autoload |
| 11 | (defun org-git-version () | 11 | (defun org-git-version () |
| 12 | "The Git version of Org mode. | 12 | "The Git version of Org mode. |
| 13 | Inserted by installing Org or when a release is made." | 13 | Inserted by installing Org or when a release is made." |
| 14 | (let ((org-git-version "release_9.6.3-2-gf2949d")) | 14 | (let ((org-git-version "release_9.6.4-2-g0f6ae7")) |
| 15 | org-git-version)) | 15 | org-git-version)) |
| 16 | 16 | ||
| 17 | (provide 'org-version) | 17 | (provide 'org-version) |
diff --git a/lisp/org/org.el b/lisp/org/org.el index be9d0e32dd0..f7c2b6d16d1 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | ;; URL: https://orgmode.org | 9 | ;; URL: https://orgmode.org |
| 10 | ;; Package-Requires: ((emacs "26.1")) | 10 | ;; Package-Requires: ((emacs "26.1")) |
| 11 | 11 | ||
| 12 | ;; Version: 9.6.3 | 12 | ;; Version: 9.6.4 |
| 13 | 13 | ||
| 14 | ;; This file is part of GNU Emacs. | 14 | ;; This file is part of GNU Emacs. |
| 15 | ;; | 15 | ;; |
| @@ -9143,7 +9143,8 @@ nil or a string to be used for the todo mark." ) | |||
| 9143 | (replace-match "0" t nil nil 1))))) | 9143 | (replace-match "0" t nil nil 1))))) |
| 9144 | 9144 | ||
| 9145 | (defvar org-state) | 9145 | (defvar org-state) |
| 9146 | (defvar org-blocked-by-checkboxes) | 9146 | ;; FIXME: We should refactor this and similar dynamically scoped blocker flags. |
| 9147 | (defvar org-blocked-by-checkboxes nil) ; dynamically scoped | ||
| 9147 | (defun org-todo (&optional arg) | 9148 | (defun org-todo (&optional arg) |
| 9148 | "Change the TODO state of an item. | 9149 | "Change the TODO state of an item. |
| 9149 | 9150 | ||
diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el index 50a0950aa04..26f8742bec8 100644 --- a/lisp/org/ox-latex.el +++ b/lisp/org/ox-latex.el | |||
| @@ -1822,7 +1822,7 @@ INFO is a plist used as a communication channel. See | |||
| 1822 | (replace-regexp-in-string | 1822 | (replace-regexp-in-string |
| 1823 | "--\\|[\\{}$%&_#~^]" | 1823 | "--\\|[\\{}$%&_#~^]" |
| 1824 | (lambda (m) | 1824 | (lambda (m) |
| 1825 | (cond ((equal m "--") "-{}-") | 1825 | (cond ((equal m "--") "-{}-{}") |
| 1826 | ((equal m "\\") "\\textbackslash{}") | 1826 | ((equal m "\\") "\\textbackslash{}") |
| 1827 | ((equal m "~") "\\textasciitilde{}") | 1827 | ((equal m "~") "\\textasciitilde{}") |
| 1828 | ((equal m "^") "\\textasciicircum{}") | 1828 | ((equal m "^") "\\textasciicircum{}") |
diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el index cf217c9e781..03c909f78ed 100644 --- a/lisp/org/ox-odt.el +++ b/lisp/org/ox-odt.el | |||
| @@ -2923,17 +2923,23 @@ contextual information." | |||
| 2923 | ;; not be desired in scripts that do not separate words with | 2923 | ;; not be desired in scripts that do not separate words with |
| 2924 | ;; spaces (for example, Han script). `fill-region' is able to | 2924 | ;; spaces (for example, Han script). `fill-region' is able to |
| 2925 | ;; handle such situations. | 2925 | ;; handle such situations. |
| 2926 | ;; FIXME: The unnecessary spaced may still remain when a newline | 2926 | ;; FIXME: The unnecessary spacing may still remain when a newline |
| 2927 | ;; is at a boundary between Org objects (e.g. italics markup | 2927 | ;; is at a boundary between Org objects (e.g. italics markup |
| 2928 | ;; followed by newline). | 2928 | ;; followed by newline). |
| 2929 | (setq output | 2929 | (setq output |
| 2930 | (with-temp-buffer | 2930 | (with-temp-buffer |
| 2931 | (insert output) | ||
| 2932 | (save-match-data | 2931 | (save-match-data |
| 2933 | (let ((leading (and (string-match (rx bos (1+ blank)) output) | 2932 | (let ((leading (and (string-match (rx bos (1+ blank)) output) |
| 2934 | (match-string 0 output))) | 2933 | (match-string 0 output))) |
| 2935 | (trailing (and (string-match (rx (1+ blank) eos) output) | 2934 | (trailing (and (string-match (rx (1+ blank) eos) output) |
| 2936 | (match-string 0 output)))) | 2935 | (match-string 0 output)))) |
| 2936 | (insert | ||
| 2937 | (substring | ||
| 2938 | output | ||
| 2939 | (length leading) | ||
| 2940 | (pcase (length trailing) | ||
| 2941 | (0 nil) | ||
| 2942 | (n (- n))))) | ||
| 2937 | ;; Unfill, retaining leading/trailing space. | 2943 | ;; Unfill, retaining leading/trailing space. |
| 2938 | (let ((fill-column most-positive-fixnum)) | 2944 | (let ((fill-column most-positive-fixnum)) |
| 2939 | (fill-region (point-min) (point-max))) | 2945 | (fill-region (point-min) (point-max))) |
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index e93a0fec707..2309aa00fc9 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el | |||
| @@ -193,9 +193,17 @@ To set the default indent style globally, use | |||
| 193 | (c-ts-mode--get-indent-style | 193 | (c-ts-mode--get-indent-style |
| 194 | (if (derived-mode-p 'c-ts-mode) 'c 'cpp)))))) | 194 | (if (derived-mode-p 'c-ts-mode) 'c 'cpp)))))) |
| 195 | 195 | ||
| 196 | (defvar c-ts-mode-emacs-devel nil | 196 | (defcustom c-ts-mode-emacs-sources-support t |
| 197 | "If the value is t, enable Emacs source-specific features. | 197 | "Whether to enable Emacs source-specific features. |
| 198 | This needs to be set before enabling `c-ts-mode'.") | 198 | This enables detection of definitions of Lisp function using |
| 199 | the DEFUN macro. | ||
| 200 | This needs to be set before enabling `c-ts-mode'; if you change | ||
| 201 | the value after enabling `c-ts-mode', toggle the mode off and on | ||
| 202 | again." | ||
| 203 | :version "29.1" | ||
| 204 | :type 'boolean | ||
| 205 | :safe 'booleanp | ||
| 206 | :group 'c) | ||
| 199 | 207 | ||
| 200 | ;;; Syntax table | 208 | ;;; Syntax table |
| 201 | 209 | ||
| @@ -671,7 +679,7 @@ MODE is either `c' or `cpp'." | |||
| 671 | :override t | 679 | :override t |
| 672 | '(((call_expression | 680 | '(((call_expression |
| 673 | (call_expression function: (identifier) @fn) | 681 | (call_expression function: (identifier) @fn) |
| 674 | @c-ts-mode--fontify-defun) | 682 | @c-ts-mode--fontify-DEFUN) |
| 675 | (:match "^DEFUN$" @fn))))) | 683 | (:match "^DEFUN$" @fn))))) |
| 676 | 684 | ||
| 677 | ;;; Font-lock helpers | 685 | ;;; Font-lock helpers |
| @@ -735,14 +743,14 @@ OVERRIDE, START, END, and ARGS, see `treesit-font-lock-rules'." | |||
| 735 | (treesit-node-start node) (treesit-node-end node) | 743 | (treesit-node-start node) (treesit-node-end node) |
| 736 | 'font-lock-variable-use-face override start end))) | 744 | 'font-lock-variable-use-face override start end))) |
| 737 | 745 | ||
| 738 | (defun c-ts-mode--fontify-defun (node override start end &rest _) | 746 | (defun c-ts-mode--fontify-DEFUN (node override start end &rest _) |
| 739 | "Correctly fontify the DEFUN macro. | 747 | "Correctly fontify calls to the DEFUN macro in Emacs sources. |
| 740 | For NODE, OVERRIDE, START, and END, see | 748 | For NODE, OVERRIDE, START, and END, see |
| 741 | `treesit-font-lock-rules'. The captured NODE is a | 749 | `treesit-font-lock-rules'. The captured NODE is a |
| 742 | call_expression where DEFUN is the function. | 750 | call_expression node, where DEFUN is the function. |
| 743 | 751 | ||
| 744 | This function corrects the fontification on the colon in | 752 | This function corrects the fontification of the colon in |
| 745 | \"doc:\", and the parameter list." | 753 | \"doc:\", and of the parameter list." |
| 746 | (let* ((parent (treesit-node-parent node)) | 754 | (let* ((parent (treesit-node-parent node)) |
| 747 | ;; ARG-LIST-1 and 2 are like this: | 755 | ;; ARG-LIST-1 and 2 are like this: |
| 748 | ;; | 756 | ;; |
| @@ -808,7 +816,7 @@ Return nil if NODE is not a defun node or doesn't have a name." | |||
| 808 | "union_specifier" "class_specifier" | 816 | "union_specifier" "class_specifier" |
| 809 | "namespace_definition") | 817 | "namespace_definition") |
| 810 | (treesit-node-child-by-field-name node "name")) | 818 | (treesit-node-child-by-field-name node "name")) |
| 811 | ;; DEFUNs in Emacs source. | 819 | ;; DEFUNs in Emacs sources. |
| 812 | ("expression_statement" | 820 | ("expression_statement" |
| 813 | (let* ((call-exp-1 (treesit-node-child node 0)) | 821 | (let* ((call-exp-1 (treesit-node-child node 0)) |
| 814 | (call-exp-2 (treesit-node-child call-exp-1 0)) | 822 | (call-exp-2 (treesit-node-child call-exp-1 0)) |
| @@ -885,7 +893,9 @@ the semicolon. This function skips the semicolon." | |||
| 885 | (list node parent bol))) | 893 | (list node parent bol))) |
| 886 | 894 | ||
| 887 | (defun c-ts-mode--emacs-defun-p (node) | 895 | (defun c-ts-mode--emacs-defun-p (node) |
| 888 | "Return non-nil if NODE is a DEFUN in Emacs source files." | 896 | "Return non-nil if NODE is a Lisp function defined using DEFUN. |
| 897 | This function detects Lisp primitives defined in Emacs source | ||
| 898 | files using the DEFUN macro." | ||
| 889 | (and (equal (treesit-node-type node) "expression_statement") | 899 | (and (equal (treesit-node-type node) "expression_statement") |
| 890 | (equal (treesit-node-text | 900 | (equal (treesit-node-text |
| 891 | (treesit-node-child-by-field-name | 901 | (treesit-node-child-by-field-name |
| @@ -896,23 +906,25 @@ the semicolon. This function skips the semicolon." | |||
| 896 | "DEFUN"))) | 906 | "DEFUN"))) |
| 897 | 907 | ||
| 898 | (defun c-ts-mode--emacs-defun-at-point (&optional range) | 908 | (defun c-ts-mode--emacs-defun-at-point (&optional range) |
| 899 | "Return the current defun node. | 909 | "Return the defun node at point. |
| 900 | 910 | ||
| 901 | This function recognizes DEFUNs in Emacs source files. | 911 | In addition to regular C functions, this function recognizes |
| 912 | definitions of Lisp primitrives in Emacs source files using DEFUN, | ||
| 913 | if `c-ts-mode-emacs-sources-support' is non-nil. | ||
| 902 | 914 | ||
| 903 | Note that for the case of a DEFUN, it is made of two separate | 915 | Note that DEFUN is parsed by tree-sitter as two separate |
| 904 | nodes, one for the declaration and one for the body, this | 916 | nodes, one for the declaration and one for the body; this |
| 905 | function returns the declaration node. | 917 | function returns the declaration node. |
| 906 | 918 | ||
| 907 | If RANGE is non-nil, return (BEG . END) where BEG end END | 919 | If RANGE is non-nil, return (BEG . END) where BEG end END |
| 908 | encloses the whole defun. This solves the problem of only | 920 | encloses the whole defun. This is for when the entire defun |
| 909 | returning the declaration part for DEFUN." | 921 | is required, not just the declaration part for DEFUN." |
| 910 | (or (when-let ((node (treesit-defun-at-point))) | 922 | (or (when-let ((node (treesit-defun-at-point))) |
| 911 | (if range | 923 | (if range |
| 912 | (cons (treesit-node-start node) | 924 | (cons (treesit-node-start node) |
| 913 | (treesit-node-end node)) | 925 | (treesit-node-end node)) |
| 914 | node)) | 926 | node)) |
| 915 | (and c-ts-mode-emacs-devel | 927 | (and c-ts-mode-emacs-sources-support |
| 916 | (let ((candidate-1 ; For when point is in the DEFUN statement. | 928 | (let ((candidate-1 ; For when point is in the DEFUN statement. |
| 917 | (treesit-node-prev-sibling | 929 | (treesit-node-prev-sibling |
| 918 | (treesit-node-top-level | 930 | (treesit-node-top-level |
| @@ -945,9 +957,10 @@ returning the declaration part for DEFUN." | |||
| 945 | 957 | ||
| 946 | (defun c-ts-mode--emacs-current-defun-name () | 958 | (defun c-ts-mode--emacs-current-defun-name () |
| 947 | "Return the name of the current defun. | 959 | "Return the name of the current defun. |
| 948 | This is used for `add-log-current-defun-function'. This | 960 | This is used for `add-log-current-defun-function'. |
| 949 | recognizes DEFUN in Emacs sources, in addition to normal function | 961 | In addition to regular C functions, this function also recognizes |
| 950 | definitions." | 962 | Emacs primitives defined using DEFUN in Emacs sources, |
| 963 | if `c-ts-mode-emacs-sources-support' is non-nil." | ||
| 951 | (or (treesit-add-log-current-defun) | 964 | (or (treesit-add-log-current-defun) |
| 952 | (c-ts-mode--defun-name (c-ts-mode--emacs-defun-at-point)))) | 965 | (c-ts-mode--defun-name (c-ts-mode--emacs-defun-at-point)))) |
| 953 | 966 | ||
| @@ -1096,7 +1109,7 @@ in your configuration." | |||
| 1096 | (setq-local treesit-defun-tactic 'top-level) | 1109 | (setq-local treesit-defun-tactic 'top-level) |
| 1097 | (treesit-major-mode-setup) | 1110 | (treesit-major-mode-setup) |
| 1098 | 1111 | ||
| 1099 | (when c-ts-mode-emacs-devel | 1112 | (when c-ts-mode-emacs-sources-support |
| 1100 | (setq-local add-log-current-defun-function | 1113 | (setq-local add-log-current-defun-function |
| 1101 | #'c-ts-mode--emacs-current-defun-name)))) | 1114 | #'c-ts-mode--emacs-current-defun-name)))) |
| 1102 | 1115 | ||
| @@ -1141,7 +1154,8 @@ recommended to enable `electric-pair-mode' with this mode." | |||
| 1141 | ;; Font-lock. | 1154 | ;; Font-lock. |
| 1142 | (setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'cpp)) | 1155 | (setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'cpp)) |
| 1143 | (treesit-major-mode-setup) | 1156 | (treesit-major-mode-setup) |
| 1144 | (when c-ts-mode-emacs-devel | 1157 | |
| 1158 | (when c-ts-mode-emacs-sources-support | ||
| 1145 | (setq-local add-log-current-defun-function | 1159 | (setq-local add-log-current-defun-function |
| 1146 | #'c-ts-mode--emacs-current-defun-name)))) | 1160 | #'c-ts-mode--emacs-current-defun-name)))) |
| 1147 | 1161 | ||
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index fe0c986d746..3134d55fc08 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el | |||
| @@ -215,11 +215,11 @@ chosen (interactively or automatically)." | |||
| 215 | ((R-mode ess-r-mode) . ("R" "--slave" "-e" | 215 | ((R-mode ess-r-mode) . ("R" "--slave" "-e" |
| 216 | "languageserver::run()")) | 216 | "languageserver::run()")) |
| 217 | ((java-mode java-ts-mode) . ("jdtls")) | 217 | ((java-mode java-ts-mode) . ("jdtls")) |
| 218 | (dart-mode . ("dart" "language-server" | 218 | ((dart-mode dart-ts-mode) |
| 219 | "--client-id" "emacs.eglot-dart")) | 219 | . ("dart" "language-server" |
| 220 | "--client-id" "emacs.eglot-dart")) | ||
| 220 | ((elixir-mode elixir-ts-mode heex-ts-mode) | 221 | ((elixir-mode elixir-ts-mode heex-ts-mode) |
| 221 | . ,(if (and (fboundp 'w32-shell-dos-semantics) | 222 | . ,(if (and (fboundp 'w32-shell-dos-semantics) (w32-shell-dos-semantics)) |
| 222 | (w32-shell-dos-semantics)) | ||
| 223 | '("language_server.bat") | 223 | '("language_server.bat") |
| 224 | '("language_server.sh"))) | 224 | '("language_server.sh"))) |
| 225 | (ada-mode . ("ada_language_server")) | 225 | (ada-mode . ("ada_language_server")) |
| @@ -1707,7 +1707,7 @@ under cursor." | |||
| 1707 | (const :tag "Go to definition" :definitionProvider) | 1707 | (const :tag "Go to definition" :definitionProvider) |
| 1708 | (const :tag "Go to type definition" :typeDefinitionProvider) | 1708 | (const :tag "Go to type definition" :typeDefinitionProvider) |
| 1709 | (const :tag "Go to implementation" :implementationProvider) | 1709 | (const :tag "Go to implementation" :implementationProvider) |
| 1710 | (const :tag "Go to declaration" :implementationProvider) | 1710 | (const :tag "Go to declaration" :declarationProvider) |
| 1711 | (const :tag "Find references" :referencesProvider) | 1711 | (const :tag "Find references" :referencesProvider) |
| 1712 | (const :tag "Highlight symbols automatically" :documentHighlightProvider) | 1712 | (const :tag "Highlight symbols automatically" :documentHighlightProvider) |
| 1713 | (const :tag "List symbols in buffer" :documentSymbolProvider) | 1713 | (const :tag "List symbols in buffer" :documentSymbolProvider) |
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 060957eac29..260b0270831 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el | |||
| @@ -2406,7 +2406,7 @@ a GDB/MI reply message." | |||
| 2406 | ("+" . ()) | 2406 | ("+" . ()) |
| 2407 | ("=" . (("thread-created" . (gdb-thread-created . atomic)) | 2407 | ("=" . (("thread-created" . (gdb-thread-created . atomic)) |
| 2408 | ("thread-selected" . (gdb-thread-selected . atomic)) | 2408 | ("thread-selected" . (gdb-thread-selected . atomic)) |
| 2409 | ("thread-existed" . (gdb-ignored-notification . atomic)) | 2409 | ("thread-exited" . (gdb-thread-exited . atomic)) |
| 2410 | ('default . (gdb-ignored-notification . atomic))))) | 2410 | ('default . (gdb-ignored-notification . atomic))))) |
| 2411 | "Alist of alists, mapping the type and class of message to a handler function. | 2411 | "Alist of alists, mapping the type and class of message to a handler function. |
| 2412 | Handler functions are all flagged as either `progressive' or `atomic'. | 2412 | Handler functions are all flagged as either `progressive' or `atomic'. |
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el index d8bd6bc2685..c6667c075f6 100644 --- a/lisp/progmodes/sql.el +++ b/lisp/progmodes/sql.el | |||
| @@ -2192,14 +2192,17 @@ to add functions and PL/SQL keywords.") | |||
| 2192 | 2192 | ||
| 2193 | ;; Postgres Data Types | 2193 | ;; Postgres Data Types |
| 2194 | (sql-font-lock-keywords-builder 'font-lock-type-face nil | 2194 | (sql-font-lock-keywords-builder 'font-lock-type-face nil |
| 2195 | "bigint" "bigserial" "bit" "bool" "boolean" "box" "bytea" "char" | 2195 | "bigint" "bigserial" "bit" "bool" "boolean" "box" "bytea" "char" "character" |
| 2196 | "character" "cidr" "circle" "date" "decimal" "double" "float4" | 2196 | "cidr" "circle" "date" "daterange" "decimal" "double" "float4" "float8" "inet" |
| 2197 | "float8" "inet" "int" "int2" "int4" "int8" "integer" "interval" "line" | 2197 | "int" "int2" "int4" "int4range" "int8" "int8range" "integer" "interval" |
| 2198 | "lseg" "macaddr" "money" "name" "numeric" "path" "point" "polygon" | 2198 | "jsonb" "jsonpath" "line" "lseg" "macaddr" "macaddr8" "money" "name" "numeric" |
| 2199 | "precision" "real" "serial" "serial4" "serial8" "sequences" "smallint" "text" | 2199 | "numrange" "oid" "path" "point" "polygon" "precision" "real" "regclass" |
| 2200 | "time" "timestamp" "timestamptz" "timetz" "tsquery" "tsvector" | 2200 | "regcollation" "regconfig" "regdictionary" "regnamespace " "regoper" |
| 2201 | "txid_snapshot" "unknown" "uuid" "varbit" "varchar" "varying" "without" | 2201 | "regoperator" "regproc" "regprocedure" "regrole" "regtype" "sequences" |
| 2202 | "xml" "zone" | 2202 | "serial" "serial4" "serial8" "smallint" "smallserial" "text" "time" |
| 2203 | "timestamp" "timestamptz" "timetz" "tsquery" "tsrange" "tstzrange" "tsvector" | ||
| 2204 | "txid_snapshot" "unknown" "uuid" "varbit" "varchar" "varying" "without" "xml" | ||
| 2205 | "zone" | ||
| 2203 | ))) | 2206 | ))) |
| 2204 | 2207 | ||
| 2205 | "Postgres SQL keywords used by font-lock. | 2208 | "Postgres SQL keywords used by font-lock. |
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index d77024136d0..643eea1b0a3 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el | |||
| @@ -1820,16 +1820,22 @@ IGNORES is a list of glob patterns for files to ignore." | |||
| 1820 | ;; Ripgrep gets jumbled output, though, even with --line-buffered. | 1820 | ;; Ripgrep gets jumbled output, though, even with --line-buffered. |
| 1821 | ;; But Grep seems to be stable. Even without --line-buffered. | 1821 | ;; But Grep seems to be stable. Even without --line-buffered. |
| 1822 | (defcustom xref-search-program-alist | 1822 | (defcustom xref-search-program-alist |
| 1823 | '((grep | 1823 | (let ((xargs-max-chars |
| 1824 | . | 1824 | (and (memq system-type '(windows-nt ms-dos)) |
| 1825 | ;; '-s' because 'git ls-files' can output broken symlinks. | 1825 | "-s 10000 "))) |
| 1826 | "xargs -0 grep <C> --null -snHE -e <R>") | 1826 | `((grep |
| 1827 | (ripgrep | 1827 | . |
| 1828 | . | 1828 | ;; '-s' because 'git ls-files' can output broken symlinks. |
| 1829 | ;; '!*/' is there to filter out dirs (e.g. submodules). | 1829 | ,(concat "xargs -0 " xargs-max-chars "grep <C> --null -snHE -e <R>")) |
| 1830 | "xargs -0 rg <C> --null -nH --no-heading --no-messages -g '!*/' -e <R>" | 1830 | (ripgrep |
| 1831 | ) | 1831 | . |
| 1832 | (ugrep . "xargs -0 ugrep <C> --null -ns -e <R>")) | 1832 | ;; '!*/' is there to filter out dirs (e.g. submodules). |
| 1833 | ,(concat "xargs -0 " | ||
| 1834 | xargs-max-chars | ||
| 1835 | "rg <C> --null -nH --no-heading --no-messages -g '!*/' -e <R>")) | ||
| 1836 | (ugrep | ||
| 1837 | . | ||
| 1838 | ,(concat "xargs -0 " xargs-max-chars "ugrep <C> --null -ns -e <R>")))) | ||
| 1833 | "Association list mapping program identifiers to command templates. | 1839 | "Association list mapping program identifiers to command templates. |
| 1834 | 1840 | ||
| 1835 | Program identifier should be a symbol, named after the search program. | 1841 | Program identifier should be a symbol, named after the search program. |
| @@ -1844,7 +1850,7 @@ The template should have the following fields: | |||
| 1844 | :type '(repeat | 1850 | :type '(repeat |
| 1845 | (cons (symbol :tag "Program identifier") | 1851 | (cons (symbol :tag "Program identifier") |
| 1846 | (string :tag "Command template"))) | 1852 | (string :tag "Command template"))) |
| 1847 | :version "28.1" | 1853 | :version "29.1" |
| 1848 | :package-version '(xref . "1.0.4")) | 1854 | :package-version '(xref . "1.0.4")) |
| 1849 | 1855 | ||
| 1850 | (defcustom xref-search-program 'grep | 1856 | (defcustom xref-search-program 'grep |
diff --git a/src/fringe.c b/src/fringe.c index 5fcb1b27272..ed257c073b9 100644 --- a/src/fringe.c +++ b/src/fringe.c | |||
| @@ -211,14 +211,14 @@ static unsigned short right_curly_arrow_bits[] = { | |||
| 211 | 211 | ||
| 212 | /* Large circle bitmap. */ | 212 | /* Large circle bitmap. */ |
| 213 | /* | 213 | /* |
| 214 | ........ | ||
| 215 | ..xxxx.. | 214 | ..xxxx.. |
| 216 | .xxxxxx. | 215 | .xxxxxx. |
| 217 | xxxxxxxx | 216 | xxxxxxxx |
| 218 | xxxxxxxx | 217 | xxxxxxxx |
| 218 | xxxxxxxx | ||
| 219 | xxxxxxxx | ||
| 219 | .xxxxxx. | 220 | .xxxxxx. |
| 220 | ..xxxx.. | 221 | ..xxxx.. |
| 221 | ........ | ||
| 222 | */ | 222 | */ |
| 223 | static unsigned short large_circle_bits[] = { | 223 | static unsigned short large_circle_bits[] = { |
| 224 | 0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c}; | 224 | 0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c}; |
diff --git a/src/keymap.c b/src/keymap.c index efac410d317..7f5777c9251 100644 --- a/src/keymap.c +++ b/src/keymap.c | |||
| @@ -3308,13 +3308,18 @@ describe_vector (Lisp_Object vector, Lisp_Object prefix, Lisp_Object args, | |||
| 3308 | if (this_shadowed) | 3308 | if (this_shadowed) |
| 3309 | { | 3309 | { |
| 3310 | SET_PT (PT - 1); | 3310 | SET_PT (PT - 1); |
| 3311 | static char const fmt[] = " (currently shadowed by `%s')"; | 3311 | if (SYMBOLP (shadowed_by)) |
| 3312 | USE_SAFE_ALLOCA; | 3312 | { |
| 3313 | char *buffer = SAFE_ALLOCA (sizeof fmt + | 3313 | static char const fmt[] = " (currently shadowed by `%s')"; |
| 3314 | SBYTES (SYMBOL_NAME (shadowed_by))); | 3314 | USE_SAFE_ALLOCA; |
| 3315 | esprintf (buffer, fmt, SDATA (SYMBOL_NAME (shadowed_by))); | 3315 | char *buffer = |
| 3316 | insert_string (buffer); | 3316 | SAFE_ALLOCA (sizeof fmt + SBYTES (SYMBOL_NAME (shadowed_by))); |
| 3317 | SAFE_FREE(); | 3317 | esprintf (buffer, fmt, SDATA (SYMBOL_NAME (shadowed_by))); |
| 3318 | insert_string (buffer); | ||
| 3319 | SAFE_FREE(); | ||
| 3320 | } | ||
| 3321 | else /* Could be a keymap, a lambda, or a keyboard macro. */ | ||
| 3322 | insert_string (" (currently shadowed)"); | ||
| 3318 | SET_PT (PT + 1); | 3323 | SET_PT (PT + 1); |
| 3319 | } | 3324 | } |
| 3320 | } | 3325 | } |
diff --git a/src/term.c b/src/term.c index d881dee39fe..53ba2a231e4 100644 --- a/src/term.c +++ b/src/term.c | |||
| @@ -4163,7 +4163,15 @@ use the Bourne shell command 'TERM=...; export TERM' (C-shell:\n\ | |||
| 4163 | tty->TS_enter_alt_charset_mode = tgetstr ("as", address); | 4163 | tty->TS_enter_alt_charset_mode = tgetstr ("as", address); |
| 4164 | tty->TS_exit_alt_charset_mode = tgetstr ("ae", address); | 4164 | tty->TS_exit_alt_charset_mode = tgetstr ("ae", address); |
| 4165 | tty->TS_exit_attribute_mode = tgetstr ("me", address); | 4165 | tty->TS_exit_attribute_mode = tgetstr ("me", address); |
| 4166 | #ifdef TERMINFO | ||
| 4167 | tty->TS_enter_strike_through_mode = tigetstr ("smxx"); | ||
| 4168 | if (tty->TS_enter_strike_through_mode == (char *) (intptr_t) -1) | ||
| 4169 | tty->TS_enter_strike_through_mode = NULL; | ||
| 4170 | #else | ||
| 4171 | /* FIXME: Is calling tgetstr here for non-terminfo case correct, | ||
| 4172 | even though "smxx" is more than 2 characters? */ | ||
| 4166 | tty->TS_enter_strike_through_mode = tgetstr ("smxx", address); | 4173 | tty->TS_enter_strike_through_mode = tgetstr ("smxx", address); |
| 4174 | #endif | ||
| 4167 | 4175 | ||
| 4168 | MultiUp (tty) = tgetstr ("UP", address); | 4176 | MultiUp (tty) = tgetstr ("UP", address); |
| 4169 | MultiDown (tty) = tgetstr ("DO", address); | 4177 | MultiDown (tty) = tgetstr ("DO", address); |