all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Customize UI makeover?
@ 2008-04-27 22:43 Drew Adams
  2008-04-28 15:18 ` Richard M Stallman
  0 siblings, 1 reply; 3+ messages in thread
From: Drew Adams @ 2008-04-27 22:43 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 4935 bytes --]

Customize is an atrocious UI, at least in terms of its appearance.

Wouldn't some young turk who doesn't mind tackling the widgetry code labyrinth
please try to make a few cosmetic improvements? That could be a good summer
project. (No, not I; I took a look and it made me ill. Not to mention that I'm
no longer a young turk.) 

The place to start would probably be the widget code, wid-edit.el, not the
Customize code, cus-edit.el, because the ugliness is more than skin-deep.

Attached is a screenshot of a portion of the buffer of `M-x customize-option
align-exclude-rules-list', with emacs -Q (after `load-library align'). It gives
an idea of the jungle we are presenting users with. It even has one line that is
152 characters wide - and that line would be even longer, but it includes a Lisp
string with an embedded newline char.

Some feedback (possible things to work on):

1. We have a general button problem: the raised buttons are, well, butt-ugly.
Yes, we need some visual indication of a button, but the current appearance is
pretty primitive. Most UIs don't use raised buttons unless they represent
toggles, where raised means one state (e.g. off) and recessed means the other
state (e.g. on), and the button text makes the state clear. Most UIs use images
for buttons. When images are not available we could use a more primitive
approach.

2. Button labels `INS' and `DEL' could be just `+' and `-'. Or perhaps `+' and a
typical deletion symbol `X'.

3. Button label `Value Menu' could be just `Choose'.

4. Or (but it might require a little more coding), button `Value Menu' could use
as its label the current choice's tag and include a tiny triangle to indicate
additional choices.

5. Tag values that are implicit and simply repeat the type of the field could be
eliminated (not shown): `Choice:', `Regexp:', `Lisp expression:', `String:',
`Cons-cell:', and so on. A tooltip should suffice to indicate what a field is.
When it doesn't, the particular field should probably be given its own specific
:tag. Display of the implicit (generic) tags just adds more noise to the jungle.

E.g. a user typically doesn't need to know that a field is a cons cell; it's
enough to show the two parts of the cell. We at least do this the right way for
type `alist' - we show just the key and value components directly, no
`Cons-cell:' label for each cons. Look at the difference between the types
(repeat (cons foo bar)) and (alist :key-type foo :value-type bar).

6. Child fields are indented too much. There is no reason to indent the content
of a `repeat' field (what's under the `INS DEL') by 12 spaces. When you have
nested `repeat's, as in `align-exclude-rules-list', this really gets out of
hand. 

7. A tag should be on its own line. Tags can be long - they are descriptions.
The second of the following is better (where `Choose' is the button label, per
#3, and the default tag value `Choice:' is eliminated, per #4):

 Choice: Value Menu Seventy (70) character tag that describes some particular
choice well.

 Choose
  Seventy (70) character tag that describes some particular choice well.

Plus, for some types of choice values (e.g. `string'), there is an editable
field in addition to the tag. In that case, the editable field should also be on
its own line:

 Choose
  Hyper-Foo Toto-Mode Title:
  The Current Title, Which in This Case Is a Long String

8. More generally, a value, including a value in a `Value Menu', should
typically be on its own line. Yes, some values are short, but some (strings,
Lisp expressions, file names) can be long. Perhaps the display width of a given
value can be used to decide whether to print it on a new line.

9. Lisp expressions (e.g. functions) should be pretty-printed. That makes them
more readable and conserves horizontal space.

10. In general, we should decrease the horizontal space used, with the tradeoff
of increasing the vertical space used. That makes things more readable and can
lead to savings of screen real estate (for both windows and frames).

Yes, I realize that some users use Emacs full screen and split windows
vertically. But some users split windows horizontally or use
one-buffer-per-frame - and lines that are long (152 chars!) mean wasted
horizontal space. Like *Help*, we should aim to have *Customize* buffers be less
than 80 chars, when possible.

While it is true (IMO) that the widget and customize code is difficult to
penetrate, it is also true that once it is fathomed we have infrastructure to do
some of these things ready-to-hand. We have code to pretty-print a Lisp sexp,
for instance.

This UI has been lingering (festering) in about the same state visually for a
long time now. Many people have recognized that it is not too user-friendly. But
the basic interaction and, especially, the behind the scenes functionality
(types etc.) is fairly solid. I think that even a minor a face lift could go a
long way toward making it palatable.

[-- Attachment #2: throw-align-widget.png --]
[-- Type: image/png, Size: 66004 bytes --]

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

* Re: Customize UI makeover?
  2008-04-27 22:43 Customize UI makeover? Drew Adams
@ 2008-04-28 15:18 ` Richard M Stallman
  2008-04-28 15:50   ` Drew Adams
  0 siblings, 1 reply; 3+ messages in thread
From: Richard M Stallman @ 2008-04-28 15:18 UTC (permalink / raw)
  To: Drew Adams; +Cc: emacs-devel

    Customize is an atrocious UI, at least in terms of its appearance.

I agree this could use improvement.  But I hope we can avoid
having a discussion here about what that improvement should be,
because that would take up a lot of time and be inconclusive.
What we need is for a person to understands these matters
to write a change and present it.




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

* RE: Customize UI makeover?
  2008-04-28 15:18 ` Richard M Stallman
@ 2008-04-28 15:50   ` Drew Adams
  0 siblings, 0 replies; 3+ messages in thread
From: Drew Adams @ 2008-04-28 15:50 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

>     Customize is an atrocious UI, at least in terms of its appearance.
> 
> I agree this could use improvement.  But I hope we can avoid
> having a discussion here about what that improvement should be,
> because that would take up a lot of time and be inconclusive.
> What we need is for a person to understands these matters
> to write a change and present it.

I agree. The suggestions I offered were just food for thought for someone who
might be interested in trying. No need to start a big discussion here. Almost
any attempt at improvement will likely be helpful.





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

end of thread, other threads:[~2008-04-28 15:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-27 22:43 Customize UI makeover? Drew Adams
2008-04-28 15:18 ` Richard M Stallman
2008-04-28 15:50   ` Drew Adams

Code repositories for project(s) associated with this external index

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

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