From: "Drew Adams" <drew.adams@oracle.com>
Subject: user preferences (was RE: toolbar conventions)
Date: Tue, 20 Dec 2005 10:37:05 -0800 [thread overview]
Message-ID: <DNEMKBNJBGPAOPIJOOICIEINDAAA.drew.adams@oracle.com> (raw)
In-Reply-To: <E1EokQL-0004ox-4V@fencepost.gnu.org>
I think "option" and "face" are good terms for what they stand
for currently.
The discussion of Custom has to mention them both together so much
that we need some word for the two together.
I'm not going to write "option and face" over and over. I'm going
to use a single term, even if it has to be "foobar".
1. "Foobar" is good... ;-)
Seriously - if we _must_ decide this now, then how about this:
- We keep "option" as a short way to say "user variable", the latter
being clearer and preferable in discussions of variables of all
kinds. That is, we do not extend "option" to include "face".
- We make it clear (this has already been done, IIUC) that "option"
(= user variable) includes all variables that are user-variable-p,
not just those that are customizable.
- We use "preference" for options and faces, stating this clearly
somewhere. An alternative is "setting" - we could choose either
"preference" or "setting", or we could choose to use them both,
interchangeably. At this level of abstraction, the terminology need
not be so formal, precisely because we're not making much of a
distinction.
- We decide to intend to use "preference" in the future, in
preference to "customizable" and "customization" in the Customize
UI and in discussions of Customize, when referring to modifying
anything intended to be modified by a user. (This includes
non-customizable user-variable-p variables.) We don't bother to
make doc and UI changes along these lines now, but we choose now
"preference" as the preferred way to refer to things intended to be
changed by users.
- As long as there are non-customizable user-variable-p variables, we
use "customizable" to mean changeable and savable in the Customize
UI. This would be the only place where we would use the common root
"custom" to refer to the Customize UI - that is, we would not, in
future, use "customize" or "customized" to refer only to the
Customize UI. We should, in general, avoid using any "custom"-root
words, because of the potential for confusion. (A shame, for a
self-advertised extensible and customizable editor, but
unavoidable, I think.) Again, we don't bother to make any changes
along these lines now, but we agree to this direction for the
future.
2. Open question: What to do about non-customizable user-variable-p
variables? Should we try to eliminate these - not only in vanilla
Emacs, but eliminate also their possibility? That is, should we
eliminate `set-variable's sensitivity to `*' in doc strings? It would
certainly simplify the terminology. All user variables would then be
"customizable". But see also #3, below.
3. As I stated long ago, I would like to see Customize move in the
direction of being better integrated with the rest of Emacs. By that,
I mean that users could change preferences in ways other than using
the Customize UI directly, but Customize would nevertheless recognize
(i.e. could be made to recognize) those changes, and would treat them
the same as changes made inside Customize.
This would, in effect, extend Customize so that some of its
functionality could be used outside a Customize buffer.
Examples:
a. `set-variable' (better called `set-option', IMO) could be used as a
quick replacement for `customize-option' to change the value (but
not to save, browse, or do other things that you can do in
Customize). To understand what I mean, don't think in terms of
non-customizable user variables here; think in terms of
customizable options. The point is that a command could be used to
customize something, without the user ever entering the Customize
UI.
b. (just an illustration; not intended as a proposal for inclusion)
Command `doremi-face-fg' (in my library doremi-frm.el) lets you
modify a face's foreground color incrementally (using the arrow
keys). You never enter the Customize UI. You can directly
manipulate the color easily until you get what you want. The
command also tells Customize that the face foreground has been
modified, so that Customize thinks the modification was done inside
Customize. The user can then save the setting in Customize. There
is no inside/outside Customize here: if the user does `M-x
customize-customized' after the change, then the face state shows
as "you have set this face, but not saved it...", NOT as "changed
outside...". Why? Because that reflects just what the user did.
You might say, "That's great functionality, but why not just
incorporate an incremental face-changer like that into the Customize
UI?" The answer is that we might want to do that in some such cases,
but certainly not all. The Customize UI is complex enough. It can't be
expected to deal with all of the possible ways we might want to let
users modify preferences. There might be several different ways that a
user would want to change a face foreground; would we want to
integrate all of them into the Customize UI? Better that we should let
library writers create new interfaces and have those play well with
Customize.
This approach doesn't take away from Customize; it extends it and
makes it more useful, by integrating it better with the rest of
Emacs. Customize would be the central place to make all customization
changes, and it would notice all changes made outside it. The reason
it does not really play that central customization role today is that
it does not play well with changes made outside it.
We should look for more, and better, ways to let users modify their
Emacs experience - we should shoot for ways that involve _direct
manipulation_ more, for instance. We should not try to make Customize
encompass all such modifications. We should instead make Customize
recognize them and play along with them.
Luc and others have pointed out that there are many problematic
aspects to trying to integrate Customize with changes made outside
it. I don't mean to suggest that there are no problems. But we can try
to solve the problems (as Luc has already done, to a great degree),
and we can try to move a little more in the direction of a Customize
that plays well with Emacs.
I would prefer that we discuss this after the release. I mention it
(again) now, because Richard has decided to decide on the terminology
now, and I feel that possible changes to Customize may affect the
terminology discussion (and vice versa).
next prev parent reply other threads:[~2005-12-20 18:37 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-16 21:36 toolbar conventions Bill Wohler
2005-12-17 19:40 ` Richard M. Stallman
2005-12-17 20:22 ` Luc Teirlinck
2005-12-17 20:52 ` Bill Wohler
2005-12-17 22:51 ` Luc Teirlinck
2005-12-18 0:57 ` Drew Adams
2005-12-18 3:11 ` Luc Teirlinck
2005-12-19 19:58 ` Drew Adams
2005-12-19 4:39 ` Richard M. Stallman
2005-12-20 1:52 ` Luc Teirlinck
2005-12-20 3:32 ` Drew Adams
2005-12-20 16:33 ` Richard M. Stallman
2005-12-20 18:37 ` Drew Adams [this message]
2005-12-22 17:52 ` user preferences (was RE: toolbar conventions) Richard M. Stallman
2005-12-22 18:09 ` Drew Adams
2005-12-23 15:18 ` Richard M. Stallman
2005-12-22 17:52 ` Richard M. Stallman
2005-12-20 5:12 ` toolbar conventions Glenn Morris
2005-12-17 20:26 ` Bill Wohler
2005-12-18 17:15 ` Richard M. Stallman
2005-12-18 20:45 ` Bill Wohler
2005-12-19 23:46 ` Richard M. Stallman
2005-12-17 20:30 ` Luc Teirlinck
2005-12-18 18:41 ` Luc Teirlinck
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=DNEMKBNJBGPAOPIJOOICIEINDAAA.drew.adams@oracle.com \
--to=drew.adams@oracle.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).