all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Drew Adams <drew.adams@oracle.com>
Cc: 23926@debbugs.gnu.org, npostavs@users.sourceforge.net
Subject: bug#23926: defcustom with STANDARD=<non-pure-expression> gives confusing results
Date: Mon, 11 Jul 2016 21:52:15 +0300	[thread overview]
Message-ID: <83bn24c8io.fsf@gnu.org> (raw)
In-Reply-To: <ff33c2cc-337a-433b-a87a-0ea1814311d2@default> (message from Drew Adams on Sun, 10 Jul 2016 10:18:29 -0700 (PDT))

> Date: Sun, 10 Jul 2016 10:18:29 -0700 (PDT)
> From: Drew Adams <drew.adams@oracle.com>
> Cc: npostavs@users.sourceforge.net, 23926@debbugs.gnu.org
> 
> > > The option value was changed?  I don't think so.
> > 
> > Yes, it was changed, because the value returned by the function
> > changes each time it's called.
> 
> What function?

current-time-string, of course.

> And what occurrence of calling it do you think is responsible for
> this characterization of the value having been changed outside
> Customize?

The second one.

> The fact is that the user did NOT change the value outside
> customize.

The message doesn't say it was the user.  Emacs doesn't know who
changed the value.

> And in fact, the value has NOT been changed.

Of course, it has changed.  Every time current-time-string is called
it returns a different value.  A defcustom's value is evaluated at
least twice, and in this case the second call yields a different
value.  That's why you see the note about changing.

> It is what it was when the defcustom was evaluated.
> 
> The responsible code is `custom-variable-state', specifically
> this part:
> 
> (setq tmp (get symbol 'standard-value))
> (if (condition-case nil
>         (and (equal value (eval (car tmp))) (equal comment nil))
>       (error nil))
>     'standard
>   'changed)
> 
> That tests whether the current value (var VALUE here), which
> in this case came from (default-value 'time), is equal to
> the result of RE-evaluating the defining defcustom sexp,
> (current-time).  And of course it is not equal, because
> time passes...
> 
> The reason it is not unequal is NOT because something has
> changed the option value outside Customize.  The option
> value has not been changed at all.  What "changes" here is
> the result of evaluating the initial sexp.
> 
> IOW, the "changed-outside-Customize" test used is too simplistic.  

No, it isn't.  It does its job.  If you want to avoid the note, if the
note annoys you, don't write such code.

> The code blithely assumes that evaluating what `custom-get'
> returns represents the original value, whereas what it returns
> is the result of RE-evaluating the original sexp.  That is
> precisely the point of this bug.

There's no bug.  This is how this stuff is supposed to work.  I'm not
going to endorse any significant changes there because of such
marginal use cases.





  reply	other threads:[~2016-07-11 18:52 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <<CAM-tV-8cG3gLgf-A+wBYPZWNy2WPGFV3uEdNE7=ad3oq4rXmnw@mail.gmail.com>
     [not found] ` <<83vb0fgu83.fsf@gnu.org>
2016-07-09 14:09   ` bug#23926: defcustom with STANDARD=<non-pure-expression> gives confusing results Drew Adams
2016-07-09 14:12     ` Eli Zaretskii
     [not found]       ` <<c0dd88c2-51ef-4f4f-964c-f0254db970f7@default>
     [not found]         ` <<83zipqg3e3.fsf@gnu.org>
2016-07-10 17:18           ` Drew Adams
2016-07-11 18:52             ` Eli Zaretskii [this message]
     [not found] <<<<<CAM-tV-8cG3gLgf-A+wBYPZWNy2WPGFV3uEdNE7=ad3oq4rXmnw@mail.gmail.com>
     [not found] ` <<<<<83vb0fgu83.fsf@gnu.org>
     [not found]   ` <<<<443f2e44-5167-48e7-abc6-cce1e243461e@default>
     [not found]     ` <<<<8337nihpdw.fsf@gnu.org>
     [not found]       ` <<<c0dd88c2-51ef-4f4f-964c-f0254db970f7@default>
     [not found]         ` <<<83zipqg3e3.fsf@gnu.org>
     [not found]           ` <<ff33c2cc-337a-433b-a87a-0ea1814311d2@default>
     [not found]             ` <<83bn24c8io.fsf@gnu.org>
2016-07-12  0:53               ` Drew Adams
     [not found] <<<CAM-tV-8cG3gLgf-A+wBYPZWNy2WPGFV3uEdNE7=ad3oq4rXmnw@mail.gmail.com>
     [not found] ` <<<83vb0fgu83.fsf@gnu.org>
     [not found]   ` <<443f2e44-5167-48e7-abc6-cce1e243461e@default>
     [not found]     ` <<8337nihpdw.fsf@gnu.org>
2016-07-09 14:59       ` Drew Adams
2016-07-09 16:52         ` Eli Zaretskii
2016-07-09 20:48           ` npostavs
2016-07-10 14:19             ` Eli Zaretskii
     [not found]           ` <<871t32ilm0.fsf@users.sourceforge.net>
     [not found]             ` <<83k2gtfue4.fsf@gnu.org>
2016-07-10 17:18               ` Drew Adams
2016-07-11 18:40                 ` Eli Zaretskii
2016-07-09  3:11 Noam Postavsky
2016-07-09  6:31 ` Drew Adams
2016-07-09  7:13 ` Eli Zaretskii
2016-07-09 11:54   ` npostavs
2016-07-09 12:31     ` Eli Zaretskii
2016-07-09 12:55       ` Noam Postavsky
2016-07-09 13:14         ` Eli Zaretskii
2016-07-09 13:48           ` Noam Postavsky
2016-07-09 14:03             ` Eli Zaretskii
2016-07-12  3:26               ` npostavs
2016-07-12  5:20                 ` Eli Zaretskii
2016-07-09 14:34             ` Drew Adams
     [not found]             ` <<8360sehps4.fsf@gnu.org>
2016-07-09 14:54               ` Drew Adams
2016-07-09 15:09                 ` Drew Adams
2016-07-10 17:23                 ` Drew Adams
2023-10-17 14:19 ` bug#23926: defcustom with STANDARD=<non-constant-expression> " Mauro Aranda
2023-10-17 14:29   ` Mauro Aranda
     [not found] <<<<CAM-tV-8cG3gLgf-A+wBYPZWNy2WPGFV3uEdNE7=ad3oq4rXmnw@mail.gmail.com>
     [not found] ` <<<<83vb0fgu83.fsf@gnu.org>
     [not found]   ` <<<443f2e44-5167-48e7-abc6-cce1e243461e@default>

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83bn24c8io.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=23926@debbugs.gnu.org \
    --cc=drew.adams@oracle.com \
    --cc=npostavs@users.sourceforge.net \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.