unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: Customize buttons that change user's custom file should ask forconfirmation
       [not found] <DNEMKBNJBGPAOPIJOOICKENMCAAA.drew.adams@oracle.com>
@ 2005-01-31  0:20 ` Richard Stallman
  2005-01-31  1:07   ` Stefan Monnier
                     ` (2 more replies)
  0 siblings, 3 replies; 157+ messages in thread
From: Richard Stallman @ 2005-01-31  0:20 UTC (permalink / raw)
  Cc: Drew Adams

    Instead of "Erase Customizations":
    1) "Default Values" - resets to default (= installed) settings

    2) "Save" - the existing button. It would update the custom
       file to use the installed settings.

Does anyone object to this change?
It seems to me that this would eliminate a
potential cause of "user error" in Custom.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should ask forconfirmation
  2005-01-31  0:20 ` Customize buttons that change user's custom file should ask forconfirmation Richard Stallman
@ 2005-01-31  1:07   ` Stefan Monnier
  2005-01-31  2:02     ` Miles Bader
  2005-01-31  1:16   ` Customize buttons that change user's custom file should askforconfirmation Lennart Borgman
  2005-01-31  1:22   ` Customize buttons that change user's custom file should ask forconfirmation Miles Bader
  2 siblings, 1 reply; 157+ messages in thread
From: Stefan Monnier @ 2005-01-31  1:07 UTC (permalink / raw)
  Cc: Drew Adams, emacs-devel

>     Instead of "Erase Customizations":
>     1) "Default Values" - resets to default (= installed) settings

>     2) "Save" - the existing button. It would update the custom
>        file to use the installed settings.

> Does anyone object to this change?
> It seems to me that this would eliminate a
> potential cause of "user error" in Custom.

More than that, I think it's The Right Thing to do. (IMNSHO, there should
only ever be *one* way to save changes.  E.g. in `cvs' it's `cvs commit').


        Stefan

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31  0:20 ` Customize buttons that change user's custom file should ask forconfirmation Richard Stallman
  2005-01-31  1:07   ` Stefan Monnier
@ 2005-01-31  1:16   ` Lennart Borgman
  2005-01-31  1:55     ` Miles Bader
                       ` (3 more replies)
  2005-01-31  1:22   ` Customize buttons that change user's custom file should ask forconfirmation Miles Bader
  2 siblings, 4 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-01-31  1:16 UTC (permalink / raw)
  Cc: Drew Adams

----- Original Message ----- 
From: "Richard Stallman" <rms@gnu.org>
>     Instead of "Erase Customizations":
>     1) "Default Values" - resets to default (= installed) settings

I would prefer "Reset to Defaults".

>     2) "Save" - the existing button. It would update the custom
>        file to use the installed settings.

There is one logical problem. Should this work just on the symbols in the
current customization buffer or on all values? What if there are several
customization buffers in use?

I would prefer that it worked just on the current customization buffer and
that there were a menu entry for saving all changed values for defcustom
symbols.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should ask forconfirmation
  2005-01-31  0:20 ` Customize buttons that change user's custom file should ask forconfirmation Richard Stallman
  2005-01-31  1:07   ` Stefan Monnier
  2005-01-31  1:16   ` Customize buttons that change user's custom file should askforconfirmation Lennart Borgman
@ 2005-01-31  1:22   ` Miles Bader
  2005-02-01 13:30     ` Richard Stallman
  2 siblings, 1 reply; 157+ messages in thread
From: Miles Bader @ 2005-01-31  1:22 UTC (permalink / raw)
  Cc: Drew Adams, emacs-devel

>     Instead of "Erase Customizations":
>     1) "Default Values" - resets to default (= installed) settings
>     2) "Save" - the existing button. It would update the custom
>        file to use the installed settings.
> 
> Does anyone object to this change?
> It seems to me that this would eliminate a
> potential cause of "user error" in Custom.

Not just potential: I've gotten screwed more than once by the existing
behavior.  I definitely think Drew's change is a good one.

-Miles
-- 
Do not taunt Happy Fun Ball.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31  1:16   ` Customize buttons that change user's custom file should askforconfirmation Lennart Borgman
@ 2005-01-31  1:55     ` Miles Bader
  2005-01-31  2:06     ` Drew Adams
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 157+ messages in thread
From: Miles Bader @ 2005-01-31  1:55 UTC (permalink / raw)
  Cc: rms, Drew Adams, emacs-devel

On Mon, 31 Jan 2005 02:16:50 +0100, Lennart Borgman
<lennart.borgman.073@student.lu.se> wrote:
> ----- Original Message -----
> From: "Richard Stallman" <rms@gnu.org>
> >     Instead of "Erase Customizations":
> >     1) "Default Values" - resets to default (= installed) settings
> 
> I would prefer "Reset to Defaults".

I don't think that's good -- it smacks too much of the old behavior;
"Reset" seems to imply more than just changing the values being edited
in the current buffer.

I think Drew's wording is good.

> >     2) "Save" - the existing button. It would update the custom
> >        file to use the installed settings.
> 
> There is one logical problem. Should this work just on the symbols in the
> current customization buffer or on all values? What if there are several
> customization buffers in use?
> 
> I would prefer that it worked just on the current customization buffer 

I don't understand your point ... the only reasonable method would be
operating on the current buffer -- the whole point of this proposed
change is that the button only makes a temporary change in the current
buffer until it's saved.

> and
> that there were a menu entry for saving all changed values for defcustom
> symbols.

I don't understand that at all.

-Miles
-- 
Do not taunt Happy Fun Ball.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should ask forconfirmation
  2005-01-31  1:07   ` Stefan Monnier
@ 2005-01-31  2:02     ` Miles Bader
  0 siblings, 0 replies; 157+ messages in thread
From: Miles Bader @ 2005-01-31  2:02 UTC (permalink / raw)
  Cc: rms, Drew Adams, emacs-devel

> More than that, I think it's The Right Thing to do. (IMNSHO, there should
> only ever be *one* way to save changes.  E.g. in `cvs' it's `cvs commit').

I agree with you, but I'll note that there does seem to be trend in
some quarters towards eliminating the notion of saving altogether,
e.g., in Gnome preferences (of course I think this simply yet another
step in Gnome's increasing UI bogosity; no doubt they got the idea
from somewhere though...).

-Miles
-- 
Do not taunt Happy Fun Ball.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31  1:16   ` Customize buttons that change user's custom file should askforconfirmation Lennart Borgman
  2005-01-31  1:55     ` Miles Bader
@ 2005-01-31  2:06     ` Drew Adams
  2005-01-31 15:21     ` Per Abrahamsen
  2005-02-01 13:30     ` Customize buttons that change user's custom file should askforconfirmation Richard Stallman
  3 siblings, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-01-31  2:06 UTC (permalink / raw)


    >     2) "Save" - the existing button. It would update the custom
    >        file to use the installed settings.

    There is one logical problem. Should this work just on the
    symbols in the
    current customization buffer or on all values? What if there are several
    customization buffers in use?

    I would prefer that it worked just on the current customization
    buffer and
    that there were a menu entry for saving all changed values for defcustom
    symbols.

In my mind, unless obviously relative to only particular values (e.g.
contextual popup menu, local button), all Customize buttons and menu items
would apply only to the buffer contents.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31  1:16   ` Customize buttons that change user's custom file should askforconfirmation Lennart Borgman
  2005-01-31  1:55     ` Miles Bader
  2005-01-31  2:06     ` Drew Adams
@ 2005-01-31 15:21     ` Per Abrahamsen
  2005-01-31 17:22       ` Drew Adams
  2005-02-01 13:30     ` Customize buttons that change user's custom file should askforconfirmation Richard Stallman
  3 siblings, 1 reply; 157+ messages in thread
From: Per Abrahamsen @ 2005-01-31 15:21 UTC (permalink / raw)


"Lennart Borgman" <lennart.borgman.073@student.lu.se> writes:

> ----- Original Message ----- 
> From: "Richard Stallman" <rms@gnu.org>
>>     Instead of "Erase Customizations":
>>     1) "Default Values" - resets to default (= installed) settings
>
> I would prefer "Reset to Defaults".

Emacs terminology is a bit messed up here, in that default-value refer
to the value that in not buffer local.  

Customize is "standard" instead of "default" in the code for that
reason.  Of course, that need not be reflected in the UI.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 15:21     ` Per Abrahamsen
@ 2005-01-31 17:22       ` Drew Adams
  2005-01-31 21:39         ` Robert J. Chassell
  2005-02-02  7:27         ` Richard Stallman
  0 siblings, 2 replies; 157+ messages in thread
From: Drew Adams @ 2005-01-31 17:22 UTC (permalink / raw)


    >>     Instead of "Erase Customizations":
    >>     1) "Default Values" - resets to default (= installed) settings
    >
    > I would prefer "Reset to Defaults".

    Emacs terminology is a bit messed up here, in that default-value refer
    to the value that in not buffer local.

    Customize is "standard" instead of "default" in the code for that
    reason.  Of course, that need not be reflected in the UI.

Good point.

If we did not have this dilemma, then "Default Values" would be good to use
in the customize UI (it is commonly used to mean this in user-preference
dialogs). But we do, so we should avoid confusing users with two kinds of
"default" value.

It would be good to have two different terms for the two different kinds of
default value, so that we don't have to describe the context each time. One
is the standard value for a user option (variable or face), where "standard"
essentially means defined by defcustom or defface (IIUC). The other is the
value a variable has in a buffer if there is no buffer-local value
(setq-default).

Our choices are to rename the customize term or the global-value term.

- If we rename the customize term, then I think "Standard Values" might be
good, as used in the customize code. Another possibility to consider for
this might be "Installed Values" (or "Stock Values").

This standard value is apparently redefined each time defcustom is executed
for a variable, which perhaps argues against using "installed" as the term
(although multiple defcustoms for the same variable shouldn't exist or
should be rare).

- If we instead rename the global-value term, and use "default" value to
mean the standard value of customize, then we will need to change existing
references to default values in the sense of non-local values
(setq-default), to call them "global" values (or something similar). But
then `setq-default' would become a misnomer. Also, in this case, only user
options would have default values; variables that are not `user-variable-p'
would not.

"Standard Values" seems best to me, so far.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 17:22       ` Drew Adams
@ 2005-01-31 21:39         ` Robert J. Chassell
  2005-01-31 22:37           ` Customize buttons that change user's custom file shouldaskforconfirmation Drew Adams
  2005-01-31 22:59           ` Customize buttons that change user's custom file should askforconfirmation Kim F. Storm
  2005-02-02  7:27         ` Richard Stallman
  1 sibling, 2 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-01-31 21:39 UTC (permalink / raw)


   ... Another possibility to consider for this might be "Installed
   Values" (or "Stock Values").

"Stock Values" is best.  It will cause me to ask, `what is meant by 
"stock values" ... ?'  

Like anyone who is not a novice Emacs person, I follow the convention
and set values in my .emacs file.  Only for features that I do not
understand, like fonts, do I use customize.  And, of course when I
realize I made a mistake and can see a better face, I change the
customized values that I have set within my .emacs file by
`custom-set-faces'.

Asking what is meant by "stock values" is worthwhile for people who
have used Emacs for two decades or more -- for example, off hand, I
cannot remember whether `customize' considers stock values to be those
you see with `emacs -Q' or whether it uses the previously set values.
And the phrase is harmless to novices.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom file shouldaskforconfirmation
  2005-01-31 21:39         ` Robert J. Chassell
@ 2005-01-31 22:37           ` Drew Adams
  2005-01-31 22:59           ` Customize buttons that change user's custom file should askforconfirmation Kim F. Storm
  1 sibling, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-01-31 22:37 UTC (permalink / raw)


       ... Another possibility to consider for this might be "Installed
       Values" (or "Stock Values").

    "Stock Values" is best.  It will cause me to ask, `what is meant by
    "stock values" ... ?'

    Like anyone who is not a novice Emacs person, I follow the convention
    and set values in my .emacs file.  Only for features that I do not
    understand, like fonts, do I use customize.  And, of course when I
    realize I made a mistake and can see a better face, I change the
    customized values that I have set within my .emacs file by
    `custom-set-faces'.

    Asking what is meant by "stock values" is worthwhile for people who
    have used Emacs for two decades or more -- for example, off hand, I
    cannot remember whether `customize' considers stock values to be those
    you see with `emacs -Q' or whether it uses the previously set values.
    And the phrase is harmless to novices.

IIUC, the "standard" (stock, or whatever) values are those defined by
defcustom and defface; that's all - the values according to "the spec" (Spec
Values? Defined Values?).

This term does not determine a particular set of options; it refers only to
a particular kind of value for an option - any option. Emacs -Q just uses a
minimal set of libraries and features, so a minimal set of options. Standard
values apply to defcustoms and deffaces from all libraries.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 21:39         ` Robert J. Chassell
  2005-01-31 22:37           ` Customize buttons that change user's custom file shouldaskforconfirmation Drew Adams
@ 2005-01-31 22:59           ` Kim F. Storm
  2005-01-31 23:50             ` Stefan Monnier
  2005-01-31 23:56             ` Lennart Borgman
  1 sibling, 2 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-01-31 22:59 UTC (permalink / raw)
  Cc: emacs-devel

"Robert J. Chassell" <bob@rattlesnake.com> writes:

>    ... Another possibility to consider for this might be "Installed
>    Values" (or "Stock Values").
>
> "Stock Values" is best.  It will cause me to ask, `what is meant by 
> "stock values" ... ?'  

I'll second that.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 22:59           ` Customize buttons that change user's custom file should askforconfirmation Kim F. Storm
@ 2005-01-31 23:50             ` Stefan Monnier
  2005-02-01  0:44               ` Simon Josefsson
  2005-01-31 23:56             ` Lennart Borgman
  1 sibling, 1 reply; 157+ messages in thread
From: Stefan Monnier @ 2005-01-31 23:50 UTC (permalink / raw)
  Cc: bob, emacs-devel

>> ... Another possibility to consider for this might be "Installed
>> Values" (or "Stock Values").
>> 
>> "Stock Values" is best.  It will cause me to ask, `what is meant by 
>> "stock values" ... ?'  

> I'll second that.

Agreed: if additionally to "options" you start talking about "stock values",
I'm gonna start wondering when the FSF moved to Wall Street and why FSF
members weren't informed,


        Stefan

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 22:59           ` Customize buttons that change user's custom file should askforconfirmation Kim F. Storm
  2005-01-31 23:50             ` Stefan Monnier
@ 2005-01-31 23:56             ` Lennart Borgman
  2005-02-01  8:56               ` Per Abrahamsen
  1 sibling, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-01-31 23:56 UTC (permalink / raw)
  Cc: emacs-devel

> "Robert J. Chassell" <bob@rattlesnake.com> writes:
>
> >    ... Another possibility to consider for this might be "Installed
> >    Values" (or "Stock Values").
> >
> > "Stock Values" is best.  It will cause me to ask, `what is meant by
> > "stock values" ... ?'
>
> I'll second that.

For one whos mother tongue is not english "Stuck" seems ok too.

I regret my earlier post on this. "Standard Values" are perhaps the best so
far. Maybe "Original Values" is good too. "Default Values" are perhaps most
easy to understand for those who did not read the code.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 23:50             ` Stefan Monnier
@ 2005-02-01  0:44               ` Simon Josefsson
  0 siblings, 0 replies; 157+ messages in thread
From: Simon Josefsson @ 2005-02-01  0:44 UTC (permalink / raw)
  Cc: bob, Kim F. Storm, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> ... Another possibility to consider for this might be "Installed
>>> Values" (or "Stock Values").
>>> 
>>> "Stock Values" is best.  It will cause me to ask, `what is meant by 
>>> "stock values" ... ?'  
>
>> I'll second that.
>
> Agreed: if additionally to "options" you start talking about "stock values",
> I'm gonna start wondering when the FSF moved to Wall Street and why FSF
> members weren't informed,

Maybe members will get stock options?

Seriously, "stock values" sound a bit odd in my ears (I'm not a native
speaker though).  "Preset values"?  I dunno.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 23:56             ` Lennart Borgman
@ 2005-02-01  8:56               ` Per Abrahamsen
  2005-02-01 14:11                 ` Robert J. Chassell
  0 siblings, 1 reply; 157+ messages in thread
From: Per Abrahamsen @ 2005-02-01  8:56 UTC (permalink / raw)


"Lennart Borgman" <lennart.borgman.073@student.lu.se> writes:

> I regret my earlier post on this. "Standard Values" are perhaps the best so
> far. Maybe "Original Values" is good too. "Default Values" are perhaps most
> easy to understand for those who did not read the code.

Original values are not got, it could easily refer to any historical
value before the latest change.

A big argument for "standard value" is that this is the term we came
up with last time this was discussed (I originally called it factory
setting, but RMS didn't knew that term), and the term used internally
in customize.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should ask forconfirmation
  2005-01-31  1:22   ` Customize buttons that change user's custom file should ask forconfirmation Miles Bader
@ 2005-02-01 13:30     ` Richard Stallman
  0 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-01 13:30 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    >     Instead of "Erase Customizations":
    >     1) "Default Values" - resets to default (= installed) settings
    >     2) "Save" - the existing button. It would update the custom
    >        file to use the installed settings.

There is a lot of support for this change.
Would someone like to implement it?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31  1:16   ` Customize buttons that change user's custom file should askforconfirmation Lennart Borgman
                       ` (2 preceding siblings ...)
  2005-01-31 15:21     ` Per Abrahamsen
@ 2005-02-01 13:30     ` Richard Stallman
  3 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-01 13:30 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    There is one logical problem. Should this work just on the symbols in the
    current customization buffer or on all values?

All those commands operate only on the symbols in the current buffer.
This one should, too.

It might be desirable to have a command like this that operates
universally.  I think the place for it, if any, is in the menu bar.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-02-01  8:56               ` Per Abrahamsen
@ 2005-02-01 14:11                 ` Robert J. Chassell
  2005-02-01 16:21                   ` Drew Adams
  0 siblings, 1 reply; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-01 14:11 UTC (permalink / raw)


    I'm gonna start wondering when the FSF moved to Wall Street ...

Good point.  I never thought of that.  Over all, on further
investigation, the interface needs more work, not just some rewording.

Using `emacs -Q' from 26 Jan 2005, 

I use 

    M-x customize-face RET secondary-selection RET

and change the face background from yellow to red
and the press the `Save for Future Sessions' button.

(By the way, where does an `emacs -Q' save settings, since it does not
load a .emacs file.  Does it create one?  If not, does the button fail
to save but not show a message telling this?  If so, this is bug
zero.)

When I the press the `Save for Future Sessions' button, the sample
turns red, as expected.

I then press the `Erase Customization' button, the sample turns yellow
as expected, but the `Background' attribute is not ticked and does not
show yellow.  This is bug one.

Bug two occurs when I then press the `Reset to saved' button:  nothing
happens, even though I had saved a new value, a red background.

Then I tick the `Background' attribute.
Bug three:  it shows `black' instead of yellow.

I change the `black' to `green' and press the `Save for Future
Sessions' button.  The sample turns green, as expected.

Bug four:  unfortunately, when I then press the `Reset to saved'
button, the sample does not turn red as it should, but stays green.

Bug five:  I then press the `Erase Customization' button with the
mouse over the `m' of the word `Customization', but nothing happens
the first time.

Fortunately when I press the `Erase Customization' button the second
time, the sample turns yellow as expected.  I am not sure this is a
bug, but it has happened with three different instances of `emacs -Q'.

Moreover, my mouse button presses normally work as expected.  For
example, when I press mouse button on the tick box for `Background',
it always works the first time.

In any event, the message for `Erase Customization' is OK:

    Un-customize all values in this buffer.

This is good news.

Unless fixed however, the name of the button `Reset to Saved' is
misleading, since it does not reset a face to a saved value after
un-customizing it.  This is bug six.

Moreover, it looks to me that `Set for Current Session' is not a
`Save' of any sort, either.  I have been unable to `Reset to' the
previously saved value after setting a value for a current session.
This is bug seven.

All in all, the interface is highly confusing.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom file should askforconfirmation
  2005-02-01 14:11                 ` Robert J. Chassell
@ 2005-02-01 16:21                   ` Drew Adams
  0 siblings, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-01 16:21 UTC (permalink / raw)


    Over all, on further
    investigation, the interface needs more work, not just some rewording.

    <...lots of great feedback...>

I, like some others, think that the Customize UI presents a great
opportunity for improvement ;-).

A lot of work has gone into the current design, and there are some good
aspects to it. Nevertheless, I think we could usefully put the design on the
table and talk about it from scratch, hashing over what we like and don't
like about it, and trying to come up with some improvements. Maybe the
result would be to decide to leave it as it is or to just tweak it a little,
but I do think it's worth spending time discussing it in detail - because I
think Customize could be more used and more useful than it is currently (for
both Lispers and non-Lispers - but that's another issue).

How about we open a discussion of how to improve the Customize UI - _after
the release_? To discuss it well and think carefully about it we'll need
some time. And now is not the best time.

Of course, Bob's feedback mainly involved bugs, and they can perhaps be
fixed now, for this release.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file should askforconfirmation
  2005-01-31 17:22       ` Drew Adams
  2005-01-31 21:39         ` Robert J. Chassell
@ 2005-02-02  7:27         ` Richard Stallman
  2005-02-02 18:01           ` Customize buttons that change user's custom file shouldaskforconfirmation Drew Adams
  1 sibling, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-02  7:27 UTC (permalink / raw)
  Cc: abraham, emacs-devel

    It would be good to have two different terms for the two different kinds of
    default value, so that we don't have to describe the context each time. One
    is the standard value for a user option (variable or face), where "standard"
    essentially means defined by defcustom or defface (IIUC). The other is the
    value a variable has in a buffer if there is no buffer-local value
    (setq-default).

The former is called "standard".  The latter is called "default".
I found a couple of places in cus-edit.el that said "default"
when they meant "standard", but the distinction was mostly maintained.

There is no need to reopen this issue.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom file shouldaskforconfirmation
  2005-02-02  7:27         ` Richard Stallman
@ 2005-02-02 18:01           ` Drew Adams
  2005-02-02 18:46             ` Stefan Monnier
  0 siblings, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-02 18:01 UTC (permalink / raw)
  Cc: abraham, emacs-devel

        It would be good to have two different terms for the two
        different kinds of
        default value, so that we don't have to describe the
        context each time. One
        is the standard value for a user option (variable or face),
        where "standard"
        essentially means defined by defcustom or defface (IIUC).
        The other is the
        value a variable has in a buffer if there is no buffer-local value
        (setq-default).

    The former is called "standard".  The latter is called "default".
    I found a couple of places in cus-edit.el that said "default"
    when they meant "standard", but the distinction was mostly maintained.

Right. Good.

So, to come back to the name of the button, can we agree on "Standard
Values"?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file shouldaskforconfirmation
  2005-02-02 18:01           ` Customize buttons that change user's custom file shouldaskforconfirmation Drew Adams
@ 2005-02-02 18:46             ` Stefan Monnier
  2005-02-02 19:02               ` Drew Adams
  0 siblings, 1 reply; 157+ messages in thread
From: Stefan Monnier @ 2005-02-02 18:46 UTC (permalink / raw)
  Cc: emacs-devel, rms, abraham

> So, to come back to the name of the button, can we agree on "Standard
> Values"?

Since setting the vars to their saved value is called "Reset to Saved",
I'd say it should be called "Reset to Standard".

Maybe we don't want "Reset to", but then we shouldn't want it for "Reset to
Saved" either.


        Stefan

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom file shouldaskforconfirmation
  2005-02-02 18:46             ` Stefan Monnier
@ 2005-02-02 19:02               ` Drew Adams
  2005-02-03  2:43                 ` Miles Bader
  2005-02-03 19:13                 ` Customize buttons that change user's custom file shouldaskforconfirmation Richard Stallman
  0 siblings, 2 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-02 19:02 UTC (permalink / raw)
  Cc: emacs-devel, rms, abraham

    > So, to come back to the name of the button, can we agree on "Standard
    > Values"?

    Since setting the vars to their saved value is called "Reset to Saved",
    I'd say it should be called "Reset to Standard".

Yes, that would be clearer, now that the original pb with using "Reset to"
has been removed (by having save as a separate operation).

    Maybe we don't want "Reset to", but then we shouldn't want it
    for "Reset to Saved" either.

It helps to explicitly say Reset, IMO; it lets users know what to expect.
And yes, we should be consistent (Reset everywhere or nowhere).

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file shouldaskforconfirmation
  2005-02-02 19:02               ` Drew Adams
@ 2005-02-03  2:43                 ` Miles Bader
  2005-02-03  6:58                   ` Customize buttons that change user's custom fileshouldaskforconfirmation Lennart Borgman
  2005-02-03 19:13                 ` Customize buttons that change user's custom file shouldaskforconfirmation Richard Stallman
  1 sibling, 1 reply; 157+ messages in thread
From: Miles Bader @ 2005-02-03  2:43 UTC (permalink / raw)
  Cc: abraham, Stefan Monnier, rms, emacs-devel

On Wed, 2 Feb 2005 11:02:50 -0800, Drew Adams <drew.adams@oracle.com> wrote:
>     > So, to come back to the name of the button, can we agree on "Standard
>     > Values"?
> 
>     Since setting the vars to their saved value is called "Reset to Saved",
>     I'd say it should be called "Reset to Standard".
> 
> Yes, that would be clearer, now that the original pb with using "Reset to"
> has been removed (by having save as a separate operation).

No, I think it's still bad:  "Reset" is too strong a word -- it
doesn't make it clear that a save step will subsequently be required
(especially for users used to the old behavior).  If there are other
bad uses, they should be changed too, of course.

How about "Get standard values", and "Get saved values"?

-Miles
-- 
Do not taunt Happy Fun Ball.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03  2:43                 ` Miles Bader
@ 2005-02-03  6:58                   ` Lennart Borgman
  2005-02-03  7:39                     ` Miles Bader
  0 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-03  6:58 UTC (permalink / raw)
  Cc: emacs-devel, abraham, rms, Stefan Monnier

----- Original Message ----- 
From: "Miles Bader" <snogglethorpe@gmail.com>

> No, I think it's still bad:  "Reset" is too strong a word -- it
> doesn't make it clear that a save step will subsequently be required
> (especially for users used to the old behavior).  If there are other
> bad uses, they should be changed too, of course.
>
> How about "Get standard values", and "Get saved values"?

Here is a little table trying to show what we actually want to set names on:

    Set:        Field => Current
    Save:      Field => Current, Saved

    Reset:     Current => Field
    Reset to Saved:     Saved => Field, Current (only if Saved)

    Erase Customization:    Standard => Field, Current, Saved

In this context "Reset to Saved" and "Get Saved" actually seem to me to say
too little instead. Maybe "Use Saved"?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03  6:58                   ` Customize buttons that change user's custom fileshouldaskforconfirmation Lennart Borgman
@ 2005-02-03  7:39                     ` Miles Bader
  2005-02-03  9:36                       ` Kim F. Storm
  0 siblings, 1 reply; 157+ messages in thread
From: Miles Bader @ 2005-02-03  7:39 UTC (permalink / raw)
  Cc: rms, emacs-devel, Stefan Monnier, miles, Drew Adams, abraham

On Thu, 3 Feb 2005 07:58:00 +0100, Lennart Borgman
<lennart.borgman.073@student.lu.se> wrote:
> ----- Original Message -----
> >
> > How about "Get standard values", and "Get saved values"?
> 
> Here is a little table trying to show what we actually want to set names on:
...
> In this context "Reset to Saved" and "Get Saved" actually seem to me to say
> too little instead. Maybe "Use Saved"?

Your table helps, but I think it's important to use the proposed
operations, not what the current code does.  Here's my version:

   Set:            Field => Current
   Save:           Field => Current, Saved

   Get Current:    Current => Field
   Get Saved:      Saved => Field
   Get Default:    Standard => Field

I think these names (and behaviors) make a _lot_ of sense; the
consistency is very appealing, and should help people learn the
meanings easily.

-Miles
-- 
Do not taunt Happy Fun Ball.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03  7:39                     ` Miles Bader
@ 2005-02-03  9:36                       ` Kim F. Storm
  2005-02-03 14:46                         ` Lennart Borgman
                                           ` (2 more replies)
  0 siblings, 3 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-03  9:36 UTC (permalink / raw)
  Cc: rms, abraham, Lennart Borgman, emacs-devel, Stefan Monnier,
	Drew Adams, miles

Miles Bader <snogglethorpe@gmail.com> writes:

> Your table helps, but I think it's important to use the proposed
> operations, not what the current code does.  Here's my version:
>
>    Set:            Field => Current
>    Save:           Field => Current, Saved
>
>    Get Current:    Current => Field
>    Get Saved:      Saved => Field
>    Get Default:    Standard => Field
>
> I think these names (and behaviors) make a _lot_ of sense; the
> consistency is very appealing, and should help people learn the
> meanings easily.

The major problem IMHO with Customize is not the names for
the operations as such, but the way it differs from other
applications that the user may be accustomed to.

Customize operates with four values for each variable:

F * the field value
C * the current value
S * the saved value
D * the default value

It provides commands for the following operations:

F => C
F => C,S
C => S
C => F
S => C,F
D => C,F  or  D => F


In contrast, most other applications only have these states:

F * the field value
A * the active (current/saved) value
D * the default value

and consequently has fewer operations:

F => A           (Save, OK)
A => F           (Cancel)
D => A,F         (Clear All)  -> with confirmation


Consequently, I think the ability to set an option without saving it
is unfamiliar to most users -- when you set something and apply the
change, they will expect it to be like that from now on.

IMO, we should consider the difference between F and C states as an
expert option.

The big problem is that if the user sets option X on a page and does
<Set> "F => C", and then (sometime later) sets option Y on the same
page, and then does <Save> "F => C,S", the effect is that the change
to X is also saved.  This may be highly confusing to a user.

Also the user should be offered to save unsaved customizations when he
exits emacs.

Another idea is to combine "C => F" and "S => C,F" states into a
single <Cancel> option.  We can do this by letting <Cancel> check
if C != S and ask the user:

        Restore to last saved value (y/n)

in that case -- otherwise it just restores to C (== S).



To summarise:
=============

I suggest the following button names:

  <Set>  <Save>  <Cancel>   <Clear All>

The <Set> button does "F => C" when enabled/confirmed.

This is an expert command, so it shall be disabled by default
(e.g. like narrow-to-region), causing Emacs to ask the novice user if
he really wants to do this.

The <Save> button does "F => C,S" and thus "C => S" when F == C.

The <Cancel> button does either "C => F" or "S => C,F".

Unless the user has previously used <Set> for any of the
variables on the page (so C != S), the effect is the same.
If C != S, it asks the user:
        Restore to last saved value (y/n)
and acts accordingly.

The <Clear All> button first asks the user for confirmation. 

If ok it does "D => F"  (does not update C or S).

It then prints a message
   Remember to use <Set> or <Save> to activate/save the values.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03  9:36                       ` Kim F. Storm
@ 2005-02-03 14:46                         ` Lennart Borgman
  2005-02-03 15:18                           ` David Kastrup
  2005-02-03 19:30                         ` Drew Adams
  2005-02-15  6:18                         ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  2 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-03 14:46 UTC (permalink / raw)
  Cc: abraham, emacs-devel, Stefan Monnier, miles, Drew Adams, rms


lennart.borgman.073@student.lu.se
Lund


----- Original Message ----- 
From: "Kim F. Storm" <storm@cua.dk>


> Miles Bader <snogglethorpe@gmail.com> writes:
>
> > Your table helps, but I think it's important to use the proposed
> > operations, not what the current code does.  Here's my version:
> >
> >    Set:            Field => Current
> >    Save:           Field => Current, Saved
> >
> >    Get Current:    Current => Field
> >    Get Saved:      Saved => Field
> >    Get Default:    Standard => Field

Yes, it is more easy to understand (at least for me). But what happened to
Erase Customization? I do not believe that this always can be done with Get
Default+Save.


> To summarise:
> =============
>
> I suggest the following button names:
>
>   <Set>  <Save>  <Cancel>   <Clear All>
>
> The <Set> button does "F => C" when enabled/confirmed.
>
> This is an expert command, so it shall be disabled by default
> (e.g. like narrow-to-region), causing Emacs to ask the novice user if
> he really wants to do this.

I think the situation is a bit different for Emacs than for other
applications. In most applications the options are easy to understand and
set. It is not so for all options in Emacs. Therefore I believe that a
novice user really can benefit from beeing able to Set and test before Save.


> The <Save> button does "F => C,S" and thus "C => S" when F == C.

Yes, it does Set+Save. Can anyone find any reason to break this up?


> The <Cancel> button does either "C => F" or "S => C,F".

The <Cancel> idea has some benefits but I see two problems. First this would
give one question for every option in the customization buffer. Second
<Cancel>  normally means something like "discard unsaved changes and close
window/frame".


> The <Clear All> button first asks the user for confirmation.

> If ok it does "D => F"  (does not update C or S).

Is not this the same idea as Miles have+confirmation? (And the same problem
with the missing "Erase"?) Why a confirmatin in this case?

> It then prints a message
>    Remember to use <Set> or <Save> to activate/save the values.

Good idea. Customize does something similar today.

> Also the user should be offered to save unsaved customizations when he
> exits emacs.

Yes, but...


-----------
* My summary:*

1) I like Miles suggestion, it is easy to understand, but there should be an
"Erase" too.

