Merge from origin/emacs-29

3899acbb33 ; * src/fringe.c: Fix description of large circle.  (Bug#...
2b10e1827d sql: add missing postgresql types
9ac1259278 Fix display of menu-bar bindings of commands in *Help* bu...
ecdd3a9efa Improve Completion Example section in the Emacs manual
626e1ac62b Improve 'message-server-alist' docstring
327986936c Add index entry for fallback modes
1c4783c330 ; * etc/NEWS: Copyedits and grammar fixes.
3d6f755331 xref-search-program-alist: Fix searching larger file list...
1b8b2cf61b Fix typo and inaccuracy in the ELisp Reference manual
df17682ebf ; Support 'dart-ts-mode' in Eglot
e0dc60e078 ; Fix typos in gdb-mi.el
60560cc7ad Fix description of lexical environment's internals
1456adf424 ; Eglot: fix a typo in a customization type
2f59595f5f ; * etc/NEWS: Grammar fixes.
596b780ab7 Update to Org 9.6.4-2-g0f6ae7
a0b04a2247 Documentation copyedits for 'package-install-upgrade-buil...
580d8278c5 Allow upgrading built-in packages with 'package-install'
329304c23f ; * src/term.c (init_tty): Fix last change.  (Bug#62877)
200dbf7d30 Minor changes in c-ts-mode.el's support of DEFUNs
9686b015a0 Fix strike-through attribute support on TTY frames
39035fbfc5 Avoid crashes in 'describe-keymap' due to shadowing

# Conflicts:
#	etc/NEWS
#	lisp/progmodes/c-ts-mode.el
#	lisp/progmodes/eglot.el
This commit is contained in:
Eli Zaretskii 2023-04-21 07:29:14 -04:00
commit f1ce49d148
28 changed files with 285 additions and 167 deletions

View file

@ -1245,6 +1245,7 @@ Manual}.
These four keywords are not really variables; setting them in any
other context has no special meaning.
@cindex fallback modes
If you're editing a file across Emacs versions, and a new mode has
been introduced to handle a file in a newer Emacs version, you can use
several @code{mode} entries to use the new mode (called

View file

@ -313,19 +313,27 @@ may be defined in your Emacs session. For example, if a command
called @code{authorize-me} was defined, Emacs could only complete
as far as @samp{aut}.)
If you type @key{TAB} again immediately, it cannot determine the
next character; it could be @samp{-}, @samp{a}, or @samp{c}. So it
does not add any characters; instead, @key{TAB} displays a list of all
possible completions in another window.
If you type @kbd{@key{TAB}} again immediately, it cannot determine
the next character; it could be @samp{-}, @samp{a}, or @samp{c}. So
it does not add any characters; instead, @key{TAB} displays a list of
all possible completions in another window.
Next, type @kbd{-f}. The minibuffer now contains @samp{auto-f}, and
the only command name that starts with this is @code{auto-fill-mode}.
If you now type @key{TAB}, completion fills in the rest of the
If you now type @kbd{@key{TAB}}, completion fills in the rest of the
argument @samp{auto-fill-mode} into the minibuffer.
Hence, typing just @kbd{a u @key{TAB} - f @key{TAB}} allows you to
enter @samp{auto-fill-mode}.
@key{TAB} also works while point is not at the end of the
minibuffer. In that case, it will fill in text both at point and at
the end of the minibuffer. If you type @kbd{M-x autocm}, then press
@kbd{C-b} to move point before the @samp{m}, you can type
@kbd{@key{TAB}} to insert the text @samp{onf-} at point and @samp{ode}
at the end of the minibuffer, so that the minibuffer contains
@samp{autoconf-mode}.
@node Completion Commands
@subsection Completion Commands

View file

@ -264,11 +264,12 @@ have any number of prefixes.
@end table
@cindex @code{custom-group} property
The variables and subgroups of a group are stored in the
The variables, faces, and subgroups of a group are stored in the
@code{custom-group} property of the group's symbol. @xref{Symbol
Plists}. The value of that property is a list of pairs whose
@code{car} is the variable or subgroup symbol and the @code{cdr} is
either @code{custom-variable} or @code{custom-group}.
@code{car} is the symbol of the variable or the face or the subgroup,
and the @code{cdr} is one of the corresponding symbols
@code{custom-variable}, @code{custom-face}, or @code{custom-group}.
@end defmac
@defopt custom-unlispify-remove-prefixes

View file

@ -1338,7 +1338,7 @@ specified @var{file} and perform the necessary initialization of the
module. This is the primitive which makes sure the module exports the
@code{plugin_is_GPL_compatible} symbol, calls the module's
@code{emacs_module_init} function, and signals an error if that
function returns an error indication, or if the use typed @kbd{C-g}
function returns an error indication, or if the user typed @kbd{C-g}
during the initialization. If the initialization succeeds,
@code{module-load} returns @code{t}. Note that @var{file} must
already have the proper file-name extension, as this function doesn't

View file

@ -1183,13 +1183,16 @@ wants the current value of a variable, it looks first in the lexical
environment; if the variable is not specified in there, it looks in
the symbol's value cell, where the dynamic value is stored.
(Internally, the lexical environment is an alist of symbol-value
pairs, with the final element in the alist being the symbol @code{t}
rather than a cons cell. Such an alist can be passed as the second
argument to the @code{eval} function, in order to specify a lexical
environment in which to evaluate a form. @xref{Eval}. Most Emacs
Lisp programs, however, should not interact directly with lexical
environments in this way; only specialized programs like debuggers.)
(Internally, the lexical environment is a list whose members are
usually cons cells that are symbol-value pairs, but some of its
members can be symbols rather than cons cells. A symbol in the list
means the lexical environment declared that symbol's variable as
locally considered to be dynamically bound. This list can be passed
as the second argument to the @code{eval} function, in order to
specify a lexical environment in which to evaluate a form.
@xref{Eval}. Most Emacs Lisp programs, however, should not interact
directly with lexical environments in this way; only specialized
programs like debuggers.)
@cindex closures, example of using
Lexical bindings have indefinite extent. Even after a binding

