changeset 102519:2d1154701720

(print-fontset): Handling of the argument FONTSET changed for consistency. Reorder the printed information to match with the font searching strategy. (describe-fontset): Use face-attribute to get the fontset of the selected frame. (mule-diag): Likewise. Print both font and fontset of the frame.
author Kenichi Handa <handa@m17n.org>
date Fri, 13 Mar 2009 05:07:59 +0000
parents f990d943735c
children 66b0cc830a26
files lisp/international/mule-diag.el
diffstat 1 files changed, 40 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/mule-diag.el	Fri Mar 13 05:07:41 2009 +0000
+++ b/lisp/international/mule-diag.el	Fri Mar 13 05:07:59 2009 +0000
@@ -907,23 +907,52 @@
 
 (defun print-fontset (fontset &optional print-opened)
   "Print information about FONTSET.
-If FONTSET is nil, print information about the default fontset.
+FONTSET nil means the fontset of the selected frame, t means the
+default fontset.
 If optional arg PRINT-OPENED is non-nil, also print names of all opened
 fonts for FONTSET.  This function actually inserts the information in
 the current buffer."
-  (or fontset
-      (setq fontset (query-fontset "fontset-default")))
+  (if (eq fontset t)
+      (setq fontset (query-fontset "fontset-default"))
+    (if (eq fontset nil)
+	(setq fontset (face-attribute 'default :fontset))))
   (beginning-of-line)
+  (narrow-to-region (point) (point))
   (insert "Fontset: " fontset "\n")
   (insert (propertize "CHAR RANGE" 'face 'underline)
 	   " (" (propertize "CODE RANGE" 'face 'underline) ")\n")
   (insert "    " (propertize "FONT NAME" 'face 'underline)
 	  " (" (propertize "REQUESTED" 'face 'underline)
 	  " and [" (propertize "OPENED" 'face 'underline) "])")
-  (let ((info (fontset-info fontset)))
+  (let* ((info (fontset-info fontset))
+	 (default-info (char-table-extra-slot info 0))
+	 start1 end1 start2 end2)
     (describe-vector info 'print-fontset-element)
-    (insert "\n  ---<fallback to the default fontset>---")
-    (describe-vector (char-table-extra-slot info 0) 'print-fontset-element)))
+    (when (char-table-range info nil)
+      ;; The default of FONTSET is described.
+      (setq start1 (re-search-backward "^default"))
+      (delete-region (point) (line-end-position))
+      (insert "\n  ---<fallback to the default of the specified fontset>---")
+      (put-text-property (line-beginning-position) (point) 'face 'highlight)
+      (goto-char (point-max))
+      (setq end1 (setq start2 (point))))
+    (when default-info
+      (insert "\n  ---<fallback to the default fontset>---")
+      (put-text-property (line-beginning-position) (point) 'face 'highlight)
+      (describe-vector default-info 'print-fontset-element)
+      (when (char-table-range default-info nil)
+	;; The default of the default fontset is described.
+	(setq end2 (re-search-backward "^default"))
+	(delete-region (point) (line-end-position))
+	(insert "\n  ---<fallback to the default of the default fontset>---")
+	(put-text-property (line-beginning-position) (point) 'face 'highlight)))
+      (if (and start1 end2)
+	  ;; Reoder the printed information to match with the font
+	  ;; searching strategy; i.e. FONTSET, the default fontset,
+	  ;; default of FONTSET, default of the default fontset.
+	  (transpose-regions start1 end1 start2 end2))
+      (goto-char (point-max)))
+  (widen))
 
 (defvar fontset-alias-alist)
 (declare-function fontset-list "fontset.c" ())
@@ -943,8 +972,8 @@
 	      "Fontset (default used by the current frame): "
 	      fontset-list nil t)))))
   (if (= (length fontset) 0)
-      (setq fontset (frame-parameter nil 'font)))
-  (setq fontset (query-fontset fontset))
+      (setq fontset (face-attribute 'default :fontset))
+    (setq fontset (query-fontset fontset)))
   (help-setup-xref (list #'describe-fontset fontset) (interactive-p))
   (with-output-to-temp-buffer (help-buffer)
     (with-current-buffer standard-output
@@ -1064,9 +1093,9 @@
 
       (if window-system
 	  (let ((font (cdr (assq 'font (frame-parameters)))))
-	    (insert "The selected frame is using the "
-		    (if (query-fontset font) "fontset" "font")
-		    ":\n\t" font))
+	    (insert "The font and fontset of the selected frame are:\n"
+		    "     font: " font "\n"
+		    "  fontset: " (face-attribute 'default :fontset) "\n"))
 	(insert "Coding system of the terminal: "
 		(symbol-name (terminal-coding-system))))
       (insert "\n\n")