Mercurial > emacs
annotate lisp/international/mule.el @ 20144:56d81cc7b4f5
(c-progress-interval): Document new semantics
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Thu, 23 Oct 1997 07:48:50 +0000 |
parents | 6e6838a12511 |
children | 0d9c6ccdc45c |
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) | |
19768
8ccbf79d4294
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
19760
diff
changeset
|
58 ;; This is buffer-local. |
8ccbf79d4294
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
19760
diff
changeset
|
59 (setq enable-multibyte-characters t) |
17052 | 60 (insert-file-contents fullname) |
61 ;; Make `kill-buffer' quiet. | |
62 (set-buffer-modified-p nil)) | |
63 ;; Eval in the original buffer. | |
19802
2e277f643555
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
19768
diff
changeset
|
64 (eval-buffer buffer nil file)) |
18583
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
65 (let (kill-buffer-hook kill-buffer-query-functions) |
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
66 (kill-buffer buffer))) |
17052 | 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 | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
76 ;; Return t if OBJ is a quoted symbol |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
77 ;; and the symbol is the name of a standard charset. |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
78 (defsubst charset-quoted-standard-p (obj) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
79 (and (listp obj) (eq (car obj) 'quote) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
80 (symbolp (car-safe (cdr obj))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
81 (let ((vector (get (car-safe (cdr obj)) 'charset))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
82 (and (vectorp vector) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
83 (< (aref vector 0) 160))))) |
17052 | 84 |
85 (defsubst charsetp (object) | |
86 "T is OBJECT is a charset." | |
87 (and (symbolp object) (vectorp (get object 'charset)))) | |
88 | |
89 (defsubst charset-info (charset) | |
90 "Return a vector of information of CHARSET. | |
91 The elements of the vector are: | |
92 CHARSET-ID, BYTES, DIMENSION, CHARS, WIDTH, DIRECTION, | |
93 LEADING-CODE-BASE, LEADING-CODE-EXT, | |
94 ISO-FINAL-CHAR, ISO-GRAPHIC-PLANE, | |
95 REVERSE-CHARSET, SHORT-NAME, LONG-NAME, DESCRIPTION, | |
96 PLIST, | |
97 where | |
98 CHARSET-ID (integer) is the identification number of the charset. | |
99 DIMENSION (integer) is the number of bytes to represent a character of | |
100 the charset: 1 or 2. | |
101 CHARS (integer) is the number of characters in a dimension: 94 or 96. | |
102 BYTE (integer) is the length of multi-byte form of a character in | |
103 the charset: one of 1, 2, 3, and 4. | |
104 WIDTH (integer) is the number of columns a character in the charset | |
105 occupies on the screen: one of 0, 1, and 2. | |
106 DIRECTION (integer) is the rendering direction of characters in the | |
107 charset when rendering. If 0, render from right to left, else | |
108 render from left to right. | |
109 LEADING-CODE-BASE (integer) is the base leading-code for the | |
110 charset. | |
111 LEADING-CODE-EXT (integer) is the extended leading-code for the | |
112 charset. All charsets of less than 0xA0 has the value 0. | |
113 ISO-FINAL-CHAR (character) is the final character of the | |
114 corresponding ISO 2022 charset. | |
115 ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked | |
116 while encoding to variants of ISO 2022 coding system, one of the | |
117 following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR). | |
118 REVERSE-CHARSET (integer) is the charset which differs only in | |
119 LEFT-TO-RIGHT value from the charset. If there's no such a | |
120 charset, the value is -1. | |
121 SHORT-NAME (string) is the short name to refer to the charset. | |
122 LONG-NAME (string) is the long name to refer to the charset | |
123 DESCRIPTION (string) is the description string of the charset. | |
124 PLIST (property list) may contain any type of information a user | |
125 want to put and get by functions `put-charset-property' and | |
126 `get-charset-property' respectively." | |
127 (get charset 'charset)) | |
128 | |
129 (defmacro charset-id (charset) | |
130 "Return charset identification number of CHARSET." | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
131 (if (charset-quoted-standard-p charset) |
17052 | 132 (aref (charset-info (nth 1 charset)) 0) |
133 `(aref (charset-info ,charset) 0))) | |
134 | |
135 (defmacro charset-bytes (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
136 "Return bytes of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
137 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
138 (if (charset-quoted-standard-p charset) |
17052 | 139 (aref (charset-info (nth 1 charset)) 1) |
140 `(aref (charset-info ,charset) 1))) | |
141 | |
142 (defmacro charset-dimension (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
143 "Return dimension of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
144 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
145 (if (charset-quoted-standard-p charset) |
17052 | 146 (aref (charset-info (nth 1 charset)) 2) |
147 `(aref (charset-info ,charset) 2))) | |
148 | |
149 (defmacro charset-chars (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
150 "Return character numbers contained in a dimension of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
151 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
152 (if (charset-quoted-standard-p charset) |
17052 | 153 (aref (charset-info (nth 1 charset)) 3) |
154 `(aref (charset-info ,charset) 3))) | |
155 | |
156 (defmacro charset-width (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
157 "Return width (how many column occupied on a screen) of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
158 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
159 (if (charset-quoted-standard-p charset) |
17052 | 160 (aref (charset-info (nth 1 charset)) 4) |
161 `(aref (charset-info ,charset) 4))) | |
162 | |
163 (defmacro charset-direction (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
164 "Return direction of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
165 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
166 (if (charset-quoted-standard-p charset) |
17052 | 167 (aref (charset-info (nth 1 charset)) 5) |
168 `(aref (charset-info ,charset) 5))) | |
169 | |
170 (defmacro charset-iso-final-char (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
171 "Return final char of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
172 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
173 (if (charset-quoted-standard-p charset) |
17052 | 174 (aref (charset-info (nth 1 charset)) 8) |
175 `(aref (charset-info ,charset) 8))) | |
176 | |
177 (defmacro charset-iso-graphic-plane (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
178 "Return graphic plane of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
179 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
180 (if (charset-quoted-standard-p charset) |
17052 | 181 (aref (charset-info (nth 1 charset)) 9) |
182 `(aref (charset-info ,charset) 9))) | |
183 | |
184 (defmacro charset-reverse-charset (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
185 "Return reverse charset of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
186 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
187 (if (charset-quoted-standard-p charset) |
17052 | 188 (aref (charset-info (nth 1 charset)) 10) |
189 `(aref (charset-info ,charset) 10))) | |
190 | |
191 (defmacro charset-short-name (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
192 "Return short name of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
193 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
194 (if (charset-quoted-standard-p charset) |
17052 | 195 (aref (charset-info (nth 1 charset)) 11) |
196 `(aref (charset-info ,charset) 11))) | |
197 | |
198 (defmacro charset-long-name (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
199 "Return long name of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
200 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
201 (if (charset-quoted-standard-p charset) |
17052 | 202 (aref (charset-info (nth 1 charset)) 12) |
203 `(aref (charset-info ,charset) 12))) | |
204 | |
205 (defmacro charset-description (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
206 "Return descriptoin of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
207 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
208 (if (charset-quoted-standard-p charset) |
17052 | 209 (aref (charset-info (nth 1 charset)) 13) |
210 `(aref (charset-info ,charset) 13))) | |
211 | |
212 (defmacro charset-plist (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
213 "Return list charset property of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
214 See the function `charset-info' for more detail." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
215 (if (charset-quoted-standard-p charset) |
17175 | 216 `(aref ,(charset-info (nth 1 charset)) 14) |
17052 | 217 `(aref (charset-info ,charset) 14))) |
218 | |
219 (defun set-charset-plist (charset plist) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
220 "Set CHARSET's property list to PLIST, and retrun PLIST." |
17052 | 221 (aset (charset-info charset) 14 plist)) |
222 | |
223 (defmacro make-char (charset &optional c1 c2) | |
17175 | 224 "Return a character of CHARSET and position-codes CODE1 and CODE2. |
225 CODE1 and CODE2 are optional, but if you don't supply | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
226 sufficient position-codes, return a generic character which stands for |
17175 | 227 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
|
228 A generic character can be used to index a char table (e.g. syntax-table)." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
229 (if (charset-quoted-standard-p charset) |
17052 | 230 `(make-char-internal ,(charset-id (nth 1 charset)) ,c1 ,c2) |
231 `(make-char-internal (charset-id ,charset) ,c1 ,c2))) | |
232 | |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
233 (defun charset-list () |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
234 "Return list of charsets ever defined. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
235 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
236 This function is provided for backward compatibility. |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
237 Now we have the variable `charset-list'." |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
238 charset-list) |
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
239 |
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
240 (make-obsolete 'charset-list |
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
241 "Use the variable charset-list instead.") |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
242 |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
243 (defsubst generic-char-p (char) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
244 "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
|
245 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
|
246 (let ((l (split-char char))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
247 (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
|
248 (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
|
249 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
250 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
251 ;; Coding system staffs |
17052 | 252 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
253 ;; Coding system is a symbol that has the property `coding-system'. |
17052 | 254 ;; |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
255 ;; 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
|
256 ;; following format: |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
257 ;; [TYPE MNEMONIC DOC-STRING PLIST FLAGS] |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
258 ;; We call this vector as coding-spec. See comments in src/coding.c |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
259 ;; for more detail. |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
260 |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
261 (defconst coding-spec-type-idx 0) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
262 (defconst coding-spec-mnemonic-idx 1) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
263 (defconst coding-spec-doc-string-idx 2) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
264 (defconst coding-spec-plist-idx 3) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
265 (defconst coding-spec-flags-idx 4) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
266 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
267 ;; PLIST is a property list of a coding system. A coding system has |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
268 ;; PLIST in coding-spec instead of having it in normal proper list of |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
269 ;; Lisp symbol to share PLIST among alias coding systems. Here's a |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
270 ;; list of properties to be held in PLIST. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
271 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
272 ;; o coding-category |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
273 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
274 ;; The value is a coding category the coding system belongs to. The |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
275 ;; function `make-coding-system' and `define-coding-system-alias' sets |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
276 ;; this value automatically. |
17052 | 277 ;; |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
278 ;; o alias-coding-systems |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
279 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
280 ;; The value is a list of coding systems of the same alias group. The |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
281 ;; first element is the coding system made at first, which we call as |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
282 ;; `base coding system'. The function `make-coding-system' and |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
283 ;; `define-coding-system-alias' set this value automatically. |
17052 | 284 ;; |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
285 ;; o post-read-conversion |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
286 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
287 ;; The value is a function to call after some text is inserted and |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
288 ;; decoded by the coding system itself and before any functions in |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
289 ;; `after-insert-functions' are called. The arguments to this |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
290 ;; function is the same as those of a function in |
17052 | 291 ;; `after-insert-functions', i.e. LENGTH of a text while putting point |
292 ;; at the head of the text to be decoded | |
293 ;; | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
294 ;; o pre-write-conversion |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
295 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
296 ;; The value is a function to call after all functions in |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
297 ;; `write-region-annotate-functions' and `buffer-file-format' are |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
298 ;; called, and before the text is encoded by the coding system itself. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
299 ;; The arguments to this function is the same as those of a function |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
300 ;; in `write-region-annotate-functions', i.e. FROM and TO specifying |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
301 ;; region of a text. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
302 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
303 ;; o character-unification-table-for-decode |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
304 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
305 ;; The value is a unification table to be applied on decoding. See |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
306 ;; the function `make-unification-table' for the format of unification |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
307 ;; table. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
308 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
309 ;; o character-unification-table-for-encode |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
310 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
311 ;; The value is a unification table to be applied on encoding. |
17052 | 312 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
313 ;; Return coding-spec of CODING-SYSTEM |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
314 (defsubst coding-system-spec (coding-system) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
315 (get (check-coding-system coding-system) 'coding-system)) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
316 |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
317 (defun coding-system-type (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
318 "Return the coding type of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
319 A coding type is an integer value indicating the encoding method |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
320 of CODING-SYSTEM. See the function `make-coding-system' for more detail." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
321 (aref (coding-system-spec coding-system) coding-spec-type-idx)) |
17052 | 322 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
323 (defun coding-system-mnemonic (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
324 "Return the mnemonic character of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
325 A mnemonic character of a coding system is used in mode line |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
326 to indicate the coding system." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
327 (or (aref (coding-system-spec coding-system) coding-spec-mnemonic-idx) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
328 ?-)) |
17052 | 329 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
330 (defun coding-system-doc-string (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
331 "Return the documentation string for CODING-SYSTEM." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
332 (aref (coding-system-spec coding-system) coding-spec-doc-string-idx)) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
333 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
334 (defun coding-system-plist (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
335 "Return the property list of CODING-SYSTEM." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
336 (aref (coding-system-spec coding-system) coding-spec-plist-idx)) |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
337 |
17052 | 338 (defun coding-system-flags (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
339 "Return `flags' of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
340 A `flags' of a coding system is a vector of length 32 indicating detailed |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
341 information of a coding system. See the function `make-coding-system' |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
342 for more detail." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
343 (aref (coding-system-spec coding-system) coding-spec-flags-idx)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
344 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
345 (defun coding-system-get (coding-system prop) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
346 "Extract a value from CODING-SYSTEM's property list for property PROP." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
347 (plist-get (coding-system-plist coding-system) prop)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
348 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
349 (defun coding-system-put (coding-system prop val) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
350 "Change value in CODING-SYSTEM's property list PROP to VAL." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
351 (let ((plist (coding-system-plist coding-system))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
352 (if plist |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
353 (plist-put plist prop val) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
354 (aset (coding-system-spec coding-system) coding-spec-plist-idx |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
355 (list prop val))))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
356 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
357 (defun coding-system-category (coding-system) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
358 "Return the coding category of CODING-SYSTEM." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
359 (coding-system-get coding-system 'coding-category)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
360 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
361 (defun coding-system-base (coding-system) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
362 "Return the base coding system of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
363 A base coding system is what made by `make-coding-system', |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
364 not what made by `define-coding-system-alias'." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
365 (car (coding-system-get coding-system 'alias-coding-systems))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
366 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
367 (defalias 'coding-system-parent 'coding-system-base) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
368 (make-obsolete 'coding-system-parent 'coding-system-base) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
369 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
370 ;; Coding system also has a property `eol-type'. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
371 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
372 ;; This property indicates how the coding system handles end-of-line |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
373 ;; format. The value is integer 0, 1, 2, or a vector of three coding |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
374 ;; systems. Each integer value 0, 1, and 2 indicates the format of |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
375 ;; end-of-line LF, CRLF, and CR respectively. A vector value |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
376 ;; indicates that the format of end-of-line should be detected |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
377 ;; automatically. Nth element of the vector is the subsidiary coding |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
378 ;; system whose `eol-type' property is N. |
17052 | 379 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
380 (defun coding-system-eol-type (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
381 "Return eol-type of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
382 An eol-type is integer 0, 1, 2, or a vector of coding systems. |
17052 | 383 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
384 Integer values 0, 1, and 2 indicate a format of end-of-line; LF, |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
385 CRLF, and CR respectively. |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
386 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
387 A vector value indicates that a format of end-of-line should be |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
388 detected automatically. Nth element of the vector is the subsidiary |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
389 coding system whose eol-type is N." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
390 (get coding-system 'eol-type)) |
18312
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
391 |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
392 ;; 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
|
393 (defun make-subsidiary-coding-system (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
394 (let ((coding-spec (coding-system-spec coding-system)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
395 (subsidiaries (vector (intern (format "%s-unix" coding-system)) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
396 (intern (format "%s-dos" coding-system)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
397 (intern (format "%s-mac" coding-system)))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
398 (i 0) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
399 temp) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
400 (while (< i 3) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
401 (put (aref subsidiaries i) 'coding-system coding-spec) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
402 (put (aref subsidiaries i) 'eol-type i) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
403 (setq coding-system-list |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
404 (cons (aref subsidiaries i) coding-system-list)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
405 (setq coding-system-alist |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
406 (cons (list (symbol-name (aref subsidiaries i))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
407 coding-system-alist)) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
408 (setq i (1+ i))) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
409 subsidiaries)) |
17052 | 410 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
411 (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
|
412 &optional flags) |
17052 | 413 "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
|
414 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
|
415 construct a coding-spec of CODING-SYSTEM in the following format: |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
416 [TYPE MNEMONIC DOC-STRING PLIST FLAGS] |
17052 | 417 TYPE is an integer value indicating the type of coding-system as follows: |
418 0: Emacs internal format, | |
419 1: Shift-JIS (or MS-Kanji) used mainly on Japanese PC, | |
420 2: ISO-2022 including many variants, | |
421 3: Big5 used mainly on Chinese PC, | |
19606
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
422 4: private, CCL programs provide encoding/decoding algorithm, |
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
423 5: Raw-text, which means that text contains random 8-bit codes. |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
424 |
17052 | 425 MNEMONIC is a character to be displayed on mode line for the coding-system. |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
426 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
427 DOC-STRING is a documentation string for the coding-system. |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
428 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
429 PLIST is the propert list for CODING-SYSTEM. This function sets |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
430 properties coding-category and alias-coding-systems. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
431 |
17052 | 432 FLAGS specifies more precise information of each TYPE. |
19263
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
433 |
17052 | 434 If TYPE is 2 (ISO-2022), FLAGS should be a list of: |
435 CHARSET0, CHARSET1, CHARSET2, CHARSET3, SHORT-FORM, | |
436 ASCII-EOL, ASCII-CNTL, SEVEN, LOCKING-SHIFT, SINGLE-SHIFT, | |
19263
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
437 USE-ROMAN, USE-OLDJIS, NO-ISO6429, INIT-BOL, DESIGNATION-BOL, |
19395
cf115b0c7458
(make-coding-system): Add a new FLAGS
Richard M. Stallman <rms@gnu.org>
parents:
19263
diff
changeset
|
438 SAFE, ACCEPT-LATIN-EXTRA-CODE. |
17052 | 439 CHARSETn are character sets initially designated to Gn graphic registers. |
440 If CHARSETn is nil, Gn is never used. | |
441 If CHARSETn is t, Gn can be used but nothing designated initially. | |
442 If CHARSETn is a list of character sets, those character sets are | |
443 designated to Gn on output, but nothing designated to Gn initially. | |
444 SHORT-FORM non-nil means use short designation sequence on output. | |
445 ASCII-EOL non-nil means designate ASCII to g0 at end of line on output. | |
446 ASCII-CNTL non-nil means designate ASCII to g0 before control codes and | |
447 SPACE on output. | |
448 SEVEN non-nil means use 7-bit code only on output. | |
449 LOCKING-SHIFT non-nil means use locking-shift. | |
450 SINGLE-SHIFT non-nil means use single-shift. | |
451 USE-ROMAN non-nil means designate JIS0201-1976-Roman instead of ASCII. | |
452 USE-OLDJIS non-nil means designate JIS0208-1976 instead of JIS0208-1983. | |
453 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
|
454 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
|
455 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
|
456 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
|
457 at beginning of line on output. |
19263
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
458 SAFE non-nil means convert unexpected characters to `?' on output. |
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
459 Unexpected characters are what not specified in CHARSETn directly. |
19395
cf115b0c7458
(make-coding-system): Add a new FLAGS
Richard M. Stallman <rms@gnu.org>
parents:
19263
diff
changeset
|
460 ACCEPT-LATIN-EXTRA-CODE non-nil means code-detection routine accepts |
cf115b0c7458
(make-coding-system): Add a new FLAGS
Richard M. Stallman <rms@gnu.org>
parents:
19263
diff
changeset
|
461 a code specified in `latin-extra-code-table' (which see) as a valid |
cf115b0c7458
(make-coding-system): Add a new FLAGS
Richard M. Stallman <rms@gnu.org>
parents:
19263
diff
changeset
|
462 code of the coding system. |
19263
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
463 |
17052 | 464 If TYPE is 4 (private), FLAGS should be a cons of CCL programs, |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
465 for decoding and encoding. See the documentation of CCL for more detail." |
17052 | 466 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
467 (if (memq coding-system coding-system-list) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
468 (error "Coding system %s already exists")) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
469 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
470 ;; Set a value of `coding-system' property. |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
471 (let ((coding-spec (make-vector 5 nil)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
472 (no-initial-designation nil) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
473 coding-category) |
19606
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
474 (if (or (not (integerp type)) (< type 0) (> type 5)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
475 (error "TYPE argument must be 0..5")) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
476 (if (or (not (integerp mnemonic)) (<= mnemonic ? ) (> mnemonic 127)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
477 (error "MNEMONIC arguemnt must be an ASCII printable character.")) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
478 (aset coding-spec coding-spec-type-idx type) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
479 (aset coding-spec coding-spec-mnemonic-idx mnemonic) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
480 (aset coding-spec coding-spec-doc-string-idx |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
481 (if (stringp doc-string) doc-string "")) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
482 (cond ((= type 0) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
483 (setq coding-category 'coding-category-emacs-mule)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
484 ((= type 1) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
485 (setq coding-category 'coding-category-sjis)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
486 ((= type 2) ; ISO2022 |
17052 | 487 (let ((i 0) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
488 (vec (make-vector 32 nil)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
489 (g1-designation nil)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
490 (setq no-initial-designation t) |
17052 | 491 (while (< i 4) |
492 (let ((charset (car flags))) | |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
493 (if (and no-initial-designation |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
494 (> i 0) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
495 (or (charsetp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
496 (and (consp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
497 (charsetp (car charset))))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
498 (setq no-initial-designation nil)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
499 (if (charsetp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
500 (if (= i 1) (setq g1-designation charset)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
501 (if (consp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
502 (let ((tail charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
503 elt) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
504 (while tail |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
505 (setq elt (car tail)) |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
506 (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
|
507 (error "Invalid charset: %s" elt)) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
508 (setq tail (cdr tail))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
509 (setq g1-designation (car charset))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
510 (if (and charset (not (eq charset t))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
511 (error "Invalid charset: %s" charset)))) |
17052 | 512 (aset vec i charset)) |
513 (setq flags (cdr flags) i (1+ i))) | |
514 (while (and (< i 32) flags) | |
515 (aset vec i (car flags)) | |
516 (setq flags (cdr flags) i (1+ i))) | |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
517 (aset coding-spec 4 vec) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
518 (setq coding-category |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
519 (if (aref vec 8) ; Use locking-shift. |
18798
d4c708a5f181
(make-coding-system): Distinguish coding-category-iso-7-else and
Kenichi Handa <handa@m17n.org>
parents:
18583
diff
changeset
|
520 (or (and (aref vec 7) 'coding-category-iso-7-else) |
d4c708a5f181
(make-coding-system): Distinguish coding-category-iso-7-else and
Kenichi Handa <handa@m17n.org>
parents:
18583
diff
changeset
|
521 'coding-category-iso-8-else) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
522 (if (aref vec 7) ; 7-bit only. |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
523 (if (aref vec 9) ; Use single-shift. |
18798
d4c708a5f181
(make-coding-system): Distinguish coding-category-iso-7-else and
Kenichi Handa <handa@m17n.org>
parents:
18583
diff
changeset
|
524 'coding-category-iso-7-else |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
525 'coding-category-iso-7) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
526 (if no-initial-designation |
18798
d4c708a5f181
(make-coding-system): Distinguish coding-category-iso-7-else and
Kenichi Handa <handa@m17n.org>
parents:
18583
diff
changeset
|
527 'coding-category-iso-8-else |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
528 (if (and (charsetp g1-designation) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
529 (= (charset-dimension g1-designation) 2)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
530 'coding-category-iso-8-2 |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
531 'coding-category-iso-8-1))))))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
532 ((= type 3) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
533 (setq coding-category 'coding-category-big5)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
534 ((= type 4) ; private |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
535 (setq coding-category 'coding-category-binary) |
17052 | 536 (if (and (consp flags) |
537 (vectorp (car flags)) | |
538 (vectorp (cdr flags))) | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
539 (aset coding-spec 4 flags) |
19606
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
540 (error "Invalid FLAGS argument for TYPE 4 (CCL)"))) |
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
541 (t ; i.e. (= type 5) |
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
542 (setq coding-category 'coding-category-raw-text))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
543 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
544 (let ((plist (list 'coding-category coding-category |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
545 'alias-coding-systems (list coding-system)))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
546 (if no-initial-designation |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
547 (setq plist (cons 'no-initial-designation |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
548 (cons no-initial-designation plist)))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
549 (aset coding-spec coding-spec-plist-idx plist)) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
550 (put coding-system 'coding-system coding-spec) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
551 (put coding-category 'coding-systems |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
552 (cons coding-system (get coding-category 'coding-systems)))) |
17052 | 553 |
554 ;; 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
|
555 ;; of subsidiary coding systems, each corresponds to a coding system |
17052 | 556 ;; 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
|
557 (put coding-system 'eol-type |
19606
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
558 (if (or (<= type 3) (= type 5)) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
559 (make-subsidiary-coding-system coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
560 0)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
561 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
562 ;; At last, register CODING-SYSTEM in `coding-system-list' and |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
563 ;; `coding-system-alist'. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
564 (setq coding-system-list (cons coding-system coding-system-list)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
565 (setq coding-system-alist (cons (list (symbol-name coding-system)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
566 coding-system-alist))) |
17052 | 567 |
18518
425c8fa4227b
(define-coding-system-alias): Swap the args.
Richard M. Stallman <rms@gnu.org>
parents:
18457
diff
changeset
|
568 (defun define-coding-system-alias (alias coding-system) |
19162 | 569 "Define ALIAS as an alias for coding system CODING-SYSTEM." |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
570 (put alias 'coding-system (coding-system-spec coding-system)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
571 (nconc (coding-system-get alias 'alias-coding-systems) (list alias)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
572 (setq coding-system-list (cons alias coding-system-list)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
573 (setq coding-system-alist (cons (list (symbol-name alias)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
574 coding-system-alist)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
575 (let ((eol-type (coding-system-eol-type coding-system))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
576 (if (vectorp eol-type) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
577 (put alias 'eol-type (make-subsidiary-coding-system alias)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
578 (put alias 'eol-type eol-type)))) |
17052 | 579 |
580 (defun set-buffer-file-coding-system (coding-system &optional force) | |
19162 | 581 "Set the file coding-system of the current buffer to CODING-SYSTEM. |
582 This means that when you save the buffer, it will be converted | |
583 according to CODING-SYSTEM. For a list of possible values of CODING-SYSTEM, | |
584 use \\[list-coding-systems]. | |
585 | |
586 If the buffer's previous file coding-system value specifies end-of-line | |
587 conversion, and CODING-SYSTEM does not specify one, CODING-SYSTEM is | |
588 merged with the already-specified end-of-line conversion. | |
589 However, if the optional prefix argument FORCE is non-nil, | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
590 then CODING-SYSTEM is used exactly as specified." |
19749
dec0b076a378
(set-buffer-file-coding-system): Improve prompt.
Richard M. Stallman <rms@gnu.org>
parents:
19665
diff
changeset
|
591 (interactive "zCoding system for visited file: \nP") |
17052 | 592 (check-coding-system coding-system) |
593 (if (null force) | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
594 (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
|
595 (y (coding-system-eol-type coding-system))) |
17052 | 596 (if (and (numberp x) (>= x 0) (<= x 2) (vectorp y)) |
597 (setq coding-system (aref y x))))) | |
598 (setq buffer-file-coding-system coding-system) | |
599 (set-buffer-modified-p t) | |
600 (force-mode-line-update)) | |
601 | |
19162 | 602 (defvar default-terminal-coding-system nil |
603 "Default value for the terminal coding system. | |
604 This is normally set according to the selected language environment. | |
605 See also the command `set-terminal-coding-system'.") | |
606 | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
607 (defun set-terminal-coding-system (coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
608 "Set coding system of your terminal to CODING-SYSTEM. |
19162 | 609 All text output to the terminal will be encoded |
610 with the specified coding system. | |
611 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. | |
612 The default is determined by the selected language environment | |
613 or by the previous use of this command." | |
614 (interactive | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
615 (list (let ((default (if (and (not (terminal-coding-system)) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
616 default-terminal-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
617 default-terminal-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
618 (read-coding-system |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
619 (format "Coding system for terminal display (default, %s): " |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
620 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
621 default)))) |
19162 | 622 (if (and (not coding-system) |
623 (not (terminal-coding-system))) | |
624 (setq coding-system default-terminal-coding-system)) | |
625 (if coding-system | |
626 (setq default-terminal-coding-system coding-system)) | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
627 (set-terminal-coding-system-internal coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
628 (redraw-frame (selected-frame))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
629 |
19162 | 630 (defvar default-keyboard-coding-system nil |
631 "Default value of the keyboard coding system. | |
632 This is normally set according to the selected language environment. | |
633 See also the command `set-keyboard-coding-system'.") | |
634 | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
635 (defun set-keyboard-coding-system (coding-system) |
19162 | 636 "Set coding system for keyboard input to CODING-SYSTEM. |
637 In addition, this command enables Encoded-kbd minor mode. | |
638 \(If CODING-SYSTEM is nil, Encoded-bkd mode is turned off.) | |
639 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. | |
640 The default is determined by the selected language environment | |
641 or by the previous use of this command." | |
642 (interactive | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
643 (list (let ((default (if (and (not (keyboard-coding-system)) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
644 default-keyboard-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
645 default-keyboard-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
646 (read-coding-system |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
647 (format "Coding system for keyboard input (default, %s): " |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
648 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
649 default)))) |
19162 | 650 (if (and (not coding-system) |
651 (not (keyboard-coding-system))) | |
652 (setq coding-system default-keyboard-coding-system)) | |
653 (if coding-system | |
654 (setq default-keyboard-coding-system coding-system)) | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
655 (set-keyboard-coding-system-internal coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
656 (encoded-kbd-mode (if coding-system 1 0))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
657 |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
658 (defun set-buffer-process-coding-system (decoding encoding) |
19162 | 659 "Set coding systems for the process associated with the current buffer. |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
660 DECODING is the coding system to be used to decode input from the process, |
19162 | 661 ENCODING is the coding system to be used to encode output to the process. |
662 | |
663 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]." | |
17052 | 664 (interactive |
665 "zCoding-system for process input: \nzCoding-system for process output: ") | |
666 (let ((proc (get-buffer-process (current-buffer)))) | |
667 (if (null proc) | |
668 (error "no process") | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
669 (check-coding-system decoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
670 (check-coding-system encoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
671 (set-process-coding-system proc decoding encoding))) |
17052 | 672 (force-mode-line-update)) |
673 | |
674 (defun set-coding-priority (arg) | |
675 "Set priority of coding-category according to LIST. | |
676 LIST is a list of coding-categories ordered by priority." | |
677 (let (l) | |
678 ;; Put coding-categories listed in ARG to L while checking the | |
679 ;; validity. We assume that `coding-category-list' contains whole | |
680 ;; coding-categories. | |
681 (while arg | |
682 (if (null (memq (car arg) coding-category-list)) | |
683 (error "Invalid element in argument: %s" (car arg))) | |
684 (setq l (cons (car arg) l)) | |
685 (setq arg (cdr arg))) | |
686 ;; Put coding-category not listed in ARG to L. | |
687 (while coding-category-list | |
688 (if (null (memq (car coding-category-list) l)) | |
689 (setq l (cons (car coding-category-list) l))) | |
690 (setq coding-category-list (cdr coding-category-list))) | |
691 ;; Update `coding-category-list' and return it. | |
692 (setq coding-category-list (nreverse l)))) | |
693 | |
694 ;;; FILE I/O | |
695 | |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
696 (defun set-auto-coding (string) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
697 "Return coding system for a file which has STRING at the head and tail. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
698 STRING is a concatination of the first 1K-byte and |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
699 the last 3K-byte of the file. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
700 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
701 It checks for a -*- coding: tag in the first one or two lines of STRING. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
702 If there's no coding: tag in the head, it checks local variables spec |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
703 in the tailing 3K-byte oof STRING. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
704 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
705 The return value is the specified coding system, |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
706 or nil if nothing specified. |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
707 |
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
708 The variable `auto-file-coding-system' (which see) is set to this |
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
709 function by default." |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
710 (condition-case nil |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
711 (let ((case-fold-search t) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
712 (len (length string)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
713 (limit (string-match "\n" string)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
714 (coding-system nil)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
715 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
716 ;; At first check the head. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
717 (if limit |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
718 (when (string-match "^#!" string) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
719 ;; If the file begins with "#!" (exec interpreter |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
720 ;; magic), look for coding frobs in the first two lines. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
721 ;; You cannot necessarily put them in the first line of |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
722 ;; such a file without screwing up the interpreter |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
723 ;; invocation. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
724 (setq limit (string-match "\n" string limit)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
725 (or limit |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
726 (setq limit len))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
727 (setq limit len)) |
19665
f523227a99ab
(set-auto-coding): Recognize coding: in first
Richard M. Stallman <rms@gnu.org>
parents:
19648
diff
changeset
|
728 (when (and (string-match "-\\*-\\(.*;\\)?[ \t]*coding:[ \t]*\\([^ ;]+\\)" string) |
f523227a99ab
(set-auto-coding): Recognize coding: in first
Richard M. Stallman <rms@gnu.org>
parents:
19648
diff
changeset
|
729 (< (match-beginning 2) limit)) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
730 (setq coding-system |
19665
f523227a99ab
(set-auto-coding): Recognize coding: in first
Richard M. Stallman <rms@gnu.org>
parents:
19648
diff
changeset
|
731 (intern (substring string (match-beginning 2) (match-end 2)))) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
732 (if (not (coding-system-p coding-system)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
733 (setq coding-system nil))) |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
734 |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
735 ;; If no coding system is specified in the head, check the tail. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
736 (when (and (not coding-system) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
737 (let ((idx (if (> len 3000) (- len 3000) 0)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
738 start) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
739 (while (setq start (string-match "\n\^L" string idx)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
740 (setq idx (+ start 2))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
741 (string-match |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
742 "^\\(.*\\)[ \t]*Local Variables:[ \t]*\\(.*\\)$" |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
743 string idx))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
744 ;; The prefix is what comes before "local variables:" in its line. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
745 ;; The suffix is what comes after "local variables:" in its line. |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
746 (let* ((idx (1+ (match-end 0))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
747 (prefix (regexp-quote |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
748 (substring string |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
749 (match-beginning 1) (match-end 1)))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
750 (suffix (regexp-quote |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
751 (substring string |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
752 (match-beginning 2) (match-end 2)))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
753 (re-coding (concat "^" prefix |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
754 "coding[ \t]*:[ \t]*\\([^ \t]+\\)[ \t]*" |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
755 suffix "$")) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
756 (re-end (concat "^" prefix "end *:[ \t]*" suffix "$")) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
757 (limit (or (string-match re-end string idx) len))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
758 (when (and (setq idx (string-match re-coding string idx)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
759 (< idx limit)) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
760 (setq coding-system |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
761 (intern (substring string |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
762 (match-beginning 1) (match-end 1)))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
763 (or (coding-system-p coding-system) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
764 (setq coding-system nil))))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
765 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
766 coding-system) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
767 (error nil))) |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
768 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
769 (setq set-auto-coding-function 'set-auto-coding) |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
770 |
17052 | 771 ;; Set buffer-file-coding-system of the current buffer after some text |
772 ;; is inserted. | |
773 (defun after-insert-file-set-buffer-file-coding-system (inserted) | |
774 (if last-coding-system-used | |
775 (let ((coding-system | |
776 (find-new-buffer-file-coding-system last-coding-system-used)) | |
777 (modified-p (buffer-modified-p))) | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
778 (when coding-system |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
779 (set-buffer-file-coding-system coding-system) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
780 (if (or (eq coding-system 'no-conversion) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
781 (eq (coding-system-type coding-system) 5)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
782 ;; It seems that random 8-bit codes are read. We had |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
783 ;; better edit this buffer without multibyte character |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
784 ;; facility. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
785 (setq enable-multibyte-characters nil)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
786 (set-buffer-modified-p modified-p)))) |
17052 | 787 nil) |
788 | |
789 (setq after-insert-file-functions | |
790 (cons 'after-insert-file-set-buffer-file-coding-system | |
791 after-insert-file-functions)) | |
792 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
793 ;; The coding-spec and eol-type of coding-system returned is decided |
17052 | 794 ;; independently in the following order. |
795 ;; 1. That of buffer-file-coding-system locally bound. | |
796 ;; 2. That of CODING. | |
797 | |
798 (defun find-new-buffer-file-coding-system (coding) | |
799 "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
|
800 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
|
801 is set to the returned value. |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
802 Return nil if there's no need of setting new buffer-file-coding-system." |
17052 | 803 (let (local-coding local-eol |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
804 found-coding found-eol |
17052 | 805 new-coding new-eol) |
806 (if (null coding) | |
807 ;; Nothing found about coding. | |
808 nil | |
809 | |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
810 ;; Get information of `buffer-file-coding-system' in LOCAL-EOL |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
811 ;; and LOCAL-CODING. |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
812 (setq local-eol (coding-system-eol-type buffer-file-coding-system)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
813 (if (null (numberp local-eol)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
814 ;; But eol-type is not yet set. |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
815 (setq local-eol nil)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
816 (if (and buffer-file-coding-system |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
817 (not (eq (coding-system-type buffer-file-coding-system) t))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
818 ;; This is not `undecided'. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
819 (setq local-coding (coding-system-base buffer-file-coding-system))) |
17052 | 820 |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
821 (if (and (local-variable-p 'buffer-file-coding-system) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
822 local-eol local-coding) |
17052 | 823 ;; The current buffer has already set full coding-system, we |
824 ;; had better not change it. | |
825 nil | |
826 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
827 (setq found-eol (coding-system-eol-type coding)) |
17052 | 828 (if (null (numberp found-eol)) |
829 ;; But eol-type is not found. | |
830 (setq found-eol nil)) | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
831 (if (not (eq (coding-system-type coding) t)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
832 ;; This is not `undecided'. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
833 (setq found-coding (coding-system-base coding))) |
17052 | 834 |
835 ;; The local setting takes precedence over the found one. | |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
836 (setq new-coding (or (and (local-variable-p 'buffer-file-coding-system) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
837 local-coding) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
838 found-coding |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
839 local-coding)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
840 (setq new-eol (or (and (local-variable-p 'buffer-file-coding-system) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
841 local-eol) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
842 found-eol |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
843 local-eol)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
844 (when (numberp new-eol) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
845 (or new-coding |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
846 (setq new-coding 'undecided)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
847 (if (vectorp (coding-system-eol-type new-coding)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
848 (setq new-coding |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
849 (aref (coding-system-eol-type new-coding) new-eol)))) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
850 ;; Return a new coding system only when it is different from |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
851 ;; the current one. |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
852 (if (not (eq buffer-file-coding-system new-coding)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
853 new-coding))))) |
17052 | 854 |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
855 (defun modify-coding-system-alist (target-type regexp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
856 "Modify one of look up tables for finding a coding system on I/O operation. |
18913
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
857 There are three of such tables, `file-coding-system-alist', |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
858 `process-coding-system-alist', and `network-coding-system-alist'. |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
859 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
860 TARGET-TYPE specifies which of them to modify. |
18913
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
861 If it is `file', it affects `file-coding-system-alist' (which see). |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
862 If it is `process', it affects `process-coding-system-alist' (which see). |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
863 If it is `network', it affects `network-codign-system-alist' (which see). |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
864 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
865 REGEXP is a regular expression matching a target of I/O operation. |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
866 The target is a file name if TARGET-TYPE is `file', a program name if |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
867 TARGET-TYPE is `process', or a network service name or a port number |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
868 to connect to if TARGET-TYPE is `network'. |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
869 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
870 CODING-SYSTEM is a coding system to perform code conversion on the I/O |
18913
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
871 operation, or a cons cell (DECODING . ENCODING) specifying the coding systems |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
872 for decoding and encoding respectively, |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
873 or a function symbol which, when called, returns such a cons cell." |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
874 (or (memq target-type '(file process network)) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
875 (error "Invalid target type: %s" target-type)) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
876 (or (stringp regexp) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
877 (and (eq target-type 'network) (integerp regexp)) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
878 (error "Invalid regular expression: %s" regexp)) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
879 (if (symbolp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
880 (if (not (fboundp coding-system)) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
881 (progn |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
882 (check-coding-system coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
883 (setq coding-system (cons coding-system coding-system)))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
884 (check-coding-system (car coding-system)) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
885 (check-coding-system (cdr coding-system))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
886 (cond ((eq target-type 'file) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
887 (let ((slot (assoc regexp file-coding-system-alist))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
888 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
889 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
890 (setq file-coding-system-alist |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
891 (cons (cons regexp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
892 file-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
893 ((eq target-type 'process) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
894 (let ((slot (assoc regexp process-coding-system-alist))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
895 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
896 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
897 (setq process-coding-system-alist |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
898 (cons (cons regexp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
899 process-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
900 (t |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
901 (let ((slot (assoc regexp network-coding-system-alist))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
902 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
903 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
904 (setq network-coding-system-alist |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
905 (cons (cons regexp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
906 network-coding-system-alist))))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
907 |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
908 (defun make-unification-table (&rest args) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
909 "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
|
910 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
|
911 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
|
912 |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
913 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
|
914 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
|
915 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
|
916 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
|
917 without changing their position code(s)." |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
918 (let ((table (make-char-table 'character-unification-table)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
919 revlist) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
920 (while args |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
921 (let ((elts (car args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
922 (while elts |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
923 (let* ((from (car (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
924 (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
|
925 (from-rev (nreverse (split-char from))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
926 (to (cdr (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
927 (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
|
928 (to-rev (nreverse (split-char to)))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
929 ;; 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
|
930 (while (eq (car from-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
931 (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
|
932 (while (eq (car to-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
933 (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
|
934 (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
|
935 (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
|
936 ;; 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
|
937 ;; 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
|
938 ;; 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
|
939 ;; character. |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
940 (let ((to-alt (aref table to))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
941 (if (and to-alt |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
942 (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
|
943 (setq to to-alt))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
944 (if (> from-i 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
945 (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
|
946 (aset table from to)) |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
947 ;; 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
|
948 ;; should also be unified to TO. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
949 (let ((l (assq from revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
950 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
951 (let ((ch (car l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
952 (setcar l to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
953 (setq l (cdr l)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
954 (while l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
955 (aset table ch to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
956 (setq l (cdr l)) )))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
957 ;; Now update REVLIST. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
958 (let ((l (assq to revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
959 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
960 (setcdr l (cons from (cdr l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
961 (setq revlist (cons (list to from) revlist))))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
962 (setq elts (cdr elts)))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
963 (setq args (cdr args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
964 ;; Return TABLE just created. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
965 table)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
966 |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
967 ;;; Initialize some variables. |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
968 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
969 (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
|
970 (setq use-default-ascent (make-char-table 'use-default-ascent)) |
19263
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
971 (put 'ignore-relative-composition 'char-table-extra-slots 0) |
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
972 (setq ignore-relative-composition |
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
973 (make-char-table 'ignore-relative-composition)) |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
974 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
975 ;;; |
17052 | 976 (provide 'mule) |
977 | |
978 ;;; mule.el ends here |