Subject: bug#12086: 24.1; character groups and `glyphless-char-display-control'

From: "Drew Adams" <[email-masked]>
Date: Sun, 29 Jul 2012 15:28:47 -0700

1. Both the doc string and the doc in the Elisp manual have this
problem: Nothing is said about what the display is for a group that is
NOT included in the value of option `glyphless-char-display-control'.
 
IOW, this option apparently lets you specify, for one or more given
character groups, how its chars are to be displayed.  But nothing is
said about how the chars are displayed for a group that is not specified
using this option.

Presumably, some reference should be made here to
`glyphless-char-display'.  But even for that variable there is no
explanation of what normally sets that variable value, and based on what.
How is someone to know how a character group is displayed that is not
listed in `glyphless-char-display-control'?

2. I also wonder about the critter called a character "group", which is
apparently new with Emacs 24.  Where is the notion of character group
defined?  Although new with Emacs 24, I find it mentioned nowhere in NEWS.
 
And how does this critter relate, for instance, to a character set
(charset)?  For example, `c1-control' is a character group and
`control-1' is a charset.  But these seem to include the same set of
characters:

`describe-character-set control-1' says that it is the 8-bit control
codes (0x80..0x9F).  The doc for `glyphless-char-display-control' says
that group `c1-control' is the non-ASCII, non-printing characters
`U+0080' to `U+009F'.
 
Is that a coincidence or a deliberate correspondence?  Any rational
relation between char groups and charsets should be documented.  The
relation between char group `c1-control' and charset `control-1' seems
to be one such presumably rational relation.

3. How, if it is even possible, can a programmer turn off the effect of
the glyphless display, which uses face `glyphless-char'?
 
For example, for a non-breaking hyphen you can set
`nobreak-char-display' to nil and then use ordinary font-lock with any
face you want, to display the character other than with the default face
`escape-glyph'.
 
How to do the same thing for glyphless characters?  Is it even possible?
Or is the only control a programmer or user has is to set
`glyphless-char-display-control'?  That option controls the METHOD, but
not the face used.

4. If I do (insert-char #x80 4), I see four \200 chars in what appears to be
face `escape-glyph', and NOT in face `glyphless-char'.  Doesn't the doc say that
`glyphless-char' is used?  And `C-u C-x =' does not say anything about either of
those faces.  What is going on here?

In GNU Emacs 24.1.1 (i386-mingw-nt5.1.2600)
 of 2012-06-10 on MARVIN
Windowing system distributor `Microsoft Corp.', version 5.1.2600
Configured using:
 `configure --with-gcc (4.6) --cflags
 -ID:/devel/emacs/libs/libXpm-3.5.8/include
 -ID:/devel/emacs/libs/libXpm-3.5.8/src
 -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include
 -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include
 -ID:/devel/emacs/libs/giflib-4.1.4-1/include
 -ID:/devel/emacs/libs/jpeg-6b-4/include
 -ID:/devel/emacs/libs/tiff-3.8.2-1/include
 -ID:/devel/emacs/libs/gnutls-3.0.9/include'