Just to make things clear for myself: An Elisp `face' is not a primitive
    type like say `integer' or `overlay'.  It's merely a set of attributes
    stored, together with some identifying information, in a vector which is
    interpreted by the display engine in a special way.

That data type is used internally, but the faces that Lisp programs
normally operate on are symbols.

      If FACE is empty the display engine interprets the semantics of
    FACE 

I am not sure what situation you're talking about.  Where in the data
structure was nil encountered?

    Now `face' is also a "customization type" used in `defface' and in
    `defcustom ... :type 'face'.

It expects the value to be a symbol, but it displays the appearance
of that symbol.

                                  With defface I directly assign FACE to a
    variable.

No, defface does not set the value as a variable.  It defines a symbol
with the `face' property which defines it as a face.

    - defface a new face "nil" with no attributes and have defcustom refer
       to that face (another interpretation of Richard's proposal), which
       would require to change the semantics of nil (in the context of faces
       only).

    The first three don't address the problem that nil is not a valid value
    for a variable storing FACE.  The fourth does but I can't imagine how to
    implement it.

How about this?

(defface nil nil
  "Face which specifies no attributes."
  :group 'basic-faces)


_______________________________________________
Emacs-pretest-bug mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Reply via email to