changeset 24301:b09b949b5433

(what-cursor-position): Don't use the variable charset-origin-alist, but use charset-origin-alist property of buffer-file-coding-system to decide external character set code.
author Kenichi Handa <handa@m17n.org>
date Fri, 12 Feb 1999 08:06:39 +0000
parents 362153f8a336
children 814e54320fab
files lisp/simple.el
diffstat 1 files changed, 34 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Fri Feb 12 07:48:52 1999 +0000
+++ b/lisp/simple.el	Fri Feb 12 08:06:39 1999 +0000
@@ -517,29 +517,40 @@
 		     pos total percent beg end col hscroll)
 	  (message "point=%d of %d(%d%%)  column %d %s"
 		   pos total percent col hscroll))
-      (let* ((coding-system buffer-file-coding-system)
-	     (encoding
-	      (encode-coding-string (char-to-string char) coding-system t))
-	     (encoding-string-hex
-	      (mapconcat (lambda (ch) (format "0x%x" ch)) encoding " "))
-	     (encoding-msg
-	      (if (and coding-system
-			       (not (and (= (length encoding) 1)
-					 (= (aref encoding 0) char))))
-		  (format "(0%o, %d, 0x%x, ext %s)"
-			  char char char
-			  encoding-string-hex)
-		(format "(0%o, %d, 0x%x)"
-			char char char))))
+      (let ((charset (char-charset char))
+	    (coding-system buffer-file-coding-system)
+	    slot external encoding-msg)
+	;; To decided an external character code, we use
+	;; charset-origin-alist property of buffer-file-coding-system.
+	;; But, if buffer-file-coding-system is nil of undecided, use
+	;; that property of default-buffer-file-coding-system.  If
+	;; that property value is nil, we don't show external
+	;; character code.
+	(if (or (not coding-system)
+		(eq (coding-system-type coding-system) t))
+	    (setq coding-system default-buffer-file-coding-system))
+	(if (and coding-system
+		 (setq slot
+		       (coding-system-get coding-system 'charset-origin-alist))
+		 (setq slot (assq charset slot)))
+	    (setq external (list (nth 1 slot) (funcall (nth 2 slot) char))))
+	(setq encoding-msg
+	      (if external
+		  (format "(0%o, %d, 0x%x, ext 0x%x)"
+			  char char char (nth 1 external))
+		(format "(0%o, %d, 0x%x)" char char char)))
 	(if detail
-	    (let* ((internal (split-char char))
-		   (charset (char-charset char))
-		   (slot (assq charset charset-origin-alist))
-		   external)
-	      (if slot
-		  (setq external (list (nth 1 slot) (funcall (nth 2 slot) char)))
-		(if (eq charset 'composition)
-		    (setq internal '("composite-character"))
+	    ;; We show the detailed information of CHAR.
+	    (let (internal)
+	      (if (eq charset 'composition)
+		  ;; For a composite character, we show the components
+		  ;; only.
+		  (setq internal (concat "(composition of \""
+					 (decompose-composite-char char)
+					 "\")")
+			external nil)
+		(setq internal (split-char char))
+		(unless external
 		  (setq external (cons (charset-short-name charset)
 				       (copy-sequence (cdr internal))))
 		  (if (= (charset-iso-graphic-plane charset) 1)
@@ -552,7 +563,7 @@
 		       (if (< char 256)
 			   (single-key-description char)
 			 (char-to-string char))
-		       encoding-msg (or internal "") (or external "")))
+		       encoding-msg internal (or external "")))
 	  (if (or (/= beg 1) (/= end (1+ total)))
 	      (message "Char: %s %s point=%d of %d(%d%%) <%d - %d>  column %d %s"
 		       (if (< char 256)