Subject: bug#24468: closed (Re: bug#24468: Emacs 25.1: Use of face escape-glyph on curly quotes is irritating.)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 17 Oct 2016 05:54:02 +0000

Your bug report

#24468: Emacs 25.1: Use of face escape-glyph on curly quotes is irritating.

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
24468: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=24468
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#24468: Emacs 25.1: Use of face escape-glyph on curly quotes is irritating.
From: Paul Eggert <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sun, 16 Oct 2016 22:52:58 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Eli Zaretskii wrote:
>> > How about 'homo-glyph'? That is more technically accurate anyway, as this
>> > feature is all about homoglyphs.
> Fine with me, thanks.

I installed it as 'homoglyph' via the attached patch, since when I wrote it up 
'homo-glyph' was confusing: the English word is 'homoglyph' after all.
>From 26bde696c76d423ae62f191472b5002b58a66230 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Sun, 16 Oct 2016 18:48:19 -0700
Subject: [PATCH] New face homoglyph

Suggested by Eli Zaretskii, from a feature request by
Alan Mackenzie (Bug#24468).
* doc/emacs/display.texi (Standard Faces, Text Display):
* etc/NEWS: Document this.
* etc/themes/dichromacy-theme.el, etc/themes/leuven-theme.el:
* etc/themes/light-blue-theme.el, etc/themes/manoj-dark-theme.el:
* etc/themes/tango-dark-theme.el, etc/themes/tango-theme.el:
* etc/themes/wombat-theme.el:
Customize homoglyph to be the same as escape-glyph.
* lisp/cus-theme.el (custom-theme--listed-faces):
Add homoglyph.
* lisp/faces.el (homoglyph): New face.
* lisp/startup.el (startup--setup-quote-display): Use it.
---
 doc/emacs/display.texi         | 10 +++++++---
 etc/NEWS                       |  4 ++++
 etc/themes/dichromacy-theme.el |  1 +
 etc/themes/leuven-theme.el     |  1 +
 etc/themes/light-blue-theme.el |  1 +
 etc/themes/manoj-dark-theme.el |  1 +
 etc/themes/tango-dark-theme.el |  1 +
 etc/themes/tango-theme.el      |  1 +
 etc/themes/wombat-theme.el     |  1 +
 lisp/cus-theme.el              |  3 ++-
 lisp/faces.el                  |  8 ++++++++
 lisp/startup.el                |  2 +-
 12 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index 738d72d..492dfc6 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -657,6 +657,10 @@ Standard Faces
 @item escape-glyph
 The face for displaying control characters and escape sequences
 (@pxref{Text Display}).
+@item homoglyph
+The face for displaying lookalike characters, i.e., characters that
+look like but are not the characters being represented
+(@pxref{Text Display}).
 @item nobreak-space
 The face for displaying no-break space characters (@pxref{Text
 Display}).
@@ -1520,12 +1524,12 @@ Text Display
 
 @cindex curly quotes
 @cindex curved quotes
-@cindex escape-glyph face
+@cindex homoglyph face
   If the curved quotes @samp{‘}, @samp{’}, @samp{“}, and @samp{”} are
 known to look just like @acronym{ASCII} characters, they are shown
-with the @code{escape-glyph} face.  Curved quotes that cannot be
+with the @code{homoglyph} face.  Curved quotes that cannot be
 displayed are shown as their @acronym{ASCII} approximations @samp{`},
-@samp{'}, and @samp{"} with the @code{escape-glyph} face.
+@samp{'}, and @samp{"} with the @code{homoglyph} face.
 
 @node Cursor Display
 @section Displaying the Cursor
diff --git a/etc/NEWS b/etc/NEWS
index 14450a6..45d4e50 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -115,6 +115,10 @@ to control whether to suggest shorter 'M-x' commands or not.
 ** Non-breaking hyphens are now displayed with the 'nobreak-hyphen'
 face instead of the 'escape-glyph' face.
 
++++
+** Approximations to quotes are now displayed with the new 'homoglyph'
+face instead of the 'escape-glyph' face.
+
 ---
 ** 'C-x h' ('mark-whole-buffer') will now avoid marking the prompt
 part of minibuffers.
diff --git a/etc/themes/dichromacy-theme.el b/etc/themes/dichromacy-theme.el
index f8fae70..1e7c509 100644
--- a/etc/themes/dichromacy-theme.el
+++ b/etc/themes/dichromacy-theme.el
@@ -60,6 +60,7 @@ dichromacy
    ;; Escape and prompt faces
    `(minibuffer-prompt ((,class (:weight bold :foreground ,blue))))
    `(escape-glyph ((,class (:foreground ,vermillion))))
+   `(homoglyph ((,class (:foreground ,vermillion))))
    `(error ((,class (:weight bold :slant italic
 			     :foreground ,vermillion))))
    `(warning ((,class (:foreground ,orange))))
diff --git a/etc/themes/leuven-theme.el b/etc/themes/leuven-theme.el
index 75635eb..19d5561 100644
--- a/etc/themes/leuven-theme.el
+++ b/etc/themes/leuven-theme.el
@@ -119,6 +119,7 @@ leuven
    `(minibuffer-prompt ((,class (:weight bold :foreground "black" :background "gold"))))
    `(minibuffer-noticeable-prompt ((,class (:weight bold :foreground "black" :background "gold"))))
    `(escape-glyph ((,class (:foreground "#008ED1"))))
+   `(homoglyph ((,class (:foreground "#008ED1"))))
    `(error ((,class (:foreground "red"))))
    `(warning ((,class (:weight bold :foreground "orange"))))
    `(success ((,class (:foreground "green"))))
diff --git a/etc/themes/light-blue-theme.el b/etc/themes/light-blue-theme.el
index 8c80a66..a2ed71a 100644
--- a/etc/themes/light-blue-theme.el
+++ b/etc/themes/light-blue-theme.el
@@ -48,6 +48,7 @@ light-blue
    `(mode-line-inactive ((,class (:inherit mode-line :background "LightGray" :foreground "grey20" :box (:line-width -1 :color "grey75") :weight light))))
    ;; Escape and prompt faces
    `(escape-glyph ((,class (:background "gold" :foreground "blue" :box (:line-width 1 :color "blue" :style released-button)))))
+   `(homoglyph ((,class (:background "gold" :foreground "blue" :box (:line-width 1 :color "blue" :style released-button)))))
    ;; Font lock faces
    `(font-lock-builtin-face ((,class (:foreground "#b35caf"))))
    `(font-lock-constant-face ((,class (:foreground "#00006DE06DE0"))))
diff --git a/etc/themes/manoj-dark-theme.el b/etc/themes/manoj-dark-theme.el
index b512020..549d11b 100644
--- a/etc/themes/manoj-dark-theme.el
+++ b/etc/themes/manoj-dark-theme.el
@@ -482,6 +482,7 @@ manoj-dark
  '(epa-validity-medium ((t (:italic t :foreground "PaleTurquoise" :slant italic))))
 
  '(escape-glyph ((t (:foreground "cyan"))))
+ '(homoglyph ((t (:foreground "cyan"))))
 
  '(eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
  '(eshell-ls-backup-face ((t (:foreground "Grey"))))
diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el
index 9ef0276..407c79b 100644
--- a/etc/themes/tango-dark-theme.el
+++ b/etc/themes/tango-dark-theme.el
@@ -78,6 +78,7 @@ tango-dark
    ;; Escape and prompt faces
    `(minibuffer-prompt ((,class (:foreground ,cham-0))))
    `(escape-glyph ((,class (:foreground ,butter-3))))
+   `(homoglyph ((,class (:foreground ,butter-3))))
    `(error ((,class (:foreground ,red-0))))
    `(warning ((,class (:foreground ,orange-1))))
    `(success ((,class (:foreground ,cham-1))))
diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el
index cda546b..a2d7c84 100644
--- a/etc/themes/tango-theme.el
+++ b/etc/themes/tango-theme.el
@@ -66,6 +66,7 @@ tango
    ;; Escape and prompt faces
    `(minibuffer-prompt ((,class (:weight bold :foreground ,blue-3))))
    `(escape-glyph ((,class (:foreground ,red-3))))
+   `(homoglyph ((,class (:foreground ,red-3))))
    `(error ((,class (:foreground ,red-3))))
    `(warning ((,class (:foreground ,orange-3))))
    `(success ((,class (:foreground ,cham-3))))
diff --git a/etc/themes/wombat-theme.el b/etc/themes/wombat-theme.el
index 08ae12f..6768cce 100644
--- a/etc/themes/wombat-theme.el
+++ b/etc/themes/wombat-theme.el
@@ -46,6 +46,7 @@ wombat
    ;; Escape and prompt faces
    `(minibuffer-prompt ((,class (:foreground "#e5786d"))))
    `(escape-glyph ((,class (:foreground "#ddaa6f" :weight bold))))
+   `(homoglyph ((,class (:foreground "#ddaa6f" :weight bold))))
    ;; Font lock faces
    `(font-lock-builtin-face ((,class (:foreground "#e5786d"))))
    `(font-lock-comment-face ((,class (:foreground "#99968b"))))
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 3160e23..5a20b8e 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -61,7 +61,8 @@ custom-theme-insert-variable-marker
 (defvar custom-theme-insert-face-marker nil)
 
 (defvar custom-theme--listed-faces '(default cursor fixed-pitch
-  variable-pitch escape-glyph minibuffer-prompt highlight region
+  variable-pitch escape-glyph homoglyph
+  minibuffer-prompt highlight region
   shadow secondary-selection trailing-whitespace
   font-lock-builtin-face font-lock-comment-delimiter-face
   font-lock-comment-face font-lock-constant-face
diff --git a/lisp/faces.el b/lisp/faces.el
index 15090e1..d6ec98b 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2470,6 +2470,14 @@ escape-glyph
   :group 'basic-faces
   :version "22.1")
 
+(defface homoglyph
+  '((((background dark)) :foreground "cyan")
+    (((type pc)) :foreground "magenta")
+    (t :foreground "brown"))
+  "Face for lookalike characters."
+  :group 'basic-faces
+  :version "25.2")
+
 (defface nobreak-space
   '((((class color) (min-colors 88)) :inherit escape-glyph :underline t)
     (((class color) (min-colors 8)) :background "magenta")
diff --git a/lisp/startup.el b/lisp/startup.el
index d5225bd..4a04f9c 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -870,7 +870,7 @@ startup--setup-quote-display
         (if repl
             (aset (or standard-display-table
                       (setq standard-display-table (make-display-table)))
-                  char (vector (make-glyph-code repl 'escape-glyph)))
+                  char (vector (make-glyph-code repl 'homoglyph)))
           (when standard-display-table
             (aset standard-display-table char nil)))))))
 
-- 
2.7.4

Subject: Emacs 25.1: Use of face escape-glyph on curly quotes is irritating.
From: Alan Mackenzie <[email-masked]>
To: [email-masked]
Date: Mon, 19 Sep 2016 10:01:01 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello, Emacs.

In Emacs 25.1, I am using the info files built for the distribution
using texinfo 5 (?or 6).  They contain lots of curly quotes.

On my Linux virtual terminal, these are all displayed with the
escape-glyph, which is irritating in the extreme.  The workaround of
customizing escape-glyph to the default face would prevent the effect of
highlighting things like \377 and ^L, which is the proper use of
escape-glyph.

The only other workaround I can think of is rebuilding the Emacs info
files with texinfo 4, but that is not a long term option.

This misuse of the escape-glyph face is hardcoded into
startup--setup-quote-display.  It shouldn't be.

So, I'm reduced to hacking the source code to get what urgently needs to
be a user option.

Please, can we have this facility, at long last, controlled by a
customisable option?

-- 
Alan Mackenzie (Nuremberg, Germany).