From: Drew Adams <drew.adams@oracle.com>
To: Eli Zaretskii <eliz@gnu.org>,
Noam Postavsky <npostavs@users.sourceforge.net>
Cc: 23926@debbugs.gnu.org
Subject: bug#23926: defcustom with STANDARD=<non-pure-expression> gives confusing results
Date: Sat, 9 Jul 2016 14:54:18 +0000 (UTC) [thread overview]
Message-ID: <fdca925b-a904-48fb-bc53-425dd59e10cf@default> (raw)
In-Reply-To: <<8360sehps4.fsf@gnu.org>>
> Why change anything in the wording at all? It won't really change
> what is being done, and won't prevent any confusion, because all this
> "standard", "original", "default" etc. are not well defined anyway.
Maybe you mean that they have not been well defined in our help
for the user? Because the standard value is well defined in
Customize, and it is referred to as such in the Customize UI.
("Original" and "default" are admittedly not so well defined.)
What's missing is to call it by the same name in `C-h v'.
And to provide some description/explanation in the doc, if it
is not there now (I haven't searched just now).
IOW, let's try to be clear with the labelling in `C-h v' -
consistent with the names used in Customize. And let's try to
let users of `C-h v' get more info about what they're looking
at, to dispel confusion and answer questions.
I think we should also have `C-h v' provide the underlying
Lisp expression, at least on demand, just as Customize does.
It's not great to show only a value without any indication
of what it comes from.
As for whether to call the value shown "standard value":
IIUC, the standard value is:
;; the value given in the 'defcustom' declaration.
;; It is stored in the 'standard-value' property of the
;; option, in a cons-cell whose car evaluates to the standard
;; value.
That wording is maybe not perfect. But IIUC, the value of the
`standard-value' property is not the "standard value". Instead,
it is a cons whose car _evaluates_ to the standard value. Its
car is, I guess, the original Lisp expression from the defcustom.
That is what needs to be made clear to users, I think, when
showing them a value. Let them know that it is called the
"standard value", and it is the result of re-evaluating, in
the current context, the defining Lisp sexp for the option
(which is used in the defcustom).
All of this is important for clarity. In particular, I think
it is important that users understand the following, which is
I guess what is behind Eli saying that the behavior is as
expected:
;; The reason for storing values unevaluated: This is so you can have
;; values that depend on the environment. For example, you can have a
;; variable that has one value when Emacs is running under a window
;; system, and another value on a tty. Since the evaluation is only done
;; when the variable is first initialized, this is only relevant for the
;; saved (and standard) values, but affect others values for
;; compatibility.
The premise of that last sentence is wrong, of course. It is done
each time you use `C-h v' - to show you the "original" value.
But the main point here is that it is a _feature_, not a bug, that
the "standard value" is recomputed at any time from the original sexp.
Why/how this is a feature is explained well in that paragraph.
But without such an explanation, and especially just showing a
value in `C-h v' and calling it the "original" value, we hurt
instead of help users.
;; You can see (and modify and save) this unevaluated value by selecting
;; "Show Saved Lisp Expression" from the Lisp interface. This will
;; give you the unevaluated saved value, if any, otherwise the
;; unevaluated standard value.
And that's the other piece that helps understanding. I think
`C-h v' should show users that Lisp sexp - at least on demand.
That will also help understanding of the standard value that is
shown (and should be labeled as such): `C-h v' can say that this
is the result of re-evaluating the Lisp sexp.
next prev parent reply other threads:[~2016-07-09 14:54 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-09 3:11 bug#23926: defcustom with STANDARD=<non-pure-expression> gives confusing results 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 [this message]
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>
[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 ` bug#23926: defcustom with STANDARD=<non-pure-expression> " 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
[not found] <<CAM-tV-8cG3gLgf-A+wBYPZWNy2WPGFV3uEdNE7=ad3oq4rXmnw@mail.gmail.com>
[not found] ` <<83vb0fgu83.fsf@gnu.org>
2016-07-09 14:09 ` 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
[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
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=fdca925b-a904-48fb-bc53-425dd59e10cf@default \
--to=drew.adams@oracle.com \
--cc=23926@debbugs.gnu.org \
--cc=eliz@gnu.org \
--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 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).