emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: no doc for `group' in custom :type


From: Per Abrahamsen
Subject: Re: no doc for `group' in custom :type
Date: Wed, 1 Aug 2007 18:19:29 +0200

Basically, there are two "levels" of widgets.  The low level widgets
which provide the "inline form editing functionality" and the sexp
widgets which are suposed to represent Lisp s-expressions.  The sexp
widgets are build on top of the low level widgets.

In theory, if you are building a form where the data represents
something other than s-expressions, you should use the low level
widgets, while if what you are building is some textual representation
of s-expressions you should use the sexp widgets.

The custom types, by nature, always represent sexps.  So only the sexp
expressions should be used.

In practise, the distinction is muddy, as the low level widgets
naturally also must use s-expressions to hold their value.  So
whatever looks best tend to be used.

The group widget is a low level widget that represent allows you to
handle a group of widgets as a single widget.  The value of the group
widget is represented as a list whose members are the values of the
child widgets.  Which happens to be exactly the same as how the "list"
widget represent its value.  So the two are almost identical.

The difference is in the :format attribute, one of them shows both the
tag and the value, while the other does not.  I don't remember which
is which.


On 7/30/07, Richard Stallman <address@hidden> wrote:
> Do you remember what the custom type `group' is for?  I would like to
> document it.
>
> X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY
>         autolearn=failed version=3.1.0
> From: "Drew Adams" <address@hidden>
> To: "Emacs-Pretest-Bug" <address@hidden>
> Date: Fri, 8 Jun 2007 11:34:59 -0700
> MIME-Version: 1.0
> Content-Type: text/plain;
>         charset="iso-8859-1"
> Subject: no doc for `group' in custom :type
>
> In the Elisp manual, I find nothing about `group' as a type
> symbol. There is an example, in node Simple Types, that uses `group'
> when explaining type symbol `alist', but `group' is explained nowhere.
>
> This is the example:
>
>  (defcustom list-alist '(("foo" 1) ("bar" 2) ("baz" 3))
>             "Each element is a list of the form (KEY VALUE)."
>             :type '(alist :value-type (group integer)))
>
> The only explanation is this, given in passing:
>
>      The `group' widget is used here instead of `list' only because the
>      formatting is better suited for the purpose.
>
> What formatting? How is a reader supposed to understand this? Why does
> the manual speak of "widget" here, anyway? `group' should be explained
> as a symbol that you can use when defining a :type value in a
> `defcustom', just as `alist' and :value-type are explained in that
> context.
>
> `group' is not something specific to `alist', in any case. I find
> this, for instance, in file `cus-edit.el' (as well as many other uses
> of `group').
>
>  :type '(repeat (group (regexp :tag "Match") (sexp :tag "Type")))
>
> It seems that it is quite common to use `group' in `defcustom' :type
> specs, but it is not documented. If users are to understand `group'
> only by reading the widget doc, then there should at least be a cross
> reference to that doc here. How can Elisp programmers know about using
> `group' in :type specs if it is not documented?
>
> Furthermore, if you do go to the trouble of looking up `group' in the
> Widget manual, this is all you find (in node `group'):
>
>  The `group' Widget
>  ------------------
>
>  This widget simply group other widgets together.
>
>    Syntax:
>
>      TYPE ::= (group [KEYWORD ARGUMENT]... TYPE...)
>
>    The value is a list, with one member for each TYPE.
>
> There are no other occurrences of "group" in the Widget manual. And
> that node certainly doesn't teach us anything about formatting, or how
> the formatting is different from using `list' in :type.
>
> Please document `group' fully in the context of `defcustom' :type
> specs, explaining how it can be used and how it differs from using
> `list'.
>
>
>
> In GNU Emacs 22.1.50.1 (i386-mingw-nt5.1.2600)
>  of 2007-05-22 on LENNART-69DE564
> Windowing system distributor `Microsoft Corp.', version 5.1.2600
> configured using `configure --with-gcc (3.4) --cflags -Ic:/g/include'
>
>
>
>
> _______________________________________________
> emacs-pretest-bug mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug
>
>
>
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]