changeset 88412:524f9b5b2ac5

(print-designation): Arguments changed. (print-iso-2022-flags): New function. (describe-coding-system): Adjusted for the new structure of coding system. (describe-current-coding-system): Likewise.
author Kenichi Handa <handa@m17n.org>
date Fri, 01 Mar 2002 02:21:53 +0000
parents 83d4c9cdedcb
children 418777d5ccd4
files lisp/international/mule-diag.el
diffstat 1 files changed, 59 insertions(+), 61 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/mule-diag.el	Fri Mar 01 02:12:59 2002 +0000
+++ b/lisp/international/mule-diag.el	Fri Mar 01 02:21:53 2002 +0000
@@ -3,6 +3,9 @@
 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
 ;; Licensed to the Free Software Foundation.
 ;; Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002
+;;   National Institute of Advanced Industrial Science and Technology (AIST)
+;;   Registration Number H13PRO009
 
 ;; Keywords: multilingual, charset, coding system, fontset, diagnosis, i18n
 
@@ -677,14 +680,23 @@
 ;; Print information of designation of each graphic register in FLAGS
 ;; in human readable format.  See the documentation of
 ;; `make-coding-system' for the meaning of FLAGS.
-(defun print-designation (flags)
-  (let ((graphic-register 0)
+(defun print-designation (charset-list initial request)
+  (let ((gr (make-vector 4 nil))
 	charset)
-    (while (< graphic-register 4)
+    (dotimes (i 4)
+      (let ((val (aref initial i)))
+	(cond ((symbolp val)
+	       (aset gr i (list val)))
+	      ((eq val -1)
+	       (aset gr i (list t))))))
+    (dolist (elt request)
+      (let ((reg (cdr elt)))
+	(nconc (aref gr reg) (list (car elt)))))
+    (dotimes (i 4)
       (setq charset (aref flags graphic-register))
       (princ (format
 	      "  G%d -- %s\n"
-	      graphic-register
+	      i
 	      (cond ((null charset)
 		     "never used")
 		    ((eq charset t)
@@ -714,6 +726,16 @@
 	  (setq charset (cdr charset))))
       (setq graphic-register (1+ graphic-register)))))
 
+(defun print-iso-2022-flags (flags)
+  (princ "Other specifications: \n  ")
+  (let ((i 0)
+	(l nil))
+    (dolist (elt coding-system-iso-2022-flags)
+      (if (/= (logand flags (lsh 1 i)) 0)
+	  (setq l (cons elt l))))
+    (princ l))
+  (terpri))
+
 ;;;###autoload
 (defun describe-coding-system (coding-system)
   "Display information about CODING-SYSTEM."
@@ -724,46 +746,30 @@
 		     (interactive-p))
     (with-output-to-temp-buffer (help-buffer)
       (print-coding-system-briefly coding-system 'doc-string)
-      (princ "\n")
-      (let ((coding-spec (coding-system-spec coding-system)))
+      (let* ((type (coding-system-type coding-system))
+	     (extra-spec (coding-system-extra-spec coding-system)))
 	(princ "Type: ")
-	(let ((type (coding-system-type coding-system))
-	      (flags (coding-system-flags coding-system)))
-	  (princ type)
-	  (cond ((eq type nil)
-		 (princ " (do no conversion)"))
-		((eq type t)
-		 (princ " (do automatic conversion)"))
-		((eq type 0)
-		 (princ " (Emacs internal multibyte form)"))
-		((eq type 1)
-		 (princ " (Shift-JIS, MS-KANJI)"))
-		((eq type 2)
-		 (princ " (variant of ISO-2022)\n")
-		 (princ "Initial designations:\n")
-		 (print-designation flags)
-		 (princ "Other Form: \n  ")
-		 (princ (if (aref flags 4) "short-form" "long-form"))
-		 (if (aref flags 5) (princ ", ASCII@EOL"))
-		 (if (aref flags 6) (princ ", ASCII@CNTL"))
-		 (princ (if (aref flags 7) ", 7-bit" ", 8-bit"))
-		 (if (aref flags 8) (princ ", use-locking-shift"))
-		 (if (aref flags 9) (princ ", use-single-shift"))
-		 (if (aref flags 10) (princ ", use-roman"))
-		 (if (aref flags 11) (princ ", use-old-jis"))
-		 (if (aref flags 12) (princ ", no-ISO6429"))
-		 (if (aref flags 13) (princ ", init-bol"))
-		 (if (aref flags 14) (princ ", designation-bol"))
-		 (if (aref flags 15) (princ ", convert-unsafe"))
-		 (if (aref flags 16) (princ ", accept-latin-extra-code"))
-		 (princ "."))
-		((eq type 3)
-		 (princ " (Big5)"))
-		((eq type 4)
-		 (princ " (do conversion by CCL program)"))
-		((eq type 5)
-		 (princ " (text with random binary characters)"))
-		(t (princ ": invalid coding-system."))))
+	(princ type)
+	(cond ((eq type 'undecided)
+	       (princ " (do automatic conversion)"))
+	      ((eq type 'utf-8)
+	       (princ " (UTF-8: Emacs internal multibyte form)"))
+	      ((eq type 'sjis)
+	       (princ " (Shift-JIS, MS-KANJI)"))
+	      ((eq type 'iso-2022)
+	       (princ " (variant of ISO-2022)\n")
+	       (princ "Initial designations:\n")
+	       (print-designation (coding-system-charset-list coding-system)
+				  (aref extra-spec 0) (aref extra-spec 1))
+	       (print-iso-2022-flags (aref extra-spec 2))
+	       (princ "."))
+	      ((eq type 'charset)
+	       (princ " (charset)"))
+	      ((eq type 'ccl)
+	       (princ " (do conversion by CCL program)"))
+	      ((eq type 'raw-text)
+	       (princ " (text with random binary characters)"))
+	      (t (princ ": invalid coding-system.")))
 	(princ "\nEOL type: ")
 	(let ((eol-type (coding-system-eol-type coding-system)))
 	  (cond ((vectorp eol-type)
@@ -902,30 +908,22 @@
 
       (princ "
 Priority order for recognizing coding systems when reading files:\n")
-      (let ((l coding-category-list)
-	    (i 1)
-	    (coding-list nil)
-	    coding aliases)
-	(while l
-	  (setq coding (symbol-value (car l)))
-	  ;; Do not list up the same coding system twice.
-	  (when (and coding (not (memq coding coding-list)))
-	    (setq coding-list (cons coding coding-list))
-	    (princ (format "  %d. %s " i coding))
-	    (setq aliases (coding-system-get coding 'alias-coding-systems))
-	    (if (eq coding (car aliases))
+      (let ((i 1))
+	(dolist (elt (coding-system-priority-list))
+	  (princ (format "  %d. %s " i elt))
+	  (let ((aliases (coding-system-aliases elt)))
+	    (if (eq elt (car aliases))
 		(if (cdr aliases)
-		    (princ (cons 'alias: (cdr aliases))))
-	      (if (memq coding aliases)
-		  (princ (list 'alias 'of (car aliases)))))
+		    (princ (cons 'alias: (cdr base-aliases))))
+	      (princ (list 'alias 'of (car aliases))))
 	    (terpri)
-	    (setq i (1+ i)))
-	  (setq l (cdr l))))
+	    (setq i (1+ i)))))
 
       (princ "\n  Other coding systems cannot be distinguished automatically
   from these, and therefore cannot be recognized automatically
   with the present coding system priorities.\n\n")
 
+      (if nil
       (let ((categories '(coding-category-iso-7 coding-category-iso-7-else))
 	    coding-system codings)
 	(while categories
@@ -954,7 +952,7 @@
 		    (goto-char (point-max)))
 		  (setq codings (cdr codings)))
 		(insert "\n\n")))
-	  (setq categories (cdr categories))))
+	  (setq categories (cdr categories)))))
 
       (princ "Particular coding systems specified for certain file names:\n")
       (terpri)