2) Maybe the semantics of "Get *" must be pointed out, since it is probably
not an operation that the user has seen somewhere else.

3) I believe that Kims concern for that the interface must easy to
understand from what the user knows from other applications should be met as
far as possible. The exact words are as important as the semantics here. For
example currently customize speaks about "the text in this buffer" - I
believe that it should speak about "fields" instead (where appropriate).

4) Messages guiding the user are important (but they are no excuse not
trying to make them obsolete by even better design).

5) Options are however more complicated sometimes in Emacs. "Set" should
therefore be availabe for testing. (And we should try to make the options
more simple.)

6) Offer to save: yes, but where? I would suggest when closing the customize
buffer.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03 14:46                         ` Lennart Borgman
@ 2005-02-03 15:18                           ` David Kastrup
  2005-02-03 15:30                             ` Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: David Kastrup @ 2005-02-03 15:18 UTC (permalink / raw)
  Cc: abraham, emacs-devel, Stefan Monnier, Kim F. Storm, snogglethorpe,
	rms, Drew Adams, miles

"Lennart Borgman" <lennart.borgman.073@student.lu.se> writes:

> ----- Original Message ----- 
> From: "Kim F. Storm" <storm@cua.dk>
>
>
>> Miles Bader <snogglethorpe@gmail.com> writes:
>>
>> > Your table helps, but I think it's important to use the proposed
>> > operations, not what the current code does.  Here's my version:
>> >
>> >    Set:            Field => Current
>> >    Save:           Field => Current, Saved
>> >
>> >    Get Current:    Current => Field
>> >    Get Saved:      Saved => Field
>> >    Get Default:    Standard => Field
>
> Yes, it is more easy to understand (at least for me). But what
> happened to Erase Customization? I do not believe that this always
> can be done with Get Default+Save.

But it should.  The previous "Erase Customization" is really a bad
surprise: it has permanent effects without asking for them.

One problem is that there is a difference between saving the default
value, and saving the fact that the default is not changed: when the
default value changes in later Emacs versions, an old saved default
will override the new one.

So it ought to be possible to really also save the "I'll take whatever
the default happens to be at any time" decision in addition to "I'll
take whatever the default is now".  And if one can save that decision,
it should also be displayed in some manner.

"Erase customization" accomplished some of that, but at the price of
being highly confusing.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03 15:18                           ` David Kastrup
@ 2005-02-03 15:30                             ` Lennart Borgman
  0 siblings, 0 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-03 15:30 UTC (permalink / raw)
  Cc: abraham, emacs-devel, Stefan Monnier, Kim F. Storm, snogglethorpe,
	rms, Drew Adams, miles

----- Original Message ----- 
From: "David Kastrup" <dak@gnu.org>

> > Yes, it is more easy to understand (at least for me). But what
> > happened to Erase Customization? I do not believe that this always
> > can be done with Get Default+Save.
>
> But it should.  The previous "Erase Customization" is really a bad
> surprise: it has permanent effects without asking for them.
>
> One problem is that there is a difference between saving the default
> value, and saving the fact that the default is not changed: when the
> default value changes in later Emacs versions, an old saved default
> will override the new one.

Implementing "Erase" as Get Default+Save seems a bit more difficult to me
when a separate "Erase" button like now. Does not it require a new state for
the option field in the customization buffer? Keeping it as it is now, but
adding a clear question, is perhaps both more easy to implement and easy to
understand?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom file shouldaskforconfirmation
  2005-02-02 19:02               ` Drew Adams
  2005-02-03  2:43                 ` Miles Bader
@ 2005-02-03 19:13                 ` Richard Stallman
  1 sibling, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-03 19:13 UTC (permalink / raw)
  Cc: emacs-devel, monnier, abraham

I changed the name "Reset to Standard" because it did not fit the
action of that operation, which was and is to delete the existing
customizations.

You suggested changing the action so that it only sets the values.
I think that is a good idea.  For this altered operation, I think
"Reset to Standard" might be a good name.

    How about "Get standard values", and "Get saved values"?

That may be better.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03  9:36                       ` Kim F. Storm
  2005-02-03 14:46                         ` Lennart Borgman
@ 2005-02-03 19:30                         ` Drew Adams
  2005-02-03 19:54                           ` Lennart Borgman
  2005-02-07 20:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  2005-02-15  6:18                         ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  2 siblings, 2 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-03 19:30 UTC (permalink / raw)
  Cc: rms, abraham, Lennart Borgman, emacs-devel, Stefan Monnier, miles

    Customize operates with four values for each variable:   
    F * the field value
    C * the current value
    S * the saved value
    D * the default value  
    It provides commands for the following operations:  
    F => C
    F => C,S
    C => S
    C => F
    S => C,F
    D => C,F  or  D => F

    In contrast, most other applications only have these states:
    F * the field value
    A * the active (current/saved) value
    D * the default value
    ...

Clear analysis and presentation.

    Consequently, I think the ability to set an option without saving
    it is unfamiliar to most users -- when you set something and apply
    the change, they will expect it to be like that from now on.

Yes, but it is not unfamiliar to most _Emacs_ users. And if it is
unfamiliar to newbies, then we have to help them to understand. Emacs
is more about dynamic, current values than it is about saved settings,
and yes, that is different from what newbies might be used to. This
idea should be at the forefront of our Customize UI model. Customizing
Emacs is a real-time thing; saving changes is just an option. It's
essential that we make clear this difference between customizing in
Emacs and in other applications.
    
    IMO, we should consider the difference between F and C states as
    an expert option.

I disagree. I do not think we want to change the model or make the C
operations for expert-mode only - it would be very confusing to do
so. "Set" is the _first_ thing, not the last thing, that we want
novices to try; it should definitely not be disabled by
default. Learning to use and customize Emacs implies, first and
foremost, learning about changing dynamic values. We just need to make
the UI clear, so that users realize what each action does.

Sure, you can save changed values once you get what you want, but what
makes Emacs different is the ease with which you can modify things on
the fly and see if that is what you like. Customize is only one way to
do that, but it is no exception - it lets you change current values
without saving them.

Novices more than anyone else need to know that they can make all the
changes they want, play with them, and exit with no lasting
consequences. They already know there is (there must be) a way to save
changes; what they might not know is that they don't _need_ to save a
change in order to have it take effect. This "sand-box" mode is the
norm for Emacs.

IOW, since the Emacs model is different, we need to make that
difference clear from the outset, not hide it behind a presentation
that pretends at first sight to be the same old change=save model. A
user must not need to progress to "expert" status to be able to change
things with no permanent consequences. Sand boxes are for novices more
than anyone else.
    
    The big problem is that if the user sets option X on a page and does
    <Set> "F => C", and then (sometime later) sets option Y on the same
    page, and then does <Save> "F => C,S", the effect is that the change
    to X is also saved.  This may be highly confusing to a user.

Good point. We need to somehow make crystal clear that the buttons and
menubar menu items apply to _each_ option in the buffer. Possible ways
include 1) using the word "All" in menu and button names and 2) asking
for confirmation, warning that _all_ options are concerned. I think
that using "All" in the names would be good and sufficient. Whenever a
user saves values, however, we should of course ask for confirmation.
    
    Also the user should be offered to save unsaved customizations
    when he exits emacs.

Agreed. We've discussed this before - perhaps we can do that after the
release. I have a prototype that does this (as an option); if you want
to see what this might be like, you can try it at
http://www.emacswiki.org/elisp/cus-edit-plus.el (Food for thought only
- I'm not proposing the code for inclusion in Emacs.)
    
    Another idea is to combine "C => F" and "S => C,F" states into a
    single <Cancel> option.  We can do this by letting <Cancel> check
    if C != S and ask the user: Restore to last saved value (y/n)
    in that case -- otherwise it just restores to C (== S).

