Mercurial > emacs
annotate lisp/international/mule.el @ 18463:4f630b3e8f43
split up scheme and tex support; wrap inhibit-point-motion-hooks where nec.
author | Simon Marshall <simon@gnu.org> |
---|---|
date | Fri, 27 Jun 1997 06:59:30 +0000 |
parents | 615e9654bf59 |
children | 425c8fa4227b |
rev | line source |
---|---|
17052 | 1 ;;; mule.el --- basic commands for mulitilingual environment |
2 | |
3 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. | |
18457
615e9654bf59
Finish previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18377
diff
changeset
|
4 ;; Licensed to the Free Software Foundation. |
17052 | 5 |
6 ;; Keywords: mule, multilingual, character set, coding system | |
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 ;;; Code: | |
26 | |
27 (defconst mule-version "3.0 (MOMIJINOGA)" "\ | |
28 Version number and name of this version of MULE (multilingual environment).") | |
29 | |
30 (defconst mule-version-date "1998.1.1" "\ | |
31 Distribution date of this version of MULE (multilingual environment).") | |
32 | |
33 (defun load-with-code-conversion (fullname file &optional noerror nomessage) | |
34 "Execute a file of Lisp code named FILE whose absolute path is FULLNAME. | |
35 The FILE is decoded before evaluation if necessary. | |
36 If optional second arg NOERROR is non-nil, | |
37 report no error if FILE doesn't exist. | |
38 Print messages at start and end of loading unless | |
39 optional third arg NOMESSAGE is non-nil. | |
40 Return t if file exists." | |
41 (if (null (file-readable-p fullname)) | |
42 (and (null noerror) | |
43 (signal 'file-error (list "Cannot open load file" file))) | |
44 ;; Read file with code conversion, and then eval. | |
45 (let* ((buffer | |
46 ;; To avoid any autoloading, set default-major-mode to | |
47 ;; fundamental-mode. | |
48 (let ((default-major-mode 'fundamental-mode)) | |
49 ;; We can't use `generate-new-buffer' because files.el | |
50 ;; is not yet loaded. | |
51 (get-buffer-create (generate-new-buffer-name " *load*")))) | |
52 (load-in-progress t)) | |
53 (or nomessage (message "Loading %s..." file)) | |
54 (unwind-protect | |
55 (progn | |
56 (save-excursion | |
57 (set-buffer buffer) | |
58 (insert-file-contents fullname) | |
59 ;; We must set `buffer-file-name' for `eval-buffer' and | |
60 ;; `load-history'. | |
61 (setq buffer-file-name file) | |
62 ;; Make `kill-buffer' quiet. | |
63 (set-buffer-modified-p nil)) | |
64 ;; Eval in the original buffer. | |
65 (eval-buffer buffer)) | |
66 (kill-buffer buffer)) | |
67 (let ((hook (assoc file after-load-alist))) | |
68 (if hook | |
69 (mapcar (function eval) (cdr hook)))) | |
70 (or nomessage noninteractive | |
71 (message "Loading %s...done" file)) | |
72 t))) | |
73 | |
74 ;; API (Application Program Interface) for charsets. | |
75 | |
76 ;; Return t if OBJ is a quoted symbol. | |
77 (defsubst quoted-symbol-p (obj) | |
78 (and (listp obj) (eq (car obj) 'quote))) | |
79 | |
80 (defsubst charsetp (object) | |
81 "T is OBJECT is a charset." | |
82 (and (symbolp object) (vectorp (get object 'charset)))) | |
83 | |
84 (defsubst charset-info (charset) | |
85 "Return a vector of information of CHARSET. | |
86 The elements of the vector are: | |
87 CHARSET-ID, BYTES, DIMENSION, CHARS, WIDTH, DIRECTION, | |
88 LEADING-CODE-BASE, LEADING-CODE-EXT, | |
89 ISO-FINAL-CHAR, ISO-GRAPHIC-PLANE, | |
90 REVERSE-CHARSET, SHORT-NAME, LONG-NAME, DESCRIPTION, | |
91 PLIST, | |
92 where | |
93 CHARSET-ID (integer) is the identification number of the charset. | |
94 DIMENSION (integer) is the number of bytes to represent a character of | |
95 the charset: 1 or 2. | |
96 CHARS (integer) is the number of characters in a dimension: 94 or 96. | |
97 BYTE (integer) is the length of multi-byte form of a character in | |
98 the charset: one of 1, 2, 3, and 4. | |
99 WIDTH (integer) is the number of columns a character in the charset | |
100 occupies on the screen: one of 0, 1, and 2. | |
101 DIRECTION (integer) is the rendering direction of characters in the | |
102 charset when rendering. If 0, render from right to left, else | |
103 render from left to right. | |
104 LEADING-CODE-BASE (integer) is the base leading-code for the | |
105 charset. | |
106 LEADING-CODE-EXT (integer) is the extended leading-code for the | |
107 charset. All charsets of less than 0xA0 has the value 0. | |
108 ISO-FINAL-CHAR (character) is the final character of the | |
109 corresponding ISO 2022 charset. | |
110 ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked | |
111 while encoding to variants of ISO 2022 coding system, one of the | |
112 following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR). | |
113 REVERSE-CHARSET (integer) is the charset which differs only in | |
114 LEFT-TO-RIGHT value from the charset. If there's no such a | |
115 charset, the value is -1. | |
116 SHORT-NAME (string) is the short name to refer to the charset. | |
117 LONG-NAME (string) is the long name to refer to the charset | |
118 DESCRIPTION (string) is the description string of the charset. | |
119 PLIST (property list) may contain any type of information a user | |
120 want to put and get by functions `put-charset-property' and | |
121 `get-charset-property' respectively." | |
122 (get charset 'charset)) | |
123 | |
124 (defmacro charset-id (charset) | |
125 "Return charset identification number of CHARSET." | |
126 (if (and (listp charset) (eq (car charset) 'quote)) | |
127 (aref (charset-info (nth 1 charset)) 0) | |
128 `(aref (charset-info ,charset) 0))) | |
129 | |
130 (defmacro charset-bytes (charset) | |
131 (if (quoted-symbol-p charset) | |
132 (aref (charset-info (nth 1 charset)) 1) | |
133 `(aref (charset-info ,charset) 1))) | |
134 | |
135 (defmacro charset-dimension (charset) | |
136 (if (quoted-symbol-p charset) | |
137 (aref (charset-info (nth 1 charset)) 2) | |
138 `(aref (charset-info ,charset) 2))) | |
139 | |
140 (defmacro charset-chars (charset) | |
141 (if (quoted-symbol-p charset) | |
142 (aref (charset-info (nth 1 charset)) 3) | |
143 `(aref (charset-info ,charset) 3))) | |
144 | |
145 (defmacro charset-width (charset) | |
146 (if (quoted-symbol-p charset) | |
147 (aref (charset-info (nth 1 charset)) 4) | |
148 `(aref (charset-info ,charset) 4))) | |
149 | |
150 (defmacro charset-direction (charset) | |
151 (if (quoted-symbol-p charset) | |
152 (aref (charset-info (nth 1 charset)) 5) | |
153 `(aref (charset-info ,charset) 5))) | |
154 | |
155 (defmacro charset-iso-final-char (charset) | |
156 (if (quoted-symbol-p charset) | |
157 (aref (charset-info (nth 1 charset)) 8) | |
158 `(aref (charset-info ,charset) 8))) | |
159 | |
160 (defmacro charset-iso-graphic-plane (charset) | |
161 (if (quoted-symbol-p charset) | |
162 (aref (charset-info (nth 1 charset)) 9) | |
163 `(aref (charset-info ,charset) 9))) | |
164 | |
165 (defmacro charset-reverse-charset (charset) | |
166 (if (quoted-symbol-p charset) | |
167 (aref (charset-info (nth 1 charset)) 10) | |
168 `(aref (charset-info ,charset) 10))) | |
169 | |
170 (defmacro charset-short-name (charset) | |
171 (if (quoted-symbol-p charset) | |
172 (aref (charset-info (nth 1 charset)) 11) | |
173 `(aref (charset-info ,charset) 11))) | |
174 | |
175 (defmacro charset-long-name (charset) | |
176 (if (quoted-symbol-p charset) | |
177 (aref (charset-info (nth 1 charset)) 12) | |
178 `(aref (charset-info ,charset) 12))) | |
179 | |
180 (defmacro charset-description (charset) | |
181 (if (quoted-symbol-p charset) | |
182 (aref (charset-info (nth 1 charset)) 13) | |
183 `(aref (charset-info ,charset) 13))) | |
184 | |
185 (defmacro charset-plist (charset) | |
186 (if (quoted-symbol-p charset) | |
17175 | 187 `(aref ,(charset-info (nth 1 charset)) 14) |
17052 | 188 `(aref (charset-info ,charset) 14))) |
189 | |
190 (defun set-charset-plist (charset plist) | |
191 (aset (charset-info charset) 14 plist)) | |
192 | |
193 (defmacro make-char (charset &optional c1 c2) | |
17175 | 194 "Return a character of CHARSET and position-codes CODE1 and CODE2. |
195 CODE1 and CODE2 are optional, but if you don't supply | |
196 sufficient position-codes, return a generic character which stands for | |
197 all characters or group of characters in the character sets. | |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
198 A generic character can be used to index a char table (e.g. syntax-table)." |
17052 | 199 (if (quoted-symbol-p charset) |
200 `(make-char-internal ,(charset-id (nth 1 charset)) ,c1 ,c2) | |
201 `(make-char-internal (charset-id ,charset) ,c1 ,c2))) | |
202 | |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
203 (defmacro charset-list () |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
204 "Return list of charsets ever defined." |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
205 'charset-list) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
206 |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
207 (defsubst generic-char-p (char) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
208 "Return t if and only if CHAR is a generic character. |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
209 See also the documentation of make-char." |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
210 (let ((l (split-char char))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
211 (and (or (= (nth 1 l) 0) (eq (nth 2 l) 0)) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
212 (not (eq (car l) 'composition))))) |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
213 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
214 ;; Coding system staffs |
17052 | 215 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
216 ;; Coding system is a symbol that has the property `coding-system'. |
17052 | 217 ;; |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
218 ;; The value of the property `coding-system' is a vector of the |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
219 ;; following format: |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
220 ;; [TYPE MNEMONIC DOC-STRING NOT-USED-NOW FLAGS] |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
221 ;; We call this vector as coding-spec. See comments in src/coding.c |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
222 ;; for more detail. The property value may be another coding system, |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
223 ;; in which case, the coding-spec should be taken from that |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
224 ;; coding-system. The 4th element NOT-USED-NOW is kept just for |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
225 ;; backward compatibility with old version of Mule. |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
226 |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
227 (defconst coding-spec-type-idx 0) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
228 (defconst coding-spec-mnemonic-idx 1) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
229 (defconst coding-spec-doc-string-idx 2) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
230 (defconst coding-spec-flags-idx 4) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
231 |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
232 ;; Coding system may have proerpty `eol-type'. The value of the |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
233 ;; property `eol-type' is integer 0..2 or a vector of three coding |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
234 ;; systems. The integer value 0, 1, and 2 indicate the format of |
17052 | 235 ;; end-of-line LF, CRLF, and CR respectively. The vector value |
236 ;; indicates that the format of end-of-line should be detected | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
237 ;; automatically. Nth element of the vector is the subsidiary coding |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
238 ;; system whose `eol-type' property is N. |
17052 | 239 ;; |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
240 ;; Coding system may also have properties `post-read-conversion' and |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
241 ;; `pre-write-conversion. Values of these properties are functions. |
17052 | 242 ;; |
243 ;; The function in `post-read-conversion' is called after some text is | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
244 ;; inserted and decoded along the coding system and before any |
17052 | 245 ;; functions in `after-insert-functions' are called. The arguments to |
246 ;; this function is the same as those of a function in | |
247 ;; `after-insert-functions', i.e. LENGTH of a text while putting point | |
248 ;; at the head of the text to be decoded | |
249 ;; | |
250 ;; The function in `pre-write-conversion' is called after all | |
251 ;; functions in `write-region-annotate-functions' and | |
252 ;; `buffer-file-format' are called, and before the text is encoded by | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
253 ;; the coding system. The arguments to this function is the same as |
17052 | 254 ;; those of a function in `write-region-annotate-functions', i.e. FROM |
255 ;; and TO specifying region of a text. | |
256 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
257 ;; Return Nth element of coding-spec of CODING-SYSTEM. |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
258 (defun coding-system-spec-ref (coding-system n) |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
259 (check-coding-system coding-system) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
260 (let ((vec (coding-system-spec coding-system))) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
261 (and vec (aref vec n)))) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
262 |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
263 (defun coding-system-type (coding-system) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
264 "Return TYPE element in coding-spec of CODING-SYSTEM." |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
265 (coding-system-spec-ref coding-system coding-spec-type-idx)) |
17052 | 266 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
267 (defun coding-system-mnemonic (coding-system) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
268 "Return MNEMONIC element in coding-spec of CODING-SYSTEM." |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
269 (or (coding-system-spec-ref coding-system coding-spec-mnemonic-idx) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
270 ?-)) |
17052 | 271 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
272 (defun coding-system-doc-string (coding-system) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
273 "Return DOC-STRING element in coding-spec of CODING-SYSTEM." |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
274 (coding-system-spec-ref coding-system coding-spec-doc-string-idx)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
275 |
17052 | 276 (defun coding-system-flags (coding-system) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
277 "Return FLAGS element in coding-spec of CODING-SYSTEM." |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
278 (coding-system-spec-ref coding-system coding-spec-flags-idx)) |
17052 | 279 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
280 (defun coding-system-eol-type (coding-system) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
281 "Return eol-type property of CODING-SYSTEM." |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
282 (check-coding-system coding-system) |
17052 | 283 (and coding-system |
284 (or (get coding-system 'eol-type) | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
285 (coding-system-eol-type (get coding-system 'coding-system))))) |
17052 | 286 |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
287 (defun coding-system-category (coding-system) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
288 "Return coding category of CODING-SYSTEM." |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
289 (and coding-system |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
290 (symbolp coding-system) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
291 (or (get coding-system 'coding-category) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
292 (coding-system-category (get coding-system 'coding-system))))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
293 |
18312
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
294 (defun coding-system-parent (coding-system) |
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
295 "Return parent of CODING-SYSTEM." |
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
296 (let ((parent (get coding-system 'parent-coding-system))) |
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
297 (and parent |
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
298 (or (coding-system-parent parent) |
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
299 parent)))) |
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
300 |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
301 ;; Make subsidiary coding systems (eol-type variants) of CODING-SYSTEM. |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
302 (defun make-subsidiary-coding-system (coding-system) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
303 (let ((subsidiaries (vector (intern (format "%s-unix" coding-system)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
304 (intern (format "%s-dos" coding-system)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
305 (intern (format "%s-mac" coding-system)))) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
306 (i 0)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
307 (while (< i 3) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
308 (put (aref subsidiaries i) 'coding-system coding-system) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
309 (put (aref subsidiaries i) 'eol-type i) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
310 (put (aref subsidiaries i) 'eol-variant t) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
311 (setq i (1+ i))) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
312 subsidiaries)) |
17052 | 313 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
314 (defun make-coding-system (coding-system type mnemonic doc-string |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
315 &optional flags) |
17052 | 316 "Define a new CODING-SYSTEM (symbol). |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
317 Remaining arguments are TYPE, MNEMONIC, DOC-STRING, and FLAGS (optional) which |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
318 construct a coding-spec of CODING-SYSTEM in the following format: |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
319 [TYPE MNEMONIC DOC-STRING nil FLAGS] |
17052 | 320 TYPE is an integer value indicating the type of coding-system as follows: |
321 0: Emacs internal format, | |
322 1: Shift-JIS (or MS-Kanji) used mainly on Japanese PC, | |
323 2: ISO-2022 including many variants, | |
324 3: Big5 used mainly on Chinese PC, | |
325 4: private, CCL programs provide encoding/decoding algorithm. | |
326 MNEMONIC is a character to be displayed on mode line for the coding-system. | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
327 DOC-STRING is a documentation string for the coding-system. |
17052 | 328 FLAGS specifies more precise information of each TYPE. |
329 If TYPE is 2 (ISO-2022), FLAGS should be a list of: | |
330 CHARSET0, CHARSET1, CHARSET2, CHARSET3, SHORT-FORM, | |
331 ASCII-EOL, ASCII-CNTL, SEVEN, LOCKING-SHIFT, SINGLE-SHIFT, | |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
332 USE-ROMAN, USE-OLDJIS, NO-ISO6429, INIT-BOL, DESIGNATION-BOL. |
17052 | 333 CHARSETn are character sets initially designated to Gn graphic registers. |
334 If CHARSETn is nil, Gn is never used. | |
335 If CHARSETn is t, Gn can be used but nothing designated initially. | |
336 If CHARSETn is a list of character sets, those character sets are | |
337 designated to Gn on output, but nothing designated to Gn initially. | |
338 SHORT-FORM non-nil means use short designation sequence on output. | |
339 ASCII-EOL non-nil means designate ASCII to g0 at end of line on output. | |
340 ASCII-CNTL non-nil means designate ASCII to g0 before control codes and | |
341 SPACE on output. | |
342 SEVEN non-nil means use 7-bit code only on output. | |
343 LOCKING-SHIFT non-nil means use locking-shift. | |
344 SINGLE-SHIFT non-nil means use single-shift. | |
345 USE-ROMAN non-nil means designate JIS0201-1976-Roman instead of ASCII. | |
346 USE-OLDJIS non-nil means designate JIS0208-1976 instead of JIS0208-1983. | |
347 NO-ISO6429 non-nil means not use ISO6429's direction specification. | |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
348 INIT-BOL non-nil means any designation state is assumed to be reset |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
349 to initial at each beginning of line on output. |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
350 DESIGNATION-BOL non-nil means designation sequences should be placed |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
351 at beginning of line on output. |
17052 | 352 If TYPE is 4 (private), FLAGS should be a cons of CCL programs, |
353 for encoding and decoding. See the documentation of CCL for more detail." | |
354 | |
355 ;; At first, set a value of `coding-system' property. | |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
356 (let ((coding-spec (make-vector 5 nil)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
357 coding-category) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
358 (if (or (not (integerp type)) (< type 0) (> type 4)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
359 (error "TYPE argument must be 0..4")) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
360 (if (or (not (integerp mnemonic)) (<= mnemonic ? ) (> mnemonic 127)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
361 (error "MNEMONIC arguemnt must be a printable character.")) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
362 (aset coding-spec 0 type) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
363 (aset coding-spec 1 mnemonic) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
364 (aset coding-spec 2 (if (stringp doc-string) doc-string "")) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
365 (aset coding-spec 3 nil) ; obsolete element |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
366 (cond ((= type 0) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
367 (setq coding-category 'coding-category-emacs-mule)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
368 ((= type 1) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
369 (setq coding-category 'coding-category-sjis)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
370 ((= type 2) ; ISO2022 |
17052 | 371 (let ((i 0) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
372 (vec (make-vector 32 nil)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
373 (no-initial-designation t) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
374 (g1-designation nil)) |
17052 | 375 (while (< i 4) |
376 (let ((charset (car flags))) | |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
377 (if (and no-initial-designation |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
378 (> i 0) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
379 (or (charsetp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
380 (and (consp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
381 (charsetp (car charset))))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
382 (setq no-initial-designation nil)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
383 (if (charsetp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
384 (if (= i 1) (setq g1-designation charset)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
385 (if (consp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
386 (let ((tail charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
387 elt) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
388 (while tail |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
389 (setq elt (car tail)) |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
390 (or (not elt) (eq elt t) (charsetp elt) |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
391 (error "Invalid charset: %s" elt)) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
392 (setq tail (cdr tail))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
393 (setq g1-designation (car charset))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
394 (if (and charset (not (eq charset t))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
395 (error "Invalid charset: %s" charset)))) |
17052 | 396 (aset vec i charset)) |
397 (setq flags (cdr flags) i (1+ i))) | |
398 (while (and (< i 32) flags) | |
399 (aset vec i (car flags)) | |
400 (setq flags (cdr flags) i (1+ i))) | |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
401 (aset coding-spec 4 vec) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
402 (if no-initial-designation |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
403 (put coding-system 'no-initial-designation t)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
404 (setq coding-category |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
405 (if (aref vec 8) ; Use locking-shift. |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
406 'coding-category-iso-else |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
407 (if (aref vec 7) ; 7-bit only. |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
408 (if (aref vec 9) ; Use single-shift. |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
409 'coding-category-iso-else |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
410 'coding-category-iso-7) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
411 (if no-initial-designation |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
412 'coding-category-iso-else |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
413 (if (and (charsetp g1-designation) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
414 (= (charset-dimension g1-designation) 2)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
415 'coding-category-iso-8-2 |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
416 'coding-category-iso-8-1))))))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
417 ((= type 3) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
418 (setq coding-category 'coding-category-big5)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
419 ((= type 4) ; private |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
420 (setq coding-category 'coding-category-binary) |
17052 | 421 (if (and (consp flags) |
422 (vectorp (car flags)) | |
423 (vectorp (cdr flags))) | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
424 (aset coding-spec 4 flags) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
425 (error "Invalid FLAGS argument for TYPE 4 (CCL)")))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
426 (put coding-system 'coding-system coding-spec) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
427 (put coding-system 'coding-category coding-category) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
428 (put coding-category 'coding-systems |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
429 (cons coding-system (get coding-category 'coding-systems)))) |
17052 | 430 |
431 ;; Next, set a value of `eol-type' property. The value is a vector | |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
432 ;; of subsidiary coding systems, each corresponds to a coding system |
17052 | 433 ;; for the detected end-of-line format. |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
434 (put coding-system 'eol-type |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
435 (if (<= type 3) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
436 (make-subsidiary-coding-system coding-system) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
437 0))) |
17052 | 438 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
439 (defun define-coding-system-alias (coding-system alias) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
440 "Define ALIAS as an alias coding system of CODING-SYSTEM." |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
441 (check-coding-system coding-system) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
442 (let ((parent (coding-system-parent coding-system))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
443 (if parent |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
444 (setq coding-system parent))) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
445 (put alias 'coding-system coding-system) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
446 (put alias 'parent-coding-system coding-system) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
447 (put coding-system 'alias-coding-systems |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
448 (cons alias (get coding-system 'alias-coding-systems))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
449 (let ((eol-variants (coding-system-eol-type coding-system)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
450 subsidiaries) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
451 (if (vectorp eol-variants) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
452 (let ((i 0)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
453 (setq subsidiaries (make-subsidiary-coding-system alias)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
454 (while (< i 3) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
455 (put (aref subsidiaries i) 'parent-coding-system |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
456 (aref eol-variants i)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
457 (put (aref eol-variants i) 'alias-coding-systems |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
458 (cons (aref subsidiaries i) (get (aref eol-variants i) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
459 'alias-coding-systems))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
460 (setq i (1+ i))))))) |
17052 | 461 |
462 (defun set-buffer-file-coding-system (coding-system &optional force) | |
463 "Set buffer-file-coding-system of the current buffer to CODING-SYSTEM. | |
464 If eol-type of the current buffer-file-coding-system is an integer value N, and | |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
465 eol-type of CODING-SYSTEM is a vector, the Nth element of the vector is used |
17052 | 466 instead of CODING-SYSTEM itself. |
467 Optional prefix argument FORCE non-nil means CODING-SYSTEM is set | |
468 regardless of eol-type of the current buffer-file-coding-system." | |
469 (interactive "zBuffer-file-coding-system: \nP") | |
470 (check-coding-system coding-system) | |
471 (if (null force) | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
472 (let ((x (coding-system-eol-type buffer-file-coding-system)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
473 (y (coding-system-eol-type coding-system))) |
17052 | 474 (if (and (numberp x) (>= x 0) (<= x 2) (vectorp y)) |
475 (setq coding-system (aref y x))))) | |
476 (setq buffer-file-coding-system coding-system) | |
477 (set-buffer-modified-p t) | |
478 (force-mode-line-update)) | |
479 | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
480 (defun set-terminal-coding-system (coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
481 "Set coding system of your terminal to CODING-SYSTEM. |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
482 All outputs to terminal are encoded by the specified coding system." |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
483 (interactive "zCoding-system for terminal display: ") |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
484 (set-terminal-coding-system-internal coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
485 (redraw-frame (selected-frame))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
486 |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
487 (defun set-keyboard-coding-system (coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
488 "Set coding system of codes sent from terminal keyboard to CODING-SYSTEM. |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
489 In addition, this command toggles Encoded-kbd minor mode. |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
490 If the specified coding system is nil, Encoded-bkd mode is turned off, |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
491 else it is turned on so that user inputs are decoded by the |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
492 specified coding system." |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
493 (interactive "zCoding-system for keyboard input: ") |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
494 (set-keyboard-coding-system-internal coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
495 (encoded-kbd-mode (if coding-system 1 0))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
496 |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
497 (defun set-buffer-process-coding-system (decoding encoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
498 "Set coding systems to the process associated with the current buffer. |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
499 DECODING is the coding system to be used to decode input from the process, |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
500 ENCODING is to be used to encode output to the process." |
17052 | 501 (interactive |
502 "zCoding-system for process input: \nzCoding-system for process output: ") | |
503 (let ((proc (get-buffer-process (current-buffer)))) | |
504 (if (null proc) | |
505 (error "no process") | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
506 (check-coding-system decoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
507 (check-coding-system encoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
508 (set-process-coding-system proc decoding encoding))) |
17052 | 509 (force-mode-line-update)) |
510 | |
511 (defun set-coding-priority (arg) | |
512 "Set priority of coding-category according to LIST. | |
513 LIST is a list of coding-categories ordered by priority." | |
514 (let (l) | |
515 ;; Put coding-categories listed in ARG to L while checking the | |
516 ;; validity. We assume that `coding-category-list' contains whole | |
517 ;; coding-categories. | |
518 (while arg | |
519 (if (null (memq (car arg) coding-category-list)) | |
520 (error "Invalid element in argument: %s" (car arg))) | |
521 (setq l (cons (car arg) l)) | |
522 (setq arg (cdr arg))) | |
523 ;; Put coding-category not listed in ARG to L. | |
524 (while coding-category-list | |
525 (if (null (memq (car coding-category-list) l)) | |
526 (setq l (cons (car coding-category-list) l))) | |
527 (setq coding-category-list (cdr coding-category-list))) | |
528 ;; Update `coding-category-list' and return it. | |
529 (setq coding-category-list (nreverse l)))) | |
530 | |
531 ;;; FILE I/O | |
532 | |
533 ;; Set buffer-file-coding-system of the current buffer after some text | |
534 ;; is inserted. | |
535 (defun after-insert-file-set-buffer-file-coding-system (inserted) | |
536 (if last-coding-system-used | |
537 (let ((coding-system | |
538 (find-new-buffer-file-coding-system last-coding-system-used)) | |
539 (modified-p (buffer-modified-p))) | |
540 (if coding-system | |
541 (set-buffer-file-coding-system coding-system)) | |
542 (set-buffer-modified-p modified-p))) | |
543 nil) | |
544 | |
545 (setq after-insert-file-functions | |
546 (cons 'after-insert-file-set-buffer-file-coding-system | |
547 after-insert-file-functions)) | |
548 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
549 ;; The coding-spec and eol-type of coding-system returned is decided |
17052 | 550 ;; independently in the following order. |
551 ;; 1. That of buffer-file-coding-system locally bound. | |
552 ;; 2. That of CODING. | |
553 | |
554 (defun find-new-buffer-file-coding-system (coding) | |
555 "Return a coding system for a buffer when a file of CODING is inserted. | |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
556 The local variable `buffer-file-coding-system' of the current buffer |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
557 is set to the returned value. |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
558 Return nil if there's no need of setting new buffer-file-coding-system." |
17052 | 559 (let (local-coding local-eol |
560 found-eol | |
561 new-coding new-eol) | |
562 (if (null coding) | |
563 ;; Nothing found about coding. | |
564 nil | |
565 | |
566 ;; Get information of the current local value of | |
567 ;; `buffer-file-coding-system' in LOCAL-EOL and LOCAL-CODING. | |
568 (if (local-variable-p 'buffer-file-coding-system) | |
569 ;; Something already set locally. | |
570 (progn | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
571 (setq local-eol (coding-system-eol-type buffer-file-coding-system)) |
17052 | 572 (if (null (numberp local-eol)) |
573 ;; But eol-type is not yet set. | |
574 (setq local-eol nil)) | |
575 (if (null (eq (coding-system-type buffer-file-coding-system) t)) | |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
576 ;; This is not `undecided'. |
17052 | 577 (progn |
578 (setq local-coding buffer-file-coding-system) | |
579 (while (symbolp (get local-coding 'coding-system)) | |
580 (setq local-coding (get local-coding 'coding-system)))) | |
581 ))) | |
582 | |
583 (if (and local-eol local-coding) | |
584 ;; The current buffer has already set full coding-system, we | |
585 ;; had better not change it. | |
586 nil | |
587 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
588 (setq found-eol (coding-system-eol-type coding)) |
17052 | 589 (if (null (numberp found-eol)) |
590 ;; But eol-type is not found. | |
591 (setq found-eol nil)) | |
592 (if (eq (coding-system-type coding) t) | |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
593 ;; This is `undecided', which means nothing found except |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
594 ;; for eol-type. |
17052 | 595 (setq coding nil)) |
596 | |
597 ;; The local setting takes precedence over the found one. | |
598 (setq new-coding (or local-coding coding)) | |
599 (setq new-eol (or local-eol found-eol)) | |
600 (if (and (numberp new-eol) | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
601 (vectorp (coding-system-eol-type new-coding))) |
17052 | 602 (setq new-coding |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
603 (aref (coding-system-eol-type new-coding) new-eol))) |
17052 | 604 new-coding)))) |
605 | |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
606 (defun make-unification-table (&rest args) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
607 "Make a unification table (char table) from arguments. |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
608 Each argument is a list of the form (FROM . TO), |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
609 where FROM is a character to be unified to TO. |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
610 |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
611 FROM can be a generic character (see make-char). In this case, TO is |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
612 a generic character containing the same number of charcters or a |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
613 oridinal character. If FROM and TO are both generic characters, all |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
614 characters belonging to FROM are unified to characters belonging to TO |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
615 without changing their position code(s)." |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
616 (let ((table (make-char-table 'character-unification-table)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
617 revlist) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
618 (while args |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
619 (let ((elts (car args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
620 (while elts |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
621 (let* ((from (car (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
622 (from-i 0) ; degree of freedom of FROM |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
623 (from-rev (nreverse (split-char from))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
624 (to (cdr (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
625 (to-i 0) ; degree of freedom of TO |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
626 (to-rev (nreverse (split-char to)))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
627 ;; Check numbers of heading 0s in FROM-REV and TO-REV. |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
628 (while (eq (car from-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
629 (setq from-i (1+ from-i) from-rev (cdr from-rev))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
630 (while (eq (car to-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
631 (setq to-i (1+ to-i) to-rev (cdr to-rev))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
632 (if (and (/= from-i to-i) (/= to-i 0)) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
633 (error "Invalid character pair (%d . %d)" from to)) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
634 ;; If we have already unified TO to TO-ALT, FROM should |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
635 ;; also be unified to TO-ALT. But, this is only if TO is |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
636 ;; a generic character or TO-ALT is not a generic |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
637 ;; character. |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
638 (let ((to-alt (aref table to))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
639 (if (and to-alt |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
640 (or (> to-i 0) (not (generic-char-p to-alt)))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
641 (setq to to-alt))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
642 (if (> from-i 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
643 (set-char-table-default table from to) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
644 (aset table from to)) |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
645 ;; If we have already unified some chars to FROM, they |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
646 ;; should also be unified to TO. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
647 (let ((l (assq from revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
648 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
649 (let ((ch (car l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
650 (setcar l to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
651 (setq l (cdr l)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
652 (while l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
653 (aset table ch to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
654 (setq l (cdr l)) )))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
655 ;; Now update REVLIST. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
656 (let ((l (assq to revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
657 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
658 (setcdr l (cons from (cdr l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
659 (setq revlist (cons (list to from) revlist))))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
660 (setq elts (cdr elts)))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
661 (setq args (cdr args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
662 ;; Return TABLE just created. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
663 table)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
664 |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
665 ;;; Initialize some variables. |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
666 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
667 (put 'use-default-ascent 'char-table-extra-slots 0) |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
668 (setq use-default-ascent (make-char-table 'use-default-ascent)) |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
669 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
670 ;;; |
17052 | 671 (provide 'mule) |
672 | |
673 ;;; mule.el ends here |