diff lisp/mule/mule-cmds.el @ 4590:c83cab5a4f04

Display control characters using carets, invalid-sequence-coding-system 2009-01-31 Aidan Kehoe <kehoea@parhasard.net> * mule/mule-cmds.el (finish-set-language-environment): Treat control characters specially in the invalid-sequence-coding-system handling, display them using the caret notation.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 31 Jan 2009 17:38:07 +0000
parents 774e5c7522bf
children e0a8715fdb1f
line wrap: on
line diff
--- a/lisp/mule/mule-cmds.el	Sun Jan 18 12:56:51 2009 +0000
+++ b/lisp/mule/mule-cmds.el	Sat Jan 31 17:38:07 2009 +0000
@@ -771,17 +771,18 @@
   (let ((invalid-sequence-coding-system
          (get-language-info language-name 'invalid-sequence-coding-system))
         (disp-table (specifier-instance current-display-table))
-        glyph)
+        glyph string)
     (when (consp invalid-sequence-coding-system)
       (setq invalid-sequence-coding-system
             (car invalid-sequence-coding-system)))
     (map-char-table
      #'(lambda (key entry)
-         (setq glyph (make-glyph
-                      (vector
-                       'string :data
-                       (decode-coding-string (string entry)
-                                             invalid-sequence-coding-system))))
+         (setq string (decode-coding-string (string entry)
+                                            invalid-sequence-coding-system))
+         ;; Treat control characters specially:
+         (when (string-match "^[\x00-\x1f\x80-\x9f]$" string)
+           (setq string (format "^%c" (+ ?@ (aref string 0)))))
+         (setq glyph (make-glyph (vector 'string :data string)))
          (set-glyph-face glyph 'unicode-invalid-sequence-warning-face)
          (put-char-table key glyph disp-table)
          nil)