Not a bad idea. But if we do that, the question posed should give the
user the option of resetting to a) the current value, b) the saved
value, or c) the standard value. That is, we could have a single Reset
button with a menu - in fact, I think we already have essentially this
behavior, as an option: the Reset menu (`custom-reset-menu').
        
    I suggest the following button names:
    
      <Set>  <Save>  <Cancel>   <Clear All>

Since each of these operates on everything in the buffer, they should
each use the word "All" (Set All, Save All, Cancel All, Clear All) -
or else we should find some other way to make that very clear. In any
case, "Clear All" should not be different from the others in this
respect.

Clear All is not the right name for this, in any case. The term
"Clear" commonly refers to merely emptying an edit field. We don't
have such an operation (and we don't need it) - the closest operation
we have is what you are calling Cancel. Cancel and "Clear All" will be
confused.

Is there any question that these are the operations we want? I think
they are. 

    F => C               (Set)
    F => C,S             (set-and-save, which should be called Save)
    C => S               (Save)
    C => F               (Reset from Current)
    S => C,F             (Reset from Saved)
    D => C,F  or  D => F (Reset from Standard)

To the right are the names I prefer. We could combine the last three
into a single Reset button, as mentioned above.

However, it might be confusing to combine resetting edit fields with
resetting current values. Since we have a Set button, why not confine
the reset buttons to resetting only the edit field (F)? That is:

    C => F   (Reset from Current)
    S => F   (Reset from Saved)
    D => F   (Reset from Standard)

Using the combined Reset buttons would mean we have only Set, Save,
and Reset.

Any reset action should display a feedback message saying 1) that
(all) the _edit fields_ have been reset from <source> and 2) you can
_set_ the current values to these fields with Set.

 - Drew

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03 19:30                         ` Drew Adams
@ 2005-02-03 19:54                           ` Lennart Borgman
  2005-02-03 20:05                             ` Drew Adams
  2005-02-04 10:22                             ` Customize buttons that change user's custom fileshouldaskforconfirmation Kim F. Storm
  2005-02-07 20:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  1 sibling, 2 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-03 19:54 UTC (permalink / raw)
  Cc: miles, emacs-devel, rms, Stefan Monnier, abraham

----- Original Message ----- 
From: "Drew Adams" <drew.adams@oracle.com>

> However, it might be confusing to combine resetting edit fields with
> resetting current values. Since we have a Set button, why not confine
> the reset buttons to resetting only the edit field (F)? That is:
>
>     C => F   (Reset from Current)
>     S => F   (Reset from Saved)
>     D => F   (Reset from Standard)
>
> Using the combined Reset buttons would mean we have only Set, Save,
> and Reset.

As far as I can see this is essentially Miles suggestions (that means we
nearly agree already ;-) + combining Reset into one button. That might be a
good suggestion since it may look less complicated. There will also because
of the combination have to be a question (or menu) after this. This could be
worded so that it is more clear that Reset only resets the Field.

But still the "Erase" is missing (like in Miles suggestion). However can not
that naturally be a choice under Reset? There could then be some explanation
(and still a warning later). If we take this approach I think it can look
very nice:

  <Set All>  <Save All>  <Reset All ...>  <Close>

The three dots on Reset are supposed to indicates that there is some
question after clicking this button. This is a convention often used for
menus (but I do not know if it is used for buttons - though I would believe
it is easy to grasp if you know the menu convention). I think this still
meets Kim's concern that it should be close to common look and feel.

> Any reset action should display a feedback message saying 1) that
> (all) the _edit fields_ have been reset from <source> and 2) you can
> _set_ the current values to these fields with Set.

I think all these actions should give some feedback!

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03 19:54                           ` Lennart Borgman
@ 2005-02-03 20:05                             ` Drew Adams
  2005-02-03 20:13                               ` Lennart Borgman
  2005-02-04 10:22                             ` Customize buttons that change user's custom fileshouldaskforconfirmation Kim F. Storm
  1 sibling, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-03 20:05 UTC (permalink / raw)
  Cc: miles, emacs-devel, rms, Stefan Monnier, abraham

    But still the "Erase" is missing (like in Miles suggestion).
    However can not
    that naturally be a choice under Reset? There could then be
    some explanation
    (and still a warning later).

I don't understand. We ~decided that Erase Customization was to be replaced
by Reset All to Standard plus Save. Are you arguing now to go back to Erase
Customization?

    > Any reset action should display a feedback message saying 1) that
    > (all) the _edit fields_ have been reset from <source> and 2) you can
    > _set_ the current values to these fields with Set.

    I think all these actions should give some feedback!

My point was the _specific_ feedback - it should say not only what has been
done, but, in this case, it should also tell you about Set.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03 20:05                             ` Drew Adams
@ 2005-02-03 20:13                               ` Lennart Borgman
  2005-02-03 20:18                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
  0 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-03 20:13 UTC (permalink / raw)
  Cc: miles, emacs-devel, rms, Stefan Monnier, abraham

----- Original Message ----- 
From: "Drew Adams" <drew.adams@oracle.com>

> I don't understand. We ~decided that Erase Customization was to be
replaced
> by Reset All to Standard plus Save. Are you arguing now to go back to
Erase
> Customization?

If this can be done easily I have nothing against it, but I doubt it can.
"Standard" is perhaps not just a value? Someone (Kim?) pointed out that this
could mean give me the values that are default even if they change in the
future.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-03 20:13                               ` Lennart Borgman
@ 2005-02-03 20:18                                 ` Drew Adams
  2005-02-03 20:23                                   ` Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-03 20:18 UTC (permalink / raw)
  Cc: abraham, emacs-devel, rms, Stefan Monnier, miles

    > I don't understand. We ~decided that Erase Customization was to be
    replaced
    > by Reset All to Standard plus Save. Are you arguing now to go back to
    Erase
    > Customization?

    If this can be done easily I have nothing against it, but I
    doubt it can.
    "Standard" is perhaps not just a value? Someone (Kim?) pointed
    out that this
    could mean give me the values that are default even if they
    change in the
    future.

We're talking only about the _UI_, not what's behind it (implementation). If
we can do it (now) with one button, why can't we do it with two buttons?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-03 20:18                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
@ 2005-02-03 20:23                                   ` Lennart Borgman
  0 siblings, 0 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-03 20:23 UTC (permalink / raw)
  Cc: abraham, emacs-devel, rms, Stefan Monnier, miles

----- Original Message ----- 
From: "Drew Adams" <drew.adams@oracle.com>

>     > I don't understand. We ~decided that Erase Customization was to be
>     replaced
>     > by Reset All to Standard plus Save. Are you arguing now to go back
to
>     Erase
>     > Customization?
>
>     If this can be done easily I have nothing against it, but I
>     doubt it can.
>     "Standard" is perhaps not just a value? Someone (Kim?) pointed
>     out that this
>     could mean give me the values that are default even if they
>     change in the
>     future.
>
> We're talking only about the _UI_, not what's behind it (implementation).
If
> we can do it (now) with one button, why can't we do it with two buttons?

Ok, I admit it can be done after choosing "Save" too. During the "Reset"
operation we have computed the "standard value" and we can compute it once
again during "Save" and if the value to save is equal to the "standard
value" then we could ask if the user wants to delete the customization. But
it is a bit obscure to me and hard to find.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03 19:54                           ` Lennart Borgman
  2005-02-03 20:05                             ` Drew Adams
@ 2005-02-04 10:22                             ` Kim F. Storm
  2005-02-07  5:32                               ` Drew Adams
  1 sibling, 1 reply; 157+ messages in thread
From: Kim F. Storm @ 2005-02-04 10:22 UTC (permalink / raw)
  Cc: miles, rms, emacs-devel, Stefan Monnier, snogglethorpe,
	Drew Adams, abraham

"Lennart Borgman" <lennart.borgman.073@student.lu.se> writes:

>> Using the combined Reset buttons would mean we have only Set, Save,
>> and Reset.

I don't like <Reset> as it doesn't "set" in the same sense as <Set>.

Miles suggested <Get>

Other possibilites are <Load> or <Reload> or <Undo>?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-04 10:22                             ` Customize buttons that change user's custom fileshouldaskforconfirmation Kim F. Storm
@ 2005-02-07  5:32                               ` Drew Adams
  2005-02-07  7:25                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  2005-02-09  8:11                                 ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  0 siblings, 2 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-07  5:32 UTC (permalink / raw)


I'm not sure if we reached a consensus on this button-label question.

I said:

    However, it might be confusing to combine resetting edit fields with
    resetting current values. Since we have a Set button, why not confine
    the reset buttons to resetting only the edit field (F)? That is:

        C => F   (Reset from Current)
        S => F   (Reset from Saved)
        D => F   (Reset from Standard)

    Using the combined Reset buttons would mean we have only Set, Save,
    and Reset.

Kim said:

    I don't like <Reset> as it doesn't "set" in the same sense as <Set>.
    Miles suggested <Get>.

I agree. Here is what I would propose:

 Set All          (F => C)
 Save All         (F => C,S)
 Get All
   Standard       (D => F)
   Saved          (S => F)
   Current        (C => F)

1. Each button name includes "All". Likewise for menu-bar menu items.
2. The "resetting" actions only fill the edit field; they do not set the
current value.
3. The "resetting" actions are combined in a button menu (pulldown list).

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-07  5:32                               ` Drew Adams
@ 2005-02-07  7:25                                 ` Lennart Borgman
  2005-02-07  7:34                                   ` Drew Adams
                                                     ` (3 more replies)
  2005-02-09  8:11                                 ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  1 sibling, 4 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-07  7:25 UTC (permalink / raw)


----- Original Message ----- 
From: "Drew Adams" <drew.adams@oracle.com>

> I agree. Here is what I would propose:
>
>  Set All          (F => C)
>  Save All         (F => C,S)
>  Get All
>    Standard       (D => F)
>    Saved          (S => F)
>    Current        (C => F)
>
> 1. Each button name includes "All". Likewise for menu-bar menu items.
> 2. The "resetting" actions only fill the edit field; they do not set the
> current value.
> 3. The "resetting" actions are combined in a button menu (pulldown list).

I like that though I still believe "Erase" is needed. Maybe "Erase All"? It
should of course ask for confirmation. (It does not belong under "Get All".)

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-07  7:25                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-07  7:34                                   ` Drew Adams
  2005-02-07 17:28                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
  2005-02-07 13:45                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
                                                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-07  7:34 UTC (permalink / raw)


    I still believe "Erase" is needed. Maybe "Erase All"? It
    should of course ask for confirmation. (It does not belong
    under "Get All".)

By "Erase" do you mean the current Erase Customization functionality or
something else? I thought that we had more or less agreed to separate the
two functionalities that are mixed today in Erase Customization.

I gave reasons for splitting Erase Customization in two and reasons for
splitting the implicit Set from Get. What is the reason behind your
preference? Why do we "need" Erase?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-07  7:25                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  2005-02-07  7:34                                   ` Drew Adams
@ 2005-02-07 13:45                                   ` Robert J. Chassell
  2005-02-07 16:46                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
  2005-02-07 14:15                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
  2005-02-07 15:07                                   ` Customize buttons that change user's customfiles Robert J. Chassell
  3 siblings, 1 reply; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-07 13:45 UTC (permalink / raw)


   I like that though I still believe "Erase" is needed. Maybe "Erase All"? 

Since customize automatically rewrites your initialization file,
"Erase All" or `(customize-erase-all)' means converting your setqs to
the default values and deleting your defuns.

It means converting to an instance of Emacs such as you see when
invoking `emacs -Q'.

In such an Emacs, when you run a command such as 

    M-x customize-option RET baud-rate RET

it says `this option has been changed outside the customize buffer'. 

In this case, since this instance of Emacs lacks an initialization
file, this means value is set as the default in the distribution.

As far as I can see the phrase "Erase All" or the command
`customize-erase-all' is useless.  People will be better off starting
an instance of Emacs with `emacs -Q'.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-07  7:25                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  2005-02-07  7:34                                   ` Drew Adams
  2005-02-07 13:45                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
@ 2005-02-07 14:15                                   ` Robert J. Chassell
  2005-02-07 16:23                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
  2005-02-09  8:11                                     ` Customize buttons that change user's customfileshouldaskforconfirmation Richard Stallman
  2005-02-07 15:07                                   ` Customize buttons that change user's customfiles Robert J. Chassell
  3 siblings, 2 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-07 14:15 UTC (permalink / raw)


In X Windows, when you move your mouse cursor over the button that
says `Save for Future Sessions' the help documentation should not only says

    Make your editing in this buffer take effect for future Emacs sessions.

as it does, but also

    This action automatically writes to your existing initialization file
    or creates a .emacs file if you lack one."

Otherwise, novices may be confused where custom automatically writes
and saves values.

This change is a bug that should be fixed during this feature freeze.

Other than discussion over the exact language to be used, this change
only involves adding two lines to the `custom-buffer-create-internal'
defun in   emacs/lisp/cus-edit.el
from

		 :help-echo "\
Make your editing in this buffer take effect for future Emacs sessions."

to
		 :help-echo "\
Make your editing in this buffer take effect for future Emacs sessions.
This action automatically writes to your existing initialization file
or creates a .emacs file if you lack one."

I used the phrase `existing initialization file' because some people
specify a different name for their .emacs file than `.emacs'.
However, the default for custom is to create a .emacs file
automatically.

More confusion:  I just discovered another bug.

I started an instance of Emacs with `emacs -Q' with a different user,
one that lacked an existing initialization file.  When I set an option
with `M-x customize-option RET baud-rate RET' a new .emacs file was
created, as expected.  However, I also received a message that said

    Saving settings from "emacs -q" would overwrite existing customizations

But since I had no existing customization, this message was wrong!

This is a second bug that should be fixed before the release.

As people keep observing, customize is a can of worms.  The more we
look, the more creepy, crawly things we see.  Worse, we are not going
fishing nor distributing them over a physical garden to improve it.

I once thought it was a good idea to offer a feature to write new
values to an initialization file.  I am not so sure now.

--
    Robert J. Chassell
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfiles
  2005-02-07  7:25                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
                                                     ` (2 preceding siblings ...)
  2005-02-07 14:15                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
@ 2005-02-07 15:07                                   ` Robert J. Chassell
  2005-02-07 15:53                                     ` Robert J. Chassell
  3 siblings, 1 reply; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-07 15:07 UTC (permalink / raw)


In X Windows, when you move your mouse cursor over the button that
says `Save for Future Sessions' the help documentation should not only say

    Make your editing in this buffer take effect for future Emacs sessions.

as it does, but also say that

    This action automatically writes to your existing initialization file
    or creates a .emacs file if you lack one."

Otherwise, novices may be confused where custom automatically writes
and saves values.

This change is a bug that should be fixed during this feature freeze.

Other than discussion over the exact language to be used, this change
only involves adding two lines to the `custom-buffer-create-internal'
defun in   emacs/lisp/cus-edit.el
from

		 :help-echo "\
Make your editing in this buffer take effect for future Emacs sessions."

to
		 :help-echo "\
Make your editing in this buffer take effect for future Emacs sessions.
This action automatically writes to your existing initialization file
or creates a .emacs file if you lack one."

I used the phrase `existing initialization file' because some people
specify a different name for their .emacs file than `.emacs'.
However, the default for custom is to create a .emacs file
automatically.

More confusion:  I just discovered another bug.

I started an instance of Emacs with `emacs -Q' with a different user,
one that lacked an existing initialization file.  When I set an option
with `M-x customize-option RET baud-rate RET' a new .emacs file was
created, as expected and as Emacs should.  

However, I also received a message that said

    Saving settings from "emacs -q" would overwrite existing customizations

But since I had no existing customization, this message was wrong!

This is a bug that should be fixed before the release.

As people keep observing, customize is a can of worms.  The more we
look, the more creepy, crawly things we see.  Worse, we are not going
fishing nor distributing them over a physical garden to improve it.

I thought customize was a good idea once.  I am not so sure now.

--
    Robert J. Chassell
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfiles
  2005-02-07 15:07                                   ` Customize buttons that change user's customfiles Robert J. Chassell
@ 2005-02-07 15:53                                     ` Robert J. Chassell
  0 siblings, 0 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-07 15:53 UTC (permalink / raw)


My apologies; I did not mean to send a message twice.  When I fetched
mail, my earlier message had not appeared and I thought I had forgot
to send it.  Turns out I was being too quick.  :-(

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-07 14:15                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
@ 2005-02-07 16:23                                     ` Lennart Borgman
  2005-02-07 20:22                                       ` Robert J. Chassell
  2005-02-09  8:11                                     ` Customize buttons that change user's customfileshouldaskforconfirmation Richard Stallman
  1 sibling, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-07 16:23 UTC (permalink / raw)


----- Original Message ----- 
From: "Robert J. Chassell" <bob@rattlesnake.com>

> More confusion:  I just discovered another bug.
>
> I started an instance of Emacs with `emacs -Q' with a different user,
> one that lacked an existing initialization file.  When I set an option
> with `M-x customize-option RET baud-rate RET' a new .emacs file was
> created, as expected.  However, I also received a message that said
>
>     Saving settings from "emacs -q" would overwrite existing
customizations
>
> But since I had no existing customization, this message was wrong!

It is worse than that - since .emacs was not run Custom can not really know
where to save and should just say so. Or, do you mean that Custom did
overwrite your .emacs?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-07 13:45                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
@ 2005-02-07 16:46                                     ` Lennart Borgman
  0 siblings, 0 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-07 16:46 UTC (permalink / raw)


----- Original Message ----- 
From: "Robert J. Chassell" <bob@rattlesnake.com>

> Since customize automatically rewrites your initialization file,
> "Erase All" or `(customize-erase-all)' means converting your setqs to
> the default values and deleting your defuns.

Is this a misunderstanding? Custom should just touch
(custom-set-variables...) and (custom-set-faces...) at the top level
(actually it only checks indentation but that is probably good enough) in
.emacs or custom-file.

"Erase All" should mean erase the entries in (custom-set-variables...) etc
for the options in the current customization buffer + reset fields and
current symbols' values.

Of course, we discussed other names for "Erase All" (and I forgot to choose
a better one here), "Standard Values", "Default Values" etc. What I wanted
to point out is that this (whatever it does not really fit under "Get All"
(since it does much more) and I pointed out earlier that it can not perhaps
always be done with Get+Save.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-07  7:34                                   ` Drew Adams
@ 2005-02-07 17:28                                     ` Drew Adams
  2005-02-07 20:23                                       ` Robert J. Chassell
  2005-02-07 20:26                                       ` Lennart Borgman
  0 siblings, 2 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-07 17:28 UTC (permalink / raw)


If we do split Erase Customization in two: a) "Get All" > "Standard" plus b)
"Save All", then there is the question of how "Save All" should act wrt
values in the buffer that happen to be the same as the standard values.

Two possibilities:

1. Save is smart wrt `standard', recognizes equality between standard values
and values to be "saved", and reworks the user's custom file much as Erase
Customization does today.

2. Save is dumb, and always saves the values (edit fields) in the buffer to
the user's custom file.

It is the difference between a pointer and a copy:

The meaning of #1 is to maintain the standard value in future sessions.
Instead of a copy of the current `standard' value being saved, what would
really be saved is an indication that the `standard' value is to be used -
whatever the current standard value is at the time `custom-set-variables' is
executed. (We will need to fix some of the pbs already discussed, before
this will work correctly.)

The meaning of #2 is to take a snapshot of the current `standard' values
(those in the buffer) and save those value copies to the custom file.

When I made the suggestion to split Erase Customization, I had #1 in mind
(smart save, that is, no change to the Erase Customization behavior), but
now I think that this should perhaps be a user choice, possibly on a
case-by-case basis. A user might well somtimes want to Get the Standard
value and then save that value, whether or not it happens to stay the
`standard'.

For save operations on multiple options (Save All button and menu item), we
could provide radio buttons for the two choices in the buffer (or in the
menu). For save operations on a single option, we could provide two
different menu items.

OTOH, it might be confusing to combine these two notions under the name
"Save" - #2 is not at all a Save operation, in fact. With this
consideration, perhaps "Save" should mean save, and we should have a
separate button/item called something like "All Standard from Now On". Yes,
this is a return to Erase Customization, I guess.

What do others think?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-07 16:23                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-07 20:22                                       ` Robert J. Chassell
  2005-02-07 20:29                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-07 20:22 UTC (permalink / raw)


    It is worse than that - since .emacs was not run Custom can not
    really know where to save and should just say so.  Or, do you mean
    that Custom did overwrite your .emacs?

No, this user has no .emacs file; this .emacs file was created
automatically.

The `custom-set-*' functions were designed to write automatically into
your initialization file, which is .emacs by default.  (You can change
it by setting `user-init-file' to another value.)

When you do not have an initialization file, the functions create a
.emacs file and write into it.

As of today's GNU Emacs CVS snapshot, Mon, 2005 Feb  7  14:18 UTC
GNU Emacs 21.3.50.51 (i686-pc-linux-gnu, GTK+ Version 2.4.14)
a .emacs file can contain either

    (setq next-line-add-newlines t)
or
    (custom-set-variables
     '(next-line-add-newlines t))

The effect is the the same.  

When the initialization file contains two or more variable setting
expressions, the last one takes precedence.

Mostly, people write `setq' statements in their .emacs file to
customize them, although I get the impression that a couple of people
here are depending more on the `custom-set-*' functions.

People are encouraged to write their own `setq' statements for
customization.  Otherwise, there computer will look very mysterious.
Emacs Lisp, at least its simple expressions, has the virtue of being
understandable by just about any one.

But some people use the `custom-set-*' functions since they do not yet
know how to use `setq' or because they do not understand new features,
like faces.

For example, I do not know how to set faces with `setq'.  So I use
`custom-set-faces' in two places in my .emacs file instead.  In one of
them, where I defined `bobs-w3-font-hook', I edited the expression
normally.  (That looks nice.... :)

In the other, where I set the `bold' face and others, I use the
`custom-set-faces' graphic user interface and let it write my .emacs
file automatically.  (The automatic writing produces ugly looking code
... :(

(Obviously, it would be pleasant and useful to fix ugly code
production; but that fix is not as important as others that need
doing.)

Clearly, the phrase "Erase All" should mean "Erase All
Customizations".  This means converting your `setq' and `custom-set-*'
expressions to their default values, deleting your defuns and anything
else in your initialization file.

Worse, since the Emacs provided by the distribution contains default
values, as it must, "Erase All" cannot actually mean erase everything,
but must mean "Reset All to Default Values".

So I do not think the word "Erase" should be part of the function name
or on any menu at all.  `Reset to Default' is much more accurate.
That phrase works both with the encouraged customization in which you
manually edit an initialization file and with customization in which a
value is written automatically into that initialization file.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-07 17:28                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
@ 2005-02-07 20:23                                       ` Robert J. Chassell
  2005-02-07 20:26                                       ` Lennart Borgman
  1 sibling, 0 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-07 20:23 UTC (permalink / raw)


   If we do split Erase Customization in two: a) "Get All" > "Standard" plus b)
   "Save All", then there is the question of how "Save All" should act wrt
   values in the buffer that happen to be the same as the standard values.

Clearly, when we tell Emacs to go to the default, it should do so.
That means deleting everything that is in a .emacs file and putting in
a commented-out statement that says

  ;; All customizations have been reset to the default.

It makes no sense to copy the default values from the Emacs sources to
the initialization file.

It does make sense to remind a person that he or she once had
customized Emacs, but decided to get rid of them.  (And presumably,
the old customizations will be saved in a back up file; that is a
benefit of rewriting the initialization file with just a comment in
it.)

   ... on a case-by-case basis. A user might well somtimes want to Get
   the Standard value and then save that value ...

That is a very different action than getting rid of all
customizations.  That involves deleting only the existing
initialization expression.  The other `setq', `custom-set-*', `defun',
etc. expressions remain.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-07 17:28                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
  2005-02-07 20:23                                       ` Robert J. Chassell
@ 2005-02-07 20:26                                       ` Lennart Borgman
  2005-02-08 11:46                                         ` Richard Stallman
  1 sibling, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-07 20:26 UTC (permalink / raw)


----- Original Message ----- 
From: "Drew Adams" <drew.adams@oracle.com>

> If we do split Erase Customization in two: a) "Get All" > "Standard" plus
b)
> "Save All", then there is the question of how "Save All" should act wrt
> values in the buffer that happen to be the same as the standard values.
>
> Two possibilities:
>
> 1. Save is smart wrt `standard', recognizes equality between standard
values
> and values to be "saved", and reworks the user's custom file much as Erase
> Customization does today.
>
> 2. Save is dumb, and always saves the values (edit fields) in the buffer
to
> the user's custom file.
>
> It is the difference between a pointer and a copy:

I think the possibility in some way to Erase C should be kept. I said before
that I think 1 is a bit obscure, but maybe I was wrong there. If instead of
comparing the values a flag to tell that the standard value was fetched it
can be ok I guess.

Then there is the question whether the user should be asked when saving
whether to erase the entries in custom-file or not. I believe he/she should
be asked, but with only one question for multiple options. I believe this
will be more clear for the user without too much burden.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that changeuser'scustomfileshouldaskforconfirmation
  2005-02-07 20:22                                       ` Robert J. Chassell
@ 2005-02-07 20:29                                         ` Lennart Borgman
  2005-02-08 11:46                                           ` Richard Stallman
  0 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-07 20:29 UTC (permalink / raw)


----- Original Message ----- 
From: "Robert J. Chassell" <bob@rattlesnake.com>



>     It is worse than that - since .emacs was not run Custom can not
>     really know where to save and should just say so.  Or, do you mean
>     that Custom did overwrite your .emacs?
>
> No, this user has no .emacs file; this .emacs file was created
> automatically.

I think this is a bug. Custom should just say that it can not save because
it do not know where if you started emacs with -Q.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03 19:30                         ` Drew Adams
  2005-02-03 19:54                           ` Lennart Borgman
@ 2005-02-07 20:51                           ` Richard Stallman
  2005-02-08 20:37                             ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
  1 sibling, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-07 20:51 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, storm,
	snogglethorpe, miles

	<Set> "F => C", and then (sometime later) sets option Y on the same
	page, and then does <Save> "F => C,S", the effect is that the change
	to X is also saved.  This may be highly confusing to a user.

    Good point. We need to somehow make crystal clear that the buttons and
    menubar menu items apply to _each_ option in the buffer. Possible ways
    include 1) using the word "All" in menu and button names and 2) asking
    for confirmation, warning that _all_ options are concerned.

It could display the list of options that will be saved,
and ask for confirmation, much as Dired does when you operate
on marked files.

    Clear All is not the right name for this, in any case. The term
    "Clear" commonly refers to merely emptying an edit field. We don't
    have such an operation (and we don't need it) - the closest operation
    we have is what you are calling Cancel. Cancel and "Clear All" will be
    confused.

I'm not sure what you have in mind for this operation to do.
Could you say?

	C => F   (Reset from Current)
	S => F   (Reset from Saved)
	D => F   (Reset from Standard)

    Using the combined Reset buttons would mean we have only Set, Save,
    and Reset.

    Any reset action should display a feedback message saying 1) that
    (all) the _edit fields_ have been reset from <source> and 2) you can
    _set_ the current values to these fields with Set.

I wouldn't use the term "reset" for these.  I am not sure whether
the change from S => F,C into S => F is a good idea.

	I still believe "Erase" is needed. Maybe "Erase All"? It
	should of course ask for confirmation. (It does not belong
	under "Get All".)

    By "Erase" do you mean the current Erase Customization functionality or
    something else? I thought that we had more or less agreed to separate the
    two functionalities that are mixed today in Erase Customization.

Yes.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that changeuser'scustomfileshouldaskforconfirmation
  2005-02-07 20:29                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-08 11:46                                           ` Richard Stallman
  0 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-08 11:46 UTC (permalink / raw)
  Cc: bob, emacs-devel

    I think this is a bug. Custom should just say that it can not save because
    it do not know where if you started emacs with -Q.

Yes.  It could also omit the "Save" buttons and disable the "Save"
menu items.

Would someone like to implement that?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-07 20:26                                       ` Lennart Borgman
@ 2005-02-08 11:46                                         ` Richard Stallman
  0 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-08 11:46 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    If we do split Erase Customization in two: a) "Get All" > "Standard" plus
    
    "Save All", then there is the question of how "Save All" should act wrt
    values in the buffer that happen to be the same as the standard values.
    
    Two possibilities:
    
    1. Save is smart wrt `standard', recognizes equality between standard
    lues
    and values to be "saved", and reworks the user's custom file much as Erase
    Customization does today.

That is definitely the right way to do it.

If the "Get standard value" command puts the variable into a
state almost the same as never having been set, saving it
should get the right results.  This state would be almost the
same as the usual "set" state, except that it would record
a need to save the variable.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-07 20:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
@ 2005-02-08 20:37                             ` Drew Adams
  0 siblings, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-08 20:37 UTC (permalink / raw)


    	<Set> "F => C", and then (sometime later) sets option Y on the same
    	page, and then does <Save> "F => C,S", the effect is that the change
    	to X is also saved.  This may be highly confusing to a user.

        Good point. We need to somehow make crystal clear that the
        buttons and menubar menu items apply to _each_ option in
        the buffer. Possible ways include 1) using the word "All"
        in menu and button names and 2) asking for confirmation,
        warning that _all_ options are concerned.

    It could display the list of options that will be saved,
    and ask for confirmation, much as Dired does when you operate
    on marked files.

Yes, why not.

        Clear All is not the right name for this, in any case. The term
        "Clear" commonly refers to merely emptying an edit field. We don't
        have such an operation (and we don't need it) - the closest
        operation we have is what you are calling Cancel. Cancel and
        "Clear All" will be confused.

    I'm not sure what you have in mind for this operation to do.
    Could you say?

Clear All was from Kim's message:

        The <Clear All> button first asks the user for confirmation.
        If ok it does "D => F"  (does not update C or S).
        It then prints a message
           Remember to use <Set> or <Save> to activate/save the values.

IOW, it does Get Standard.

    	C => F   (Reset from Current)
    	S => F   (Reset from Saved)
    	D => F   (Reset from Standard)

        Using the combined Reset buttons would mean we have only Set, Save,
        and Reset.

        Any reset action should display a feedback message saying 1) that
        (all) the _edit fields_ have been reset from <source> and 2) you can
        _set_ the current values to these fields with Set.

    I wouldn't use the term "reset" for these.

Agreed. In a later mail (2/6), I proposed this (adopting Miles's suggestion
of Get):

         Set All          (F => C)
         Save All         (F => C,S)
         Get All
           Standard       (D => F)
           Saved          (S => F)
           Current        (C => F)

        1. Each button name includes "All".
           Likewise for menu-bar menu items.
        2. The "resetting" actions only fill the edit field;
           they do not set the current value.
        3. The "resetting" actions are combined in a button menu
           (pulldown list).

    I am not sure whether
    the change from S => F,C into S => F is a good idea.

Agreed. See proposal above.

    	I still believe "Erase" is needed. Maybe "Erase All"? It
    	should of course ask for confirmation. (It does not belong
    	under "Get All".)

        By "Erase" do you mean the current Erase Customization
        functionality or
        something else? I thought that we had more or less agreed
        to separate the
        two functionalities that are mixed today in Erase Customization.

    Yes.

See my other, "New tack" message today. Instead of removing things from the
custom file to remove customizations and return to standard values, why not
just add a declaration to custom-set-variables (at the _end_ of the file)
that the standard values should be used.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-07  5:32                               ` Drew Adams
  2005-02-07  7:25                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-09  8:11                                 ` Richard Stallman
  2005-02-09 13:31                                   ` Robert J. Chassell
  2005-02-09 14:12                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  1 sibling, 2 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-09  8:11 UTC (permalink / raw)
  Cc: emacs-devel

     Set All          (F => C)
     Save All         (F => C,S)
     Get All
       Standard       (D => F)
       Saved          (S => F)
       Current        (C => F)

This is clean and symmetric, and I agree with the plan to replace
Erase Customizations with Get All Standard Values.  However, the
command Reset to Saved is a clean and useful command, and I think that
replacing it with Get All Saved Values would be a step backwards.

How to get the best of both worlds?  Perhaps like this:

     Set All          (F => C)
     Save All         (F => C,S)
     Get All
       Standard       (D => F,C)
       Saved          (S => F,C)
       Current        (C => F,C)

This means that the last two commands are equivalent to the two
existing Reset commands.  (C => F,C is equivalent to C => F, too.)
However, the Get All Standard Values command would be different from
the existing Erase Customizations command (which does D => F,C,S).

Another idea is this:

     Set All          (F => C)
     Save All         (F => C,S)
     Reset to Saved (S => F,C)
     Get All
       Standard       (D => F)
       Saved          (S => F)
       Current        (C => F)

What do people think?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-07 14:15                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
  2005-02-07 16:23                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-09  8:11                                     ` Richard Stallman
  2005-02-09 13:29                                       ` Robert J. Chassell
  1 sibling, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-09  8:11 UTC (permalink / raw)
  Cc: emacs-devel

Do these changes fix the two problems?


*** cus-edit.el	30 Jan 2005 06:05:44 -0500	1.209
--- cus-edit.el	09 Feb 2005 02:59:47 -0500	
***************
***************
*** 1299,1305 ****
    (widget-create 'push-button
  		 :tag "Save for Future Sessions"
  		 :help-echo "\
! Make your editing in this buffer take effect for future Emacs sessions."
  		 :action (lambda (widget &optional event)
  			   (Custom-save)))
    (if custom-reset-button-menu
--- 1396,1403 ----
    (widget-create 'push-button
  		 :tag "Save for Future Sessions"
  		 :help-echo "\
! Make your editing in this buffer take effect for future Emacs sessions.
! This updates your Emacs initialization file or creates a new one one."
  		 :action (lambda (widget &optional event)
  			   (Custom-save)))
    (if custom-reset-button-menu
***************
*** 3720,3738 ****
  (defun custom-file ()
    "Return the file name for saving customizations."
    (or custom-file
!       (let ((user-init-file user-init-file)
! 	    (default-init-file
! 	      (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")))
! 	(when (null user-init-file)
! 	  (if (or (file-exists-p default-init-file)
! 		  (and (eq system-type 'windows-nt)
! 		       (file-exists-p "~/_emacs")))
! 	      ;; Started with -q, i.e. the file containing
! 	      ;; Custom settings hasn't been read.  Saving
! 	      ;; settings there would overwrite other settings.
! 	      (error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
! 	  (setq user-init-file default-init-file))
! 	user-init-file)))
  
  (defun custom-save-delete (symbol)
    "Visit `custom-file' and delete all calls to SYMBOL from it.
