changeset 65862:8b246680b846

(what-cursor-position): If the character is displayed by some `display' text property, show that. Don't use single-key-description for eight-bit characters in multibyte mode.
author Kenichi Handa <handa@m17n.org>
date Thu, 06 Oct 2005 06:55:45 +0000
parents 8063c9277e58
children 31848056b33c
files lisp/simple.el
diffstat 1 files changed, 34 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Thu Oct 06 06:06:55 2005 +0000
+++ b/lisp/simple.el	Thu Oct 06 06:55:45 2005 +0000
@@ -896,22 +896,42 @@
 	  (message "point=%d of %d (%d%%) column %d %s"
 		   pos total percent col hscroll))
       (let ((coding buffer-file-coding-system)
-	    encoded encoding-msg)
+	    encoded encoding-msg display-prop under-display)
 	(if (or (not coding)
 		(eq (coding-system-type coding) t))
 	    (setq coding default-buffer-file-coding-system))
 	(if (not (char-valid-p char))
 	    (setq encoding-msg
 		  (format "(0%o, %d, 0x%x, invalid)" char char char))
-	  (setq encoded (and (>= char 128) (encode-coding-char char coding)))
+	  ;; Check if the character is displayed with some `display'
+	  ;; text property.  In that case, set under-display to the
+	  ;; buffer substring covered by that property.
+	  (setq display-prop (get-text-property pos 'display))
+	  (if display-prop
+	      (let ((to (or (next-single-property-change pos 'display)
+			    (point-max))))
+		(if (< to (+ pos 4))
+		    (setq under-display "")
+		  (setq under-display "..."
+			to (+ pos 4)))
+		(setq under-display
+		      (concat (buffer-substring-no-properties pos to)
+			      under-display)))
+	    (setq encoded (and (>= char 128) (encode-coding-char char coding))))
 	  (setq encoding-msg
-		(if encoded
-		    (format "(0%o, %d, 0x%x, file %s)"
-			    char char char
-			    (if (> (length encoded) 1)
-				"..."
-			      (encoded-string-description encoded coding)))
-		  (format "(0%o, %d, 0x%x)" char char char))))
+		(if display-prop
+		    (if (not (stringp display-prop))
+			(format "(0%o, %d, 0x%x, part of display \"%s\")"
+				char char char under-display)
+		      (format "(0%o, %d, 0x%x, part of display \"%s\"->\"%s\")"
+			      char char char under-display display-prop))
+		  (if encoded
+		      (format "(0%o, %d, 0x%x, file %s)"
+			      char char char
+			      (if (> (length encoded) 1)
+				  "..."
+				(encoded-string-description encoded coding)))
+		    (format "(0%o, %d, 0x%x)" char char char)))))
 	(if detail
 	    ;; We show the detailed information about CHAR.
 	    (describe-char (point)))
@@ -922,9 +942,11 @@
 		       (buffer-substring-no-properties (point) (1+ (point))))
 		     encoding-msg pos total percent beg end col hscroll)
 	  (message "Char: %s %s point=%d of %d (%d%%) column %d %s"
-		   (if (< char 256)
-		       (single-key-description char)
-		     (buffer-substring-no-properties (point) (1+ (point))))
+		   (if enable-multibyte-characters
+		       (if (< char 128)
+			   (single-key-description char)
+			 (buffer-substring-no-properties (point) (1+ (point))))
+		     (single-key-description char))
 		   encoding-msg pos total percent col hscroll))))))
 
 (defvar read-expression-map