Subject: bug#51595: 26.3; Face attribute value `unspecified' in `defface' breaks Customize UI

From: Drew Adams <[email-masked]>
Date: Wed, 3 Nov 2021 21:09:41 +0000

emacs -Q

(defface foo '((t :background "LightBlue")) "DOC ..." :group 'faces)
(defface bar '((t :foreground unspecified :background "LightBlue"))
  "DOC..." :group 'faces)

`M-x customize-face foo' shows the UI for the attributes of the face.

`M-x customize-face bar' shows only the Lisp value of the face spec.  A
user has no way to get from there to showing all of the attributes.
There's no way to edit the face.

The doc (Elisp manual) draws no such distinction - speaks of no such
limitation.  It just lists `unspecified' as one of the possible face
attributes:

  "Apart from the values given below, each face attribute can have the
   value 'unspecified'."

This looks like a lacuna in the UI.  You can specify `unspecified' in a
`defface', and the face is perfectly usable and well-defined, but users
can't edit it - can't manipulate its attributes.

In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
 of 2019-08-29
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor `Microsoft Corp.', version 10.0.19042
Configured using:
 `configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''