unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Drew Adams" <drew.adams@oracle.com>
Subject: alternative Customize displays: 1) flattened group, 2) expandable tree, 3) explorer: tree+flattened, 4) mouse-3 menu
Date: Fri, 22 Dec 2006 12:08:17 -0800	[thread overview]
Message-ID: <BDEIJAFNGDOAGCJIPKPBAEHJCBAA.drew.adams@oracle.com> (raw)

For consideration after the release:


1. Customize groups can have subgroups. The guideline is to use no more than
12 options + faces per group. This encourages the use of group hierarchies
that are not too shallow, which is a good thing. (AFAIK, there is no
guideline for the number of subgroups per group, however.)

However, sometimes the inclusion of an option or face in a particular
subgroup is somewhat arbitrary. In any case, even when it is not, it is not
always obvious to a Customize user which (sub)group to examine to find a
particular option (whose name might not be recalled, so `customize-group'
would still be an appropriate access method).

Suggested alternative Customize display: Let users see all of the options
and faces that are in a group, including those that are in its subgroups
(and so on, recursively).

That is, provide a Customize buffer that shows a group with its subgroups
flattened (recursively), in a single alphabetical list. Searching the list
for a group would then be an alternative to looking directly in the right
subgroup. In sum, a flat listing as a user alternative to the current
hierarchical view.

The flattened list would show only the option and face names - no
descriptive text, buttons, or customization fields. Descriptions would be
available via tooltips, not buffer text. The option and face names would be
links to their individual Customize buffers. Because the description and
customization fields and buttons would be removed, and the names themselves
would be links, the display would be clean and compact.

(If people think it's important to provide the customize stuff locally, in
the group listing, then, instead of opening a separate Customize buffer for
the option or face, the name link could expand to show the stuff locally.
That would not be my preference, however.)


2. As another alternative to the current Customize display, how about
providing a real tree view, with just the group names (the group
descriptions would be provided via tooltips, not buffer text). This would be
like other tree displays in Emacs (e.g. speedbar), with expandable (+) and
contractable (-) nodes.

contracted:

(+) Emacs

expanded:

(-) Emacs
 (+) Editing
 (+) External
 (+) Convenience
 (+) Programming
 (+) Applications
...

[BTW, the subgroups should be listed alphabetically, but they are not,
currently.]


These alternative Customize displays (#1 and #2) could be provided via new
buttons or menu items, as well as by new commands (or by prefix args to
`customize-group').


3. Suggestions #1 and #2 could be combined:

Each group name in the +/- tree view would be a link (reducing the extra
"group: Go to Group" verbiage that is used now). If you clicked a group
name, e.g. Emacs or Editing, the right half of the frame would show, in
another window, a (flattened, alphabetical) list of all of the options and
faces in that group, perhaps with the group description (one-liner) at the
top of that buffer.

So, if you clicked Emacs, you would see a list of all options and faces in
group Emacs; if you clicked Editing, you would see a list of all that are in
subgroup Editing (and its subgroups), and so on.

The display of the contents of a group, at the right, would be independent
of the expansion and contraction of tree nodes, at the left, except that the
group whose contents are currently displayed at the right would be
highlighted in the tree view, at the left. This would be similar to what
Windows Explorer does for directories and files, except that instead of
showing the subgroup names in a group listing (at the right), the group
listing would be complete (flattened).

This would give you easy navigating, as well as alphabetical lists at any
level of granularity. The display would be much less noisy (busy) than it is
now: noise would be manifested only upon demand ;-).


4. In addition to providing descriptions via tooltips, we could have a
right-click (i.e. mouse-3) menu with a Properties item that provides the
description and perhaps other information. This too is MS Windows-like, but
it is quite handy, IMO. This right-click binding would be in effect only
when the mouse is over a group, option, or face name link. Additional menu
items that pertain to the clicked object could be provided - e.g. the
`custom-group*' stuff for a group, the `custom-face*' stuff for a face...

             reply	other threads:[~2006-12-22 20:08 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-22 20:08 Drew Adams [this message]
2006-12-24  1:32 ` alternative Customize displays: 1) flattened group, 2) expandable tree, 3) explorer: tree+flattened, 4) mouse-3 menu Johan Bockgård
2006-12-24  2:08   ` Drew Adams
2006-12-26  0:01 ` Kim F. Storm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BDEIJAFNGDOAGCJIPKPBAEHJCBAA.drew.adams@oracle.com \
    --to=drew.adams@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).