Allow computing :doc-spec info-look elements at run time
* lisp/info-look.el (info-lookup--expand-info): New function.
(:mode, info-lookup-add-help): Adjust doc string.
(info-lookup-add-help*): Allow adding a dynamic expansion.
(info-lookup): Expand.
(:mode): Use a dynamic expansion for Python to postpone the lookup.
(info-complete): Expand.
gnus-icalendar: Missing attendees are not REQ-PARTICIPANT
* lisp/gnus/gnus-icalendar.el (gnus-icalendar-event--get-attendee-names)
(gnus-icalendar-event-from-ical): Do not default to REQ-PARTICIPANT
if the user was not found as an attendee.
* test/lisp/gnus/gnus-icalendar-tests.el
(gnus-icalendary-weekly-byday): Remove the ROLE property to test
that it correctly defaults to REQ-PARTICIPANT. The case where the
user is not listed is covered by gnus-icalendar-parse already
(bug#50749).
Stefan Monnier [Fri, 1 Oct 2021 18:33:37 +0000 (14:33 -0400)]
* lisp/emacs-lisp/subr-x.el (with-memoization): New macro
Extracted from `cl-generic.el`.
* lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher)
(cl--generic-build-combined-method, cl-generic-generalizers): Use it.
(cl--generic-with-memoization): Delete.
* lisp/gnus/gnus-icalendar.el
(gnus-icalendar-event--get-attendee-names,
gnus-icalendar-event-from-ical): When the ROLE property
is missing from an ATTENDEE line, follow RFC5546 and default
to REQ-PARTICIPANT.
If an ical invitation is sent to a mailing list, the recipients
are probably not listed as attendees. However there are
legitimate situations where these unlisted (or indirectly listed)
recipients are still expected to respond. RFC5546 allows that,
calling those respondents "party crashers".
* lisp/gnus/gnus-icalendar.el
(gnus-icalendar-event:inline-reply-buttons): Display the response
buttons even if the user was not found in the list of attendees,
but change the labels of those buttons to make clear they are
not explicitly invited.
(gnus-icalendar-event--build-reply-event-body): Add an attendee
line for the user in case one was not found.
RFC5546 specifies that participant status (accepted, tentative,
declined) should be sent to the organizer of the event. That
organizer is not necessarily the sender of the invitation; for
instance Google Calendar uses custom email addresses to receive these
notifications.
* lisp/gnus/gnus-icalendar.el (gnus-icalendar-send-buffer-by-mail):
Replace the default recipient of the reply by the organizer of the
event.
(gnus-icalendar-reply) Pass that organizer to the previous function.
To improve performance and flexibility (bug#50777).
* lisp/progmodes/xref.el (xref-location): Remove.
(xref-file-location): Change to cl-struct.
(xref-buffer-location, xref-bogus-location): Ditto.
(xref-item, xref-match-item): Same.
And update all method definitions accordingly.
(xref--insert-xrefs): Don't use 'oref', use 'xref-item-location'.
(xref--insert-xrefs, xref-show-definitions-completing-read):
Insetad of 'with-slots', use 'xref-item-summary' and
'xref-item-location'.
* lisp/progmodes/etags.el (xref-etags-location):
Change from EIEIO class into a cl-struct.
(xref-etags-apropos-location): Ditto.
Update all method definitions.
* test/lisp/progmodes/elisp-mode-tests.el (xref-elisp-test-run):
Avoid using 'oref'.
Make checkdoc's docstring substitution consistent with other docs
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
In error text, say "mapvar" instead of "keymap", and "command"
instead of "function", to be consistent with the ELisp manual.
(Bug#50903)
* lisp/org/org-element.el (org-element-headline-parser):
Pretty sure this one should be `skip-chars-backward`, not
`skip-syntax-backward`, since \t isn't a valid syntax code.
Stefan Monnier [Thu, 30 Sep 2021 14:02:29 +0000 (10:02 -0400)]
* lisp/org/ob-julia.el: Use lexical-binding
(ess-eval-visibly-p): Declare.
(org-babel-julia-assign-elisp): Remove unused vars `header` and
`row-names` and corespondingly remove now unused args `colnames-p` and
`rownames-p`.
(org-babel-variable-assignments:julia): Adjust call to
`org-babel-julia-assign-elisp` accordingly.
(org-babel-julia-initiate-session): Use `bound-and-true-p`.
(org-babel-julia-evaluate-external-process)
(org-babel-julia-evaluate-session, org-babel-julia-evaluate):
Remove unused arg `row-names-p`.
(org-babel-execute:julia): Adjust call to
`org-babel-julia-evaluate` accordingly.
* etc/NEWS: Announce the addition of the command.
* lisp/erc/erc.el (erc-cmd-WII): Add '/wii' convenience command which
calls the '/whois' command with the given nick as both arguments,
which is useful for displaying the whois information for the nick
along with idle time, even if the nick is on a different server than
the one we are currently connected to.
Restore the previous order of ERC's '/whois' arguments
* etc/NEWS: Remove unneeded entry.
* lisp/erc/erc.el (erc-cmd-WHOIS): Restore the previous order of
arguments sent to the server, so that there's no change in the
function's behavior. Instead, rename the arguments to be more
accurate, and expand upon them in the doc string.
* lisp/gnus/message.el (message-newline-and-reformat): Only search
for previous/next cited lines that have space, because it's the
space we're trying to find.
* doc/misc/modus-themes.org (Customization Options): Document new user
options in code sample.
(Option for inhibiting theme reload): Remove trailing space.
(Option for mode line presentation): Include new possible value.
(Option for Org agenda constructs): Include new symbols for the
'modus-themes-org-agenda' alist.
(Control the scale of headings): Document 'modus-themes-scale-small'.
(Override color saturation (DIY)): Fix markup for proper texi output.
(Custom Org user faces (DIY)): Update code samples.
(Full support for packages or face groups): Note names of newly
supported packages or face groups.
(Indirectly covered packages): Document indirectly supported packages.
(Note on highlight-parentheses.el): Provide detailed instructions on
how to use 'highlight-parentheses' with the Modus themes.
(Note on prism.el): Refine code samples.
(What is the best setup for legibility?): Minor rewording.
(Sources of the themes): Mention only Emacs28 without explaining that
it is the development target---in preparation of the emacs-28 branch
cut.
(Acknowledgements): Name new contributors to code/ideas. Stephen
Gildea's patch was a couple lines long. The others have assigned
copyright to the FSF.
(Meta): Include another link to the development notes of the themes
about 'modus-themes-org-agenda'.
* etc/themes/modus-themes.el (modus-themes-operandi-colors)
(modus-themes-vivendi-colors): Recalibrate some colour values and add
a few new ones.
(modus-themes-slanted-constructs): Remove obsolete user option.
Superseded by the alias 'modus-themes-italic-constructs'.
(modus-themes-org-agenda, modus-themes-mode-line): Update user option.
(modus-themes-scale-headings, modus-themes-scale-4): Update doc
string.
(modus-themes-scale-5): Remove obsolete user option. Superseded by
the alias 'modus-themes-scale-title'.
(modus-themes-scale-small, modus-themes-tabs-accented): Add new user
option.
(modus-themes--agenda-date, modus-themes--mode-line-attrs)
(modus-themes--tab): Update internal functions.
(modus-themes-faces): Update variousface attributes.
Stefan Kangas [Wed, 29 Sep 2021 05:12:37 +0000 (07:12 +0200)]
New user option mpc-cover-image-re
* lisp/mpc.el (mpc-cover-image-re): New user option.
(mpc-format): Find cover image based on regexp given by above new user
option. Treat "folder.png" as a valid cover image name.