unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* provide an easy way to customize inherited faces
@ 2006-07-15 14:44 Drew Adams
  2006-07-16  6:25 ` Richard Stallman
  2006-07-16 12:34 ` Stefan Monnier
  0 siblings, 2 replies; 6+ messages in thread
From: Drew Adams @ 2006-07-15 14:44 UTC (permalink / raw)


In Customize, when a face inherits from another, only the directly inherited
face name appears, and it appears only as text in an editable field. If you
know what you're doing, then you can put point in the field and use M-x
customize-face. Even then, however, the default value is just the face name
in the editable field; there is no easy way to customize other faces in the
inheritance hierarchy.

When a face inherits from others, the list of inherited faces should be
shown explicitly in the Customize buffer in some fashion. A simple list next
to the editable field (perhaps with items separated by "<"), would suffice.
It should be possible to easily customize any of the faces in that list, and
it should be obvious how to do so. Each name could be a link, and the list
of links could have a label such as "Customize Inherited Face(s)", where the
`s' is shown only when the inheritance chain is longer than two.

In many cases, it will make more sense for a user to customize an inherited
face - perhaps even a face at the top of the inheritance tree, than it would
for the user to customize each of several faces separately. An example is
face `link'. Even though the inheritance tree is flat, there are several
faces that inherit from `link'. Most users will want to change the
appearance of all of these at once - for example, to remove underlining. How
to do that is not obvious.

The natural result will be that users will end up customizing multiple faces
when one would have sufficed. The other result is that users will become
confused and frustrated, not understanding why links still appear underlined
(for example) in some buffers, even after customizing.

The starting point for customizing a face for most users will be to put
point on a face and use M-x customize-face or the equivalent via the Text
Properties menu. This will show them a face such as `info-link' or
`custom-link' in Customize, instead of the parent face, `link'. That's good,
but the inheritance information is not as accessible, for customization, as
it could be, especially in the case of a chain longer than two.

The link example is a good one, even if the hierarchy is flat. Although it
is perhaps good that links are underlined by default now, I suspect that
many Emacs users other than newbies will want to remove underlining as one
of their first customizations in Emacs 22.

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

* Re: provide an easy way to customize inherited faces
  2006-07-15 14:44 provide an easy way to customize inherited faces Drew Adams
@ 2006-07-16  6:25 ` Richard Stallman
  2006-07-16 17:33   ` Drew Adams
  2006-07-16 12:34 ` Stefan Monnier
  1 sibling, 1 reply; 6+ messages in thread
From: Richard Stallman @ 2006-07-16  6:25 UTC (permalink / raw)
  Cc: emacs-devel

    In Customize, when a face inherits from another, only the directly inherited
    face name appears, and it appears only as text in an editable field. If you
    know what you're doing, then you can put point in the field and use M-x
    customize-face. Even then, however, the default value is just the face name
    in the editable field;

What else would it be?

			   there is no easy way to customize other faces in the
    inheritance hierarchy.

This doesn't seem wrong, really.  If you customize the other face,
that will show you whatever face it inherits from, etc.

    When a face inherits from others, the list of inherited faces should be
    shown explicitly in the Customize buffer in some fashion. A simple list next
    to the editable field (perhaps with items separated by "<"), would suffice.

If someone wants to do it, it can't hurt.
(We don't want to install it now, of course.)

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

* Re: provide an easy way to customize inherited faces
  2006-07-15 14:44 provide an easy way to customize inherited faces Drew Adams
  2006-07-16  6:25 ` Richard Stallman
@ 2006-07-16 12:34 ` Stefan Monnier
  2006-07-16 17:02   ` Drew Adams
  2006-07-17  1:41   ` Richard Stallman
  1 sibling, 2 replies; 6+ messages in thread
From: Stefan Monnier @ 2006-07-16 12:34 UTC (permalink / raw)
  Cc: Emacs-Devel

> When a face inherits from others, the list of inherited faces should be
> shown explicitly in the Customize buffer in some fashion.

The problem is that it's a tree, not a list.  So it's significantly more
difficult to display.


        Stefan

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

* RE: provide an easy way to customize inherited faces
  2006-07-16 12:34 ` Stefan Monnier
@ 2006-07-16 17:02   ` Drew Adams
  2006-07-17  1:41   ` Richard Stallman
  1 sibling, 0 replies; 6+ messages in thread
From: Drew Adams @ 2006-07-16 17:02 UTC (permalink / raw)


    > When a face inherits from others, the list of inherited faces
    > should be shown explicitly in the Customize buffer in some fashion.

    The problem is that it's a tree, not a list.  So it's significantly more
    difficult to display.

True. But that's all the more reason to do it. If people can only manifest
the tree one node at a time (as Richard suggested: go to an inherited face,
go to a face inherited by that inherited face, etc.), then they will quickly
lose the forest for the trees (actually, lose the tree for the branches).

A tree can also be collapsed, to save space. Don't we have a widget tree
thing that could be used here?

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

* RE: provide an easy way to customize inherited faces
  2006-07-16  6:25 ` Richard Stallman
@ 2006-07-16 17:33   ` Drew Adams
  0 siblings, 0 replies; 6+ messages in thread
From: Drew Adams @ 2006-07-16 17:33 UTC (permalink / raw)


        In Customize, when a face inherits from another, only the
        directly inherited face name appears, and it appears only as
        text in an editable field. If you know what you're doing, then
        you can put point in the field and use M-x
        customize-face. Even then, however, the default value is
        just the face name in the editable field;

    What else would it be?

I meant that you see only the directly inherited face name there. You cannot
see faces inherited from that face.

Also, as Stefan pointed out, what happens if a face inherits from more than
one face - which is used as the editable text? I haven't experimented with
this - are there a series of editable fields, one for each inherited face?

    	  there is no easy way to customize other faces in the
        inheritance hierarchy.

    This doesn't seem wrong, really.  If you customize the other face,
    that will show you whatever face it inherits from, etc.

Yes, but that is more roundabout than necessary. Most inheritance
hierarchies will be pretty shallow. Why not show all the faces that are
inherited?

        When a face inherits from others, the list of inherited
        faces should be shown explicitly in the Customize buffer in
        some fashion. A simple list next to the editable field
        (perhaps with items separated by  "<"), would suffice.

    If someone wants to do it, it can't hurt.
    (We don't want to install it now, of course.)

Agreed - no need to do it now.

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

* Re: provide an easy way to customize inherited faces
  2006-07-16 12:34 ` Stefan Monnier
  2006-07-16 17:02   ` Drew Adams
@ 2006-07-17  1:41   ` Richard Stallman
  1 sibling, 0 replies; 6+ messages in thread
From: Richard Stallman @ 2006-07-17  1:41 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    > When a face inherits from others, the list of inherited faces should be
    > shown explicitly in the Customize buffer in some fashion.

    The problem is that it's a tree, not a list.  So it's significantly more
    difficult to display.

It won't be terribly hard to develop a textual representation for
this.  If someone wants to work on it, he will manage.

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

end of thread, other threads:[~2006-07-17  1:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-15 14:44 provide an easy way to customize inherited faces Drew Adams
2006-07-16  6:25 ` Richard Stallman
2006-07-16 17:33   ` Drew Adams
2006-07-16 12:34 ` Stefan Monnier
2006-07-16 17:02   ` Drew Adams
2006-07-17  1:41   ` Richard Stallman

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).