View file

@ -5958,8 +5958,9 @@ the agenda (see [[*Weekly/daily agenda]]). We distinguish:
#+findex: org-block
For more complex date specifications, Org mode supports using the
special expression diary entries implemented in the Emacs Calendar
package[fn:20]. For example, with optional time:
special expression diary entries implemented in the
[[info:emacs#Special Diary Entries][Emacs Calendar package]][fn:20].
For example, with optional time:
#+begin_example
,* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month

View file

@ -218,13 +218,13 @@ of 'user-emacs-directory'.
+++
** The image commands have changed key bindings.
In previous Emacs versions, images have had the '+', '-' and 'r' keys
bound when point is over an image. In Emacs 29.1, additional commands
were added, and this made it more likely that users would trigger the
image commands by mistake. To avoid this, all image commands have
In previous Emacs versions, the '+', '-' and 'r' keys were bound when
point was over an image. In Emacs 29.1, additional commands have been
added, and this made it more likely that users would trigger the image
commands by mistake. To avoid this, all image commands have been
moved to the 'i' prefix keymap, so '+' is now 'i +', '-' is now 'i -',
and 'r' is now 'i r'. In addition, these commands are now repeating,
so, for example, you can rotate an image twice by typing 'i r r'.
so you can rotate an image twice by saying 'i r r', for instance.
+++
** 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.
---
** Support for old EIEIO functions is not autoloaded any more.
You need an explicit '(require 'eieio-compat)' to use 'defmethod'
and 'defgeneric' (which have been made obsolete in Emacs 25.1 with
and 'defgeneric' (which were made obsolete in Emacs 25.1 by
'cl-defmethod' and 'cl-defgeneric').
Similarly you might need to '(require 'eieio-compat)' before loading
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
performance, but the latter is closer to a drop-in replacement.
1. To use 'display-line-numbers-mode', add something like this to your
Init file:
init file:
(global-display-line-numbers-mode 1)
;; Alternatively, to use it only in programming modes:
@ -517,7 +517,7 @@ performance, but the latter is closer to a drop-in replacement.
---
** The thumbs.el library is now obsolete.
We recommend using command 'image-dired' instead.
We recommend using the 'image-dired' command instead.
---
** The autoarg.el library is now marked obsolete.
@ -577,7 +577,7 @@ encoding, only for decoding.
** New user option 'major-mode-remap-alist' to specify favorite major modes.
This user option lets you remap the default modes (e.g. 'perl-mode' or
'latex-mode') to your favorite ones (e.g. 'cperl-mode' or
'LaTeX-mode') without having to use 'defalias', which can have
'LaTeX-mode') instead of having to use 'defalias', which can have
undesirable side effects.
This applies to all modes specified via 'auto-mode-alist', file-local
variables, etc.
@ -587,6 +587,8 @@ variables, etc.
---
** New user option 'electric-quote-replace-consecutive'.
This allows you to disable the default behavior of consecutive single
quotes being replaced with a double quote.
---
** Emacs is now capable of editing files with very long lines.
@ -801,7 +803,7 @@ element: 'set-minibuffer-message', which displays echo-area messages
at the end of the minibuffer text when the minibuffer is active.
Other useful functions include 'inhibit-message', which allows
specifying, via 'inhibit-message-regexps', the list of messages whose
display shall be inhibited; and 'set-multi-message' that accumulates
display should be inhibited; and 'set-multi-message' that accumulates
recent messages and displays them stacked together.
---
@ -902,7 +904,7 @@ frame's contents will be hidden, leaving only the title bar on display.
---
** New user option 'x-gtk-use-native-input'.
This controls whether or not GTK input methods are used by Emacs,
instead of XIM input methods.
instead of XIM input methods. Defaults to nil.
+++
** New user option 'use-system-tooltips'.
@ -999,17 +1001,17 @@ combinations in a graphical menu system.
+++
*** New command 'emoji-search' (bound to 'C-x 8 e s').
This command lets you search for Emoji based on names.
This command lets you search for and insert an Emoji based on names.
+++
*** New command 'emoji-list' (bound to 'C-x 8 e l').
This command lists all Emoji (categorized by themes) in a special
buffer and lets you choose one of them.
buffer and lets you choose one of them to insert.
---
*** New command 'emoji-recent' (bound to 'C-x 8 e r').
This command lets you choose among the Emoji you have recently
inserted.
inserted and insert it.
+++
*** New command 'emoji-describe' (bound to 'C-x 8 e d').
@ -1043,7 +1045,7 @@ quotes removed.
---
*** 'M-x apropos-variable' output now includes values of variables.
Such apropos buffer is more easily viewed with outlining after
Such an apropos buffer is more easily viewed with outlining after
enabling 'outline-minor-mode' in 'apropos-mode'.
+++
@ -1075,7 +1077,7 @@ This has been changed to:
+++
*** The 'C-h .' command now accepts a prefix argument.
'C-u C-h .' would previously inhibit displaying a warning message if
there's no local help at point. This has been changed to call
there was no local help at point. This has been changed to call
'button-describe'/'widget-describe' and display button/widget help
instead.
@ -1128,7 +1130,7 @@ helpful commands for various tasks. You can toggle the display using
'C-h C-q'.
** Emacs now comes with Org v9.6.
See the file "ORG-NEWS" for user-visible changes in Org.
See the file "etc/ORG-NEWS" for user-visible changes in Org.
** Outline Mode
@ -1191,12 +1193,13 @@ the display of several buffers in a row more amenable.
+++
*** New buffer display action alist entry 'lru-frames'.
This allows to specify which frames 'display-buffer' should consider
when using a window that shows another buffer.
This allows specifying which frames 'display-buffer' should consider
when using a window that shows another buffer. It is interpreted as
per the ALL-FRAMES argument of 'get-lru-window'.
+++
*** New buffer display action alist entry 'lru-time'.
'display-buffer' will ignore windows with a use time higher than that
'display-buffer' will ignore windows with a use time higher than this
when using a window that shows another buffer.
+++
@ -1206,12 +1209,14 @@ making it a less likely candidate for displaying another buffer.
+++
*** New buffer display action alist entry 'window-min-width'.
This allows to specify a minimum width of the window used to display a
buffer.
This allows specifying a preferred minimum width of the window used to
display a buffer.
---
*** You can customize on which window 'scroll-other-window' operates.
This is controlled by the new 'other-window-scroll-default' variable.
*** You can specify on which window 'scroll-other-window' operates.
This is controlled by the new 'other-window-scroll-default' variable,
which should be set to a function that returns a window. When this
variable is nil, 'next-window' is used.
** Frames
@ -1274,17 +1279,19 @@ respond within N seconds. The default is to wait forever.
+++
*** 'server-stop-automatically' can be used to automatically stop the server.
The Emacs server will be automatically stopped when certain conditions
are met. The conditions are given by the argument, which can be
'empty', 'delete-frame' or 'kill-terminal'.
are met. The conditions are determined by the argument to
'server-stop-automatically', which can be 'empty', 'delete-frame' or
'kill-terminal'.
** Rcirc
+++
*** New command 'rcirc-when'.
This shows the reception time of the message at point (if available).
+++
*** New user option 'rcirc-cycle-completion-flag'.
Rcirc will use the default 'completion-at-point' mechanism. The
Rcirc now uses the default 'completion-at-point' mechanism. The
conventional IRC behavior of completing by cycling through the
available options can be restored by enabling this option.
@ -1869,13 +1876,26 @@ packages checked out using 'package-vc-install'.
+++
*** New command 'package-report-bug'.
This command helps you compose an email for sending bug reports to
package maintainers.
package maintainers, and is bound to 'b' in the "*Packages*" buffer.
+++
*** New user option 'package-vc-selected-packages'.
By customizing this user option you can specify specific packages to
install.
---
*** New user option 'package-install-upgrade-built-in'.
When enabled, 'package-install' will include in the list of
upgradeable packages those built-in packages (like Eglot and
use-package, for example) for which a newer version is available in
package archives, and will allow installing those newer versions. By
default, this is disabled; however, if 'package-install' is invoked
with a prefix argument, it will act as if this new option were
enabled.
If you customize this option, we recommend you place its non-default
setting in your early-init file.
** Emacs Sessions (Desktop)
+++
@ -1933,8 +1953,8 @@ displayed in a window.
+++
*** New user option 'compilation-hidden-output'.
This can be used to make specific parts of compilation output
invisible.
This regular expression can be used to make specific parts of
compilation output invisible.
+++
*** The 'compilation-auto-jump-to-first-error' user option has been extended.
@ -2317,7 +2337,7 @@ EUDC inline expansion result formatting defaulted to
("%s %s <%s>" firstname name email)
Since email address specifications need to comply with RFC 5322 in
order to be useful in messages, there was a risk to produce syntax
order to be useful in messages, there was a risk of producing syntax
which was standard with RFC 822, but is marked as obsolete syntax by
its successor RFC 5322. Also, the first and last name part was never
enclosed in double quotes, potentially producing invalid address
@ -2351,8 +2371,8 @@ used to select the entry type in the ecomplete database.
+++
*** New back-end for mailabbrev.
A new back-end for mailabbrev allows information from that database to
be queried by EUDC, too. The attributes 'email', 'name', and 'firstname'
are supported only.
be queried by EUDC, too. Only the attributes 'email', 'name', and
'firstname' are supported.
** EWW/SHR
@ -2599,14 +2619,14 @@ as opposed to via the command-line.
+++
*** New command 'image-transform-fit-to-window'.
This command fits the image to the current window by scaling down or
up as necessary. Unlike 'image-transform-fit-both', this does not
only scale the image down, but up as well. It is bound to 's w' in
Image Mode by default.
up as necessary. Unlike 'image-transform-fit-both', this can scale
the image up as well as down. It is bound to 's w' in Image Mode by
default.
---
*** New command 'image-mode-wallpaper-set'.
This command sets the desktop background to the current image. It is
bound to 'W' by default.
bound to 'W' in Image Mode by default.
+++
*** '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.
---
*** New user option 'image-text-based-formats'.
This controls whether or not to show a message when opening certain
image formats saying how to edit it as text. The default is to show
this message for SVG and XPM.
This controls whether or not to show a message, when opening certain
image formats, explaining how to edit it as text. The default is to
show this message for SVG and XPM.
+++
*** New command 'image-transform-set-percent'.
It allows setting the image size to a percentage of its original size,
and is bound to 's p' in Image mode.
It allows resizing the image to a percentage of its original size, and
is bound to 's p' in Image mode.
+++
*** '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
Protocol (LSP). See the new Info manual "(eglot) Top" for more. Also
see "etc/EGLOT-NEWS".
If you want to be able to use 'package-install' to upgrade Eglot to
newer versions released on GNU ELPA, customize the new option
'package-install-upgrade-built-in' to a non-nil value.
+++
** use-package: Declarative package configuration.
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
file in a way that is declarative, tidy, and performance-oriented.
See the new Info manual "(use-package) Top" for more.
If you want to be able to use 'package-install' to upgrade use-package
to newer versions released on GNU ELPA, customize the new option
'package-install-upgrade-built-in' to a non-nil value.
---
** New package 'wallpaper'.
This package provides the command 'wallpaper-set', which sets the
@ -3915,9 +3943,9 @@ connection-local profile.
+++
*** New macro 'with-connection-local-application-variables'.
This macro works like 'with-connection-local-variables', but it allows
to use another application but 'tramp'. This is useful when running
code in a buffer where Tramp has already set some connection-local
variables.
using another application instead of 'tramp'. This is useful when
running code in a buffer where Tramp has already set some
connection-local variables.
+++
*** New macro 'setq-connection-local'.
@ -3996,8 +4024,8 @@ This returns a list of sub-sequences of the specified sequence.
+++
*** New function 'seq-remove-at-position'.
This function returns a copy of the specified sequence where the
element at a given (zero-based) index got removed.
This function returns a copy of the specified sequence with the
element at a given (zero-based) index removed.
+++
*** New function 'seq-positions'.
@ -4065,7 +4093,7 @@ that quote character has to be escaped to avoid Emacs displaying it as
(setq foo '(1 2 3))
invalid. Emacs will now warn during byte compilation if it seems
invalid. Emacs will now warn during byte compilation if it sees
something like that, and also warn about when using RIGHT/LEFT SINGLE
QUOTATION MARK directly. In both these cases, if these characters
should really be present in the docstring, they should be quoted with
@ -4125,7 +4153,7 @@ example for benchmarking purposes.
** New function 'string-edit'.
This is meant to be used when the user has to edit a (potentially)
long string. It pops up a new buffer where you can edit the string,
and a callback is called when the user types 'C-c C-c'.
and the provided callback is called when the user types 'C-c C-c'.
+++
** New function 'read-string-from-buffer'.
@ -4271,7 +4299,7 @@ them towards or away from each other.
+++
** New hook 'x-pre-popup-menu-hook'.
This hook, run before 'x-popup-menu', is about to display a
This hook is run before 'x-popup-menu' is about to display a
deck-of-cards menu on screen.
---
@ -4372,8 +4400,8 @@ switch to these new functions.
+++
*** 'define-key' now takes an optional REMOVE argument.
If non-nil, remove the definition from the keymap. This is subtly
different from setting a definition to nil (when the keymap has a
parent).
different from setting a definition to nil: when the keymap has a
parent such a definition will shadow the parent's definition.
+++
*** 'read-multiple-choice' now takes an optional SHOW-HELP argument.

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{9.6.3}
\def\orgversionnumber{9.6.4}
\def\versionyear{2023} % latest update
\input emacsver.tex

View file

@ -795,6 +795,21 @@ specifying the minimum acceptable version."
(require 'finder-inf nil t) ; For `package--builtins'.
(assq package package--builtins))))))
(defun package--active-built-in-p (package)
"Return non-nil if the built-in version of PACKAGE is used.
If the built-in version of PACKAGE is used and PACKAGE is
also available for installation from an archive, it is an
indication that PACKAGE was never upgraded to any newer
version from the archive."
(and (not (assq (cond
((package-desc-p package)
(package-desc-name package))
((stringp package) (intern package))
((symbolp package) package)
((error "Unknown package format: %S" package)))
(package--alist)))
(package-built-in-p package)))
(defun package--autoloads-file-name (pkg-desc)
"Return the absolute name of the autoloads file, sans extension.
PKG-DESC is a `package-desc' object."
@ -2178,12 +2193,18 @@ using `package-compute-transaction'."
(unless package-archive-contents
(package-refresh-contents)))
(defcustom package-install-upgrade-built-in nil
"Non-nil means that built-in packages can be upgraded via a package archive.
If disabled, then `package-install' will not suggest to replace a
built-in package with a (possibly newer) version from a package archive."
:type 'boolean
:version "29.1")
;;;###autoload
(defun package-install (pkg &optional dont-select)
"Install the package PKG.
PKG can be a `package-desc' or a symbol naming one of the
available packages in an archive in `package-archives'. When
called interactively, prompt for the package name.
available packages in an archive in `package-archives'.
Mark the installed package as selected by adding it to
`package-selected-packages'.
@ -2193,7 +2214,11 @@ non-nil, install the package but do not add it to
`package-selected-packages'.
If PKG is a `package-desc' and it is already installed, don't try
to install it but still mark it as selected."
to install it but still mark it as selected.
If the command is invoked with a prefix argument, it will allow
upgrading of built-in packages, as if `package-install-upgrade-built-in'
had been enabled."
(interactive
(progn
;; Initialize the package system to get the list of package
@ -2201,11 +2226,14 @@ to install it but still mark it as selected."
(package--archives-initialize)
(list (intern (completing-read
"Install package: "
(delq nil
(mapcar (lambda (elt)
(unless (package-installed-p (car elt))
(symbol-name (car elt))))
package-archive-contents))
(mapcan
(lambda (elt)
(and (or (and (or current-prefix-arg
package-install-upgrade-built-in)
(package--active-built-in-p (car elt)))
(not (package-installed-p (car elt))))
(list (symbol-name (car elt)))))
package-archive-contents)
nil t))
nil)))
(package--archives-initialize)
@ -2216,6 +2244,9 @@ to install it but still mark it as selected."
(unless (or dont-select (package--user-selected-p name))
(package--save-selected-packages
(cons name package-selected-packages)))
(when (and (or current-prefix-arg package-install-upgrade-built-in)
(package--active-built-in-p pkg))
(setq pkg (or (cadr (assq name package-archive-contents)) pkg)))
(if-let* ((transaction
(if (package-desc-p pkg)
(unless (package-installed-p pkg)

View file

@ -4359,8 +4359,10 @@ If COND is a function, METHOD will be inserted if COND returns
a non-nil value when called in the message buffer without any
arguments. If METHOD is nil in this case, the return value of
the function will be inserted instead.
If the buffer already has a\"X-Message-SMTP-Method\" header,
it is left unchanged."
Note: if the buffer already has a \"X-Message-SMTP-Method\"
header, these rules are ignored, and the header is left
unchanged."
:type '(alist :key-type (choice
(string :tag "From Address")
(function :tag "Predicate"))

View file

@ -592,22 +592,22 @@ the C sources, too."
;; First collect all the printed representations of menus.
(dolist (menu menus)
(let ((map (lookup-key global-map (seq-take menu 1)))
(string nil))
(string nil)
(sep (if (char-displayable-p ?→) "" " => ")))
(seq-do-indexed
(lambda (entry level)
(when (symbolp map)
(setq map (symbol-function map)))
(when-let ((elem (assq entry (cdr map))))
(when (> level 0)
(push (if (char-displayable-p ?→)
""
" => ")
string))
(push sep string))
(if (eq (nth 1 elem) 'menu-item)
(progn
(push (nth 2 elem) string)
(push (propertize (nth 2 elem) 'face 'help-key-binding)
string)
(setq map (cadddr elem)))
(push (nth 1 elem) string)
(push (propertize (nth 1 elem) 'face 'help-key-binding)
string)
(setq map (cddr elem)))))
(cdr (seq-into menu 'list)))
(when string
@ -622,8 +622,7 @@ the C sources, too."
(cond ((zerop i) "")
((= i (1- (length menus))) " and ")
(t ", "))
(propertize (string-join (nreverse string))
'face 'help-key-binding)))
(string-join (nreverse string))))
strings))))
(defun help-fns--compiler-macro (function)

View file

@ -158,9 +158,9 @@ result. The default value is `org-remove-indentation'."
:version "24.1"
:type 'function)
(defcustom org-babel-tangle-default-file-mode #o544
(defcustom org-babel-tangle-default-file-mode #o644
"The default mode used for tangled files, as an integer.
The default value 356 correspands to the octal #o544, which is
The default value 420 correspands to the octal #o644, which is
read-write permissions for the user, read-only for everyone else."
:group 'org-babel-tangle
:package-version '(Org . "9.6")
@ -361,9 +361,9 @@ Did you give the decimal value %1$d by mistake?" mode)))
;; Match regexp taken from `file-modes-symbolic-to-number'.
(file-modes-symbolic-to-number mode org-babel-tangle-default-file-mode))
((string-match-p "^[r-][w-][xs-][r-][w-][xs-][r-][w-][x-]$" mode)
(file-modes-symbolic-to-number (concat "u=" (substring mode 0 3)
",g=" (substring mode 3 6)
",o=" (substring mode 6 9))
(file-modes-symbolic-to-number (concat "u=" (delete ?- (substring mode 0 3))
",g=" (delete ?- (substring mode 3 6))
",o=" (delete ?- (substring mode 6 9)))
0))
(t (error "File mode %S not recognized as a valid format. See `org-babel-interpret-file-mode'." mode))))

View file

@ -7724,8 +7724,7 @@ The optional argument TYPE tells the agenda type."
(unless (string= org-agenda-todo-keyword-format "")
;; Remove `display' property as the icon could leak
;; on the white space.
(org-add-props " " (org-plist-delete (text-properties-at 0 x)
'display)))
(apply #'propertize " " (org-plist-delete (text-properties-at 0 x) 'display)))
(substring x (match-end 3)))))))
x)))

View file

@ -5329,7 +5329,7 @@ seconds.")
"Duration, as a time value, of the pause between synchronizations.
See `org-element-cache-sync-duration' for more information.")
(defvar org-element--cache-self-verify t
(defvar org-element--cache-self-verify nil
"Activate extra consistency checks for the cache.
This may cause serious performance degradation depending on the value

View file

@ -36,6 +36,10 @@
;;; Org version verification.
(defconst org--built-in-p nil
"When non-nil, assume that Org is a part of Emacs source.
For internal use only. See Emacs bug #62762.
This variable is only supposed to be changed by Emacs build scripts.")
(defmacro org-assert-version ()
"Assert compile time and runtime version match."
;; We intentionally use a more permissive `org-release' instead of
@ -45,7 +49,7 @@
;; `org-assert-version' calls would fail using strict
;; `org-git-version' check because the generated Org version strings
;; will not match.
`(unless (equal (org-release) ,(org-release))
`(unless (or org--built-in-p (equal (org-release) ,(org-release)))
(warn "Org version mismatch. Org loading aborted.
This warning usually appears when a built-in Org version is loaded
prior to the more recent Org version.

View file

@ -5414,12 +5414,10 @@ overwritten, and the table is not marked as requiring realignment."
(self-insert-command N))
(setq org-table-may-need-update t)
(let* (orgtbl-mode
a
(cmd (or (key-binding
(or (and (listp function-key-map)
(setq a (assoc last-input-event function-key-map))
(cdr a))
(vector last-input-event)))
(cdr (assoc last-command-event function-key-map)))
(vector last-command-event)))
'self-insert-command)))
(call-interactively cmd)
(if (and org-self-insert-cluster-for-undo

View file

@ -5,13 +5,13 @@
(defun org-release ()
"The release version of Org.
Inserted by installing Org mode or when a release is made."
(let ((org-release "9.6.3"))
(let ((org-release "9.6.4"))
org-release))
;;;###autoload
(defun org-git-version ()
"The Git version of Org mode.
Inserted by installing Org or when a release is made."
(let ((org-git-version "release_9.6.3-2-gf2949d"))
(let ((org-git-version "release_9.6.4-2-g0f6ae7"))
org-git-version))
(provide 'org-version)

View file

@ -9,7 +9,7 @@
;; URL: https://orgmode.org
;; Package-Requires: ((emacs "26.1"))
;; Version: 9.6.3
;; Version: 9.6.4
;; This file is part of GNU Emacs.
;;
@ -9143,7 +9143,8 @@ nil or a string to be used for the todo mark." )
(replace-match "0" t nil nil 1)))))
(defvar org-state)
(defvar org-blocked-by-checkboxes)
;; FIXME: We should refactor this and similar dynamically scoped blocker flags.
(defvar org-blocked-by-checkboxes nil) ; dynamically scoped
(defun org-todo (&optional arg)
"Change the TODO state of an item.

View file

@ -1822,7 +1822,7 @@ INFO is a plist used as a communication channel. See
(replace-regexp-in-string
"--\\|[\\{}$%&_#~^]"
(lambda (m)
(cond ((equal m "--") "-{}-")
(cond ((equal m "--") "-{}-{}")
((equal m "\\") "\\textbackslash{}")
((equal m "~") "\\textasciitilde{}")
((equal m "^") "\\textasciicircum{}")

View file

@ -2923,17 +2923,23 @@ contextual information."
;; not be desired in scripts that do not separate words with
;; spaces (for example, Han script). `fill-region' is able to
;; handle such situations.
;; FIXME: The unnecessary spaced may still remain when a newline
;; FIXME: The unnecessary spacing may still remain when a newline
;; is at a boundary between Org objects (e.g. italics markup
;; followed by newline).
(setq output
(with-temp-buffer
(insert output)
(save-match-data
(let ((leading (and (string-match (rx bos (1+ blank)) output)
(match-string 0 output)))
(trailing (and (string-match (rx (1+ blank) eos) output)
(match-string 0 output))))
(insert
(substring
output
(length leading)
(pcase (length trailing)
(0 nil)
(n (- n)))))
;; Unfill, retaining leading/trailing space.
(let ((fill-column most-positive-fixnum))
(fill-region (point-min) (point-max)))

View file

@ -193,9 +193,17 @@ To set the default indent style globally, use
(c-ts-mode--get-indent-style
(if (derived-mode-p 'c-ts-mode) 'c 'cpp))))))
(defvar c-ts-mode-emacs-devel nil
"If the value is t, enable Emacs source-specific features.
This needs to be set before enabling `c-ts-mode'.")
(defcustom c-ts-mode-emacs-sources-support t
"Whether to enable Emacs source-specific features.
This enables detection of definitions of Lisp function using
the DEFUN macro.
This needs to be set before enabling `c-ts-mode'; if you change
the value after enabling `c-ts-mode', toggle the mode off and on
again."
:version "29.1"
:type 'boolean
:safe 'booleanp
:group 'c)
;;; Syntax table
@ -671,7 +679,7 @@ MODE is either `c' or `cpp'."
:override t
'(((call_expression
(call_expression function: (identifier) @fn)
@c-ts-mode--fontify-defun)
@c-ts-mode--fontify-DEFUN)
(:match "^DEFUN$" @fn)))))
;;; Font-lock helpers
@ -735,14 +743,14 @@ OVERRIDE, START, END, and ARGS, see `treesit-font-lock-rules'."
(treesit-node-start node) (treesit-node-end node)
'font-lock-variable-use-face override start end)))
(defun c-ts-mode--fontify-defun (node override start end &rest _)
"Correctly fontify the DEFUN macro.
(defun c-ts-mode--fontify-DEFUN (node override start end &rest _)
"Correctly fontify calls to the DEFUN macro in Emacs sources.
For NODE, OVERRIDE, START, and END, see
`treesit-font-lock-rules'. The captured NODE is a
call_expression where DEFUN is the function.
call_expression node, where DEFUN is the function.
This function corrects the fontification on the colon in
\"doc:\", and the parameter list."
This function corrects the fontification of the colon in
\"doc:\", and of the parameter list."
(let* ((parent (treesit-node-parent node))
;; ARG-LIST-1 and 2 are like this:
;;
@ -808,7 +816,7 @@ Return nil if NODE is not a defun node or doesn't have a name."
"union_specifier" "class_specifier"
"namespace_definition")
(treesit-node-child-by-field-name node "name"))
;; DEFUNs in Emacs source.
;; DEFUNs in Emacs sources.
("expression_statement"
(let* ((call-exp-1 (treesit-node-child node 0))
(call-exp-2 (treesit-node-child call-exp-1 0))
@ -885,7 +893,9 @@ the semicolon. This function skips the semicolon."
(list node parent bol)))
(defun c-ts-mode--emacs-defun-p (node)
"Return non-nil if NODE is a DEFUN in Emacs source files."
"Return non-nil if NODE is a Lisp function defined using DEFUN.
This function detects Lisp primitives defined in Emacs source
files using the DEFUN macro."
(and (equal (treesit-node-type node) "expression_statement")
(equal (treesit-node-text
(treesit-node-child-by-field-name
@ -896,23 +906,25 @@ the semicolon. This function skips the semicolon."
"DEFUN")))
(defun c-ts-mode--emacs-defun-at-point (&optional range)
"Return the current defun node.
"Return the defun node at point.
This function recognizes DEFUNs in Emacs source files.
In addition to regular C functions, this function recognizes
definitions of Lisp primitrives in Emacs source files using DEFUN,
if `c-ts-mode-emacs-sources-support' is non-nil.
Note that for the case of a DEFUN, it is made of two separate
nodes, one for the declaration and one for the body, this
Note that DEFUN is parsed by tree-sitter as two separate
nodes, one for the declaration and one for the body; this
function returns the declaration node.
If RANGE is non-nil, return (BEG . END) where BEG end END
encloses the whole defun. This solves the problem of only
returning the declaration part for DEFUN."
encloses the whole defun. This is for when the entire defun
is required, not just the declaration part for DEFUN."
(or (when-let ((node (treesit-defun-at-point)))
(if range
(cons (treesit-node-start node)
(treesit-node-end node))
node))
(and c-ts-mode-emacs-devel
(and c-ts-mode-emacs-sources-support
(let ((candidate-1 ; For when point is in the DEFUN statement.
(treesit-node-prev-sibling
(treesit-node-top-level
@ -945,9 +957,10 @@ returning the declaration part for DEFUN."
(defun c-ts-mode--emacs-current-defun-name ()
"Return the name of the current defun.
This is used for `add-log-current-defun-function'. This
recognizes DEFUN in Emacs sources, in addition to normal function
definitions."
This is used for `add-log-current-defun-function'.
In addition to regular C functions, this function also recognizes
Emacs primitives defined using DEFUN in Emacs sources,
if `c-ts-mode-emacs-sources-support' is non-nil."
(or (treesit-add-log-current-defun)
(c-ts-mode--defun-name (c-ts-mode--emacs-defun-at-point))))
@ -1096,7 +1109,7 @@ in your configuration."
(setq-local treesit-defun-tactic 'top-level)
(treesit-major-mode-setup)
(when c-ts-mode-emacs-devel
(when c-ts-mode-emacs-sources-support
(setq-local add-log-current-defun-function
#'c-ts-mode--emacs-current-defun-name))))
@ -1141,7 +1154,8 @@ recommended to enable `electric-pair-mode' with this mode."
;; Font-lock.
(setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'cpp))
(treesit-major-mode-setup)
(when c-ts-mode-emacs-devel
(when c-ts-mode-emacs-sources-support
(setq-local add-log-current-defun-function
#'c-ts-mode--emacs-current-defun-name))))

View file

@ -215,11 +215,11 @@ chosen (interactively or automatically)."
((R-mode ess-r-mode) . ("R" "--slave" "-e"
"languageserver::run()"))
((java-mode java-ts-mode) . ("jdtls"))
(dart-mode . ("dart" "language-server"
"--client-id" "emacs.eglot-dart"))
((dart-mode dart-ts-mode)
. ("dart" "language-server"
"--client-id" "emacs.eglot-dart"))
((elixir-mode elixir-ts-mode heex-ts-mode)
. ,(if (and (fboundp 'w32-shell-dos-semantics)
(w32-shell-dos-semantics))
. ,(if (and (fboundp 'w32-shell-dos-semantics) (w32-shell-dos-semantics))
'("language_server.bat")
'("language_server.sh")))
(ada-mode . ("ada_language_server"))
@ -1707,7 +1707,7 @@ under cursor."
(const :tag "Go to definition" :definitionProvider)
(const :tag "Go to type definition" :typeDefinitionProvider)
(const :tag "Go to implementation" :implementationProvider)
(const :tag "Go to declaration" :implementationProvider)
(const :tag "Go to declaration" :declarationProvider)
(const :tag "Find references" :referencesProvider)
(const :tag "Highlight symbols automatically" :documentHighlightProvider)
(const :tag "List symbols in buffer" :documentSymbolProvider)

View file

@ -2406,7 +2406,7 @@ a GDB/MI reply message."
("+" . ())
("=" . (("thread-created" . (gdb-thread-created . atomic))
("thread-selected" . (gdb-thread-selected . atomic))
("thread-existed" . (gdb-ignored-notification . atomic))
("thread-exited" . (gdb-thread-exited . atomic))
('default . (gdb-ignored-notification . atomic)))))
"Alist of alists, mapping the type and class of message to a handler function.
Handler functions are all flagged as either `progressive' or `atomic'.

View file

@ -2192,14 +2192,17 @@ to add functions and PL/SQL keywords.")
;; Postgres Data Types
(sql-font-lock-keywords-builder 'font-lock-type-face nil
"bigint" "bigserial" "bit" "bool" "boolean" "box" "bytea" "char"
"character" "cidr" "circle" "date" "decimal" "double" "float4"
"float8" "inet" "int" "int2" "int4" "int8" "integer" "interval" "line"
"lseg" "macaddr" "money" "name" "numeric" "path" "point" "polygon"
"precision" "real" "serial" "serial4" "serial8" "sequences" "smallint" "text"
"time" "timestamp" "timestamptz" "timetz" "tsquery" "tsvector"
"txid_snapshot" "unknown" "uuid" "varbit" "varchar" "varying" "without"
"xml" "zone"
"bigint" "bigserial" "bit" "bool" "boolean" "box" "bytea" "char" "character"
"cidr" "circle" "date" "daterange" "decimal" "double" "float4" "float8" "inet"
"int" "int2" "int4" "int4range" "int8" "int8range" "integer" "interval"
"jsonb" "jsonpath" "line" "lseg" "macaddr" "macaddr8" "money" "name" "numeric"
"numrange" "oid" "path" "point" "polygon" "precision" "real" "regclass"
"regcollation" "regconfig" "regdictionary" "regnamespace " "regoper"
"regoperator" "regproc" "regprocedure" "regrole" "regtype" "sequences"
"serial" "serial4" "serial8" "smallint" "smallserial" "text" "time"
"timestamp" "timestamptz" "timetz" "tsquery" "tsrange" "tstzrange" "tsvector"
"txid_snapshot" "unknown" "uuid" "varbit" "varchar" "varying" "without" "xml"
"zone"
)))
"Postgres SQL keywords used by font-lock.

View file

@ -1820,16 +1820,22 @@ IGNORES is a list of glob patterns for files to ignore."
;; Ripgrep gets jumbled output, though, even with --line-buffered.
;; But Grep seems to be stable. Even without --line-buffered.
(defcustom xref-search-program-alist
'((grep
.
;; '-s' because 'git ls-files' can output broken symlinks.
"xargs -0 grep <C> --null -snHE -e <R>")
(ripgrep
.
;; '!*/' is there to filter out dirs (e.g. submodules).
"xargs -0 rg <C> --null -nH --no-heading --no-messages -g '!*/' -e <R>"
)
(ugrep . "xargs -0 ugrep <C> --null -ns -e <R>"))
(let ((xargs-max-chars
(and (memq system-type '(windows-nt ms-dos))
"-s 10000 ")))
`((grep
.
;; '-s' because 'git ls-files' can output broken symlinks.
,(concat "xargs -0 " xargs-max-chars "grep <C> --null -snHE -e <R>"))
(ripgrep
.
;; '!*/' is there to filter out dirs (e.g. submodules).
,(concat "xargs -0 "
xargs-max-chars
"rg <C> --null -nH --no-heading --no-messages -g '!*/' -e <R>"))
(ugrep
.
,(concat "xargs -0 " xargs-max-chars "ugrep <C> --null -ns -e <R>"))))
"Association list mapping program identifiers to command templates.
Program identifier should be a symbol, named after the search program.
@ -1844,7 +1850,7 @@ The template should have the following fields:
:type '(repeat
(cons (symbol :tag "Program identifier")
(string :tag "Command template")))
:version "28.1"
:version "29.1"
:package-version '(xref . "1.0.4"))
(defcustom xref-search-program 'grep

View file

@ -211,14 +211,14 @@ static unsigned short right_curly_arrow_bits[] = {
/* Large circle bitmap. */
/*
........
..xxxx..
.xxxxxx.
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx
.xxxxxx.
..xxxx..
........
*/
static unsigned short large_circle_bits[] = {
0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c};

View file

@ -3308,13 +3308,18 @@ describe_vector (Lisp_Object vector, Lisp_Object prefix, Lisp_Object args,
if (this_shadowed)
{
SET_PT (PT - 1);
static char const fmt[] = " (currently shadowed by `%s')";
USE_SAFE_ALLOCA;
char *buffer = SAFE_ALLOCA (sizeof fmt +
SBYTES (SYMBOL_NAME (shadowed_by)));
esprintf (buffer, fmt, SDATA (SYMBOL_NAME (shadowed_by)));
insert_string (buffer);
SAFE_FREE();
if (SYMBOLP (shadowed_by))
{
static char const fmt[] = " (currently shadowed by `%s')";
USE_SAFE_ALLOCA;
char *buffer =
SAFE_ALLOCA (sizeof fmt + SBYTES (SYMBOL_NAME (shadowed_by)));
esprintf (buffer, fmt, SDATA (SYMBOL_NAME (shadowed_by)));
insert_string (buffer);
SAFE_FREE();
}
else /* Could be a keymap, a lambda, or a keyboard macro. */
insert_string (" (currently shadowed)");
SET_PT (PT + 1);
}
}

View file

@ -4163,7 +4163,15 @@ use the Bourne shell command 'TERM=...; export TERM' (C-shell:\n\
tty->TS_enter_alt_charset_mode = tgetstr ("as", address);
tty->TS_exit_alt_charset_mode = tgetstr ("ae", address);
tty->TS_exit_attribute_mode = tgetstr ("me", address);
#ifdef TERMINFO
tty->TS_enter_strike_through_mode = tigetstr ("smxx");
if (tty->TS_enter_strike_through_mode == (char *) (intptr_t) -1)
tty->TS_enter_strike_through_mode = NULL;
#else
/* FIXME: Is calling tgetstr here for non-terminfo case correct,
even though "smxx" is more than 2 characters? */
tty->TS_enter_strike_through_mode = tgetstr ("smxx", address);
#endif
MultiUp (tty) = tgetstr ("UP", address);
MultiDown (tty) = tgetstr ("DO", address);