From: Eli Zaretskii <eliz@gnu.org>
To: Howard Melman <hmelman@gmail.com>
Cc: 65411@debbugs.gnu.org
Subject: bug#65411: 29.1; setopt of xref-after-jump-hook gives warning
Date: Mon, 21 Aug 2023 15:01:07 +0300 [thread overview]
Message-ID: <83jztovc3g.fsf@gnu.org> (raw)
In-Reply-To: <665BB487-07C8-4B9D-8CAA-CE8ECFA6C8E4@gmail.com> (message from Howard Melman on Sun, 20 Aug 2023 20:21:39 -0400)
> From: Howard Melman <hmelman@gmail.com>
> Date: Sun, 20 Aug 2023 20:21:39 -0400
> Cc: 65411@debbugs.gnu.org
>
> >> So why does it fail using setopt?
> >
> > Because until xref is loaded, Emacs doesn't know that
> > 'xref-pulse-momentarily' is a symbol of function, whereas the
> > defcustom's type is 'hook', which stands for "a list of functions".
>
> Well, that must be correct because doing this also worked fine:
>
> (declare-function xref-pulse-momentarily "xref" ())
> (setopt xref-after-jump-hook '(reposition-window xref-pulse-momentarily))
>
> So I guess setopt defers the type check?
No, it just verifies that the symbol's function slot is valid.
> I get the error when the hook is run (at which time xref is loaded
> so I'm still confused about that).
declare-function doesn't provider an actual function definition, it
just provides a declaration. IOW, you lie to Emacs, and Emacs bites
you when it can ;-)
> I'm familiar with reading the lisp code but the innards of custom and
> the c code are a bit beyond me. Is it the custom-check-value property
> in setopt--set?
Yes.
> If I'm supposed to resolve this warning on my own, then a comment
> in setopt--set or something in setopt's docstring (or the manual)
> mentioning the asynchrony would help.
setopt is a non-interactive version of defcustom. Like defcustom will
not accept a value that contradicts the :type of the option, so will
setopt. I don't think there's anything subtle to be documented here.
next prev parent reply other threads:[~2023-08-21 12:01 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-20 15:03 bug#65411: 29.1; setopt of xref-after-jump-hook gives warning Howard Melman
2023-08-20 15:36 ` Eli Zaretskii
2023-08-20 16:12 ` Howard Melman
2023-08-20 18:12 ` Eli Zaretskii
2023-08-21 0:21 ` Howard Melman
2023-08-21 12:01 ` Eli Zaretskii [this message]
2023-08-21 13:19 ` Howard Melman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83jztovc3g.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=65411@debbugs.gnu.org \
--cc=hmelman@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).