unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
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.





  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).