Mercurial > emacs
annotate lisp/international/mule-diag.el @ 18199:15177bdb2fcf
(describe-coding-system): Change format of output.
(describe-current-coding-system-briefly): Likewise.
(describe-current-coding-system): Likewise.
(print-coding-system-briefly): Likewise.
(print-coding-system): Likewise.
(list-coding-systems): Likewise. Make it interactive.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 10 Jun 1997 00:56:19 +0000 |
parents | a3ca5e15c82a |
children | 0436624abece |
rev | line source |
---|---|
17315
a3ca5e15c82a
Fix the format of the first line.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1 ;;; mule-diag.el --- Show diagnosis of multilingual environment (MULE) |
17052 | 2 |
3 ;; Copyright (C) 1995 Free Software Foundation, Inc. | |
4 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. | |
5 | |
6 ;; Keywords: multilingual, charset, coding system, fontset, diagnosis | |
7 | |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
17071 | 21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
17052 | 24 |
25 ;;; General utility function | |
26 | |
27 ;; Print all arguments with single space separator in one line. | |
28 (defun print-list (&rest args) | |
29 (while (cdr args) | |
30 (if (car args) | |
31 (progn (princ (car args)) (princ " "))) | |
32 (setq args (cdr args))) | |
33 (princ (car args)) | |
34 (princ "\n")) | |
35 | |
36 ;;; CHARSET | |
37 | |
38 ;;;###autoload | |
39 (defun list-character-sets () | |
40 "Display a list of all charsets." | |
41 (interactive) | |
42 (with-output-to-temp-buffer "*Help*" | |
43 (print-character-sets))) | |
44 | |
45 (defvar charset-other-info-func nil) | |
46 | |
47 (defun print-character-sets () | |
48 "Print information on all charsets in a machine readable format." | |
49 (princ "\ | |
50 ######################### | |
51 ## LIST OF CHARSETS | |
52 ## Each line corresponds to one charset. | |
53 ## The following attributes are listed in this order | |
54 ## separated by a colon `:' in one line. | |
55 ## CHARSET-SYMBOL-NAME, | |
56 ## CHARSET-ID, | |
57 ## DIMENSION (1 or 2) | |
58 ## CHARS (94 or 96) | |
59 ## BYTES (of multibyte form: 1, 2, 3, or 4), | |
60 ## WIDTH (occupied column numbers: 1 or 2), | |
61 ## DIRECTION (0:left-to-right, 1:right-to-left), | |
62 ## ISO-FINAL-CHAR (character code of ISO-2022's final character) | |
63 ## ISO-GRAPHIC-PLANE (ISO-2022's graphic plane, 0:GL, 1:GR) | |
64 ## DESCRIPTION (describing string of the charset) | |
65 ") | |
66 (let ((charsets charset-list) | |
67 charset) | |
68 (while charsets | |
69 (setq charset (car charsets)) | |
70 (princ (format "%s:%03d:%d:%d:%d:%d:%d:%d:%d:%s\n" | |
71 charset | |
72 (charset-id charset) | |
73 (charset-dimension charset) | |
74 (charset-chars charset) | |
75 (charset-bytes charset) | |
76 (charset-width charset) | |
77 (charset-direction charset) | |
78 (charset-iso-final-char charset) | |
79 (charset-iso-graphic-plane charset) | |
80 (charset-description charset))) | |
81 (setq charsets (cdr charsets))))) | |
82 | |
83 | |
84 ;;; CODING-SYSTEM | |
85 | |
86 ;; Print information of designation of each graphic register in FLAGS | |
87 ;; in human readable format. See the documentation of | |
88 ;; `make-coding-system' for the meaning of FLAGS. | |
89 (defun print-designation (flags) | |
90 (let ((graphic-register 0) | |
91 charset) | |
92 (while (< graphic-register 4) | |
93 (setq charset (aref flags graphic-register)) | |
94 (princ (format | |
95 " G%d -- %s\n" | |
96 graphic-register | |
97 (cond ((null charset) | |
98 "never used") | |
99 ((eq charset t) | |
100 "no initial designation, and used by any charsets") | |
101 ((symbolp charset) | |
102 (format "%s:%s" | |
103 charset (charset-description charset))) | |
104 ((listp charset) | |
105 (if (charsetp (car charset)) | |
106 (format "%s:%s, and also used by the followings:" | |
107 (car charset) | |
108 (charset-description (car charset))) | |
109 "no initial designation, and used by the followings:")) | |
110 (t | |
111 "invalid designation information")))) | |
112 (if (listp charset) | |
113 (progn | |
114 (setq charset (cdr charset)) | |
115 (while charset | |
116 (cond ((eq (car charset) t) | |
117 (princ "\tany other charsets\n")) | |
118 ((charsetp (car charset)) | |
119 (princ (format "\t%s:%s\n" | |
120 (car charset) | |
121 (charset-description (car charset))))) | |
122 (t | |
123 "invalid designation information")) | |
124 (setq charset (cdr charset))))) | |
125 (setq graphic-register (1+ graphic-register))))) | |
126 | |
127 ;;;###autoload | |
128 (defun describe-coding-system (coding-system) | |
129 "Display information of CODING-SYSTEM." | |
130 (interactive "zCoding-system: ") | |
131 (with-output-to-temp-buffer "*Help*" | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
132 (print-coding-system-briefly coding-system nil 'doc-string) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
133 (let ((coding-spec (coding-system-spec coding-system))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
134 (princ "Type: ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
135 (let ((type (coding-system-type coding-system)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
136 (flags (coding-system-flags coding-system))) |
17052 | 137 (princ type) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
138 (princ " (") |
17052 | 139 (cond ((eq type nil) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
140 (princ "do no conversion)")) |
17052 | 141 ((eq type t) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
142 (princ "do automatic conversion)")) |
17052 | 143 ((eq type 0) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
144 (princ "Emacs internal multibyte form)")) |
17052 | 145 ((eq type 1) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
146 (princ "Shift-JIS, MS-KANJI)")) |
17052 | 147 ((eq type 2) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
148 (princ "variant of ISO-2022)\n") |
17052 | 149 (princ "Initial designations:\n") |
150 (print-designation flags) | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
151 (princ "Other Form: \n ") |
17052 | 152 (princ (if (aref flags 4) "short-form" "long-form")) |
153 (if (aref flags 5) (princ ", ASCII@EOL")) | |
154 (if (aref flags 6) (princ ", ASCII@CNTL")) | |
155 (princ (if (aref flags 7) ", 7-bit" ", 8-bit")) | |
156 (if (aref flags 8) (princ ", use-locking-shift")) | |
157 (if (aref flags 9) (princ ", use-single-shift")) | |
158 (if (aref flags 10) (princ ", use-roman")) | |
159 (if (aref flags 10) (princ ", use-old-jis")) | |
160 (if (aref flags 11) (princ ", no-ISO6429")) | |
161 (princ ".")) | |
162 ((eq type 3) | |
163 (princ "Big5.")) | |
164 ((eq type 4) | |
165 (princ "do conversion by CCL program.")) | |
166 (t (princ "invalid coding-system.")))) | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
167 (princ "\nEOL type:\n ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
168 (let ((eol-type (coding-system-eol-type coding-system))) |
17052 | 169 (cond ((vectorp eol-type) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
170 (princ "Automatic selection from:\n\t") |
17052 | 171 (princ eol-type) |
172 (princ "\n")) | |
173 ((or (null eol-type) (eq eol-type 0)) (princ "LF\n")) | |
174 ((eq eol-type 1) (princ "CRLF\n")) | |
175 ((eq eol-type 2) (princ "CR\n")) | |
176 (t (princ "invalid\n")))) | |
177 ))) | |
178 | |
179 ;;;###autoload | |
180 (defun describe-current-coding-system-briefly () | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
181 "Display coding systems currently used in a brief format in echo area. |
17052 | 182 |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
183 The format is \"F[..],K[..],T[..],P>[..],P<[..], default F[..],P<[..],P<[..]\", |
17052 | 184 where mnemonics of the following coding systems come in this order |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
185 at the place of `..': |
17052 | 186 buffer-file-coding-system (of the current buffer) |
187 eol-type of buffer-file-coding-system (of the current buffer) | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
188 (keyboard-coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
189 eol-type of (keyboard-coding-system) |
17052 | 190 terminal-coding-system |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
191 eol-type of (terminal-coding-system) |
17052 | 192 process-coding-system for read (of the current buffer, if any) |
193 eol-type of process-coding-system for read (of the current buffer, if any) | |
194 process-coding-system for write (of the current buffer, if any) | |
195 eol-type of process-coding-system for write (of the current buffer, if any) | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
196 default-buffer-file-coding-system |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
197 eol-type of default-buffer-file-coding-system |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
198 default-process-coding-system for read |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
199 eol-type of default-process-coding-system for read |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
200 default-process-coding-system for write |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
201 eol-type of default-process-coding-system" |
17052 | 202 (interactive) |
203 (let* ((proc (get-buffer-process (current-buffer))) | |
204 (process-coding-systems (if proc (process-coding-system proc)))) | |
205 (message | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
206 "F[%c%c],K[%c%c],T[%c%c],P>[%c%c],P<[%c%c], default F[%c%c],P>[%c%c],P<[%c%c]" |
17052 | 207 (coding-system-mnemonic buffer-file-coding-system) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
208 (coding-system-eol-type-mnemonic buffer-file-coding-system) |
17052 | 209 (coding-system-mnemonic (keyboard-coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
210 (coding-system-eol-type-mnemonic (keyboard-coding-system)) |
17052 | 211 (coding-system-mnemonic (terminal-coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
212 (coding-system-eol-type-mnemonic (terminal-coding-system)) |
17052 | 213 (coding-system-mnemonic (car process-coding-systems)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
214 (coding-system-eol-type-mnemonic (car process-coding-systems)) |
17052 | 215 (coding-system-mnemonic (cdr process-coding-systems)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
216 (coding-system-eol-type-mnemonic (cdr process-coding-systems)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
217 (coding-system-mnemonic default-buffer-file-coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
218 (coding-system-eol-type-mnemonic default-buffer-file-coding-system) |
17052 | 219 (coding-system-mnemonic (car default-process-coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
220 (coding-system-eol-type-mnemonic (car default-process-coding-system)) |
17052 | 221 (coding-system-mnemonic (cdr default-process-coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
222 (coding-system-eol-type-mnemonic (cdr default-process-coding-system)) |
17052 | 223 ))) |
224 | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
225 ;; Print symbol name and mnemonic letter of CODING-SYSTEM by `princ'. |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
226 (defun print-coding-system-briefly (coding-system &optional aliases doc-string) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
227 (if (not coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
228 (princ "nil\n") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
229 (princ (format "%c -- %s" |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
230 (coding-system-mnemonic coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
231 coding-system)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
232 (if aliases |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
233 (progn |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
234 (princ (format " (alias: %s" (car aliases))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
235 (setq aliases (cdr aliases)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
236 (while aliases |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
237 (princ " ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
238 (princ (car aliases)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
239 (setq aliases (cdr aliases))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
240 (princ ")")) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
241 (let ((base (coding-system-base coding-system))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
242 (if (not (eq base coding-system)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
243 (princ (format " (alias of %s)" base))))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
244 (princ "\n") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
245 (if (and doc-string |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
246 (setq doc-string (coding-system-doc-string coding-system))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
247 (princ (format " %s\n" doc-string))))) |
17052 | 248 |
249 ;;;###autoload | |
250 (defun describe-current-coding-system () | |
251 "Display coding systems currently used in a detailed format." | |
252 (interactive) | |
253 (with-output-to-temp-buffer "*Help*" | |
254 (let* ((proc (get-buffer-process (current-buffer))) | |
255 (process-coding-systems (if proc (process-coding-system proc)))) | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
256 (princ "Current buffer file: buffer-file-coding-system\n ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
257 (if (local-variable-p 'buffer-file-coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
258 (print-coding-system-briefly buffer-file-coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
259 (princ "Not set locally, use the following default.\n")) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
260 (princ "Default buffer file: default-buffer-file-coding-system\n ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
261 (print-coding-system-briefly default-buffer-file-coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
262 (princ "Keyboard: (keyboard-coding-system)\n ") |
17052 | 263 (print-coding-system-briefly (keyboard-coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
264 (princ "Terminal: (display-coding-system)\n ") |
17052 | 265 (print-coding-system-briefly (terminal-coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
266 (princ "Current buffer process: (process-coding-system)\n") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
267 (if (not process-coding-systems) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
268 (princ " No process.\n") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
269 (princ " decoding: ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
270 (print-coding-system-briefly (car process-coding-systems)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
271 (princ " encoding: ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
272 (print-coding-system-briefly (cdr process-coding-systems))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
273 (princ "Default process: default-process-coding-system\n") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
274 (princ " decoding: ") |
17052 | 275 (print-coding-system-briefly (car default-process-coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
276 (princ " encoding: ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
277 (print-coding-system-briefly (cdr default-process-coding-system))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
278 (princ "\nCoding categories (in the order of priority):\n") |
17052 | 279 (let ((l coding-category-list)) |
280 (while l | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
281 (princ (format " %-27s -> %s\n" (car l) (symbol-value (car l)))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
282 (setq l (cdr l)))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
283 (princ "\nLook up tables for finding a coding system on I/O operations:\n") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
284 (let ((func (lambda (title alist) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
285 (princ title) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
286 (if (not alist) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
287 (princ " Nothing specified.\n") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
288 (while alist |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
289 (princ (format " %-27s -> %s\n" |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
290 (concat "\"" (car (car alist)) "\"") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
291 (cdr (car alist)))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
292 (setq alist (cdr alist))))))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
293 (funcall func " File I/O (FILENAME -> CODING-SYSTEM):\n" |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
294 file-coding-system-alist) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
295 (funcall func " Process I/O (PROGRAM-NAME -> CODING-SYSTEM):\n" |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
296 process-coding-system-alist) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
297 (funcall func " Network stream I/O (SERVICE-NAME -> CODING-SYSTEM):\n" |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
298 network-coding-system-alist)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
299 )) |
17052 | 300 |
301 ;; Print detailed information on CODING-SYSTEM. | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
302 (defun print-coding-system (coding-system &optional aliases) |
17052 | 303 (let ((type (coding-system-type coding-system)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
304 (eol-type (coding-system-eol-type coding-system)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
305 (flags (coding-system-flags coding-system)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
306 (base (coding-system-base coding-system))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
307 (if (not (eq base coding-system)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
308 (princ (format "%s (alias of %s)\n" coding-system base)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
309 (princ coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
310 (while aliases |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
311 (progn |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
312 (princ ",") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
313 (princ (car aliases)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
314 (setq aliases (cdr aliases)))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
315 (princ (format ":%s:%c:%d:" |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
316 type |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
317 (coding-system-mnemonic coding-system) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
318 (if (integerp eol-type) eol-type 3))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
319 (cond ((eq type 2) ; ISO-2022 |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
320 (let ((idx 0) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
321 charset) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
322 (while (< idx 4) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
323 (setq charset (aref flags idx)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
324 (cond ((null charset) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
325 (princ -1)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
326 ((eq charset t) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
327 (princ -2)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
328 ((charsetp charset) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
329 (princ charset)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
330 ((listp charset) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
331 (princ "(") |
17052 | 332 (princ (car charset)) |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
333 (setq charset (cdr charset)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
334 (while charset |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
335 (princ ",") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
336 (princ (car charset)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
337 (setq charset (cdr charset))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
338 (princ ")"))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
339 (princ ",") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
340 (setq idx (1+ idx))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
341 (while (< idx 12) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
342 (princ (if (aref flags idx) 1 0)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
343 (princ ",") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
344 (setq idx (1+ idx))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
345 (princ (if (aref flags idx) 1 0)))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
346 ((eq type 4) ; CCL |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
347 (let (i len) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
348 (setq i 0 len (length (car flags))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
349 (while (< i len) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
350 (princ (format " %x" (aref (car flags) i))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
351 (setq i (1+ i))) |
17052 | 352 (princ ",") |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
353 (setq i 0 len (length (cdr flags))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
354 (while (< i len) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
355 (princ (format " %x" (aref (cdr flags) i))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
356 (setq i (1+ i))))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
357 (t (princ 0))) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
358 (princ ":") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
359 (princ (coding-system-doc-string coding-system)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
360 (princ "\n")))) |
17052 | 361 |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
362 ;;;###autoload |
17052 | 363 (defun list-coding-systems () |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
364 "Print information of all base coding systems. |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
365 If called interactive, it prints name, mnemonic letter, and doc-string |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
366 of each coding system. |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
367 If not, it prints whole information of each coding system |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
368 with the format which is more suitable for being read by a machine." |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
369 (interactive) |
17052 | 370 (with-output-to-temp-buffer "*Help*" |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
371 (if (interactive-p) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
372 (princ "\ |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
373 ############################################### |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
374 # List of coding systems in the following format: |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
375 # MNEMONIC-LETTER -- CODING-SYSTEM-NAME |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
376 # DOC-STRING |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
377 ") |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
378 (princ "\ |
17052 | 379 ######################### |
380 ## LIST OF CODING SYSTEMS | |
381 ## Each line corresponds to one coding system | |
382 ## Format of a line is: | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
383 ## NAME[,ALIAS...]:TYPE:MNEMONIC:EOL:FLAGS:POST-READ-CONVERSION |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
384 ## :PRE-WRITE-CONVERSION:DOC-STRING, |
17052 | 385 ## where |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
386 ## NAME = coding system name |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
387 ## ALIAS = alias of the coding system |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
388 ## TYPE = nil (no conversion), t (undecided or automatic detection), |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
389 ## 0 (EMACS-MULE), 1 (SJIS), 2 (ISO2022), 3 (BIG5), or 4 (CCL) |
17052 | 390 ## EOL = 0 (LF), 1 (CRLF), 2 (CR), or 3 (Automatic detection) |
391 ## FLAGS = | |
392 ## if TYPE = 2 then | |
393 ## comma (`,') separated data of the followings: | |
394 ## G0, G1, G2, G3, SHORT-FORM, ASCII-EOL, ASCII-CNTL, SEVEN, | |
395 ## LOCKING-SHIFT, SINGLE-SHIFT, USE-ROMAN, USE-OLDJIS, NO-ISO6429 | |
396 ## else if TYPE = 4 then | |
397 ## comma (`,') separated CCL programs for read and write | |
398 ## else | |
399 ## 0 | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
400 ## POST-READ-CONVERSION, PRE-WRITE-CONVERSION = function name to be called |
17052 | 401 ## |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
402 ")) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
403 (let ((bases (coding-system-list 'base-only)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
404 base coding-system aliases) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
405 (while bases |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
406 (setq base (car bases) bases (cdr bases)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
407 (if (consp base) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
408 (setq coding-system (car base) aliases (cdr base)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
409 (setq coding-system base aliases nil)) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
410 (if (interactive-p) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
411 (print-coding-system-briefly coding-system aliases 'doc-string) |
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
412 (print-coding-system coding-system aliases)))) |
17052 | 413 (princ "\ |
414 ############################ | |
415 ## LIST OF CODING CATEGORIES (ordered by priority) | |
416 ## CATEGORY:CODING-SYSTEM | |
417 ## | |
418 ") | |
419 (let ((l coding-category-list)) | |
420 (while l | |
421 (princ (format "%s:%s\n" (car l) (symbol-value (car l)))) | |
422 (setq l (cdr l)))) | |
423 )) | |
424 | |
425 ;;; FONT | |
426 | |
427 ;; Print information of a font in FONTINFO. | |
428 (defun describe-font-internal (font-info &optional verbose) | |
429 (print-list "name (opened by):" (aref font-info 0)) | |
430 (print-list " full name:" (aref font-info 1)) | |
431 (let ((charset (aref font-info 2))) | |
432 (print-list " charset:" | |
433 (format "%s (%s)" charset (charset-description charset)))) | |
434 (print-list " size:" (format "%d" (aref font-info 3))) | |
435 (print-list " height:" (format "%d" (aref font-info 4))) | |
436 (print-list " baseline-offset:" (format "%d" (aref font-info 5))) | |
437 (print-list "relative-compose:" (format "%d" (aref font-info 6)))) | |
438 | |
439 ;;;###autoload | |
440 (defun describe-font (fontname) | |
441 "Display information about fonts which partially match FONTNAME." | |
442 (interactive "sFontname: ") | |
443 (or window-system | |
444 (error "No window system being used")) | |
445 (let ((font-info (font-info fontname))) | |
446 (if (null font-info) | |
447 (message "No matching font") | |
448 (with-output-to-temp-buffer "*Help*" | |
449 (describe-font-internal font-info 'verbose))))) | |
450 | |
451 ;; Print information in FONTINFO of a fontset named FONTSET. | |
452 (defun describe-fontset-internal (fontset fontset-info) | |
453 (print-list "Fontset:" fontset) | |
454 (let ((size (aref fontset-info 0))) | |
455 (print-list " size:" (format "%d" size) | |
456 (if (= size 0) "... which means not yet used" ""))) | |
457 (print-list " height:" (format "%d" (aref fontset-info 1))) | |
458 (print-list " fonts: (charset : font name)") | |
459 (let* ((fonts (aref fontset-info 2)) | |
460 elt charset requested opened) | |
461 (while fonts | |
462 (setq elt (car fonts) | |
463 charset (car elt) | |
464 requested (nth 1 elt) | |
465 opened (nth 2 elt)) | |
466 (print-list " " charset ":" requested) | |
467 (if (stringp opened) | |
468 (print-list " Opened as: " opened) | |
469 (if (null opened) " -- open failed --")) | |
470 (setq fonts (cdr fonts))))) | |
471 | |
472 ;;;###autoload | |
473 (defun describe-fontset (fontset) | |
474 "Display information about FONTSET." | |
475 (interactive | |
476 (if (not window-system) | |
477 (error "No window system being used") | |
478 (let ((fontset-list (mapcar '(lambda (x) (list x)) (fontset-list)))) | |
479 (list (completing-read "Fontset: " fontset-list))))) | |
480 (setq fontset (query-fontset fontset)) | |
481 (if (null fontset) | |
482 (error "No matching fontset") | |
483 (let ((fontset-info (fontset-info fontset))) | |
484 (with-output-to-temp-buffer "*Help*" | |
485 (describe-fontset-internal fontset fontset-info))))) | |
486 | |
487 | |
488 ;;; DIAGNOSIS | |
489 | |
490 (defun insert-list (args) | |
491 (while (cdr args) | |
492 (insert (or (car args) "nil") " ") | |
493 (setq args (cdr args))) | |
494 (if args (insert (or (car args) "nil"))) | |
495 (insert "\n")) | |
496 | |
497 (defun insert-section (sec title) | |
498 (insert "########################################\n" | |
499 "# Section " (format "%d" sec) ". " title "\n" | |
500 "########################################\n\n")) | |
501 | |
502 ;;;###autoload | |
503 (defun mule-diag () | |
504 "Show diagnosis of the running Mule." | |
505 (interactive) | |
506 (let ((buf (get-buffer-create "*Diagnosis*"))) | |
507 (save-excursion | |
508 (set-buffer buf) | |
509 (erase-buffer) | |
510 (insert "\t###############################\n" | |
511 "\t### Diagnosis of your Emacs ###\n" | |
512 "\t###############################\n\n" | |
513 "CONTENTS: Section 1. General Information\n" | |
514 " Section 2. Display\n" | |
515 " Section 3. Input methods\n" | |
516 " Section 4. Coding systems\n" | |
517 " Section 5. Charsets\n") | |
518 (if window-system | |
519 (insert " Section 6. Fontset list\n")) | |
520 (insert "\n") | |
521 | |
522 (insert-section 1 "General Information") | |
523 (insert "Version of this emacs:\n " (emacs-version) "\n" | |
524 "Primary language:\n " primary-language "\n\n") | |
525 | |
526 (insert-section 2 "Display") | |
527 (if window-system | |
528 (insert "Window-system: " | |
529 (symbol-name window-system) | |
530 (format "%s" window-system-version)) | |
531 (insert "Terminal: " (getenv "TERM"))) | |
532 (insert "\n\n") | |
533 | |
534 (if (eq window-system 'x) | |
535 (let ((font (cdr (assq 'font (frame-parameters))))) | |
536 (insert "The selected frame is using the " | |
537 (if (query-fontset font) "fontset" "font") | |
538 ":\n\t" font)) | |
539 (insert "Coding system of the terminal: " | |
540 (symbol-name (terminal-coding-system)))) | |
541 (insert "\n\n") | |
542 | |
543 (insert-section 3 "Input methods") | |
544 (insert "language\tinput-method\n" | |
545 "--------\t------------\n") | |
546 (let ((alist language-info-alist)) | |
547 (while alist | |
548 (insert (car (car alist))) | |
549 (indent-to 16) | |
550 (let ((methods (get-language-info (car (car alist)) 'input-method))) | |
551 (if methods | |
552 (insert-list (mapcar 'car methods)) | |
553 (insert "none\n"))) | |
554 (setq alist (cdr alist)))) | |
555 (insert "\n") | |
556 (if default-input-method | |
557 (insert "The input method used last time is: " | |
558 (cdr default-input-method) | |
559 "\n" | |
560 " for inputting the language: " | |
561 (car default-input-method) | |
562 "\n") | |
563 (insert "No input method has ever been selected.\n")) | |
564 | |
565 (insert "\n") | |
566 | |
567 (insert-section 4 "Coding systems") | |
568 (save-excursion (list-coding-systems)) | |
569 (insert-buffer "*Help*") | |
570 (goto-char (point-max)) | |
571 (insert "\n") | |
572 | |
573 (insert-section 5 "Charsets") | |
574 (save-excursion (list-character-sets)) | |
575 (insert-buffer "*Help*") | |
576 (goto-char (point-max)) | |
577 (insert "\n") | |
578 | |
579 (if window-system | |
580 (let ((fontsets (fontset-list))) | |
581 (insert-section 6 "Fontset list") | |
582 (while fontsets | |
583 (describe-fontset (car fontsets)) | |
584 (insert-buffer "*Help*") | |
585 (setq fontsets (cdr fontsets))))) | |
586 | |
587 (set-buffer-modified-p nil) | |
588 ) | |
589 (let ((win (display-buffer buf))) | |
590 (set-window-point win 1) | |
591 (set-window-start win 1)) | |
592 )) | |
593 | |
594 | |
595 ;;; DUMP DATA FILE | |
596 | |
597 ;;;###autoload | |
598 (defun dump-charsets () | |
599 "Dump information of all charsets into the file \"charsets.dat\"." | |
600 (list-character-sets) | |
601 (set-buffer (get-buffer "*Help*")) | |
602 (let (make-backup-files) | |
603 (write-region (point-min) (point-max) "charsets.dat")) | |
604 (kill-emacs)) | |
605 | |
606 ;;;###autoload | |
607 (defun dump-codings () | |
608 "Dump information of all coding systems into the file \"codings.dat\"." | |
609 (list-coding-systems) | |
610 (set-buffer (get-buffer "*Help*")) | |
611 (let (make-backup-files) | |
612 (write-region (point-min) (point-max) "codings.dat")) | |
613 (kill-emacs)) | |
614 | |
18199
15177bdb2fcf
(describe-coding-system): Change format of output.
Kenichi Handa <handa@m17n.org>
parents:
17315
diff
changeset
|
615 ;;; mule-diag.el ends here |