From: Kenichi Handa Date: Thu, 6 Oct 2005 06:57:41 +0000 (+0000) Subject: (what-cursor-position): If the character is displayed X-Git-Tag: emacs-pretest-22.0.90~6797 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a41b50cadd056bc6f851c03ad7aa751d42d66d41;p=emacs.git (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. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ec06f7d4207..f0a046c363d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-10-06 Kenichi Handa + + * simple.el (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. + 2005-10-06 Nick Roberts * progmodes/gdb-ui.el (gdb-fringe-width): New variable. diff --git a/lisp/simple.el b/lisp/simple.el index 96ca1cc7ea1..cab04c135d9 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -896,22 +896,42 @@ in *Help* buffer. See also the command `describe-char'." (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 @@ in *Help* buffer. See also the command `describe-char'." (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