--- 3801,3811 ----
  (defun custom-file ()
    "Return the file name for saving customizations."
    (or custom-file
!       user-init-file
!       ;; Started with -q, i.e. the file containing
!       ;; Custom settings hasn't been read.  Saving
!       ;; settings there would overwrite other settings.
!       (error "Saving settings is not allowed in \"emacs -q\"")))
  
  (defun custom-save-delete (symbol)
    "Visit `custom-file' and delete all calls to SYMBOL from it.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-09  8:11                                     ` Customize buttons that change user's customfileshouldaskforconfirmation Richard Stallman
@ 2005-02-09 13:29                                       ` Robert J. Chassell
  0 siblings, 0 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-09 13:29 UTC (permalink / raw)


    Do these changes fix the two problems?

This works fine for me, except for a typo,
two instances of the word `one'.

    ! This updates your Emacs initialization file or creates a new one one."

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-09  8:11                                 ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
@ 2005-02-09 13:31                                   ` Robert J. Chassell
  2005-02-09 17:27                                     ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
  2005-02-09 14:12                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  1 sibling, 1 reply; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-09 13:31 UTC (permalink / raw)


   Another idea is this:

        Reset to Saved (S => F,C)

This interface is not necessary and is a bit confusing.  The following
interface wording is better:

        Set All          (F => C)
        Save All         (F => C,S)

        Get All that can be automatically written by custom-set-*

          Standard       (D => F,C)
          Saved          (S => F,C)
          Current        (C => F,C)


Presumably, `Set All' means `evaluate new values specified in your
initialization file, both those automatically written by custom-set-*
as well as those you have written manually, but do not write the new
initialization file'.

Presumably, `Save All' means simply `automatically write custom-set-*
values into your initialization file, write that file, and then
evaluate it'.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-09  8:11                                 ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  2005-02-09 13:31                                   ` Robert J. Chassell
@ 2005-02-09 14:12                                   ` Lennart Borgman
  2005-02-09 17:17                                     ` Drew Adams
  2005-02-10 18:39                                     ` Richard Stallman
  1 sibling, 2 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-09 14:12 UTC (permalink / raw)
  Cc: emacs-devel

----- Original Message ----- 
From: "Richard Stallman" <rms@gnu.org>


>      Set All          (F => C)
>      Save All         (F => C,S)
>      Get All
>        Standard       (D => F)
>        Saved          (S => F)
>        Current        (C => F)
>
> This is clean and symmetric, and I agree with the plan to replace
> Erase Customizations with Get All Standard Values.  However, the
> command Reset to Saved is a clean and useful command, and I think that
> replacing it with Get All Saved Values would be a step backwards.
>
> How to get the best of both worlds?  Perhaps like this:
>
>      Set All          (F => C)
>      Save All         (F => C,S)
>      Get All
>        Standard       (D => F,C)
>        Saved          (S => F,C)
>        Current        (C => F,C)

I believe the logical structure Miles first suggested (essentially the first
one above) with the enhancement above with a single "Get All"-button is the
best. It gives the possibility to preview the values before setting them.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-09 14:12                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-09 17:17                                     ` Drew Adams
  2005-02-10 18:39                                     ` Richard Stallman
  1 sibling, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-09 17:17 UTC (permalink / raw)


    >      Set All          (F => C)
    >      Save All         (F => C,S)
    >      Get All
    >        Standard       (D => F)
    >        Saved          (S => F)
    >        Current        (C => F)
    >
    > This is clean and symmetric, and I agree with the plan to replace
    > Erase Customizations with Get All Standard Values.  However, the
    > command Reset to Saved is a clean and useful command, and I think that
    > replacing it with Get All Saved Values would be a step backwards.
    >
    > How to get the best of both worlds?  Perhaps like this:
    >
    >      Set All          (F => C)
    >      Save All         (F => C,S)
    >      Get All
    >        Standard       (D => F,C)
    >        Saved          (S => F,C)
    >        Current        (C => F,C)

    I believe the logical structure Miles first suggested
    (essentially the first
    one above) with the enhancement above with a single "Get
    All"-button is the
    best. It gives the possibility to preview the values before
    setting them.

I agree (obviously).

I could live with the second set of buttons, except that they all _set_ the
current value, so they should be called Set All *, which produces confusion
with F => C.

         Set All          (F => C)
         Save All         (F => C,S)
         Reset to Saved (S => F,C)
         Get All
           Standard       (D => F)
           Saved          (S => F)
           Current        (C => F)

No; I think we should avoid Reset to Saved.

First, because it uses the confusing term "Reset" (which means other things
in many preference editors). Second, it is simply Get All Saved followed by
Set All, which is just two clicks and is much clearer. I don't see the
disadvantage of the first group above. Why is F => C,S helpful/needed?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-09 13:31                                   ` Robert J. Chassell
@ 2005-02-09 17:27                                     ` Drew Adams
  2005-02-09 20:31                                       ` Robert J. Chassell
  0 siblings, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-09 17:27 UTC (permalink / raw)


            Set All          (F => C)
            Save All         (F => C,S)

            Get All that can be automatically written by custom-set-*

What is the nuance here? Just what is _not_ being gotten (what values cannot
be automatically written by custom-set*)?

              Standard       (D => F,C)
              Saved          (S => F,C)
              Current        (C => F,C)


    Presumably, `Set All' means `evaluate new values specified in your
    initialization file, both those automatically written by custom-set-*
    as well as those you have written manually, but do not write the new
    initialization file'.

I don't understand this. Set All (F=>C) means set all current values (C) to
the values shown in the edit fields (F). What does this have to do with the
init file?

    Presumably, `Save All' means simply `automatically write custom-set-*
    values into your initialization file, write that file, and then
    evaluate it'.

I was with you up until the last clause, "and then evaluate it". I don't
believe that is the current behavior or what is expressed by F=>C,S (set
current values from edit fields and save edit fields to custom file).
Evaluating the custom file would do a lot more than F=>C, and I expect that
that would introduce unwanted behavior.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-09 17:27                                     ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
@ 2005-02-09 20:31                                       ` Robert J. Chassell
  2005-02-09 21:27                                         ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
  0 siblings, 1 reply; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-09 20:31 UTC (permalink / raw)



   I don't understand this. Set All (F=>C) means set all current
   values (C) to the values shown in the edit fields (F). What does
   this have to do with the init file?

Everything is written to the init file (or files loaded from it); that
is where customization forms are evaluated.  So `Set All (F=>C)' means
to set in the init file those values changed by customize.  

Or are you suggesting that the form be evaluated in some place a user
cannot see?  I can understand doing that; but it makes it less likely
that the person will learn to write simple forms.  Customization is,
after all, an automatic expression writing and evaluating function.
Not only do people like to see what the Lisp expression looks like, we
want to encourage them to do so!  After all, that leads to hacking.

The customize automatic expression writing action is rather like the
(not very good) function that came with Calc mode more than a decade
ago and since been removed.  The difference is that the Calc mode
automatic expression writing function wrote `defun' expressions and
could handle anything you could put in a keyboard macro of the time;
the Customization functions write `custom-set-*' expressions instead.

       Presumably, `Save All' means simply `automatically write
       custom-set-* values into your initialization file, write that
       file, and then evaluate it'.

   I was with you up until the last clause, "and then evaluate it". 

Well, when you `Save for Future Sessions' the new value takes effect
right away.  The expression is evaluated.  At least, that is what
happens now.  (I just checked.)

So save `all' must mean that _all_ customizations are saved and also
evaluated.  That means saving and evaluating your .emacs file.

Perhaps the button should be reworded to `Set and Save All'.  That is
clearer to me; I prefer this wording.  But it takes more room.  The
help (or `tip') on the button or function should explain that saving
the init file also involves evaluating it, so the new valued become
effective, that is, they become set as well as saved.

Actually, the more I think about it, the more I like the rewording to
`Set and Save All' even if it is longer.  After all, you can set
values in your initialization file without saving it; and you can save
it without evaluating it.  You have led to a good point.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-09 20:31                                       ` Robert J. Chassell
@ 2005-02-09 21:27                                         ` Drew Adams
  2005-02-10 14:42                                           ` Robert J. Chassell
  0 siblings, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-09 21:27 UTC (permalink / raw)


       I don't understand this. Set All (F=>C) means set all current
       values (C) to the values shown in the edit fields (F). What does
       this have to do with the init file?

    Everything is written to the init file (or files loaded from it); that
    is where customization forms are evaluated.  So `Set All (F=>C)' means
    to set in the init file those values changed by customize.

I don't think so. I don't think that's what happens now, at least, for Set.
"Setting" something in the init file is really (automatically editing and)
_saving_ it. The term "set" refers today to setting the _current value_.

    Or are you suggesting that the form be evaluated in some place a user
    cannot see?  I can understand doing that; but it makes it less likely
    that the person will learn to write simple forms.  Customization is,
    after all, an automatic expression writing and evaluating function.
    Not only do people like to see what the Lisp expression looks like, we
    want to encourage them to do so!  After all, that leads to hacking.

See above. AFAIK, Set is not involved with custom-set* in any way; it simply
does F=>C.

    The customize automatic expression writing action is rather like the
    (not very good) function that came with Calc mode more than a decade
    ago and since been removed.  The difference is that the Calc mode
    automatic expression writing function wrote `defun' expressions and
    could handle anything you could put in a keyboard macro of the time;
    the Customization functions write `custom-set-*' expressions instead.

           Presumably, `Save All' means simply `automatically write
           custom-set-* values into your initialization file, write that
           file, and then evaluate it'.

       I was with you up until the last clause, "and then evaluate it".

    Well, when you `Save for Future Sessions' the new value takes effect
    right away.  The expression is evaluated.  At least, that is what
    happens now.  (I just checked.)

    So save `all' must mean that _all_ customizations are saved and also
    evaluated.  That means saving and evaluating your .emacs file.

    Perhaps the button should be reworded to `Set and Save All'.  That is
    clearer to me; I prefer this wording.  But it takes more room.  The
    help (or `tip') on the button or function should explain that saving
    the init file also involves evaluating it, so the new valued become
    effective, that is, they become set as well as saved.

Save does mean set and save, so, yes, the current value is updated to the
same value that is written to your custom file. That is not the same thing
as evaluating your entire .emacs file, however.

I personally think that "Save" is clear enough, but you are correct that the
semantics behind the button are set and save. The tooltip and doc string
could make that explicit, as you suggest.

    Actually, the more I think about it, the more I like the rewording to
    `Set and Save All' even if it is longer.  After all, you can set
    values in your initialization file without saving it; and you can save
    it without evaluating it.  You have led to a good point.

How can you save Customize settings without also setting their current
values (today)? And, again, changing a value in your init file is not what
is meant currently by "set"; "set" refers to setting the current values.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-09 21:27                                         ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
@ 2005-02-10 14:42                                           ` Robert J. Chassell
  2005-02-10 15:20                                             ` Kim F. Storm
  2005-02-11 21:12                                             ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Drew Adams
  0 siblings, 2 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-10 14:42 UTC (permalink / raw)


    ... the current value is updated to the same value that is written
    to your custom file. That is not the same thing as evaluating your
    entire .emacs file, however.

I am refering to `All'.  Clearly, individual settings should not
involve evaluating your entire .emacs file.

    How can you save Customize settings without also setting their
    current values (today)? And, again, changing a value in your init
    file is not what is meant currently by "set"; "set" refers to
    setting the current values.

Just by saving them:  for example, just now I changed my bold face
from 

     '(bold ((t (:background "DodgerBlue4" :foreground "PaleGreen"))))
to
     '(bold ((t (:background "DodgerBlue4" :foreground "Red"))))

and saved it.  No, I did not set it.  (The red foreground would look
ghastly if I did.  I am going to change the face back before I restart
this Emacs.)  So the new setting is saved but not set.

I am not sure whether the user interface for automatically writing
custom-set-faces expressions permits you to save without setting
immediately; but that is a different matter.  It is straight forward
to save any customization without setting it just then.

However, unlike Emacs Lisp expressions saved in regular libraries,
Emacs Lisp expressions used for customization are saved in your .emacs
file.  That file is automatically loaded each time you start a new
instance of Emacs.  So customized saving implies (eventual)
evaluation.  

If we do not offer a `Save for the future, but not for this session'
option for the automatic writing user interface, it might reduce
potential confusion just a little to say `Set and Save All' and
besides saving, set for current use as well as after the next start.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 14:42                                           ` Robert J. Chassell
@ 2005-02-10 15:20                                             ` Kim F. Storm
  2005-02-11 21:12                                             ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Drew Adams
  1 sibling, 0 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-10 15:20 UTC (permalink / raw)
  Cc: emacs-devel

"Robert J. Chassell" <bob@rattlesnake.com> writes:

>     How can you save Customize settings without also setting their
>     current values (today)? And, again, changing a value in your init
>     file is not what is meant currently by "set"; "set" refers to
>     setting the current values.
>
> Just by saving them:  for example, just now I changed my bold face
> from 
>
>      '(bold ((t (:background "DodgerBlue4" :foreground "PaleGreen"))))
> to
>      '(bold ((t (:background "DodgerBlue4" :foreground "Red"))))
>
> and saved it.  No, I did not set it.  (The red foreground would look
> ghastly if I did.  I am going to change the face back before I restart
> this Emacs.)  So the new setting is saved but not set.

So you say that Customize has a "save" operation that does "F => S"?

To me, the only sensible save operation is "F => C,S".

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
@ 2005-02-10 17:25 Robert J. Chassell
  2005-02-10 18:25 ` David Kastrup
                   ` (2 more replies)
  0 siblings, 3 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-10 17:25 UTC (permalink / raw)


Customize is a can of worms.  But the worms can improve the garden if
handled rightly!

As others feared years ago, I now fear that some will come to depend
on their .emacs file being written automatically by Customize.  They
will lose or not gain an understanding of the technology.  This
applies especially to people who are not programmers and who do not
wish to become programmers.

Customize should always show what it is automatically writing, just as
menu items always show key strokes, so anyone can become more expert
and more efficient if he or she wants.

This does not force anyone to learn anything, but it makes that
learning easy.  The person faces a low hill rather than a steep
mountain.

For a single value, 

    `Set for Current Session'

should show in the value window the humanly readable version of what
is set, such as

    (custom-set-variables
     ;; ...
     '(baud-rate 38400)
     ;; ... )

which takes a minimum of four lines.  (The current interface requires
one line, but does not show the complete expression.)  This need for
extra lines is a problem that I do not think we can avoid.

The commentary should say, as it does now,

    you have set this option, but not saved it for future sessions.


For future sessions, for a single value, we should replace `Save for
Future Sessions' with the more accurate statement

    `Set and Save', 

write the four line expression in the value window, and say in the
commentary

    you have set this option and saved it in your initialization file

So you would see in your  *Customize Face: bold*  buffer

    (custom-set-faces
     ;; ...
     '(bold ((t (:background "DodgerBlue4" :foreground "PaleGreen"))))
     ;; ... )

and the same expression, with the other custimized faces, too, in your
.emacs file.

As for `All': when using the automatic writing feature for
customization, that only makes sense as both a set and a save.
Otherwise, novices might inadvertently come to think that you need to
start a new instance of Emacs to gain new customizations.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 17:25 Customize buttons that change user'scustomfileshouldaskforconfirmation Robert J. Chassell
@ 2005-02-10 18:25 ` David Kastrup
  2005-02-10 19:01 ` Stefan Monnier
  2005-02-10 21:39 ` Kim F. Storm
  2 siblings, 0 replies; 157+ messages in thread
From: David Kastrup @ 2005-02-10 18:25 UTC (permalink / raw)
  Cc: emacs-devel

"Robert J. Chassell" <bob@rattlesnake.com> writes:

> Customize is a can of worms.  But the worms can improve the garden
> if handled rightly!
>
> As others feared years ago, I now fear that some will come to depend
> on their .emacs file being written automatically by Customize.

So what?

> They will lose or not gain an understanding of the technology.

So what?

> This applies especially to people who are not programmers and who do
> not wish to become programmers.

I don't see why I should disregard their wishes.

> Customize should always show what it is automatically writing, just
> as menu items always show key strokes, so anyone can become more
> expert and more efficient if he or she wants.

I disagree very strongly.  Customize is more complicated than just a
few setq-default (we have setter functions and stuff), and so all you
can say is what custom-set-variable action is being taken.  And
anybody who wants or needs to know this for editing a .emacs file can
look right into the .emacs file.

> This does not force anyone to learn anything, but it makes that
> learning easy.

It is distracting for no good reason.  I think this as misguided as
the wish of a mechanic that no dashboard should conceil the
electronics of a car.  The whole point of the dashboard is making it
possible to focus on what you need for your daily tasks.  The purpose
of Customize is to channel the operations of the user into a
controlled subset that works.  It is a bad idea to suggest to the user
that he is gaining anything by tampering around himself: missing or
too many parens, additional or missing quoting and so on can render a
.emacs file completely inoperative.  The whole story is there in the
Emcas Lisp manual if you desire it.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-09 14:12                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  2005-02-09 17:17                                     ` Drew Adams
@ 2005-02-10 18:39                                     ` Richard Stallman
  2005-02-10 21:56                                       ` Kim F. Storm
  1 sibling, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-10 18:39 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    I believe the logical structure Miles first suggested (essentially the first
    one above) with the enhancement above with a single "Get All"-button is the
    best. It gives the possibility to preview the values before setting them.

Yes, it does that.  However, it is also more cumbersome to use.
Perhaps we should ask the users which one they prefer.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 17:25 Customize buttons that change user'scustomfileshouldaskforconfirmation Robert J. Chassell
  2005-02-10 18:25 ` David Kastrup
@ 2005-02-10 19:01 ` Stefan Monnier
  2005-02-10 22:49   ` Robert J. Chassell
  2005-02-10 21:39 ` Kim F. Storm
  2 siblings, 1 reply; 157+ messages in thread
From: Stefan Monnier @ 2005-02-10 19:01 UTC (permalink / raw)
  Cc: emacs-devel

> should show in the value window the humanly readable version of what
> is set, such as

>     (custom-set-variables
>      ;; ...
>      '(baud-rate 38400)
>      ;; ... )

Whether we want to teach users or not, the above is a bad idea: it is not
good elisp code and noone should write such a thing by hand.  If Custom
wants to show "here's how you can do it by hand" it should show (setq
baud-rate 38400) or something like that (which happens to take only
one-line, by  the way).


        Stefan

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 17:25 Customize buttons that change user'scustomfileshouldaskforconfirmation Robert J. Chassell
  2005-02-10 18:25 ` David Kastrup
  2005-02-10 19:01 ` Stefan Monnier
@ 2005-02-10 21:39 ` Kim F. Storm
  2005-02-10 23:45   ` Robert J. Chassell
  2 siblings, 1 reply; 157+ messages in thread
From: Kim F. Storm @ 2005-02-10 21:39 UTC (permalink / raw)
  Cc: emacs-devel

"Robert J. Chassell" <bob@rattlesnake.com> writes:

> Customize is a can of worms.  But the worms can improve the garden if
> handled rightly!

I don't see how the changes you suggest can be seen as an improvement.
Quite the opposite.

IMO, the beauty of Customize is that it hides all the nitty gritty details
that no users (novices or experts) need to worry about.


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-10 18:39                                     ` Richard Stallman
@ 2005-02-10 21:56                                       ` Kim F. Storm
  2005-02-11 21:13                                         ` Drew Adams
  2005-02-12  8:37                                         ` Richard Stallman
  0 siblings, 2 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-10 21:56 UTC (permalink / raw)
  Cc: Lennart Borgman, drew.adams, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I believe the logical structure Miles first suggested (essentially the first
>     one above) with the enhancement above with a single "Get All"-button is the
>     best. It gives the possibility to preview the values before setting them.
>
> Yes, it does that.  However, it is also more cumbersome to use.

The problem with "S => C,F" compared to "S => F" is that you may have
saved a set of parameters that does something stupid (e.g. select
black on black text for the default font).

Being able to load such values and edit them before saving them
is very useful.


I don't know if "S =>" imply that we actually read the values from the
custom-file (e.g. .emacs) or if it just restores the value that was
initially read from that file, or the last value that was written by
this emacs to that file.


If it implies reading from the file, this could be used to load
values from a diffent custom-file (to see what they are) before
actually using them.

> Perhaps we should ask the users which one they prefer.

I prefer "S => F" with a message in the echo area telling the
user to use "Set All" to apply the values.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 19:01 ` Stefan Monnier
@ 2005-02-10 22:49   ` Robert J. Chassell
  0 siblings, 0 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-10 22:49 UTC (permalink / raw)


    >     (custom-set-variables
    >      ;; ...
    >      '(baud-rate 38400)

   ... the above is a bad idea: it is not good elisp code ... 

I am not going to say it is good code.  (Your `setq' example is
better.)  Unfortunately, that is what is currently written
automatically in one's .emacs file.

Willy-nilly, that is an example of what people see now.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 21:39 ` Kim F. Storm
@ 2005-02-10 23:45   ` Robert J. Chassell
  2005-02-11  0:54     ` David Kastrup
  2005-02-12 18:20     ` Drew Adams
  0 siblings, 2 replies; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-10 23:45 UTC (permalink / raw)


   IMO, the beauty of Customize is that it hides all the nitty gritty
   details that no users (novices or experts) need to worry about.

Emacs describes itself as

    extensible, 
    customizable, 
    self-documenting, 
    real-time, 
    display.

Nowadays, few environments work just on a line, not on a
two-dimensional display, and few are so slow as to be non-real-time.
The real-time and display features are old.

I presume that most environments have enough built-in documentation. 

But not all environments are as readily extensible and customizable,
even now, a generation later.

For example, I do not know how to extend my Enlightenment window
manager as well as the SCWM window manager.  I know that I can; I just
do not know how to do so readily.

Being able to extend and customize _readily_ is key:  if it is not
easy for me to change characteristics that are not very important to
me, I won't.  I will suffer.  Or, to put the practice more positively,
I will adapt.

However, when it is important that I extend and customize and when it
is easy to extend and customize, I will.

That is why I dislike a car with a dashboard that never let's me see
anything; why I dislike car which requires my mechanic to purchase a
special device to find out what is going on.  

The information should be readily available.  And nowadays, with cheap
displays of a few lines, and with already existing computers, an
`Advanced' or `Mechanics' output has a very low incremental cost.

The key is to satisfy both novices and experts.  (That is why I talked
about an `Advanced' or `Mechanics' output for a car display; mostly,
you don't want it, unless you are an experienced driver or a
mechanic.)

Fortunately, with modern computers and computer displays, it is easier
(but not easy) to satisfy both novices and experts now than in the
past.  Provide a good default interface for novices and also a way for
that novice to become an expert without too much trouble.

Back in 1984, which is now more than 20 years ago, I used a software
program that enabled just this:  it was easy to use the mouse and the
(no longer produced) windowing system to mark and move text.  After I
got used to that, I then tried out the various keyboard commands and
learned those.  They were much faster.  It would have been easier for
me if the menu items had listed the keyboard strokes, as Emacs does,
but the menu did not.

The point is, I went from the easier to the harder, from those forms
of command which were easier to learn but which also wasted my time
(but not in comparison to the mechanical typewriter I had used
previously) to those forms of command which were harder to learn but
the most efficient the technology could provide.

In Emacs, the Customize user interface enables a person to avoid
having to learn to write

    (setq baud-rate 28800)

in his .emacs file, but it should make learning that easy.  After all,
after first writing it, the person may need to change the speed,
perhaps to 38400.

It turns out -- I know this from experience -- that editing an
existing value is often easier and quicker than reusing the Customize
interface.

For example, I found it easier and quicker to see in reality the
difference between "dodgerblue3" and "dodgerblue4" by changing the
number 3 to a 4 in my .emacs file than by changing that number with
the Customize user interface.  (Earlier, I picked "dodgerblue" by
looking at the sample provided by the Customize interface.)

Those who do not wish ever to program in Emacs Lisp should always use
the Customize user interface.  The option to move to a more efficient
user interface should be up to the person.  

In some cases, the cost of learning is higher than the expected
return.  I use the Customize user interface to first set a face.  I do
not understand faces and have not found it worth the effort to learn
about them.

Thus, creating a user interface is difficult.  Not only must it
satisfy expert programmers, like many of the people on this list, it
must satisfy novices and experts who do not know or have forgot.

Although I hardly ever use it, I think the menu interface is
excellent.  It enables you to move, if you wish, from mouse commands
to keystroke commands, and to move readily.  And it tells you some of
the commands that are available, which is useful, too, if you have
forgot or did not know of them.

That is why I think it is so important to create a program that
provides user interfaces for both novices and experts.  That is why
Customize should not only do its job, but make it easy for a person to
learn.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 23:45   ` Robert J. Chassell
@ 2005-02-11  0:54     ` David Kastrup
  2005-02-12  8:38       ` Richard Stallman
  2005-02-12 18:20     ` Drew Adams
  1 sibling, 1 reply; 157+ messages in thread
From: David Kastrup @ 2005-02-11  0:54 UTC (permalink / raw)
  Cc: emacs-devel

"Robert J. Chassell" <bob@rattlesnake.com> writes:

> That is why I dislike a car with a dashboard that never let's me see
> anything; why I dislike car which requires my mechanic to purchase a
> special device to find out what is going on.
>
> The information should be readily available.

You can look into .emacs.  The information is not encrypted, it is not
binary.

> In Emacs, the Customize user interface enables a person to avoid
> having to learn to write
>
>     (setq baud-rate 28800)
>
> in his .emacs file, but it should make learning that easy.  After all,
> after first writing it, the person may need to change the speed,
> perhaps to 38400.
>
> It turns out -- I know this from experience -- that editing an
> existing value is often easier and quicker than reusing the
> Customize interface.

Then edit the value.  The information is not encrypted, it is not
binary.  I have done so on occasion.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that changeuser'scustomfileshouldaskforconfirmation
  2005-02-10 14:42                                           ` Robert J. Chassell
  2005-02-10 15:20                                             ` Kim F. Storm
@ 2005-02-11 21:12                                             ` Drew Adams
  1 sibling, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-11 21:12 UTC (permalink / raw)


        ... the current value is updated to the same value that is written
        to your custom file. That is not the same thing as evaluating your
        entire .emacs file, however.

    I am refering to `All'.  Clearly, individual settings should not
    involve evaluating your entire .emacs file.

"All" refers, in Customize, to all options in the current Customize buffer.
Your .emacs can involve lots of other things. Your .emacs is not currently
eval'd when you do anything in Customize, AFAIK, and it would be a mistake
to reevaluate .emacs, IMO. You are correct, however, that Save in Customize
means Set and Save - that is, those particular options listed in the current
Customize buffer are both set and saved.

        How can you save Customize settings without also setting their
        current values (today)? And, again, changing a value in your init
        file is not what is meant currently by "set"; "set" refers to
        setting the current values.

    Just by saving them:  for example, just now I changed my bold face
    ... to '(bold ((t (:background "DodgerBlue4" :foreground "Red"))))

OK. You're talking about editing _.emacs_ and saving it (correct?). Within
_Customize_, there is no way to Save without also setting, IIUC - that is
what I meant.

    However, unlike Emacs Lisp expressions saved in regular libraries,
    Emacs Lisp expressions used for customization are saved in your .emacs
    file.  That file is automatically loaded each time you start a new
    instance of Emacs.  So customized saving implies (eventual)
    evaluation.

Yes, eval of .emacs occurs upon startup (only).

    If we do not offer a `Save for the future, but not for this session'
    option for the automatic writing user interface, it might reduce
    potential confusion just a little to say `Set and Save All' and
    besides saving, set for current use as well as after the next start.

That is the current (and proposed) behavior: Save (in Customize) means set
and save. I personally think that "Save" is sufficient as the name, but I
agree that all help for the button/menu item should explicitly mention that
it both _sets_ and saves.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-10 21:56                                       ` Kim F. Storm
@ 2005-02-11 21:13                                         ` Drew Adams
  2005-02-12 14:27                                           ` Kim F. Storm
  2005-02-12  8:37                                         ` Richard Stallman
  1 sibling, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-11 21:13 UTC (permalink / raw)


    >     I believe the logical structure Miles first suggested
    >     (essentially the first
    >     one above) with the enhancement above with a single "Get
    >     All"-button is the
    >     best. It gives the possibility to preview the values
    >     before setting them.
    >
    > Yes, it does that.  However, it is also more cumbersome to use.

    The problem with "S => C,F" compared to "S => F" is that you may have
    saved a set of parameters that does something stupid (e.g. select
    black on black text for the default font). Being able to load such
    values and edit them before saving them is very useful.

Yes, that is the reason. In addition, "S => F" is clearer (because simpler).

    I don't know if "S =>" imply that [1] we actually read the values from
the
    custom-file (e.g. .emacs) or if [2] it just restores the value that was
    initially read from that file, or [3] the last value that was written by
    this emacs to that file.

What is the difference between [1] and [3]? I believe that custom-set* is
read from your .emacs ([1] and [3], IIUC). I think [2] would be confusing
behavior: The `saved' value that the user has in his mind should always
correspond to the value that will result if Emacs is restarted (now). That
is, it should correspond to whatever value .emacs reestablishes (unless that
is a `standard' value).

    If it implies reading from the file, this could be used to load
    values from a diffent custom-file (to see what they are) before
    actually using them.

No way to do that has yet been proposed. S=>F means to get the values from
the  custom-set* in the user's .emacs (custom file). There is currently no
way to designate a different library to use as the source of `saved'
settings.

Instead of providing such a feature, I'd suggest that users should just
`M-:' the custom-set* expression of the custom-file in question. IOW, I
don't think we should provide a Customize feature to get the custom-set*
stuff from an arbitrary file. Users who want to do that should be capable of
evaling the custom-set* expression.

If you simply _load_ (e.g. load-library...) a different custom-file (which
is not the same as Get All Saved) sometime after startup, then the values
would of course get set, in addition to the edit fields being filled. In my
proposal, those settings would show up as "Set", precisely so that you can
distinguish them from values established during startup (which show up as
`saved' ("unchanged").

    > Perhaps we should ask the users which one they prefer.

    I prefer "S => F" with a message in the echo area telling the
    user to use "Set All" to apply the values.

Me too.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-10 21:56                                       ` Kim F. Storm
  2005-02-11 21:13                                         ` Drew Adams
@ 2005-02-12  8:37                                         ` Richard Stallman
  2005-02-12  9:14                                           ` Lennart Borgman
  2005-02-12 11:48                                           ` Robert J. Chassell
  1 sibling, 2 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-12  8:37 UTC (permalink / raw)
  Cc: lennart.borgman.073, drew.adams, emacs-devel

    I don't know if "S =>" imply that we actually read the values from the
    custom-file (e.g. .emacs) or if it just restores the value that was
    initially read from that file, or the last value that was written by
    this emacs to that file.

Until you brought this up, I would probably have used the value that
was initially read from that file, unless some other has since been
saved in it.  However, rereading that part of the file could be
a useful feature as you pointed out:

    If it implies reading from the file, this could be used to load
    values from a diffent custom-file (to see what they are) before
    actually using them.


    Being able to load such values and edit them before saving them
    is very useful.

    I prefer "S => F" with a message in the echo area telling the
    user to use "Set All" to apply the values.

If users often want to examine these values before putting them into
effect, then the split-up could be useful.  But if users nearly always
want to Set these values, it would be just a nuisance to have to do so
with a separate operation.

Can we get any guidance on this question from other applications?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-11  0:54     ` David Kastrup
@ 2005-02-12  8:38       ` Richard Stallman
  0 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-12  8:38 UTC (permalink / raw)
  Cc: bob, emacs-devel

    > The information should be readily available.

    You can look into .emacs.  The information is not encrypted, it is not
    binary.

It is a good idea for every program to help users find the internal
data that implements any particular customization.  But since all the
Customize data is together in .emacs, it would be enough to have
one button at the top of every Custom buffer that takes you to
.emacs and goes to the start of the Custom data.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12  8:37                                         ` Richard Stallman
@ 2005-02-12  9:14                                           ` Lennart Borgman
  2005-02-12 11:48                                           ` Robert J. Chassell
  1 sibling, 0 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-12  9:14 UTC (permalink / raw)
  Cc: Drew Adams, Emacs Devel

----- Original Message ----- 
From: "Richard Stallman" <rms@gnu.org>

>     Being able to load such values and edit them before saving them
>     is very useful.
>
>     I prefer "S => F" with a message in the echo area telling the
>     user to use "Set All" to apply the values.
>
> If users often want to examine these values before putting them into
> effect, then the split-up could be useful.  But if users nearly always
> want to Set these values, it would be just a nuisance to have to do so
> with a separate operation.
>
> Can we get any guidance on this question from other applications?

I do not know of any application that distinguishes between Set and Save.
However all operations in "options dialouges" in MS Windows either operates
on the fields or Set+Saves all the field values in the dialouge. The
operations on the field could be "reset" (to value upon entry of the
dialouge, very common), browse for values (dir, files, fairly common),
choosing from a list (fairly common).

This suggests to me that the most intuitive operation would be "S => F".

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12  8:37                                         ` Richard Stallman
  2005-02-12  9:14                                           ` Lennart Borgman
@ 2005-02-12 11:48                                           ` Robert J. Chassell
  2005-02-12 14:58                                             ` Kim F. Storm
  1 sibling, 1 reply; 157+ messages in thread
From: Robert J. Chassell @ 2005-02-12 11:48 UTC (permalink / raw)


A better user interface for the `Customize' feature would show the
current value of a variable or face, the previous and yet earlier
values when applicable, and the value in the distribution.  The value
should not only be listed, but in the case of faces, shown as samples,
as is done now.


        Current  Previous    Yet earlier    Distribution  
         value     value        value         default     
                                               value      
          (in     (from       (from                       
          init    earlier     an even                     
          file)    init       earlier                     
                   file)       init                       
                               file)                      
                                                          
                                                          
Thus, for Mark Ring Max, the buffer among other features might show:

                                                          
        Current  Previous    Yet earlier    Distribution 
         value     value        value         default    
                                                         
           32        24           20            16       

(The `previous' and `yet earlier' entries should be blank when you
have not made previous initializations or customizations.  In this
instance the `current value' is the same as the `distribution default
value'.)

Since the Customization buffer only provides customization for some
objects, namely variables and faces, and does not even write defuns
automatically, it should be renamed the `Partial Customization
buffer'.  

This way, no one would suggest that `Customize All' in a partial
customization buffer should mean `Customize only those items that are
set in this buffer; do not Customize All'.  In particular, novices
mislearn when they come to think that a feature's range is different
than it really is.

Even when a partial customization buffer shows only variables and
faces, no hooks, defuns or keymappings, it would help both novices and
experts to show history -- that is to show the current value in one's
.emacs or other initialization file, previous values from init file
back ups, and the default or standard distribution value (which you
get from `emacs -Q'),

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-11 21:13                                         ` Drew Adams
@ 2005-02-12 14:27                                           ` Kim F. Storm
  2005-02-12 18:04                                             ` Drew Adams
  0 siblings, 1 reply; 157+ messages in thread
From: Kim F. Storm @ 2005-02-12 14:27 UTC (permalink / raw)
  Cc: emacs-devel

"Drew Adams" <drew.adams@oracle.com> writes:

>     I don't know if "S =>" imply that [1] we actually read the values from
> the
>     custom-file (e.g. .emacs) or if [2] it just restores the value that was
>     initially read from that file, or [3] the last value that was written by
>     this emacs to that file.
>
> What is the difference between [1] and [3]?

If custom-file is updated by another emacs instance, [1] != [3].

>     If it implies reading from the file, this could be used to load
>     values from a diffent custom-file (to see what they are) before
>     actually using them.
>
> No way to do that has yet been proposed. S=>F means to get the values from
> the  custom-set* in the user's .emacs (custom file). There is currently no
> way to designate a different library to use as the source of `saved'
> settings.


M-: (setq custom-file "X")
M-x customize
do some editing
save (into X)
M-: (setq custom-file "Y")
get (from ?)

Question is "from X" or "from Y"?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12 11:48                                           ` Robert J. Chassell
@ 2005-02-12 14:58                                             ` Kim F. Storm
  0 siblings, 0 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-12 14:58 UTC (permalink / raw)
  Cc: emacs-devel

"Robert J. Chassell" <bob@rattlesnake.com> writes:

> A better user interface for the `Customize' feature would show the
> current value of a variable or face, the previous and yet earlier
> values when applicable, and the value in the distribution.  The value
> should not only be listed, but in the case of faces, shown as samples,
> as is done now.
>
>
>         Current  Previous    Yet earlier    Distribution  
>          value     value        value         default     
>                                                value      
>           (in     (from       (from                       
>           init    earlier     an even                     
>           file)    init       earlier                     
>                    file)       init                       
>                                file)                      
>                                                           

This is overkill - making the interface more complex for no good reason.

For a customize page with currently 15 values, your suggestion
would raise that to 60

And for a face with 10 attributes, your would show 40 attributes...


As far as I understand the current discussion on Customize, the aim
is to simplify the interface and make the behaviour more in line
with that of other applications.

Your suggestion goes in the opposite direction.  I vote against going
down this route!

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12 14:27                                           ` Kim F. Storm
@ 2005-02-12 18:04                                             ` Drew Adams
  2005-02-12 18:45                                               ` Luc Teirlinck
                                                                 ` (3 more replies)
  0 siblings, 4 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-12 18:04 UTC (permalink / raw)
  Cc: emacs-devel

    >     I don't know if "S =>" imply that [1] we actually read
    >     the values from the
    >     custom-file (e.g. .emacs) or if [2] it just restores the
    >     value that was
    >     initially read from that file, or [3] the last value that
    >     was written by this emacs to that file.
    >
    > What is the difference between [1] and [3]?

    If custom-file is updated by another emacs instance, [1] != [3].

Thanks. I didn't pay attention to the "this emacs".

Since we're dealing with a file (persistence), I would think that [1] would
be the best approach. (I don't know either what we do currently.)

    >     If it implies reading from the file, this could be used to load
    >     values from a diffent custom-file (to see what they are) before
    >     actually using them.
    >
    > No way to do that has yet been proposed. S=>F means to get
    > the values from
    > the  custom-set* in the user's .emacs (custom file). There is
    > currently no
    > way to designate a different library to use as the source of `saved'
    > settings.

    M-: (setq custom-file "X")
    M-x customize
    do some editing
    save (into X)
    M-: (setq custom-file "Y")
    get (from ?)

    Question is "from X" or "from Y"?

Good point. I would think it should be Y.

In any case, we should tell the user just what will happen (with a
dynamically defined tooltip? "Get values from file `Y'") and echo what did
actually happen with a message ("Values read from file `Y'").

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-10 23:45   ` Robert J. Chassell
  2005-02-11  0:54     ` David Kastrup
@ 2005-02-12 18:20     ` Drew Adams
  1 sibling, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-12 18:20 UTC (permalink / raw)


    The key is to satisfy both novices and experts....
    Provide a good default interface for novices and also a way for
    that novice to become an expert without too much trouble....
    That is why Customize should not only do its job, but make
    it easy for a person to learn.

I don't agree with some of the detailed proposals you've made - for example,
I agree with Kim that your history-of-values display would be overkill and
confusing.

However, I do agree that Customize should do these things, in order of
priority:

1. "Do its job", as you put it:

 - make it easy for anyone, including a non-Lisper, to customize options
 - provide an easy-to-use options browser

2. Facilitate learning more about Emacs - Lisp, in particular.

#1 is far more important than #2. #2 should never interfere with #1. In
particular, the UI should not be made more complex in order to promote #2.

But Customize should not act as an obstacle to understanding what's under
the hood - it should facilitate that learning, but not require it or impose
it. Your analogy with menu items that show corresponding key sequences is a
good one. Simple information bridges like that help users be more effective.

As I mentioned long ago, I think that simple links in Customize to a) the
current Lisp value of an option and b) the defining source code, as are
available in `C-h v', would be unobtrusive and quite helpful.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12 18:04                                             ` Drew Adams
@ 2005-02-12 18:45                                               ` Luc Teirlinck
  2005-02-12 21:01                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
  2005-02-14  2:07                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
  2005-02-12 19:03                                               ` Customize buttons that change user's customfileshouldaskforconfirmation Luc Teirlinck
                                                                 ` (2 subsequent siblings)
  3 siblings, 2 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-12 18:45 UTC (permalink / raw)
  Cc: emacs-devel, storm

       M-: (setq custom-file "X")
       M-x customize
       do some editing
       save (into X)
       M-: (setq custom-file "Y")
       get (from ?)

       Question is "from X" or "from Y"?

   Good point. I would think it should be Y.

Absolutely not. `(setq custom-file "Y")' means that you want Custom to
_write_ to Y.  If you want Y to be read you have to load Y.

By the way, loading a file with a second custom-set-variables form is
not something Custom currently expects you to do.  It will work fine
and can be useful, _if_ you know what you are doing.  Some packages
use several files with separate `custom-set-variables' forms.
But, if you do not know Custom really well, unexpected things may happen.

If you want Y to be your Custom file, write:

(setq custom-file "Y")
(load custom-file)

in your .emacs, as the docstring of `custom-file' recommends.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12 18:04                                             ` Drew Adams
  2005-02-12 18:45                                               ` Luc Teirlinck
@ 2005-02-12 19:03                                               ` Luc Teirlinck
  2005-02-12 19:21                                               ` Luc Teirlinck
  2005-02-12 20:09                                               ` Luc Teirlinck
  3 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-12 19:03 UTC (permalink / raw)
  Cc: emacs-devel, storm

>From my previous message:


	  M-: (setq custom-file "X")
	  M-x customize
	  do some editing
	  save (into X)
	  M-: (setq custom-file "Y")
	  get (from ?)

	  Question is "from X" or "from Y"?

      Good point. I would think it should be Y.

   Absolutely not. `(setq custom-file "Y")' means that you want Custom to
   _write_ to Y.  If you want Y to be read you have to load Y.

Well, it is a little bit more complex than that.  As long as you have
not saved any options through Custom since the `M-: (setq custom-file "Y")'
you should read from X, for the reason given above.  But once you save
new options through Custom, the up to date description of current options
is in Y, not in X.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12 18:04                                             ` Drew Adams
  2005-02-12 18:45                                               ` Luc Teirlinck
  2005-02-12 19:03                                               ` Customize buttons that change user's customfileshouldaskforconfirmation Luc Teirlinck
@ 2005-02-12 19:21                                               ` Luc Teirlinck
  2005-02-12 20:09                                               ` Luc Teirlinck
  3 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-12 19:21 UTC (permalink / raw)
  Cc: emacs-devel, storm

Drew Adams wrote:

       M-: (setq custom-file "X")
       M-x customize
       do some editing
       save (into X)
       M-: (setq custom-file "Y")
       get (from ?)

       Question is "from X" or "from Y"?

   Good point. I would think it should be Y.

If instead of `M-: (setq custom-file "Y")' we set custom-file through
Custom, then the up to date Custom Info is _immediately_ in Y, without
having to save any further option.  (Because saving `custom-file'
itself took care of things.)

So if somebody _really_ wants to change Custom file during an emacs
session (instead of from .emacs) the way to do it is through Custom.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-12 18:04                                             ` Drew Adams
                                                                 ` (2 preceding siblings ...)
  2005-02-12 19:21                                               ` Luc Teirlinck
@ 2005-02-12 20:09                                               ` Luc Teirlinck
  3 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-12 20:09 UTC (permalink / raw)
  Cc: emacs-devel, storm

After all, I do not understand why Custom _needs_ to read custom-file
in the first place.  It _knows_ what it wrote into the
custom-set-variables form.  If you edit that form by hand and want
Custom to know about it, use C-M-x.

But I do not understand why we are having all these detailed long
discussions about Custom buttons _now_.

Following changes related to Custom are planned or being discussed:

1. Change Custom to be able to handle especially hooks, but also other
   listvars, to which elements can be added both by code and by the user.

2. Change set-variable to make it use :set functions.

3. Make Custom handle buffer-local values.

4. Maybe change the button structure.

5. Maybe make Custom handle mode-dependent variables.

6. _Maybe_ reimplement custom-file.

I believe we agreed that we should not do _any_ of this until after
the 22 release.  We will be trying to fix some current bugs that can
be fixed without non-trivial changes in Custom before the release.

Custom is not straightforward to change.  I do not understand why we
are currently trying to discuss (4) completely up to minor
implementation details.  The relatively most urgent of the above is
(1), because it is necessary to fix several fundamental bugs.

Implementation details concerning (4) will depend on how 1, 2 and 3
are implemented.  Clearly questions about how to handle custom-file
depend on whether or not we will decide to do (6) and if so how.

I believe that the proper time to discuss this in detail is when
somebody finds the time to implement it.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-12 18:45                                               ` Luc Teirlinck
@ 2005-02-12 21:01                                                 ` Lennart Borgman
  2005-02-12 21:21                                                   ` Luc Teirlinck
  2005-02-14  2:07                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
  1 sibling, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-12 21:01 UTC (permalink / raw)
  Cc: storm, emacs-devel

----- Original Message ----- 
From: "Luc Teirlinck" <teirllm@dms.auburn.edu>

>        M-: (setq custom-file "X")
>        M-x customize
>        do some editing
>        save (into X)
>        M-: (setq custom-file "Y")
>        get (from ?)
>
>        Question is "from X" or "from Y"?
>
>    Good point. I would think it should be Y.
>
> Absolutely not. `(setq custom-file "Y")' means that you want Custom to
> _write_ to Y.  If you want Y to be read you have to load Y.
..
> (setq custom-file "Y")
> (load custom-file)

Is not this a bit of a contradiction? I would not say that the semantic is
really clear.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-12 21:01                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-12 21:21                                                   ` Luc Teirlinck
  2005-02-12 21:28                                                     ` Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-12 21:21 UTC (permalink / raw)
  Cc: storm, drew.adams, emacs-devel

Lennart Borgman wrote:

   > Absolutely not. `(setq custom-file "Y")' means that you want Custom to
   > _write_ to Y.  If you want Y to be read you have to load Y.
   ..
   > (setq custom-file "Y")
   > (load custom-file)

   Is not this a bit of a contradiction? I would not say that the semantic is
   really clear.

I wrote:

   If you want Y to be your Custom file, write:

   (setq custom-file "Y")
   (load custom-file)

Note:  _If_ you want Y to be your Custom file, write:

Who knows what somebody just doing `M-: (setq custom-file "Y")' is
actually trying to do?  Whether it is going to have any effect or not
depends on whether any option is still going to be saved in Custom or
not.  If you set custom-file through Custom, it is going to have an
effect in a reliable way.  (Custom is going to write your current
saved Customizations into that file, but it is not going to read
anything from that file.)

Where is the contradiction?

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-12 21:21                                                   ` Luc Teirlinck
@ 2005-02-12 21:28                                                     ` Lennart Borgman
  2005-02-12 21:42                                                       ` Luc Teirlinck
  0 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-12 21:28 UTC (permalink / raw)
  Cc: emacs-devel

----- Original Message ----- 
From: "Luc Teirlinck" <teirllm@dms.auburn.edu>

>    > Absolutely not. `(setq custom-file "Y")' means that you want Custom
to
>    > _write_ to Y.  If you want Y to be read you have to load Y.
>    ..
>    > (setq custom-file "Y")
>    > (load custom-file)
..
> Where is the contradiction?

The suggested (load custom-file) looks like it means "this is where we read
from". Though there can of course be no clear contradiction without clear
semantics.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-12 21:28                                                     ` Lennart Borgman
@ 2005-02-12 21:42                                                       ` Luc Teirlinck
  2005-02-13  0:17                                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-12 21:42 UTC (permalink / raw)
  Cc: emacs-devel

Lennart Borgman wrote:

   The suggested (load custom-file) looks like it means "this is where we read
   from".

(load "file")  _does_ means to load "file", that is to read from the file.

(setq custom-file "file") means that Custom should write its saved
values into "file".  Maybe you do not even want to start using "file"
as your permanent Custom file.  Maybe you just want a record of all
values you are "saving" to that file, but do not really want to save
in .emacs or your "real" custom-file.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that changeuser'scustomfileshouldaskforconfirmation
  2005-02-12 21:42                                                       ` Luc Teirlinck
@ 2005-02-13  0:17                                                         ` Lennart Borgman
  2005-02-13  0:54                                                           ` Luc Teirlinck
                                                                             ` (2 more replies)
  0 siblings, 3 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-13  0:17 UTC (permalink / raw)
  Cc: emacs-devel

----- Original Message ----- 
From: "Luc Teirlinck" <teirllm@dms.auburn.edu>

> Lennart Borgman wrote:
>
>    The suggested (load custom-file) looks like it means "this is where we
read
>    from".
>
> (load "file")  _does_ means to load "file", that is to read from the file.
>
> (setq custom-file "file") means that Custom should write its saved
> values into "file".

Yes, but the original issue was what semantic "get saved" should have in
Custom. Or did I misunderstand that? (setq custom-file "Y") together with
the common use of (load custom-file) gives at least me a feeling that many
would expect "get saved" to read from Y. But it is actually not defined now
of course.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that changeuser'scustomfileshouldaskforconfirmation
  2005-02-13  0:17                                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-13  0:54                                                           ` Luc Teirlinck
  2005-02-13  4:13                                                           ` Luc Teirlinck
  2005-02-13  4:32                                                           ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Luc Teirlinck
  2 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-13  0:54 UTC (permalink / raw)
  Cc: emacs-devel

Lennart Borgman wrote:

   Yes, but the original issue was what semantic "get saved" should have in
   Custom. Or did I misunderstand that?

Probably not.  But somehow, in all of this, I missed what was
supposedly wrong with saved-value.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that changeuser'scustomfileshouldaskforconfirmation
  2005-02-13  0:17                                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
  2005-02-13  0:54                                                           ` Luc Teirlinck
@ 2005-02-13  4:13                                                           ` Luc Teirlinck
  2005-02-14  2:25                                                             ` Customize buttons thatchangeuser'scustomfileshouldaskforconfirmation Drew Adams
  2005-02-13  4:32                                                           ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Luc Teirlinck
  2 siblings, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-13  4:13 UTC (permalink / raw)
  Cc: emacs-devel

To try to be more clear:

Lennart Borgman wrote:
   
   Or did I misunderstand that? (setq custom-file "Y") together with
   the common use of (load custom-file) gives at least me a feeling that many
   would expect "get saved" to read from Y.

I suggested to set:

(setq custom-file "Y")
(load custom-file)

_in your .emacs_.

But here we are discussing what happens if you change custom-file in
an already running Emacs session, after a custom-file has already been
loaded.  In that situation loading that _second_ Custom file (which
presumably is an empty file to be written into by the current Emacs)
does not make a lot of sense.  The main type of situation in which one
might actually want to change custom-file in a running Emacs is the
following.

Suppose you are using Emacs 21.4 and Emacs 22 comes out.

You now start 21.4 and set custom-file _using Custom_ (important) to
".emacs-custom-22.1.el" or similar.  If I remember well (I have
actually done such things, but a while ago) that file does _not_ need
to exist.  Now all your 21.4 customizations are copied in the newly
created 22.1 custom file, except for `custom-file', which gets
correctly updated.  You then write code in your .emacs to load
".emacs-custom-22.1.el" if the Emacs version is 22.1.  You start 22.1
and watch out for possible errors due to incompatibilities with 21.4.
Then you do M-x customize-changed RET 21.4.

   But it is actually not defined now of course.

Currently, Custom stores the SAVED value in the saved-value property.
The resulting behavior seems OK to me.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that changeuser'scustomfileshouldaskforconfirmation
  2005-02-13  0:17                                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
  2005-02-13  0:54                                                           ` Luc Teirlinck
  2005-02-13  4:13                                                           ` Luc Teirlinck
@ 2005-02-13  4:32                                                           ` Luc Teirlinck
  2 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-13  4:32 UTC (permalink / raw)
  Cc: emacs-devel

>From my previous message:

  You now start 21.4 and set custom-file _using Custom_ (important) to
  ".emacs-custom-22.1.el" or similar.

You can alternatively copy the 21.4 file into the 22.1.el file, but
there might be other things in there that you do not want to copy.
You then have to first visit the 21.4 file, find the
`custom-set-{variables,faces} forms and set the region around it
before writing it to the new file, you have to set or manually edit
the custom-file entry anyway and so on.  So sometimes it is more
convenient to let Custom do all that work.

As a said before a second reason to change custom-file in a running
Emacs session is to save your current settings into a (usually newly
created) file _without_ wanting to save them in your "real" custom
file.  Again, there is no reason to load that file.  You want to write
into it, not read from it.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-12 18:45                                               ` Luc Teirlinck
  2005-02-12 21:01                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-14  2:07                                                 ` Drew Adams
  2005-02-14  2:21                                                   ` Drew Adams
  2005-02-14  3:32                                                   ` Luc Teirlinck
  1 sibling, 2 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-14  2:07 UTC (permalink / raw)
  Cc: storm, emacs-devel

            >     If it implies reading from the file, this could
            >     be used to load values from a diffent custom-file
            >     (to see what they are) before actually using them.
            >
            > No way to do that has yet been proposed. S=>F means
            > to get the values from the  custom-set* in the user's
            > .emacs (custom file). There is currently no way to
            > designate a different library to use as the source of
            > `saved' settings.

           M-: (setq custom-file "X")
           M-x customize
           do some editing
           save (into X)
           M-: (setq custom-file "Y")
           get (from ?)

           Question is "from X" or "from Y"?

       Good point. I would think it should be Y.

    Absolutely not. `(setq custom-file "Y")' means that you want Custom to
    _write_ to Y.  If you want Y to be read you have to load Y...
    If you want Y to be your Custom file, write: (setq custom-file "Y")
    (load custom-file) in your .emacs, as the docstring of `custom-file'
    recommends.

The question was about "getting" values from a custom file without loading
that file. You are confirming, I guess, that there is no way to change
custom-file for purposes of get-but-do-not-load.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-14  2:07                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
@ 2005-02-14  2:21                                                   ` Drew Adams
  2005-02-14  3:32                                                   ` Luc Teirlinck
  1 sibling, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-14  2:21 UTC (permalink / raw)
  Cc: storm, emacs-devel

                >     If it implies reading from the file, this could
                >     be used to load values from a diffent custom-file
                >     (to see what they are) before actually using them.
                >
                > No way to do that has yet been proposed. S=>F means
                > to get the values from the  custom-set* in the user's
                > .emacs (custom file). There is currently no way to
                > designate a different library to use as the source of
                > `saved' settings.
        
               M-: (setq custom-file "X")
               M-x customize
               do some editing
               save (into X)
               M-: (setq custom-file "Y")
               get (from ?)
        
               Question is "from X" or "from Y"?
        
           Good point. I would think it should be Y.
        
        Absolutely not. `(setq custom-file "Y")' means that you 
        want Custom to
        _write_ to Y.  If you want Y to be read you have to load Y...
        If you want Y to be your Custom file, write: (setq custom-file "Y")
        (load custom-file) in your .emacs, as the docstring of 
        `custom-file' recommends.
    
    The question was about "getting" values from a custom file 
    without loading that file. You are confirming, I guess, that 
    there is no way to change custom-file for purposes of 
    get-but-do-not-load.  

  If instead of `M-: (setq custom-file "Y")' we set custom-file through
  Custom, then the up to date Custom Info is _immediately_ in Y, without
  having to save any further option.  (Because saving `custom-file'
  itself took care of things.)
  So if somebody _really_ wants to change Custom file during an emacs
  session (instead of from .emacs) the way to do it is through Custom.

Got it.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons thatchangeuser'scustomfileshouldaskforconfirmation
  2005-02-13  4:13                                                           ` Luc Teirlinck
@ 2005-02-14  2:25                                                             ` Drew Adams
  0 siblings, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-14  2:25 UTC (permalink / raw)
  Cc: emacs-devel

    But here we are discussing what happens if you change custom-file in
    an already running Emacs session, after a custom-file has already been
    loaded.  In that situation loading that _second_ Custom file (which
    presumably is an empty file to be written into by the current Emacs)
    does not make a lot of sense.  The main type of situation in which one
    might actually want to change custom-file in a running Emacs is the
    following.

I believe that Kim started off this change-custom-file thread, in the
context of the question of S=>F. He mentioned that it might be useful to
have S=>F instead of only S=>C,F, in order to let you retrieve values from a
second custom file without loading that second file.

I think the thread has diverged from Kim's point, which is OK, but I'm not
sure that everyone is following it clearly.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user'scustomfileshouldaskforconfirmation
  2005-02-14  2:07                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
  2005-02-14  2:21                                                   ` Drew Adams
@ 2005-02-14  3:32                                                   ` Luc Teirlinck
  1 sibling, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-14  3:32 UTC (permalink / raw)
  Cc: emacs-devel, storm

Drew Adams wrote:

   The question was about "getting" values from a custom file without loading
   that file. You are confirming, I guess, that there is no way to change
   custom-file for purposes of get-but-do-not-load.

Setting custom-file _during an Emacs session_ is usually with the
intent to write into it.  One even usually picks a non-existent file
and lets Custom create it.

I believe that if you regularly want to switch customizations during an
Emacs session, you _might_ be able to use "custom themes".  I have
never felt the need myself, so I do not know exactly how they work,
but if you are interested, you could take a look.

If one wants to make switching between sets of related customizations
within an emacs session easier, then the best way to do that seems to
be to implement features on top of the existing Custom package rather
than to try to reimplement fundamental parts of Custom.  _Maybe_ that
is what custom themes already do.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-03  9:36                       ` Kim F. Storm
  2005-02-03 14:46                         ` Lennart Borgman
  2005-02-03 19:30                         ` Drew Adams
@ 2005-02-15  6:18                         ` Richard Stallman
  2005-02-15  7:05                           ` Lennart Borgman
                                             ` (3 more replies)
  2 siblings, 4 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-15  6:18 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, snogglethorpe,
	drew.adams, miles

    In contrast, most other applications only have these states:

    F * the field value
    A * the active (current/saved) value
    D * the default value
    ...

    The big problem is that if the user sets option X on a page and does
    <Set> "F => C", and then (sometime later) sets option Y on the same
    page, and then does <Save> "F => C,S", the effect is that the change
    to X is also saved.  This may be highly confusing to a user.

One possible solution for that is to discourage, or even get rid of,
of the per-variable command button.  If there is only the whole-buffer
Set and the whole-buffer Save, this confusion won't happen.

ISTR that I have seen apps where there is no difference between the
field value and the active value within the customization tool, but
all the changes require confirmation when you exit the customization
tool.

The concept of "exiting" does not make sense for a Custom buffer, but
there could be a buffer-wide Activate command, "Put this in effect",
which combines Set and Save.  If that were the only way to make values
take effect, it would be a lot simpler than the current Custom
facility.

In addition to Activate, there would be Cancel and Standard Values.
And perhaps What's Changed, which says what would change if you use
Activate right now.

What do people think of the idea?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15  6:18                         ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
@ 2005-02-15  7:05                           ` Lennart Borgman
  2005-02-16  9:32                             ` Richard Stallman
  2005-02-15 17:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Drew Adams
                                             ` (2 subsequent siblings)
  3 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-15  7:05 UTC (permalink / raw)
  Cc: abraham, emacs-devel, monnier, snogglethorpe, drew.adams, miles

----- Original Message ----- 
From: "Richard Stallman" <rms@gnu.org>

> One possible solution for that is to discourage, or even get rid of,
> of the per-variable command button.  If there is only the whole-buffer
> Set and the whole-buffer Save, this confusion won't happen.

I do not think that is a good solution because the customization buffer
might be a result of a search.

> ISTR that I have seen apps where there is no difference between the
> field value and the active value within the customization tool, but
> all the changes require confirmation when you exit the customization
> tool.

It is an unusual behaviour I think. Maybe it is because it is tedious?

> The concept of "exiting" does not make sense for a Custom buffer, but
> there could be a buffer-wide Activate command, "Put this in effect",
> which combines Set and Save.  If that were the only way to make values
> take effect, it would be a lot simpler than the current Custom
> facility.

It is rather common on w32 that there is an Apply command which does this.

> In addition to Activate, there would be Cancel and Standard Values.
> And perhaps What's Changed, which says what would change if you use
> Activate right now.

I miss the Set button. IMO opinion the names you propose makes it a bit more
difficult to have a Set button.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15  6:18                         ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  2005-02-15  7:05                           ` Lennart Borgman
@ 2005-02-15 17:51                           ` Drew Adams
  2005-02-15 18:33                             ` Drew Adams
  2005-02-17 10:34                             ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  2005-02-15 23:20                           ` Luc Teirlinck
  2005-02-16  0:37                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Luc Teirlinck
  3 siblings, 2 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-15 17:51 UTC (permalink / raw)


        The big problem is that if the user sets option X on a page and does
        <Set> "F => C", and then (sometime later) sets option Y on the same
        page, and then does <Save> "F => C,S", the effect is that the change
        to X is also saved.  This may be highly confusing to a user.

This is confusing now only because the button doesn't properly indicate that
the action is to Save All. As we discussed, renaming the button (All) and
asking for confirmation should take care of this. ("This will save all
options in the buffer that have been Set. Do you want to continue?").

    One possible solution for that is to discourage, or even get rid of,
    of the per-variable command button.  If there is only the whole-buffer
    Set and the whole-buffer Save, this confusion won't happen.

    ISTR that I have seen apps where there is no difference between the
    field value and the active value within the customization tool, but
    all the changes require confirmation when you exit the customization
    tool.

    The concept of "exiting" does not make sense for a Custom buffer, but
    there could be a buffer-wide Activate command, "Put this in effect",
    which combines Set and Save.

That's just what the Save button does currently, IIUC.

    If that were the only way to make values
    take effect, it would be a lot simpler than the current Custom
    facility.

    In addition to Activate, there would be Cancel and Standard Values.
    And perhaps What's Changed, which says what would change if you use
    Activate right now.

    What do people think of the idea?

I think that it would be a very bad idea to move away from being able to
manipulate (e.g. edit, set, reset, & save) individual options. A given
custom buffer will perhaps have many options in several different states.
There must be a way to save one or more options in the buffer but not
necessarily all. Otherwise, we will get more confusion and operator error.

We might want to let users select a set of individual options (e.g. using
checkboxes or by dragging a region) and then operate on the selection. That
would provide a shortcut to operating individually on each item in the set,
and could help make it clear which options were affected for a "global"
operation.

But to always use the entire Customize buffer as that selection would be
restrictive, IMO.

WRT the idea of checkboxes - I'm thinking of what we do in Dired to mark
(select) files for applying actions. You can use many different ways to mark
a file (regexp etc.). In my own Dired code, you can also:

 - Use the mouse to drag a region, then use a mouse-3 menu item Mark (or
Unmark) to select (or deselect) all the files in the region. If no region is
active (no selection), then the mouse-3 menu items affect the single file
under the pointer.

 - Use SHIFT and CONTROL with mouse-1 clicks to select blocks of files or
individual files to add to the selection set - just as you do in Windows
Explorer.

Extending this idea to Customize, a user would mark/select various options,
then use a global action (button or menu-bar menu item) that operates on all
of the selected options. If no options are selected, then the menu item
would apply to the option under the pointer.

The menu for this is the individual-option menu, which is currently accessed
by the State "button". This could remain as a pulldown menu (which is what
it really is now), or it could be moved to a contextual menu on mouse-3 (as
I have in Dired). In the latter case, mouse-3 would not be available for
selecting and killing, but users could still select a region by dragging.

I assume that this discussion applies to possible changes after the release,
not before.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15 17:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Drew Adams
@ 2005-02-15 18:33                             ` Drew Adams
  2005-02-15 19:14                               ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  2005-02-17 10:34                             ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  1 sibling, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-15 18:33 UTC (permalink / raw)


I said:

    We might want to let users select a set of individual options
    (e.g. using checkboxes or by dragging a region) and then
    operate on the selection. That would provide a shortcut to
    operating individually on each item in the set, and could help
    make it clear which options were affected for a "global" operation.
    ...
    Extending this idea to Customize, a user would mark/select
    various options, then use a global action (button or menu-bar
    menu item) that operates on all of the selected options. If no
    options are selected, then the menu item would apply to the
    option under the pointer.

    The menu for this is the individual-option menu, which is
    currently accessed by the State "button". This could remain as
    a pulldown menu (which is what it really is now), or it could
    be moved to a contextual menu on mouse-3 (as I have in Dired).
    In the latter case, mouse-3 would not be available for
    selecting and killing, but users could still select a region by
    dragging.

I mispoke in the second paragraph quoted above. The global buttons (Save All
etc.) and the menu-bar menu should always apply globally (to everything in
the buffer), not to the currently selected options.

The current selection should be treated instead by a context-sensitive
menu - e.g., the mouse-3 menu. Another reason for moving the menu from the
State button to, for example, mouse-3 is this: The State-button menu is
fixed as local to a particular option; it cannot be used as a
context-sensitive menu that applies to the current selection (or the option
under the pointer, if there is no selection).

In sum:

 - Global buttons and the menu-bar menu apply to all options in the buffer.
Their item names include the word "All".

 - A context-sensitive menu (e.g. mouse-3) lets you mark and unmark options
and perform Save, Set etc. actions on the marked options. If no option is
marked, then the menu actions apply to the option under the mouse pointer
("current" option).

 - You can mark or unmark all options in a region. The context-sensitive
menu items Mark and Unmark apply to all options in the region.

 - If we have a context-sensitive menu (e.g. mouse-3), as described, we
should move all of the individual-option items from the State menu to the
context-sensitive menu.

We might want to use mouse-2 instead of mouse-3 to bring up the
context-sensitive menu. Mouse-3 is standard for such a menu in many
applications, but using it here means users would lose the normal mouse-3
functionality. Mouse-2 follows links and activates buttons in Customize, so
there should be no conflict with the menu: to use the c-s menu you just
position the pointer anywhere that is not on a button or a link.

However, if we did that, then we should not also have any pull-down menus
(e.g. State) that are activated by mouse-2, because it needs to be clear
whether the menu that appears applies to some fixed object (e.g. State) or
is the context-sensitive menu (which applies to the selection).

I personally think that mouse-3 would be a good choice for the c-s menu and
that the loss of mouse-3 editing functionality would not be missed in
Customize (I don't miss it in my version of Dired that has similar
functionality).

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-15 18:33                             ` Drew Adams
@ 2005-02-15 19:14                               ` Lennart Borgman
  2005-02-15 19:51                                 ` Drew Adams
  0 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-15 19:14 UTC (permalink / raw)


----- Original Message ----- 
From: "Drew Adams" <drew.adams@oracle.com>

> In sum:
>
>  - Global buttons and the menu-bar menu apply to all options in the
buffer.
> Their item names include the word "All".
>
>  - A context-sensitive menu (e.g. mouse-3) lets you mark and unmark
options
> and perform Save, Set etc. actions on the marked options. If no option is
> marked, then the menu actions apply to the option under the mouse pointer
> ("current" option).

I any proposal of this kind I think it is important to give the possibility
to use only the keyboard. Some people do not want to use the mouse and some
simply can not use it.

Why not let the menu-bar menu have entries for working with the "current
option". The "current option" could be that where the point is. (I
implemented this kind of functionality in my proposal long ago for a
redressed Custom GUI.)

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-15 19:14                               ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-15 19:51                                 ` Drew Adams
  2005-02-16  7:25                                   ` Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-15 19:51 UTC (permalink / raw)



    >  - A context-sensitive menu (e.g. mouse-3)

    I any proposal of this kind I think it is important to give the
    possibility to use only the keyboard. Some people do not want
    to use the mouse and some simply can not use it.

That's standard practice: there should be keyboard access to the same
functionality provided by the mouse - in particular, popup menus. I don't
know if that's the case generally with Emacs (I think not), but it is
standard in many apps these days. Some such mechanism is, I think, in fact
required for accessibility standards that apply to disabled people - e.g.
W3C WCAG (Web Content Accessibility Guidelines) Double-A recommendations.

    Why not let the menu-bar menu have entries for working with the "current
    option". The "current option" could be that where the point is. (I
    implemented this kind of functionality in my proposal long ago for a
    redressed Custom GUI.)

That's possible, but I don't think it's desirable.

That is not standard in any UI I'm familiar with. A context-sensitive menu
is usually associated with a mouse button, because you are generally using
the mouse to manipulate things associated with that context. This is the
practice nearly everywhere in MS Windows, for instance. For example, you are
doing things in a dialog box, and you use mouse-3 to open a menu for
manipulating something in the dialog box that is under the mouse pointer.
Users are very used to this behavior.

It is true that Emacs has a notion of point (cursor) that is separate from
the pointer location, so that such an operation as you describe can be
unambiguous without the mouse. Dired, for instance, has a menu-bar menu
(Immediate) that is largely for manipulating an individual file at point.

I nevertheless think that in most contexts (e.g. Customize) the position of
point is not a very useful (because not very obvious) indicator of the
current focus of action.

Also, if the context is to sometimes be a _set_ of options, then point is
not a sufficient context indicator. It is better to make the focus of action
obvious - e.g. using visible marks. Another possibility in this regard is,
as Richard suggested, to list the options to which an action will apply (a
la Dired asking if you want to delete these files).

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15  6:18                         ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
  2005-02-15  7:05                           ` Lennart Borgman
  2005-02-15 17:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Drew Adams
@ 2005-02-15 23:20                           ` Luc Teirlinck
  2005-02-16  0:03                             ` Kim F. Storm
  2005-02-17 10:35                             ` Richard Stallman
  2005-02-16  0:37                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Luc Teirlinck
  3 siblings, 2 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-15 23:20 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, storm,
	snogglethorpe, drew.adams, miles

Richard Stallman wrote:

   One possible solution for that is to discourage, or even get rid of,
   of the per-variable command button.

I use Custom extensively.  The per-variable command buttons are the
_only_ ones I use.  Getting rid of them would make Custom unusable in
as far as I am concerned.

   If there is only the whole-buffer Set and the whole-buffer Save,
   this confusion won't happen.

If there were no whole-buffer Set and Save functions, the confusion
would never happen.  But I would not go as far as to suggest
eliminating the whole-buffer buttons, even though I do not consider
them to be very useful.  Maybe we could provide warning messages if
people tried to use them.  But I believe that it is _obvious_ to
Custom users that if they want to operate on an entire buffer, they
have to be really careful.  I would guess that the whole-buffer
buttons are _very_ seldom used.  It is much safer and much more
convenient to set or save options one by one.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15 23:20                           ` Luc Teirlinck
@ 2005-02-16  0:03                             ` Kim F. Storm
  2005-02-16  0:56                               ` Luc Teirlinck
  2005-02-17 10:35                             ` Richard Stallman
  1 sibling, 1 reply; 157+ messages in thread
From: Kim F. Storm @ 2005-02-16  0:03 UTC (permalink / raw)
  Cc: miles, rms, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, abraham

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

>                               I would guess that the whole-buffer
> buttons are _very_ seldom used.  It is much safer and much more
> convenient to set or save options one by one.

My "guess" is exactly the opposite...

Most often, I just customize a specific variable or face, so 
for me there really isn't any conceptual difference between 
a per-variable and whole-buffer action.  So I use the "whole-buffer"
action buttons at the top of the customize buffer.

And, when I actually do customize a group of variables, I usually want
to set/save all the variables that I changed, so again I use the
"whole-buffer" buttons.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15  6:18                         ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
                                             ` (2 preceding siblings ...)
  2005-02-15 23:20                           ` Luc Teirlinck
@ 2005-02-16  0:37                           ` Luc Teirlinck
  2005-02-17 10:35                             ` Richard Stallman
  3 siblings, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-16  0:37 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, storm,
	snogglethorpe, drew.adams, miles

Richard Stallman wrote:

   The concept of "exiting" does not make sense for a Custom buffer, but
   there could be a buffer-wide Activate command, "Put this in effect",
   which combines Set and Save.  If that were the only way to make values
   take effect, it would be a lot simpler than the current Custom
   facility.

   In addition to Activate, there would be Cancel and Standard Values.
   And perhaps What's Changed, which says what would change if you use
   Activate right now.

   What do people think of the idea?

I like the _current_ Custom interface.  I believe that its _general
design_, including the button structure, is hard to improve on.  I
would leave it alone.  Of course, there are various bugs that need to
be fixed and various _details_ that can be improved.

Most of the more serious problems that Custom suffers from, several of
which I have pointed out, result from the fact that Custom makes
certain assumptions for its correct functioning that Emacs does not
adhere to (or does currently not adhere to).

The two main ones are:

1.  The value given in the defcustom is the standard Emacs default
    value as seen in `emacs -q'.

I believe that for this one, we agreed that we would make sure that
Emacs adhered much better to this than it currently does, ideally
completely.  We already started implementing this, although there
still is much to do.

2.  A variable defined by defcustom is reserved for the user.  Code
    never messes with it.  If code needs to add stuff to hooks or
    listvars, split those hooks or listvars into two, one program
    variable and one user variable.

Here I believe I understood that you considered this requirement to be
unacceptable.  Because of this, certain non-trivial parts of Custom
will have to be rewritten and even redesigned (at least in as far as
hooks and certain listvars are concerned) so that they no longer rely
on this assumption.  I believe this will be difficult enough.  I would
not try to redesign non broken parts of Custom.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-16  0:03                             ` Kim F. Storm
@ 2005-02-16  0:56                               ` Luc Teirlinck
  0 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-16  0:56 UTC (permalink / raw)
  Cc: rms, abraham, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, miles

Kim Storm wrote:

   Most often, I just customize a specific variable or face,

So do I.

   So I use the "whole-buffer" action buttons at the top of the
   customize buffer.

I personally do not see the need to go to the top of the buffer to do
that, if you have a button right next to you.  (In large Custom
buffers, the top is out of sight.)  I certainly do not want to do that
and go back and forth all the time if I want to try out several
settings for the same option.

And, on top of that, I do not see any reason to run the risk of
inadvertently doing things I am not even aware of.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-15 19:51                                 ` Drew Adams
@ 2005-02-16  7:25                                   ` Lennart Borgman
  0 siblings, 0 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-16  7:25 UTC (permalink / raw)


----- Original Message ----- 
From: "Drew Adams" <drew.adams@oracle.com>

>     Why not let the menu-bar menu have entries for working with the
"current
>     option". The "current option" could be that where the point is. (I
>     implemented this kind of functionality in my proposal long ago for a
>     redressed Custom GUI.)
>
> That's possible, but I don't think it's desirable.
>
> That is not standard in any UI I'm familiar with. A context-sensitive menu
> is usually associated with a mouse button, because you are generally using
> the mouse to manipulate things associated with that context. This is the
> practice nearly everywhere in MS Windows, for instance.

I do not think it is that clear. Options dialogs in MS Windows do not have a
menu at all. It is also quite common that menus operate on the current item
(for example in a mail program).

A problem is of course that it must be clear what item the menus operates
on. In case of the Custom GUI what I have done is to let the menus for the
current item include the name of the item.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15  7:05                           ` Lennart Borgman
@ 2005-02-16  9:32                             ` Richard Stallman
  2005-02-16 13:07                               ` Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-16  9:32 UTC (permalink / raw)
  Cc: abraham, emacs-devel, monnier, storm, snogglethorpe, drew.adams,
	miles

    > One possible solution for that is to discourage, or even get rid of,
    > of the per-variable command button.  If there is only the whole-buffer
    > Set and the whole-buffer Save, this confusion won't happen.

    I do not think that is a good solution because the customization buffer
    might be a result of a search.

I don't understand "result of a search" or how that relates to the
issue.  Could you please spell out your agrument?

    > ISTR that I have seen apps where there is no difference between the
    > field value and the active value within the customization tool, but
    > all the changes require confirmation when you exit the customization
    > tool.

    It is an unusual behaviour I think. Maybe it is because it is tedious?

It was not tedious at all.  To confirm when exiting is no more work
than giving the "Save" command.

    > In addition to Activate, there would be Cancel and Standard Values.
    > And perhaps What's Changed, which says what would change if you use
    > Activate right now.

    I miss the Set button. IMO opinion the names you propose makes it a bit more
    difficult to have a Set button.

Eliminating that distinction is part of the idea I'm considering now.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-16  9:32                             ` Richard Stallman
@ 2005-02-16 13:07                               ` Lennart Borgman
  2005-02-16 14:44                                 ` Luc Teirlinck
  0 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-16 13:07 UTC (permalink / raw)
  Cc: abraham, emacs-devel, monnier, storm, snogglethorpe, drew.adams,
	miles

----- Original Message ----- 
From: "Richard Stallman" <rms@gnu.org>

>     > One possible solution for that is to discourage, or even get rid of,
>     > of the per-variable command button.  If there is only the
whole-buffer
>     > Set and the whole-buffer Save, this confusion won't happen.
>
>     I do not think that is a good solution because the customization
buffer
>     might be a result of a search.
>
> I don't understand "result of a search" or how that relates to the
> issue.  Could you please spell out your agrument?

Sorry, I was really unclear. I think Luc and Drew has explained this more
clearly. I was thinking of different options in the buffer beeing in
different state. You may not even know exactly what is in the customization
buffer.

>     > ISTR that I have seen apps where there is no difference between the
>     > field value and the active value within the customization tool, but
>     > all the changes require confirmation when you exit the customization
>     > tool.
>
>     It is an unusual behaviour I think. Maybe it is because it is tedious?
>
> It was not tedious at all.  To confirm when exiting is no more work
> than giving the "Save" command.

I thought that every option would require confirmation. Someone brought up
the idea that this could look similar to dired so maybe it would not be so
much work for the user.


>     I miss the Set button. IMO opinion the names you propose makes it a
bit more
>     difficult to have a Set button.
>
> Eliminating that distinction is part of the idea I'm considering now.

Yes, I can see that. I just wanted to say that I disagree. As I pointed out
earlier beeing able to test is essential. (But there may be other solutions
to this, like option value history.)

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-16 13:07                               ` Lennart Borgman
@ 2005-02-16 14:44                                 ` Luc Teirlinck
  2005-02-16 17:14                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-16 14:44 UTC (permalink / raw)
  Cc: miles, rms, emacs-devel, monnier, storm, snogglethorpe,
	drew.adams, abraham

Lennart Borgman wrote:

   I thought that every option would require confirmation.

You mean every whole-buffer button?  It would be really annoying if
just setting or saving an individual option would ask for confirmation.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-16 14:44                                 ` Luc Teirlinck
@ 2005-02-16 17:14                                   ` Lennart Borgman
  2005-02-16 23:07                                     ` Luc Teirlinck
  0 siblings, 1 reply; 157+ messages in thread
From: Lennart Borgman @ 2005-02-16 17:14 UTC (permalink / raw)
  Cc: Emacs Devel

----- Original Message ----- 
From: "Luc Teirlinck" <teirllm@dms.auburn.edu>

>    I thought that every option would require confirmation.
> 
> You mean every whole-buffer button?  It would be really annoying if
> just setting or saving an individual option would ask for confirmation.

Yes, that was the context.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-16 17:14                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
@ 2005-02-16 23:07                                     ` Luc Teirlinck
  0 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-16 23:07 UTC (permalink / raw)
  Cc: emacs-devel

Lennart Borgman wrote:

   >    I thought that every option would require confirmation.
   > 
   > You mean every whole-buffer button?  It would be really annoying if
   > just setting or saving an individual option would ask for confirmation.

   Yes, that was the context.

This is one of the proposed changes I do agree with.  I never use the
whole-buffer buttons, but after setting custom-file to a junk file
(this is one instance where setting custom-file in a running Emacs
_is_ useful), I noticed that it is way to easy to accidentally click
on these buttons or accidentally hit return with point accidentally on
them.  I believe that confirmation should be asked, dired style, with
a list of affected options.  This situation has existed for a long
time now, so I do not believe that it is imperative to do this before
the release and I believe that it is better to wait.

This is a clearly implementable and limited change if we would decide
to do it.  If we decide to do it after the release, then I believe
that there is no sense in discussing implementation details now.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15 17:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Drew Adams
  2005-02-15 18:33                             ` Drew Adams
@ 2005-02-17 10:34                             ` Richard Stallman
  1 sibling, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-17 10:34 UTC (permalink / raw)
  Cc: emacs-devel

    I think that it would be a very bad idea to move away from being able to
    manipulate (e.g. edit, set, reset, & save) individual options. A given
    custom buffer will perhaps have many options in several different states.
    There must be a way to save one or more options in the buffer but not
    necessarily all. Otherwise, we will get more confusion and operator error.

I think it will be less confusing and will lead to less error, because
it is simple and easy to predict.

    But to always use the entire Customize buffer as that selection would be
    restrictive, IMO.

It is restrictive only in the sense that there are fewer different
ways to set the same values.  That is what makes it simple.


The idea of having "selection" of options is a complication.  It won't
solve any of the problems, so I am not interested in it.  We will
not go there.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-15 23:20                           ` Luc Teirlinck
  2005-02-16  0:03                             ` Kim F. Storm
@ 2005-02-17 10:35                             ` Richard Stallman
  2005-02-17 12:44                               ` Kim F. Storm
  2005-02-17 18:34                               ` Drew Adams
  1 sibling, 2 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-17 10:35 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, storm,
	snogglethorpe, drew.adams, miles

    I would guess that the whole-buffer
    buttons are _very_ seldom used.

We could poll the users and see.  If users generally use the
single-item button and not the whole-buffer buttons, I would
not mind simplifying things by eliminating the latter.

    Most often, I just customize a specific variable or face, so 
    for me there really isn't any conceptual difference between 
    a per-variable and whole-buffer action.  So I use the "whole-buffer"
    action buttons at the top of the customize buffer.

For that kind of usage, you could equally well use either interface.
So we could eliminate either one of the two.

    And, when I actually do customize a group of variables, I usually want
    to set/save all the variables that I changed, so again I use the
    "whole-buffer" buttons.

Here's a case of someone who really wants the whole-buffer buttons.

If the two of you can figure out what basic difference leads you to
prefer these different modes of use, we might learn something from
that.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-16  0:37                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Luc Teirlinck
@ 2005-02-17 10:35                             ` Richard Stallman
  0 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-17 10:35 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, storm,
	snogglethorpe, drew.adams, miles

    I like the _current_ Custom interface.  I believe that its _general
    design_, including the button structure, is hard to improve on.

I can't argue with your taste, but there seems to be a lot of indication
that it is too complex and hard to understand for beginners.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-17 10:35                             ` Richard Stallman
@ 2005-02-17 12:44                               ` Kim F. Storm
       [not found]                                 ` <003e01c51506$35ecb6e0$0200a8c0@sedrcw11488>
  2005-02-17 22:57                                 ` Luc Teirlinck
  2005-02-17 18:34                               ` Drew Adams
  1 sibling, 2 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-17 12:44 UTC (permalink / raw)
  Cc: Luc Teirlinck, abraham, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, miles

Richard Stallman <rms@gnu.org> writes:

> Here's a case of someone who really wants the whole-buffer buttons.
>
> If the two of you can figure out what basic difference leads you to
> prefer these different modes of use, we might learn something from
> that.

Both of us seem to primarily customize one option at a time --
so it's mostly a matter of how far you have to move the mouse
to active that changes...

My main objection to the customize interface is the long babble
at the start of the buffer and the long text on the buttons.

IMO, this is VERY dissimilar to other applications, and sort of
indicates to the movice user that the Customize interface is very
different from and much more complex than what the user is familiar
with.

A simpler interface with a "one line" button bar (prefeably in
the header line when supported) like this

    [Set]  [Save]  [Load]  [Finish]

would be ideal IMO.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
       [not found]                                   ` <m3oeejyxd6.fsf@kfs-l.imdomain.dk>
@ 2005-02-17 17:27                                     ` David Kastrup
  2005-02-17 18:32                                     ` Drew Adams
  1 sibling, 0 replies; 157+ messages in thread
From: David Kastrup @ 2005-02-17 17:27 UTC (permalink / raw)
  Cc: Luc Teirlinck, rms, abraham, Lennart Borgman, emacs-devel,
	monnier, snogglethorpe, drew.adams, miles

storm@cua.dk (Kim F. Storm) writes:

> "Lennart Borgman" <lennart.borgman.073@student.lu.se> writes:
>
>>
>>> A simpler interface with a "one line" button bar (prefeably in
>>> the header line when supported) like this
>>>
>>>     [Set]  [Save]  [Load]  [Finish]
>>>
>>> would be ideal IMO.
>>
>> Most other applications have the buttons at the bottom. The idea as far as I
>> understand it is to have the field and buttons ordered so that what is used
>> first comes first. This is both a visual ordering and a keyboard ordering.
>> You get used to press TAB to go to the button or field you need next. (I
>> think we should encourage keyboard use. Accessability and health.)
>
> The reason the header line is nice is that it will remain on the screen
> even when you scroll the customize window.  But of course, you cannot
> activate it with your mouse.
>
> But it would make sense if C-x C-s saved the settings, while C-c C-c
> just set them.

In that case it would be more intuitive if the buffer would get its
modification flag set for any changed options, was treated to the same
"`*Customize settings*' not saved" dialog as other unsaved buffers
when exiting Emacs, and we should have a button "don't save" (which
would then exempt the option from influencing the buffer modified flag
and from getting saved as long as the buffer remains intact) for
options.

That would enable options to be changed temporarily, it would make the
default of option changes permanent (like users are accustomed to),
but if one is unsure about a setting, one simply does not save the
option buffer, and then one will get reminded when exiting Emacs that
options (that are not marked "Don't save" explicitly) might get lost.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
       [not found]                                   ` <m3oeejyxd6.fsf@kfs-l.imdomain.dk>
  2005-02-17 17:27                                     ` David Kastrup
@ 2005-02-17 18:32                                     ` Drew Adams
  2005-02-17 20:33                                       ` Kim F. Storm
  1 sibling, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-17 18:32 UTC (permalink / raw)
  Cc: emacs-devel

    The reason the header line is nice is that it will remain on
    the screen even when you scroll the customize window.

Yes.  Of course, the same operations are also available in the menu-bar
menu, which stays put like a header line.

    But of course, you cannot activate it with your mouse.

We could make the header line mouse-sensitive, as in Info.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-17 10:35                             ` Richard Stallman
  2005-02-17 12:44                               ` Kim F. Storm
@ 2005-02-17 18:34                               ` Drew Adams
  2005-02-18 14:13                                 ` Richard Stallman
  1 sibling, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-17 18:34 UTC (permalink / raw)


        the whole-buffer buttons are _very_ seldom used.

    We could poll the users and see.  If users generally use the
    single-item button and not the whole-buffer buttons, I would
    not mind simplifying things by eliminating the latter.

For the poll - Like Luc, I use the single-item operation (on the State
menu). I generally only set or save one option at a time.

If we used a header line, as Kim suggested, then that would be as convenient
(close by) as the State menu for operating on a single option. But some way
of letting you know which options will be affected (e.g. popup list) should
be implemented for any global button or menu, as we have discussed.

As someone mentioned, if you want to operate on multiple options, you don't
want to repeat the set or save operation for each option independently. So,
if we _must_ choose between the two methods, the global button is more
general.

What is the reason that we must choose and not have both local and global
actions? Is it to simplify the UI? Getting rid of the buttons would simplify
the buffer; but getting rid of some of the State menu items would not
appreciably simplify the UI, IMO.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-17 18:32                                     ` Drew Adams
@ 2005-02-17 20:33                                       ` Kim F. Storm
  2005-02-17 23:06                                         ` Lennart Borgman
  0 siblings, 1 reply; 157+ messages in thread
From: Kim F. Storm @ 2005-02-17 20:33 UTC (permalink / raw)
  Cc: emacs-devel

"Drew Adams" <drew.adams@oracle.com> writes:

>
>     But of course, you cannot activate it with your mouse.
>
> We could make the header line mouse-sensitive, as in Info.
>

That was the intention -- I meant "keyboard" not "mouse".

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-17 12:44                               ` Kim F. Storm
       [not found]                                 ` <003e01c51506$35ecb6e0$0200a8c0@sedrcw11488>
@ 2005-02-17 22:57                                 ` Luc Teirlinck
  2005-02-18  8:23                                   ` Kim F. Storm
  1 sibling, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-17 22:57 UTC (permalink / raw)
  Cc: miles, rms, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, abraham

Kim Storm wrote:

   Both of us seem to primarily customize one option at a time --
   so it's mostly a matter of how far you have to move the mouse
   to active that changes...

We all seem to usually set one option at a time.  There is no need in
that case to have to worry about thirty other options in the buffer
which I do not want to set or save, but for which I might have changed
the widget value, just for information purposes, to see what choices I
have (this happens often with more complex "Value Menu" buttons).
Using the whole buffer buttons forces you to be very careful, and
there is no need for that.

   My main objection to the customize interface is the long babble
   at the start of the buffer and the long text on the buttons.

That is completely unrelated to single option or whole buffer buttons.

   But it would make sense if C-x C-s saved the settings, while C-c C-c
   just set them.

Neither that nor a header line address my concerns in the first
paragraph above.  When I want to set or save a single option, I do not
want a convenient way to accidentally set or save some of the other
thirty or so options in the buffer.  What I want is to not have to
worry about the thirty other options.

I believe that the single option buttons are definitely needed.  The
usefulness of the whole buffer buttons is much less clear to me.
Using the whole buffer buttons is dangerous.  We could either
eliminate them, print them only if the user chooses to have them
through a customizable option in the custom-buffer group that would be
off by default, make them print a warning or whatever.  There is no
need to decide on that now.  We can decide on such issues when we take
up this discussion again after Emacs 22 is out, depending on how soon
after that Emacs 23 would be released, even after 23 is released.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-17 20:33                                       ` Kim F. Storm
@ 2005-02-17 23:06                                         ` Lennart Borgman
  0 siblings, 0 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-17 23:06 UTC (permalink / raw)
  Cc: emacs-devel

----- Original Message ----- 
From: "Kim F. Storm" <storm@cua.dk>

> >     But of course, you cannot activate it with your mouse.
> >
> > We could make the header line mouse-sensitive, as in Info.
> >
>
> That was the intention -- I meant "keyboard" not "mouse".

Hm. I never noticed this before, but from an accessability point of view I
think it is bad that the header line in Info can not be reached from the
keyboard. Should it not be possible to go there with TAB and S-TAB? Would
not that be consistent with the behaviour in major web browsers?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-17 22:57                                 ` Luc Teirlinck
@ 2005-02-18  8:23                                   ` Kim F. Storm
  2005-02-18 13:54                                     ` Lennart Borgman
                                                       ` (2 more replies)
  0 siblings, 3 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-18  8:23 UTC (permalink / raw)
  Cc: rms, abraham, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, miles

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

> Kim Storm wrote:
>
>    Both of us seem to primarily customize one option at a time --
>    so it's mostly a matter of how far you have to move the mouse
>    to active that changes...
>
> We all seem to usually set one option at a time.  There is no need in
> that case to have to worry about thirty other options in the buffer


IMHO, this is _expert_ behaviour.

I think that most novice users will very rarely mix and match setting
some options and saving others.

If he is satisfied with the current settings, he will save them ALL.

If accidentally, he saves some option which he forgot he had only set
and really didn't want to set, he can EASILY revert the change, either
in the same emacs run or next time he runs emacs.


Why don't we simply introduce a "customize-expert" option that is off
by default, but can be turned on when the user gains more experience.

When off, it can limit the features of the customize interface to 
those features most novice users will be familiar to from other
interfaces.

When on, customize can show you all the current features (and
perhaps more, if we think it may be useful).


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18  8:23                                   ` Kim F. Storm
@ 2005-02-18 13:54                                     ` Lennart Borgman
  2005-02-18 14:12                                     ` Luc Teirlinck
  2005-02-19  9:44                                     ` Richard Stallman
  2 siblings, 0 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-18 13:54 UTC (permalink / raw)
  Cc: rms, Per Abrahamsen, Emacs Devel, Stefan Monnier, snogglethorpe,
	Drew Adams, Miles Bader

----- Original Message ----- 
From: "Kim F. Storm" <storm@cua.dk>

> Why don't we simply introduce a "customize-expert" option that is off
> by default, but can be turned on when the user gains more experience.
>
> When off, it can limit the features of the customize interface to
> those features most novice users will be familiar to from other
> interfaces.
>
> When on, customize can show you all the current features (and
> perhaps more, if we think it may be useful).

I second that. (Or, if I don't that is propably because my english makes me
misunderstand "second that" ;-).

I feel sorry to say that again, but I tried to work in that direction in my
proposal
earlier (the code on EmacsWiki). I did work a bit more on that, merging it
with the current CVS code, but I have not uploaded that. It is however by no
means finished. The idea has mainly been to hide part of the interface that
seems unusual. They should be turned on if the user wants them. Examples of
this are the state buttons. I also restructured the GUI a bit.

It seems easy to add the new ideas that we tend to more and more agree on.
But Luc has pointed out it we should leave it to next release. I tend to
agree, since I see new points are surfacing.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18  8:23                                   ` Kim F. Storm
  2005-02-18 13:54                                     ` Lennart Borgman
@ 2005-02-18 14:12                                     ` Luc Teirlinck
  2005-02-18 14:56                                       ` Kim F. Storm
  2005-02-19  9:44                                       ` Richard Stallman
  2005-02-19  9:44                                     ` Richard Stallman
  2 siblings, 2 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-18 14:12 UTC (permalink / raw)
  Cc: miles, rms, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, abraham

Kim Storm wrote:

   IMHO, this is _expert_ behaviour.

   I think that most novice users will very rarely mix and match setting
   some options and saving others.

Rarely, but sometimes.  Why confuse them badly if they do?  Moreover,
it is not just setting and saving.  It is also about looking at
possibilities and saving.  Especially with the more complex "Value Menu"
buttons.

   If he is satisfied with the current settings, he will save them ALL.

But the problem is exactly that he may _not_ be satisfied with all the
current "settings" (widget values).  He may just have wanted to set
them, or even more likely, just has been looking at them.

   If accidentally, he saves some option which he forgot he had only set
   and really didn't want to set, he can EASILY revert the change, either
   in the same emacs run or next time he runs emacs.

Why force users to go to that trouble if it can easily be avoided?
Moreover, if you save options that you do not want, you do
not even know which one you saved.  The user will have to scan his
custom-set-variables or custom-set-faces forms.  We are supposedly
talking about a novice user.

   Why don't we simply introduce a "customize-expert" option that is off
   by default, but can be turned on when the user gains more experience.

I believe that we should introduce a "customize-expert" option, off by
default, and only enable the all whole buffer buttons if it is on.
Personally, I would not turn it on.  I do not come even remotely close
to being enough of a Custom expert to be able to handle the complexity
of whole button buffers.  I always am careful to set custom-file to a
junk file when I play with them.  (I never use them "for real".  Much
too dangerous.)

   When off, it can limit the features of the customize interface to 
   those features most novice users will be familiar to from other
   interfaces.

Custom _is_ not exactly like other interfaces and _can_ not be.  Other
interfaces are not trying to handle an underlying customization system
that is anywhere as complex and extensive as Emacs'.  The average
Custom buffer is a lot longer and contains a lot more options than the
average customization "page" (or whatever they call it).  The choices
you have for an individual option can be a lot more complex.  Complex
types like `choice' force a concept of a `widget' value.  Very
importantly, other interfaces do not have to deal with the tremendous
complexity of options that can be changed by _both_ the user and programs.

What makes the whole button buttons dangerous are, among others, the
concept of a separate widget value, the difference between Set and
Save, bugs in Custom, the length of Custom buffers, options changed
by programs behind the user's back, and user absent-mindedness.  We
are never going to be able to do something about the latter, even if
we do something about everything else, which would be highly
non-trivial and would involve removing present features, which people
actually use.

The concept of saving options one by one is not a difficult concept,
whether the user is used to it or not.  One should not equate "novice"
with "stupid".

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-17 18:34                               ` Drew Adams
@ 2005-02-18 14:13                                 ` Richard Stallman
  2005-02-18 15:17                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
  0 siblings, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-18 14:13 UTC (permalink / raw)
  Cc: emacs-devel

    What is the reason that we must choose and not have both local and global
    actions? Is it to simplify the UI?

I am considering the idea of eliminating one of them in order to
simplify the interface.  It seems to be far too complex now.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 14:12                                     ` Luc Teirlinck
@ 2005-02-18 14:56                                       ` Kim F. Storm
  2005-02-18 22:59                                         ` Luc Teirlinck
  2005-02-19 20:54                                         ` Richard Stallman
  2005-02-19  9:44                                       ` Richard Stallman
  1 sibling, 2 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-18 14:56 UTC (permalink / raw)
  Cc: miles, rms, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, abraham

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

> Kim Storm wrote:

I wrote, you wrote, Lennart wrote, RMS wrote, bla bla bla :-)

Seriously, we seem to _completely_ disagree what an ordinary (novice) user
would expect from a customization interface.

My claim is that he is familiar with an interface where a page has:

 - N different options (N > 1)

 - an "Apply" button  which saves and activates the changes,
   but keep the page open.

 - an "Ok", "Save" or "Finish" button which saves and activates the
   changes, and closes the page

 - a "Cancel" button which closes the page without saving or activating.

 - a "Reset to Defaults" button which removes all user customizations
   and activates some "factory" determined set of defaults.


 - he may expect to see buttons which open sub-panels for customizing
   a related group of options, or does some specific action.


IMO, any significant deviation from that scheme is for _experts only_.

Specifically, no matter how useful it might be, an ordinary user does
not expect to see a "checkbox" or "save" button for each option, and
he will quickly be lost is a maze of tiny little passages.

>
>    IMHO, this is _expert_ behaviour.
>
>    I think that most novice users will very rarely mix and match setting
>    some options and saving others.
>
> Rarely, but sometimes.  Why confuse them badly if they do?  Moreover,
> it is not just setting and saving.  It is also about looking at
> possibilities and saving.  Especially with the more complex "Value Menu"
> buttons.

There is NOTHING confusing if you can only "save all options".

The confusion arises when you have the option to "set but not save"
some options, and later on you do "save" -- that will save all options
including those you only "set".

But that's not a big obstackle.  If the user has used "set", then
changes some more options, and hit "save", emacs could just warn
him that

    Warning: This will save parameters which you have previously
             set for this session only.  Continue?

If he doesn't like that (because he has been experimenting with
various settings), he can say "no", do "Cancel unsaved changes",
and redo the changes he actually wants to save.

Maybe not 100% satisfactory, but there's nothing strange about it.


>
>    If he is satisfied with the current settings, he will save them ALL.
>
> But the problem is exactly that he may _not_ be satisfied with all the
> current "settings" (widget values).  He may just have wanted to set
> them, or even more likely, just has been looking at them.

I don't think this is _typical_ usage.

Suppose the user is playing with some feature, e.g. ido-mode, which
has many options.  He tries to "Set" some parameters to see the
effect.

If he doesn't like the effect, he will "Reset" to set it back to what
it was.

If he likes the effect, he should "Save" before starting to play
with the next option.  If he doesn't -- well, he will quickly
learn that is the proper thing to do if he is playing with things.


For this specific purpose, it might be useful (and not too obscure) if
each parameter had a single "Undo" button which could be used to reset
that specific parameter to the last saved value.  But I doubt it will
be used much.

>
>    If accidentally, he saves some option which he forgot he had only set
>    and really didn't want to set, he can EASILY revert the change, either
>    in the same emacs run or next time he runs emacs.
>
> Why force users to go to that trouble if it can easily be avoided?
> Moreover, if you save options that you do not want, you do
> not even know which one you saved.  The user will have to scan his
> custom-set-variables or custom-set-faces forms.  We are supposedly
> talking about a novice user.

Again, you expect a specific user behaviour -- which I think is uncommon.

>
>    Why don't we simply introduce a "customize-expert" option that is off
>    by default, but can be turned on when the user gains more experience.
>
> I believe that we should introduce a "customize-expert" option, off by
> default, and only enable the all whole buffer buttons if it is on.

Amusing :-)

> Personally, I would not turn it on.  I do not come even remotely close
> to being enough of a Custom expert to be able to handle the complexity
> of whole button buffers.  I always am careful to set custom-file to a
> junk file when I play with them.  (I never use them "for real".  Much
> too dangerous.)

Really ?  

If customize is so dangerous, it should really be off-limits for
everybody...

But seriously, I bet a novice user can make greater disasters with a
few lines of bad Lisp in .emacs that he will ever do with Customize.

>
>    When off, it can limit the features of the customize interface to 
>    those features most novice users will be familiar to from other
>    interfaces.
>
> Custom _is_ not exactly like other interfaces and _can_ not be.  Other
> interfaces are not trying to handle an underlying customization system
> that is anywhere as complex and extensive as Emacs'.  

Huh?  

Just because some dialogue box in some other application is
written in C++ or java or a combination of HTML, javascript, and Perl
doesn't mean that the underlaying functionality isn't as complex
as emacs'.

If you think there is a problem here, it might be that customize is
still a "low-level" interface, giving you access to too much of
emacs' functionality in a "lispy" way.

>                                                       The average
> Custom buffer is a lot longer and contains a lot more options than the
> average customization "page" (or whatever they call it).  The choices
> you have for an individual option can be a lot more complex.  Complex
> types like `choice' force a concept of a `widget' value.  Very
> importantly, other interfaces do not have to deal with the tremendous
> complexity of options that can be changed by _both_ the user and programs.

In the applications I work with, customization is combination of
several different management interfaces, XML import/export of
configuration files, automatically generated configurations, and
factory installed customer specific configurations.  

Configuring Emacs isn't nearly as complex as that!!!

>
> What makes the whole button buttons dangerous are, among others, the
> concept of a separate widget value, the difference between Set and
> Save, bugs in Custom, the length of Custom buffers, 

That's a generic issue -- and we should improve that if we can -- it
has nothing to do with how to set/save values.

>                                                     options changed
> by programs behind the user's back, and user absent-mindedness.  We
> are never going to be able to do something about the latter, 

True.

>                                                              even if
> we do something about everything else, which would be highly
> non-trivial and would involve removing present features, which people
> actually use.

I don't suggest to remove anything -- just hide things that is confusing
to the novice user.

>
> The concept of saving options one by one is not a difficult concept,
> whether the user is used to it or not.  One should not equate "novice"
> with "stupid".

So why do you do that ?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-18 14:13                                 ` Richard Stallman
@ 2005-02-18 15:17                                   ` Drew Adams
  2005-02-19  3:51                                     ` Luc Teirlinck
  0 siblings, 1 reply; 157+ messages in thread
From: Drew Adams @ 2005-02-18 15:17 UTC (permalink / raw)
  Cc: emacs-devel

        What is the reason that we must choose and not have both
        local and global actions? Is it to simplify the UI?

    I am considering the idea of eliminating one of them in order to
    simplify the interface.  It seems to be far too complex now.

Then I repeat: "Getting rid of the buttons would simplify the buffer; but
getting rid of some of the State menu items would not appreciably simplify
the UI."

The advantage of the buttons is being able to act on multiple options at
once. Acting on multiple options is perhaps for "experts" only, however.

The disadvantage of the buttons is that their behavior can be complex and
error-prone, as Luc described well.

In sum, if you want to simplify the UI and make it easier and less
error-prone for novices (in particular), then keep the single-option menus
and get rid of the buttons.

If you do get rid of the buttons, will you also get rid of the equivalent
menu-bar menu items? If not, then no functionality will be lost. And all
discussions of the button problems (complexity, expert-only? etc.) can be
ported to the menu-bar menu. ;-)

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 14:56                                       ` Kim F. Storm
@ 2005-02-18 22:59                                         ` Luc Teirlinck
  2005-02-18 23:29                                           ` Luc Teirlinck
                                                             ` (2 more replies)
  2005-02-19 20:54                                         ` Richard Stallman
  1 sibling, 3 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-18 22:59 UTC (permalink / raw)
  Cc: lennart.borgman.073, rms, drew.adams, emacs-devel

Kim Storm wrote:

   The confusion arises when you have the option to "set but not save"
   some options, and later on you do "save" -- that will save all options
   including those you only "set".

No, you completely misunderstand.  Getting rid of the Save-Set
distinction would _in no way whatsoever_ make using whole buffer
buttons safe.  There are _tons_ of problems with them, some of which I
described in my previous posting.

   > But the problem is exactly that he may _not_ be satisfied with all the
   > current "settings" (widget values).  He may just have wanted to set
   > them, or even more likely, just has been looking at them.

   I don't think this is _typical_ usage.

   Suppose the user is playing with some feature, e.g. ido-mode, which
   has many options.  He tries to "Set" some parameters to see the
   effect.

   If he doesn't like the effect, he will "Reset" to set it back to what
   it was.

You completely misunderstand again.  I am talking about just _looking_
at items in a "Value Menu", not about setting anything.  When you
click on a choice of the Value Menu, the default value _for that choice_
appears in the widget and a separate docstring for that choice may
appear, which you may want to read.  You may _only_ have clicked on
that choice for information purposes.  If you are not careful and start
looking at another option, without first resetting the Value Menu to your
actual choice, and use the per buffer buttons, you may accidentally
save the widget value, even though you never wanted to save or even
set it.  The problem is that Custom buffers can be large, so if you want
to save a totally unrelated option, you may have forgotten about the
docs you were reading, which are _out of view_.

The whole buffer buttons make merely *looking* at the choices you
have, or wanting to read their docs, a dangerous activity.

   If customize is so dangerous, it should really be off-limits for
   everybody...

Customize is not too dangerous, the whole buffer buttons are too
dangerous.  They probably should indeed be off limits for everybody.
I suggest getting rid of them.

   > The concept of saving options one by one is not a difficult concept,
   > whether the user is used to it or not.  One should not equate "novice"
   > with "stupid".

   So why do you do that ?

I do _not_ claim that the average user is too stupid to use whole
buffer buttons.  I claim that the whole buffer buttons needlessly
force the user to be careful about the many options in the buffer he
is not interested in.  On the other hand, your main argument against
per option customization appears to be that the average user is too
stupid to grasp the mind-boggling concept of option by option
customization if he is not used to it.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 22:59                                         ` Luc Teirlinck
@ 2005-02-18 23:29                                           ` Luc Teirlinck
  2005-02-18 23:45                                             ` Lennart Borgman
  2005-02-19 20:55                                           ` Richard Stallman
  2005-02-19 21:24                                           ` Kim F. Storm
  2 siblings, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-18 23:29 UTC (permalink / raw)
  Cc: lennart.borgman.073, rms, drew.adams, emacs-devel

>From my previous message:

   You completely misunderstand again.  I am talking about just _looking_
   at items in a "Value Menu", not about setting anything.

Well actually I said:

   He may just have wanted to set them, or even more likely, just has
   been looking at them.

So I did talk about "setting" _in addition_ to looking at the choices,
without setting anything.  But the point remains that just looking at
the possible choices for an option, without setting anything, poses a
danger if the whole buffer buttons are used, as I explained.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 23:29                                           ` Luc Teirlinck
@ 2005-02-18 23:45                                             ` Lennart Borgman
  2005-02-19  1:16                                               ` Luc Teirlinck
                                                                 ` (2 more replies)
  0 siblings, 3 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-18 23:45 UTC (permalink / raw)
  Cc: rms, Drew Adams, Emacs Devel

----- Original Message ----- 
From: "Luc Teirlinck" <teirllm@dms.auburn.edu>

> So I did talk about "setting" _in addition_ to looking at the choices,
> without setting anything.  But the point remains that just looking at
> the possible choices for an option, without setting anything, poses a
> danger if the whole buffer buttons are used, as I explained.

I agree with your points, but is not this the case with most options
dialoges? I myself have often found that I have lost track of what I am
doing in those dialoges in other applications. To be sure to avoid trouble I
then hit Cancel and start it over again. I guess many users do like that.

I think this habit is useful and I believe it will carry over to Emacs as
well if the options dialog is sufficiently similar to those found in other
applications. And they do have something similar to "whole buffer buttons".

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 23:45                                             ` Lennart Borgman
@ 2005-02-19  1:16                                               ` Luc Teirlinck
  2005-02-19  1:28                                               ` Luc Teirlinck
  2005-02-19  3:10                                               ` Luc Teirlinck
  2 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-19  1:16 UTC (permalink / raw)
  Cc: emacs-devel, rms, drew.adams, storm

The button I called RESET TO SAVED in my previous message could also
be called:  UNDO EDITS.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 23:45                                             ` Lennart Borgman
  2005-02-19  1:16                                               ` Luc Teirlinck
@ 2005-02-19  1:28                                               ` Luc Teirlinck
  2005-02-19  3:10                                               ` Luc Teirlinck
  2 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-19  1:28 UTC (permalink / raw)
  Cc: emacs-devel, rms, drew.adams, storm

I lost the CC's im my original reply to Lennart:

Lennart Borgman wrote:

   I agree with your points, but is not this the case with most options
   dialoges? I myself have often found that I have lost track of what I am
   doing in those dialoges in other applications. To be sure to avoid trouble I
   then hit Cancel and start it over again.

You mean that each time I have to set an option in Custom, I would
have to first enter a key sequence or hit a button in a header line to
cancel all previous edits, then I set my value as I do now, then I hit
another key sequence or click another button in the header line to
save it?  This does not appear to be a simplification of the current
situation to me.  I believe it would be very easy to occasionally
forget the first step.

How are you going to reset the value to standard, with the new design?
One definitely wants to reset a single option to standard, not
everything in the buffer.  Being able to easily set an option back to
standard is important to everybody, but especially to novices.  It
seem that you will still need the individual State buttons, even with
the new design.

It all looks like a completely unnecessary complication of things.
People are inevitably going to give up on the first step in the
tedious three step sequence and, inevitably, they are going to sooner
or later get burned by that.

If one really would want to get rid of the State buttons (which the
new design can not do), one could replace the individual State buttons
with individual rows of four buttons:

SAVE || RESET TO SAVED ||  RESET TO STANDARD || ADVANCED

where ADVANCED would contain the remainder of the current options
listed in State, that is, ADVANCED would still work like the current
STATE, but can be ignored unless needed.  RESET TO SAVED and RESET TO
STANDARD are an important rescue tool if you messed up.

The only argument I have yet seen against single option buttons is
that people are not used to it.  It does not take a gigantic mental
effort to get used to it, and it makes things a lot simpler and a lot
less error prone.

If Custom is hard to understand for other reasons, we could worry
about those.  But to me, it seems ridiculous to claim that single
option buttons are a difficult to grasp concept.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 23:45                                             ` Lennart Borgman
  2005-02-19  1:16                                               ` Luc Teirlinck
  2005-02-19  1:28                                               ` Luc Teirlinck
@ 2005-02-19  3:10                                               ` Luc Teirlinck
  2005-02-19 21:32                                                 ` Kim F. Storm
  2 siblings, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-19  3:10 UTC (permalink / raw)
  Cc: emacs-devel, rms, drew.adams, storm

I give a summary of my proposal to meet some of the objections
leveled against Customize.  I personally _only_ have problems with
the whole buffer buttons, but I have tried to take other people's
objections into account (which I understood to be that that the State
button implementation is too unintuitive):


Eliminate the "whole buffer" buttons
Eliminate the "whole buffer" state message.

Replace individual State buttons with individual rows of four buttons:

SAVE || UNDO EDITS ||  RESET TO STANDARD || ADVANCED

ADVANCED contains everything presently in State, except for the three
that are now separate buttons.  ADVANCED still works like State now,
but can be ignored if it is not needed.

Replace current state _messages_ with very short (maybe single word)
ones with longer help echo messages, as Drew proposed (but _maybe_ not
exactly the same ones as Drew proposed).


As none of this is scheduled to be implemented before the release, we
could discuss further details closer to implementation time, after the
release.  This discussion is getting very time consuming, and any
details will be forgotten by implementation time anyway.

Currently, getting 22 released seems more urgent.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's customfileshouldaskforconfirmation
  2005-02-18 15:17                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
@ 2005-02-19  3:51                                     ` Luc Teirlinck
  0 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-19  3:51 UTC (permalink / raw)
  Cc: rms, emacs-devel

Drew Adams wrote:

   If you do get rid of the buttons, will you also get rid of the equivalent
   menu-bar menu items?

(Meant are the whole buffer buttons, if I understood correctly.)

I believe that for consistency, the equivalent menu-bar items, as well
as the `C-x C-s' binding in Custom buffers, should be eliminated too.
They pose the same problems as the buttons.

We could keep buttons, menu-bar items and binding, as an advanced
"use at your own risk" option for people like Kim, who like them.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18  8:23                                   ` Kim F. Storm
  2005-02-18 13:54                                     ` Lennart Borgman
  2005-02-18 14:12                                     ` Luc Teirlinck
@ 2005-02-19  9:44                                     ` Richard Stallman
  2 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-19  9:44 UTC (permalink / raw)
  Cc: teirllm, abraham, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, miles

    Why don't we simply introduce a "customize-expert" option that is off
    by default, but can be turned on when the user gains more experience.

It might be a good idea, if this allows us to disconnect the goals for
convenience for experts from the goals for simplicity for beginners.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 14:12                                     ` Luc Teirlinck
  2005-02-18 14:56                                       ` Kim F. Storm
@ 2005-02-19  9:44                                       ` Richard Stallman
  2005-02-19 15:42                                         ` Luc Teirlinck
  1 sibling, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-19  9:44 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, storm,
	snogglethorpe, drew.adams, miles

    But the problem is exactly that he may _not_ be satisfied with all the
    current "settings" (widget values).  He may just have wanted to set
    them, or even more likely, just has been looking at them.

The arguments you are making are arguments for complexity.  That is
the wrong approach for designing a user interface to help beginners.
So please stop raising such arguments.

We need to design a simple interface that is easy for beginners to
understand, so that they are not afraid to use it.  This means
rejecting the goal that it should be able to do "whatever the user
might want to do".  We have to design it to do the most common things
in the most straightforward way.

So please stop making arguments about "but maybe the user only wants X".

      Other
    interfaces are not trying to handle an underlying customization system
    that is anywhere as complex and extensive as Emacs'.

This is no excuse for making it more complex than it has to be,
so please don't mention it.

							  The average
    Custom buffer is a lot longer and contains a lot more options than the
    average customization "page" (or whatever they call it).

If that is a real cause of difficulty, lets subdivide the groups more.

      The choices
    you have for an individual option can be a lot more complex.  Complex
    types like `choice' force a concept of a `widget' value.

What do you mean by a "widget" value?

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-19  9:44                                       ` Richard Stallman
@ 2005-02-19 15:42                                         ` Luc Teirlinck
  0 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-19 15:42 UTC (permalink / raw)
  Cc: abraham, lennart.borgman.073, emacs-devel, monnier, storm,
	snogglethorpe, drew.adams, miles

Richard Stallman wrote:

   This means rejecting the goal that it should be able to do
   "whatever the user might want to do".

I was only talking about a user who wanted to look at the choices he
had in a Value Menu (and maybe read their docstrings), did not want to
save or set anything, and forgot to reset the Value Menu to his usual
choice, because he got distracted by looking at another option, which
he then saved (together with the wrong Value Menu value).

   What do you mean by a "widget" value?

The value that would be saved if one saves.  In my usage, these often
get changed to values I have no intention of setting or saving for two
reasons.  The first one is clicking on Value Menu buttons for
information purposes.  The second is making inadvertent edits in
various ways, say, by not holding down a control or meta key long
enough.  (I am clumsy, so this happens regularly.)  You do not even
realize you made these edits.  If I save an individual option, I
carefully check for typos before I save.  But carefully checking an
entire long buffer is cumbersome.

With the whole buffer buttons it is easy to save values which the user
does not even realize he edited.  From then on strange things happen.
The only way to figure out what is going on is to study the
`custom-set-variables' form in your .emacs.

   We need to design a simple interface that is easy for beginners to
   understand, so that they are not afraid to use it.

If Custom is redesigned to use only whole buffer buttons, then I will
be afraid to use it.  I would personally quit using it and customize
everything through Lisp.

One could print a warning message whenever clicking on the whole
buffer buttons would save more than one option and ask for
confirmation in that case.  That would be a bare minimum.  But once I
get warned, I have to figure out the problems and correct them before
I can save the option I want.  We could offer to undo all edits made
in the buffer, as Lennart suggested, but then I lose the edits I want
just as well as those I do not want.

All this complexity completely disappears if one uses per option buttons.

We all seem to agree that we nearly always want to save only one
option at a time.  So I do not see how designing an interface forcing
people to save an entire long buffer all at once, and hence be super
careful before saving anything, makes sense. 

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 14:56                                       ` Kim F. Storm
  2005-02-18 22:59                                         ` Luc Teirlinck
@ 2005-02-19 20:54                                         ` Richard Stallman
  2005-02-20  8:52                                           ` Lennart Borgman
  1 sibling, 1 reply; 157+ messages in thread
From: Richard Stallman @ 2005-02-19 20:54 UTC (permalink / raw)
  Cc: teirllm, abraham, lennart.borgman.073, emacs-devel, monnier,
	snogglethorpe, drew.adams, miles

    My claim is that he is familiar with an interface where a page has:

     - N different options (N > 1)

     - an "Apply" button  which saves and activates the changes,
       but keep the page open.

     - an "Ok", "Save" or "Finish" button which saves and activates the
       changes, and closes the page

     - a "Cancel" button which closes the page without saving or activating.

     - a "Reset to Defaults" button which removes all user customizations
       and activates some "factory" determined set of defaults.

I would like to move Customize in this direction.
At least the default style of Customize.

I don't mind if experts can customize it and make it do
something different.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 22:59                                         ` Luc Teirlinck
  2005-02-18 23:29                                           ` Luc Teirlinck
@ 2005-02-19 20:55                                           ` Richard Stallman
  2005-02-19 21:24                                           ` Kim F. Storm
  2 siblings, 0 replies; 157+ messages in thread
From: Richard Stallman @ 2005-02-19 20:55 UTC (permalink / raw)
  Cc: lennart.borgman.073, emacs-devel, drew.adams, storm

      When you
    click on a choice of the Value Menu, the default value _for that choice_
    appears in the widget and a separate docstring for that choice may
    appear, which you may want to read.  You may _only_ have clicked on
    that choice for information purposes.

Regardless of your motive, this is specifying a value.  Users
understand, from using other setup utilities, that if you put in a
different value for an option, and then you say "Save changes", you
change the value.  If you don't want to do that, you had better either
put it back, or exit without saving.

We can help prevent accidents by making "Save new settings" show a
list of options whose values are about to be changed.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-18 22:59                                         ` Luc Teirlinck
  2005-02-18 23:29                                           ` Luc Teirlinck
  2005-02-19 20:55                                           ` Richard Stallman
@ 2005-02-19 21:24                                           ` Kim F. Storm
  2005-02-20  2:31                                             ` Luc Teirlinck
  2 siblings, 1 reply; 157+ messages in thread
From: Kim F. Storm @ 2005-02-19 21:24 UTC (permalink / raw)
  Cc: lennart.borgman.073, rms, drew.adams, emacs-devel

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

> You completely misunderstand again.  

I think I have understood your idea of "typical usage pattern",
I just disagree that it is "typical".

>                                      I am talking about just _looking_
> at items in a "Value Menu", not about setting anything.  

Ok, but if a novice user starts from option 1, changes it in various ways
to see what the possible values are, goes on to option 2, does the same,
and so on, until he reaches option 15, and then he sees a setting of that
option which he finds useful -- and then uses "Save" -- expecting that all
the other changes he made to options 1-14 will not be saved -- well
that's a really stupid user IMHO.

But that's how you claim most novice users will act -- so IMO you 
think they are stupid...

> The whole buffer buttons make merely *looking* at the choices you
> have, or wanting to read their docs, a dangerous activity.

As long as you don't use "Save", it's perfectly safe!

>    If customize is so dangerous, it should really be off-limits for
>    everybody...
>
> Customize is not too dangerous, the whole buffer buttons are too
> dangerous.  They probably should indeed be off limits for everybody.
> I suggest getting rid of them.

I disagree 100% --- most users will be familiar with the concept of
"saving all changes with one click".   Very few are familiar with a
concept that forces you to save each change individually.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-19  3:10                                               ` Luc Teirlinck
@ 2005-02-19 21:32                                                 ` Kim F. Storm
  0 siblings, 0 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-19 21:32 UTC (permalink / raw)
  Cc: lennart.borgman.073, rms, drew.adams, emacs-devel

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

> Currently, getting 22 released seems more urgent.

I agree 100% with _that_ :-)

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-19 21:24                                           ` Kim F. Storm
@ 2005-02-20  2:31                                             ` Luc Teirlinck
  0 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-20  2:31 UTC (permalink / raw)
  Cc: lennart.borgman.073, rms, drew.adams, emacs-devel

Kim Storm wrote:

   I think I have understood your idea of "typical usage pattern",

I do not believe so.  I use Custom extensively as a _browser_ and
_documentation tool_, but when I see an option I want to change and
save, I do so.  In my use of Custom as a browser and source of info, I
often click on "Value Menus".  I do not necessarily reclose them
because I still may want to look at them later and there is no need to
close them anyway.  Right now, I can browse in a relaxed fashion
without being careful.  I do not even need to worry about accidental
edits or anything.  If I want to save an option all I have to do is
check that one value and TAB RET.

After your change, whenever I want to change something, I will have to
worry about whatever else is in the buffer.  Actually, I will not,
because it would really be too cumbersome.  Unless there is an expert
option and it actually works, I would either use .emacs or put point
on the option and do `M-x customize-option RET', thereby avoiding the
trouble.

   As long as you don't use "Save", it's perfectly safe!

That is _exactly_ why I would never use the all buffer save.

   Very few are familiar with a concept that forces you to save each
   change individually.

So you really _do_ believe that this is a terribly difficult concept.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-19 20:54                                         ` Richard Stallman
@ 2005-02-20  8:52                                           ` Lennart Borgman
  2005-02-20 17:09                                             ` Luc Teirlinck
  2005-02-20 17:17                                             ` Luc Teirlinck
  0 siblings, 2 replies; 157+ messages in thread
From: Lennart Borgman @ 2005-02-20  8:52 UTC (permalink / raw)
  Cc: teirllm, abraham, emacs-devel, monnier, snogglethorpe, drew.adams,
	miles

----- Original Message ----- 
From: "Richard Stallman" <rms@gnu.org>
To: "Kim F. Storm" <storm@cua.dk>


>     My claim is that he is familiar with an interface where a page has:
>
>      - N different options (N > 1)
>
>      - an "Apply" button  which saves and activates the changes,
>        but keep the page open.
>
>      - an "Ok", "Save" or "Finish" button which saves and activates the
>        changes, and closes the page
>
>      - a "Cancel" button which closes the page without saving or
activating.
>
>      - a "Reset to Defaults" button which removes all user customizations
>        and activates some "factory" determined set of defaults.
>
> I would like to move Customize in this direction.
> At least the default style of Customize.
>
> I don't mind if experts can customize it and make it do
> something different.

I think this would be a good solution. Though the discussion is intensive I
see no big difficulties to satisfy the different views this way. The expert
vs novice options for the Custom GUI could look something like this:

- A way to set/save individual options. This seems to be the most wanted. It
should then be hidden by default (for the novices).

- Showing/hiding some information, like the states of the items in the
customization buffer. Some information that are in itself valuable should
probably be off by default to make the Custom GUI more simple and in line
with what most users are accustomed too. Exactly which info is perhaps
difficult to say. I think however the different pieces should be possible to
hide/show individually (but buffer global to make it simple). I also suggest
that hiding/showing should be in the menu bar menus so that it easy to
change it while viewing a certain customization buffer.

- A very valuable idea in the current Custom GUI that is not really used
today is the small customization button. This should be enhanced with
visible state colors so that the user can get a quick overview over the
state of different options in the customization buffer. (But I still believe
these buttons should be hidden by default).

- Maybe a global "Set" buffon to turn on for the experts. I think however
this is less useful.

- Maybe something that means really "erase all customization done by
Custom". And a set/save version of this. This should not be buffer local,
but should erase the (custom-set-variables ...) in .emacs and do the
necessary changes in the current values (and maybe tell the user to restart
Emacs). This is of course something for the novices and it might be better
to tell the user how to do it by hand (editing .emacs).

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-20  8:52                                           ` Lennart Borgman
@ 2005-02-20 17:09                                             ` Luc Teirlinck
  2005-02-20 19:24                                               ` Kim F. Storm
  2005-02-20 17:17                                             ` Luc Teirlinck
  1 sibling, 1 reply; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-20 17:09 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel, rms, snogglethorpe, storm

People can put in these Gnome style whole buffer buttons that Kim
proposed.  That is OK, I do not care.

But _why_ on earth does anybody want to _hide_ that small State button,
that barely takes any space?  How can this _confuse_ people?  There is
a help echo saying "Change the state of this item".  If the user is
not used to customize individual items, he can just ignore the button.
If the help echo is not clear enough, make it clearer.  (Also, the
names of some items when you activate the State button could be made
more self-explanatory.)

The names "novice" and "expert" are used in a very incorrect way.  The
difference we are talking about has _nothing_ to do with how long you
have been using Emacs or Custom.

The two kinds of users we are talking about are non-inquisitive users
and inquisitive users.  Non-inquisitive users will just ignore he
State button, like they ignore anything else they are not used to.
They will remain novices forever.  Novices at Custom, novices at
Emacs, novices at everything they use.  Inquisitive users will say
"Wow, interesting!  That is something new!  I never saw this in other
customization interfaces.  Let me try this out!."  Then they will play
with it, and realize that this is a _much_ better interface than the
Gnome one.  For instance, unlike the eternal novices, they will be
able to undo mistakes by setting individual options to current or
standard, which is often needed.  They will very quickly become
experts, not only at using Custom, but at using Emacs.

Please, do not impede inquisitiveness.  Do not put obstacles in the
way of people who are willing to learn new things, by hiding stuff
from them.

Definitely do not hide the individual state messages, although they
can be made into single word items with help echos.  This info is needed.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-20  8:52                                           ` Lennart Borgman
  2005-02-20 17:09                                             ` Luc Teirlinck
@ 2005-02-20 17:17                                             ` Luc Teirlinck
  1 sibling, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-20 17:17 UTC (permalink / raw)
  Cc: miles, abraham, emacs-devel, monnier, storm, snogglethorpe,
	drew.adams, rms

>From my previous message:

   They will very quickly become experts, not only at using Custom,
   but at using Emacs.

To avoid having this interpreted in a silly way: I meant that they
will quickly become experts because they are inquisitive and willing
to try out things.  (_Obviously_ not just because of using the single
buffer buttons).

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-20 17:09                                             ` Luc Teirlinck
@ 2005-02-20 19:24                                               ` Kim F. Storm
  2005-02-20 20:18                                                 ` David Kastrup
  2005-02-21  1:00                                                 ` Drew Adams
  0 siblings, 2 replies; 157+ messages in thread
From: Kim F. Storm @ 2005-02-20 19:24 UTC (permalink / raw)
  Cc: lennart.borgman.073, snogglethorpe, rms, drew.adams, emacs-devel

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

> People can put in these Gnome style whole buffer buttons that Kim
> proposed.  That is OK, I do not care.
>
> But _why_ on earth does anybody want to _hide_ that small State button,
> that barely takes any space?  How can this _confuse_ people?  

Because having _both_ is confusing and dangerous.

If a user can change some options without saving then (browsing in
your terms), then saves some individual options, and later uses the
global save button, he will lose!

If there is only one way to set things, such confusion will not arise.

> The names "novice" and "expert" are used in a very incorrect way.  The
> difference we are talking about has _nothing_ to do with how long you
> have been using Emacs or Custom.

>
> The two kinds of users we are talking about are non-inquisitive users
> and inquisitive users.  Non-inquisitive users will just ignore he
> State button, like they ignore anything else they are not used to.
> They will remain novices forever.  Novices at Custom, novices at
> Emacs, novices at everything they use.  Inquisitive users will say
> "Wow, interesting!  That is something new!  I never saw this in other
> customization interfaces.  Let me try this out!."  Then they will play
> with it, and realize that this is a _much_ better interface than the
> Gnome one.  For instance, unlike the eternal novices, they will be
> able to undo mistakes by setting individual options to current or
> standard, which is often needed.  They will very quickly become
> experts, not only at using Custom, but at using Emacs.

I agree on the principle, but I don't see how setting one or more
options as a time hinders browsing.  Of course, it is a little more
cumbersome to actually set an option if the users has modified several
other options just to see what they have to offer -- but users will
be familiar with that from other applications...

Maybe the "Customize" menu could have a simple check-box option for
"Show per-option action buttons".  The inquisitive emacs user will
surely find it :-)   

I agree that if a user enabled this, the global buttons should not be
shown.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-20 19:24                                               ` Kim F. Storm
@ 2005-02-20 20:18                                                 ` David Kastrup
  2005-02-20 20:46                                                   ` Luc Teirlinck
  2005-02-21  1:00                                                 ` Drew Adams
  1 sibling, 1 reply; 157+ messages in thread
From: David Kastrup @ 2005-02-20 20:18 UTC (permalink / raw)
  Cc: Luc Teirlinck, rms, lennart.borgman.073, emacs-devel,
	snogglethorpe, drew.adams

storm@cua.dk (Kim F. Storm) writes:

> Luc Teirlinck <teirllm@dms.auburn.edu> writes:

[Buttons, buttons, buttons]

Look, I am not participating in this discussion because it is not
relevant for Emacs-22.1.  We have spent enough time on it already.
The right way of resolving it will be to check in some variants, test
drive them, discuss them.  And checking anything in for design
questions right now is completely out of the question.

This is post-Emacs-22.1 material.  Resolving this question
satisfactorily means playing with code, and now is not the time for
it.  I also have ideas of my own about how to do this consistently,
but I won't argue them now: no point.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 157+ messages in thread

* Re: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-20 20:18                                                 ` David Kastrup
@ 2005-02-20 20:46                                                   ` Luc Teirlinck
  0 siblings, 0 replies; 157+ messages in thread
From: Luc Teirlinck @ 2005-02-20 20:46 UTC (permalink / raw)
  Cc: rms, lennart.borgman.073, emacs-devel, storm, snogglethorpe,
	drew.adams

   Look, I am not participating in this discussion because it is not
   relevant for Emacs-22.1.  We have spent enough time on it already.

I have _tried_ to tell that a couple of times much earlier in the
discussion.  But at a given moment, I felt that I _had_ to
participate, because it looked like decisions were about to been made.
So once this came up again after the 22 or even 23 release, people
could be told that a decision was already made some years ago and that
there was no point reopening it.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 157+ messages in thread

* RE: Customize buttons that change user's custom fileshouldaskforconfirmation
  2005-02-20 19:24                                               ` Kim F. Storm
  2005-02-20 20:18                                                 ` David Kastrup
@ 2005-02-21  1:00                                                 ` Drew Adams
  1 sibling, 0 replies; 157+ messages in thread
From: Drew Adams @ 2005-02-21  1:00 UTC (permalink / raw)


    Maybe the "Customize" menu could have a simple check-box option for
    "Show per-option action buttons".  The inquisitive emacs user will
    surely find it :-)

    I agree that if a user enabled this, the global buttons should not
    be shown.

This is a compromise that gives both approaches what they want. We should,
however, strive to adopt such a compromise only if there is a consensus that
there is (separate) value in having _each_ approach - not simply because we
can't seem to reach consensus on _which_ approach is best.

I doubt that we currently agree that both approaches are good (simple, safe,
etc.), and that which to use should just be a user choice (option). From the
current state of the discussion, it sounds more like each "side" thinks that
his side is the "simpler" and "safer" approach.

I agree with everyone else that no action should be taken now. In fact, the
remainder of the customize-design discussion should be postponed until after
22.1 is released. There is a lot that we could put on the table for
discussion regarding customize, and some of the issues are best discussed in
combination. I think we all have the same general goals, and our differences
probably reflect (mainly) different usage patterns or mutual
misunderstandings.

That is, I expect that we can in fact reach consensus on what is the best
approach, given sufficient time and discussion. Customize is complex, the
present UI provides lots of possibilities for a user, and the possibilities
of changing customize to improve it are innumerable. So, it's no wonder that
we haven't yet reached consensus - we haven't really explored the customize
design space much. And, as I mentioned once before, it is essential to get
input from Per, who understands the original design well - both the intent
and the howto.

^ permalink raw reply	[flat|nested] 157+ messages in thread

end of thread, other threads:[~2005-02-21  1:00 UTC | newest]

Thread overview: 157+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <DNEMKBNJBGPAOPIJOOICKENMCAAA.drew.adams@oracle.com>
2005-01-31  0:20 ` Customize buttons that change user's custom file should ask forconfirmation Richard Stallman
2005-01-31  1:07   ` Stefan Monnier
2005-01-31  2:02     ` Miles Bader
2005-01-31  1:16   ` Customize buttons that change user's custom file should askforconfirmation Lennart Borgman
2005-01-31  1:55     ` Miles Bader
2005-01-31  2:06     ` Drew Adams
2005-01-31 15:21     ` Per Abrahamsen
2005-01-31 17:22       ` Drew Adams
2005-01-31 21:39         ` Robert J. Chassell
2005-01-31 22:37           ` Customize buttons that change user's custom file shouldaskforconfirmation Drew Adams
2005-01-31 22:59           ` Customize buttons that change user's custom file should askforconfirmation Kim F. Storm
2005-01-31 23:50             ` Stefan Monnier
2005-02-01  0:44               ` Simon Josefsson
2005-01-31 23:56             ` Lennart Borgman
2005-02-01  8:56               ` Per Abrahamsen
2005-02-01 14:11                 ` Robert J. Chassell
2005-02-01 16:21                   ` Drew Adams
2005-02-02  7:27         ` Richard Stallman
2005-02-02 18:01           ` Customize buttons that change user's custom file shouldaskforconfirmation Drew Adams
2005-02-02 18:46             ` Stefan Monnier
2005-02-02 19:02               ` Drew Adams
2005-02-03  2:43                 ` Miles Bader
2005-02-03  6:58                   ` Customize buttons that change user's custom fileshouldaskforconfirmation Lennart Borgman
2005-02-03  7:39                     ` Miles Bader
2005-02-03  9:36                       ` Kim F. Storm
2005-02-03 14:46                         ` Lennart Borgman
2005-02-03 15:18                           ` David Kastrup
2005-02-03 15:30                             ` Lennart Borgman
2005-02-03 19:30                         ` Drew Adams
2005-02-03 19:54                           ` Lennart Borgman
2005-02-03 20:05                             ` Drew Adams
2005-02-03 20:13                               ` Lennart Borgman
2005-02-03 20:18                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
2005-02-03 20:23                                   ` Lennart Borgman
2005-02-04 10:22                             ` Customize buttons that change user's custom fileshouldaskforconfirmation Kim F. Storm
2005-02-07  5:32                               ` Drew Adams
2005-02-07  7:25                                 ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
2005-02-07  7:34                                   ` Drew Adams
2005-02-07 17:28                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
2005-02-07 20:23                                       ` Robert J. Chassell
2005-02-07 20:26                                       ` Lennart Borgman
2005-02-08 11:46                                         ` Richard Stallman
2005-02-07 13:45                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
2005-02-07 16:46                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
2005-02-07 14:15                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Robert J. Chassell
2005-02-07 16:23                                     ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
2005-02-07 20:22                                       ` Robert J. Chassell
2005-02-07 20:29                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
2005-02-08 11:46                                           ` Richard Stallman
2005-02-09  8:11                                     ` Customize buttons that change user's customfileshouldaskforconfirmation Richard Stallman
2005-02-09 13:29                                       ` Robert J. Chassell
2005-02-07 15:07                                   ` Customize buttons that change user's customfiles Robert J. Chassell
2005-02-07 15:53                                     ` Robert J. Chassell
2005-02-09  8:11                                 ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
2005-02-09 13:31                                   ` Robert J. Chassell
2005-02-09 17:27                                     ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
2005-02-09 20:31                                       ` Robert J. Chassell
2005-02-09 21:27                                         ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
2005-02-10 14:42                                           ` Robert J. Chassell
2005-02-10 15:20                                             ` Kim F. Storm
2005-02-11 21:12                                             ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Drew Adams
2005-02-09 14:12                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
2005-02-09 17:17                                     ` Drew Adams
2005-02-10 18:39                                     ` Richard Stallman
2005-02-10 21:56                                       ` Kim F. Storm
2005-02-11 21:13                                         ` Drew Adams
2005-02-12 14:27                                           ` Kim F. Storm
2005-02-12 18:04                                             ` Drew Adams
2005-02-12 18:45                                               ` Luc Teirlinck
2005-02-12 21:01                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Lennart Borgman
2005-02-12 21:21                                                   ` Luc Teirlinck
2005-02-12 21:28                                                     ` Lennart Borgman
2005-02-12 21:42                                                       ` Luc Teirlinck
2005-02-13  0:17                                                         ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Lennart Borgman
2005-02-13  0:54                                                           ` Luc Teirlinck
2005-02-13  4:13                                                           ` Luc Teirlinck
2005-02-14  2:25                                                             ` Customize buttons thatchangeuser'scustomfileshouldaskforconfirmation Drew Adams
2005-02-13  4:32                                                           ` Customize buttons that changeuser'scustomfileshouldaskforconfirmation Luc Teirlinck
2005-02-14  2:07                                                 ` Customize buttons that change user'scustomfileshouldaskforconfirmation Drew Adams
2005-02-14  2:21                                                   ` Drew Adams
2005-02-14  3:32                                                   ` Luc Teirlinck
2005-02-12 19:03                                               ` Customize buttons that change user's customfileshouldaskforconfirmation Luc Teirlinck
2005-02-12 19:21                                               ` Luc Teirlinck
2005-02-12 20:09                                               ` Luc Teirlinck
2005-02-12  8:37                                         ` Richard Stallman
2005-02-12  9:14                                           ` Lennart Borgman
2005-02-12 11:48                                           ` Robert J. Chassell
2005-02-12 14:58                                             ` Kim F. Storm
2005-02-07 20:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
2005-02-08 20:37                             ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
2005-02-15  6:18                         ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
2005-02-15  7:05                           ` Lennart Borgman
2005-02-16  9:32                             ` Richard Stallman
2005-02-16 13:07                               ` Lennart Borgman
2005-02-16 14:44                                 ` Luc Teirlinck
2005-02-16 17:14                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
2005-02-16 23:07                                     ` Luc Teirlinck
2005-02-15 17:51                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Drew Adams
2005-02-15 18:33                             ` Drew Adams
2005-02-15 19:14                               ` Customize buttons that change user's customfileshouldaskforconfirmation Lennart Borgman
2005-02-15 19:51                                 ` Drew Adams
2005-02-16  7:25                                   ` Lennart Borgman
2005-02-17 10:34                             ` Customize buttons that change user's custom fileshouldaskforconfirmation Richard Stallman
2005-02-15 23:20                           ` Luc Teirlinck
2005-02-16  0:03                             ` Kim F. Storm
2005-02-16  0:56                               ` Luc Teirlinck
2005-02-17 10:35                             ` Richard Stallman
2005-02-17 12:44                               ` Kim F. Storm
     [not found]                                 ` <003e01c51506$35ecb6e0$0200a8c0@sedrcw11488>
     [not found]                                   ` <m3oeejyxd6.fsf@kfs-l.imdomain.dk>
2005-02-17 17:27                                     ` David Kastrup
2005-02-17 18:32                                     ` Drew Adams
2005-02-17 20:33                                       ` Kim F. Storm
2005-02-17 23:06                                         ` Lennart Borgman
2005-02-17 22:57                                 ` Luc Teirlinck
2005-02-18  8:23                                   ` Kim F. Storm
2005-02-18 13:54                                     ` Lennart Borgman
2005-02-18 14:12                                     ` Luc Teirlinck
2005-02-18 14:56                                       ` Kim F. Storm
2005-02-18 22:59                                         ` Luc Teirlinck
2005-02-18 23:29                                           ` Luc Teirlinck
2005-02-18 23:45                                             ` Lennart Borgman
2005-02-19  1:16                                               ` Luc Teirlinck
2005-02-19  1:28                                               ` Luc Teirlinck
2005-02-19  3:10                                               ` Luc Teirlinck
2005-02-19 21:32                                                 ` Kim F. Storm
2005-02-19 20:55                                           ` Richard Stallman
2005-02-19 21:24                                           ` Kim F. Storm
2005-02-20  2:31                                             ` Luc Teirlinck
2005-02-19 20:54                                         ` Richard Stallman
2005-02-20  8:52                                           ` Lennart Borgman
2005-02-20 17:09                                             ` Luc Teirlinck
2005-02-20 19:24                                               ` Kim F. Storm
2005-02-20 20:18                                                 ` David Kastrup
2005-02-20 20:46                                                   ` Luc Teirlinck
2005-02-21  1:00                                                 ` Drew Adams
2005-02-20 17:17                                             ` Luc Teirlinck
2005-02-19  9:44                                       ` Richard Stallman
2005-02-19 15:42                                         ` Luc Teirlinck
2005-02-19  9:44                                     ` Richard Stallman
2005-02-17 18:34                               ` Drew Adams
2005-02-18 14:13                                 ` Richard Stallman
2005-02-18 15:17                                   ` Customize buttons that change user's customfileshouldaskforconfirmation Drew Adams
2005-02-19  3:51                                     ` Luc Teirlinck
2005-02-16  0:37                           ` Customize buttons that change user's custom fileshouldaskforconfirmation Luc Teirlinck
2005-02-17 10:35                             ` Richard Stallman
2005-02-03 19:13                 ` Customize buttons that change user's custom file shouldaskforconfirmation Richard Stallman
2005-02-01 13:30     ` Customize buttons that change user's custom file should askforconfirmation Richard Stallman
2005-01-31  1:22   ` Customize buttons that change user's custom file should ask forconfirmation Miles Bader
2005-02-01 13:30     ` Richard Stallman
2005-02-10 17:25 Customize buttons that change user'scustomfileshouldaskforconfirmation Robert J. Chassell
2005-02-10 18:25 ` David Kastrup
2005-02-10 19:01 ` Stefan Monnier
2005-02-10 22:49   ` Robert J. Chassell
2005-02-10 21:39 ` Kim F. Storm
2005-02-10 23:45   ` Robert J. Chassell
2005-02-11  0:54     ` David Kastrup
2005-02-12  8:38       ` Richard Stallman
2005-02-12 18:20     ` Drew Adams

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