Mercurial > emacs
annotate lisp/international/mule.el @ 60385:17d5c7245a46
Define NO_HYPHENS_IN_FILENAMES.
author | Thien-Thi Nguyen <ttn@gnuvola.org> |
---|---|
date | Fri, 04 Mar 2005 21:56:46 +0000 |
parents | d9ca15a0952c |
children | 8e3e5150cf9e |
rev | line source |
---|---|
17052 | 1 ;;; mule.el --- basic commands for mulitilingual environment |
2 | |
3 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. | |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
4 ;; Licensed to the Free Software Foundation. |
45479 | 5 ;; Copyright (C) 2001, 2002 Free Software Foundation, Inc. |
17052 | 6 |
7 ;; Keywords: mule, multilingual, character set, coding system | |
8 | |
9 ;; This file is part of GNU Emacs. | |
10 | |
11 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
12 ;; it under the terms of the GNU General Public License as published by | |
13 ;; the Free Software Foundation; either version 2, or (at your option) | |
14 ;; any later version. | |
15 | |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
17071 | 22 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
24 ;; Boston, MA 02111-1307, USA. | |
17052 | 25 |
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37995
diff
changeset
|
26 ;;; Commentary: |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37995
diff
changeset
|
27 |
17052 | 28 ;;; Code: |
29 | |
29692
f79efb8debd9
(mule-version): Change version name to SAKAKI. AOI has already been
Kenichi Handa <handa@m17n.org>
parents:
29659
diff
changeset
|
30 (defconst mule-version "5.0 (SAKAKI)" "\ |
17052 | 31 Version number and name of this version of MULE (multilingual environment).") |
32 | |
26887
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
33 (defconst mule-version-date "1999.12.7" "\ |
17052 | 34 Distribution date of this version of MULE (multilingual environment).") |
35 | |
36 (defun load-with-code-conversion (fullname file &optional noerror nomessage) | |
20405
faf18d58a01b
(load-with-code-conversion): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
20168
diff
changeset
|
37 "Execute a file of Lisp code named FILE whose absolute name is FULLNAME. |
faf18d58a01b
(load-with-code-conversion): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
20168
diff
changeset
|
38 The file contents are decoded before evaluation if necessary. |
17052 | 39 If optional second arg NOERROR is non-nil, |
40 report no error if FILE doesn't exist. | |
41 Print messages at start and end of loading unless | |
42 optional third arg NOMESSAGE is non-nil. | |
43 Return t if file exists." | |
44 (if (null (file-readable-p fullname)) | |
45 (and (null noerror) | |
46 (signal 'file-error (list "Cannot open load file" file))) | |
47 ;; Read file with code conversion, and then eval. | |
48 (let* ((buffer | |
49 ;; To avoid any autoloading, set default-major-mode to | |
50 ;; fundamental-mode. | |
21675
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
51 ;; So that we don't get completely screwed if the |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
52 ;; file is encoded in some complicated character set, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
53 ;; read it with real decoding, as a multibyte buffer, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
54 ;; even if this is a --unibyte Emacs session. |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
55 (let ((default-major-mode 'fundamental-mode) |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
56 (default-enable-multibyte-characters t)) |
17052 | 57 ;; We can't use `generate-new-buffer' because files.el |
58 ;; is not yet loaded. | |
59 (get-buffer-create (generate-new-buffer-name " *load*")))) | |
20168
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
60 (load-in-progress t) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
61 (source (save-match-data (string-match "\\.el\\'" fullname)))) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
62 (unless nomessage |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
63 (if source |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
64 (message "Loading %s (source)..." file) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
65 (message "Loading %s..." file))) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
66 (when purify-flag |
49693
ae8bfbc6d9ef
(load-with-code-conversion): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49549
diff
changeset
|
67 (push file preloaded-file-list)) |
17052 | 68 (unwind-protect |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
69 (let ((load-file-name fullname) |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
70 (set-auto-coding-for-load t) |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
71 (inhibit-file-name-operation nil)) |
17052 | 72 (save-excursion |
73 (set-buffer buffer) | |
74 (insert-file-contents fullname) | |
23860
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
75 ;; If the loaded file was inserted with no-conversion or |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
76 ;; raw-text coding system, make the buffer unibyte. |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
77 ;; Otherwise, eval-buffer might try to interpret random |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
78 ;; binary junk as multibyte characters. |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
79 (if (and enable-multibyte-characters |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
80 (or (eq (coding-system-type last-coding-system-used) 5) |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
81 (eq last-coding-system-used 'no-conversion))) |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
82 (set-buffer-multibyte nil)) |
17052 | 83 ;; Make `kill-buffer' quiet. |
84 (set-buffer-modified-p nil)) | |
20405
faf18d58a01b
(load-with-code-conversion): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
20168
diff
changeset
|
85 ;; Have the original buffer current while we eval. |
21675
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
86 (eval-buffer buffer nil file |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
87 ;; If this Emacs is running with --unibyte, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
88 ;; convert multibyte strings to unibyte |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
89 ;; after reading them. |
21728
ea71ddaad673
(load-with-code-conversion): Don't pass extra arg to eval-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
21675
diff
changeset
|
90 ;; (not default-enable-multibyte-characters) |
25198
aaa595530183
(load-with-code-conversion): Pass t to eval-buffer for DO-ALLOW-PRINT.
Richard M. Stallman <rms@gnu.org>
parents:
25144
diff
changeset
|
91 nil t |
21728
ea71ddaad673
(load-with-code-conversion): Don't pass extra arg to eval-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
21675
diff
changeset
|
92 )) |
18583
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
93 (let (kill-buffer-hook kill-buffer-query-functions) |
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
94 (kill-buffer buffer))) |
17052 | 95 (let ((hook (assoc file after-load-alist))) |
20168
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
96 (when hook |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
97 (mapcar (function eval) (cdr hook)))) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
98 (unless (or nomessage noninteractive) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
99 (if source |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
100 (message "Loading %s (source)...done" file) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
101 (message "Loading %s...done" file))) |
17052 | 102 t))) |
103 | |
104 ;; API (Application Program Interface) for charsets. | |
105 | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
106 (defsubst charset-quoted-standard-p (obj) |
36037 | 107 "Return t if OBJ is a quoted symbol, and is the name of a standard charset." |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
108 (and (listp obj) (eq (car obj) 'quote) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
109 (symbolp (car-safe (cdr obj))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
110 (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
|
111 (and (vectorp vector) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
112 (< (aref vector 0) 160))))) |
17052 | 113 |
114 (defsubst charsetp (object) | |
26687
c4fb0ef75056
(charsetp): Fix typo in docstring.
Gerd Moellmann <gerd@gnu.org>
parents:
26085
diff
changeset
|
115 "T if OBJECT is a charset." |
17052 | 116 (and (symbolp object) (vectorp (get object 'charset)))) |
117 | |
118 (defsubst charset-info (charset) | |
119 "Return a vector of information of CHARSET. | |
120 The elements of the vector are: | |
121 CHARSET-ID, BYTES, DIMENSION, CHARS, WIDTH, DIRECTION, | |
122 LEADING-CODE-BASE, LEADING-CODE-EXT, | |
123 ISO-FINAL-CHAR, ISO-GRAPHIC-PLANE, | |
124 REVERSE-CHARSET, SHORT-NAME, LONG-NAME, DESCRIPTION, | |
125 PLIST, | |
126 where | |
127 CHARSET-ID (integer) is the identification number of the charset. | |
24780
856a475f3fc3
(charset-info): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
24776
diff
changeset
|
128 BYTES (integer) is the length of multi-byte form of a character in |
856a475f3fc3
(charset-info): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
24776
diff
changeset
|
129 the charset: one of 1, 2, 3, and 4. |
17052 | 130 DIMENSION (integer) is the number of bytes to represent a character of |
131 the charset: 1 or 2. | |
132 CHARS (integer) is the number of characters in a dimension: 94 or 96. | |
133 WIDTH (integer) is the number of columns a character in the charset | |
134 occupies on the screen: one of 0, 1, and 2. | |
135 DIRECTION (integer) is the rendering direction of characters in the | |
24776
b6836aec7a0c
(charset-info): Doc-string for DIRECTION fixed.
Kenichi Handa <handa@m17n.org>
parents:
24681
diff
changeset
|
136 charset when rendering. If 0, render from left to right, else |
b6836aec7a0c
(charset-info): Doc-string for DIRECTION fixed.
Kenichi Handa <handa@m17n.org>
parents:
24681
diff
changeset
|
137 render from right to left. |
17052 | 138 LEADING-CODE-BASE (integer) is the base leading-code for the |
139 charset. | |
140 LEADING-CODE-EXT (integer) is the extended leading-code for the | |
141 charset. All charsets of less than 0xA0 has the value 0. | |
142 ISO-FINAL-CHAR (character) is the final character of the | |
35750
fbb4712321dd
(charset-info): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35553
diff
changeset
|
143 corresponding ISO 2022 charset. If the charset is not assigned |
fbb4712321dd
(charset-info): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35553
diff
changeset
|
144 any final character, the value is -1. |
17052 | 145 ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked |
146 while encoding to variants of ISO 2022 coding system, one of the | |
147 following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR). | |
35750
fbb4712321dd
(charset-info): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35553
diff
changeset
|
148 If the charset is not assigned any final character, the value is -1. |
17052 | 149 REVERSE-CHARSET (integer) is the charset which differs only in |
150 LEFT-TO-RIGHT value from the charset. If there's no such a | |
151 charset, the value is -1. | |
152 SHORT-NAME (string) is the short name to refer to the charset. | |
153 LONG-NAME (string) is the long name to refer to the charset | |
154 DESCRIPTION (string) is the description string of the charset. | |
155 PLIST (property list) may contain any type of information a user | |
156 want to put and get by functions `put-charset-property' and | |
157 `get-charset-property' respectively." | |
158 (get charset 'charset)) | |
159 | |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
160 ;; It is better not to use backquote in this file, |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
161 ;; because that makes a bootstrapping problem |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
162 ;; if you need to recompile all the Lisp files using interpreted code. |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
163 |
17052 | 164 (defmacro charset-id (charset) |
165 "Return charset identification number of CHARSET." | |
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)) 0) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
168 (list 'aref (list 'charset-info charset) 0))) |
17052 | 169 |
170 (defmacro charset-bytes (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
171 "Return bytes 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)) 1) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
175 (list 'aref (list 'charset-info charset) 1))) |
17052 | 176 |
177 (defmacro charset-dimension (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
178 "Return dimension 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)) 2) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
182 (list 'aref (list 'charset-info charset) 2))) |
17052 | 183 |
184 (defmacro charset-chars (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
185 "Return character numbers contained in a dimension 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)) 3) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
189 (list 'aref (list 'charset-info charset) 3))) |
17052 | 190 |
191 (defmacro charset-width (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
192 "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
|
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)) 4) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
196 (list 'aref (list 'charset-info charset) 4))) |
17052 | 197 |
198 (defmacro charset-direction (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
199 "Return direction 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)) 5) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
203 (list 'aref (list 'charset-info charset) 5))) |
17052 | 204 |
205 (defmacro charset-iso-final-char (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
206 "Return final char 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)) 8) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
210 (list 'aref (list 'charset-info charset) 8))) |
17052 | 211 |
212 (defmacro charset-iso-graphic-plane (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
213 "Return graphic plane 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) |
17052 | 216 (aref (charset-info (nth 1 charset)) 9) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
217 (list 'aref (list 'charset-info charset) 9))) |
17052 | 218 |
219 (defmacro charset-reverse-charset (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
220 "Return reverse charset of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
221 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
|
222 (if (charset-quoted-standard-p charset) |
17052 | 223 (aref (charset-info (nth 1 charset)) 10) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
224 (list 'aref (list 'charset-info charset) 10))) |
17052 | 225 |
226 (defmacro charset-short-name (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
227 "Return short name of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
228 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
|
229 (if (charset-quoted-standard-p charset) |
17052 | 230 (aref (charset-info (nth 1 charset)) 11) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
231 (list 'aref (list 'charset-info charset) 11))) |
17052 | 232 |
233 (defmacro charset-long-name (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
234 "Return long name of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
235 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
|
236 (if (charset-quoted-standard-p charset) |
17052 | 237 (aref (charset-info (nth 1 charset)) 12) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
238 (list 'aref (list 'charset-info charset) 12))) |
17052 | 239 |
240 (defmacro charset-description (charset) | |
23157
896708140990
(charset-description): Doc fix.
Paul Eggert <eggert@twinsun.com>
parents:
23030
diff
changeset
|
241 "Return description of CHARSET. |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
242 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
|
243 (if (charset-quoted-standard-p charset) |
17052 | 244 (aref (charset-info (nth 1 charset)) 13) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
245 (list 'aref (list 'charset-info charset) 13))) |
17052 | 246 |
247 (defmacro charset-plist (charset) | |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
248 "Return list charset property of CHARSET. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
249 See the function `charset-info' for more detail." |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
250 (list 'aref |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
251 (if (charset-quoted-standard-p charset) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
252 (charset-info (nth 1 charset)) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
253 (list 'charset-info charset)) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
254 14)) |
17052 | 255 |
256 (defun set-charset-plist (charset plist) | |
23196 | 257 "Set CHARSET's property list to PLIST, and return PLIST." |
17052 | 258 (aset (charset-info charset) 14 plist)) |
259 | |
34117 | 260 (defun make-char (charset &optional code1 code2) |
261 "Return a character of CHARSET whose position codes are CODE1 and CODE2. | |
17175 | 262 CODE1 and CODE2 are optional, but if you don't supply |
24026
8313b191de2c
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23888
diff
changeset
|
263 sufficient position codes, return a generic character which stands for |
8313b191de2c
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23888
diff
changeset
|
264 all characters or group of characters in the character set. |
34117 | 265 A generic character can be used to index a char table (e.g. syntax-table). |
34759
31e8fba26248
(make-char): Docstring adjusted for the change of make-char-internal.
Kenichi Handa <handa@m17n.org>
parents:
34688
diff
changeset
|
266 |
31e8fba26248
(make-char): Docstring adjusted for the change of make-char-internal.
Kenichi Handa <handa@m17n.org>
parents:
34688
diff
changeset
|
267 Such character sets as ascii, eight-bit-control, and eight-bit-graphic |
31e8fba26248
(make-char): Docstring adjusted for the change of make-char-internal.
Kenichi Handa <handa@m17n.org>
parents:
34688
diff
changeset
|
268 don't have corresponding generic characters. If CHARSET is one of |
31e8fba26248
(make-char): Docstring adjusted for the change of make-char-internal.
Kenichi Handa <handa@m17n.org>
parents:
34688
diff
changeset
|
269 them and you don't supply CODE1, return the character of the smallest |
31e8fba26248
(make-char): Docstring adjusted for the change of make-char-internal.
Kenichi Handa <handa@m17n.org>
parents:
34688
diff
changeset
|
270 code in CHARSET. |
31e8fba26248
(make-char): Docstring adjusted for the change of make-char-internal.
Kenichi Handa <handa@m17n.org>
parents:
34688
diff
changeset
|
271 |
41677 | 272 If CODE1 or CODE2 are invalid (out of range), this function signals an |
273 error. However, the eighth bit of both CODE1 and CODE2 is zeroed | |
274 before they are used to index CHARSET. Thus you may use, say, the | |
275 actual ISO 8859 character code rather than subtracting 128, as you | |
276 would need to index the corresponding Emacs charset." | |
34123
3c1b837399d9
(make-char): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
34117
diff
changeset
|
277 (make-char-internal (charset-id charset) code1 code2)) |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
278 |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
279 (put 'make-char 'byte-compile |
36037 | 280 (function |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
281 (lambda (form) |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
282 (let ((charset (nth 1 form))) |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
283 (if (charset-quoted-standard-p charset) |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
284 (byte-compile-normal-call |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
285 (cons 'make-char-internal |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
286 (cons (charset-id (nth 1 charset)) (nthcdr 2 form)))) |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
287 (byte-compile-normal-call |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
288 (cons 'make-char-internal |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
289 (cons (list 'charset-id charset) (nthcdr 2 form))))))))) |
17052 | 290 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
291 (defun charset-list () |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
292 "Return list of charsets ever defined. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
293 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
294 This function is provided for backward compatibility. |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
295 Now we have the variable `charset-list'." |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
296 charset-list) |
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
297 |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
298 (defsubst generic-char-p (char) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
299 "Return t if and only if CHAR is a generic character. |
36037 | 300 See also the documentation of `make-char'." |
21470
b6c858daa80d
(generic-char-p): A character of code 0 is not a generic char.
Kenichi Handa <handa@m17n.org>
parents:
21023
diff
changeset
|
301 (and (>= char 0400) |
b6c858daa80d
(generic-char-p): A character of code 0 is not a generic char.
Kenichi Handa <handa@m17n.org>
parents:
21023
diff
changeset
|
302 (let ((l (split-char char))) |
b6c858daa80d
(generic-char-p): A character of code 0 is not a generic char.
Kenichi Handa <handa@m17n.org>
parents:
21023
diff
changeset
|
303 (and (or (= (nth 1 l) 0) (eq (nth 2 l) 0)) |
b6c858daa80d
(generic-char-p): A character of code 0 is not a generic char.
Kenichi Handa <handa@m17n.org>
parents:
21023
diff
changeset
|
304 (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
|
305 |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
306 (defun decode-char (ccs code-point &optional restriction) |
33245
9366a16a186b
(decode-char, encode-char): Fix doc-string.
Kenichi Handa <handa@m17n.org>
parents:
33045
diff
changeset
|
307 "Return character specified by coded character set CCS and CODE-POINT in it. |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
308 Return nil if such a character is not supported. |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
309 Currently the only supported coded character set is `ucs' (ISO/IEC |
46505
005d282a48ed
(decode-char): Use utf-8-translation-table-for-decode.
Dave Love <fx@gnu.org>
parents:
46504
diff
changeset
|
310 10646: Universal Multi-Octet Coded Character Set), and the result is |
47708
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
311 translated through the translation-table named |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
312 `utf-translation-table-for-decode' or the translation-hash-table named |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
313 `utf-subst-table-for-decode'. |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
314 |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
315 Optional argument RESTRICTION specifies a way to map the pair of CCS |
47260
b0b872e61fc5
(decode-char): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents:
47232
diff
changeset
|
316 and CODE-POINT to a character. Currently not supported and just ignored." |
46505
005d282a48ed
(decode-char): Use utf-8-translation-table-for-decode.
Dave Love <fx@gnu.org>
parents:
46504
diff
changeset
|
317 (cond |
005d282a48ed
(decode-char): Use utf-8-translation-table-for-decode.
Dave Love <fx@gnu.org>
parents:
46504
diff
changeset
|
318 ((eq ccs 'ucs) |
56039
7dc1250b3b2f
(decode-char): Load subst tables if necessary.
Kenichi Handa <handa@m17n.org>
parents:
55885
diff
changeset
|
319 (or (utf-lookup-subst-table-for-decode code-point) |
47708
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
320 (let ((c (cond |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
321 ((< code-point 160) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
322 code-point) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
323 ((< code-point 256) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
324 (make-char 'latin-iso8859-1 code-point)) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
325 ((< code-point #x2500) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
326 (setq code-point (- code-point #x0100)) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
327 (make-char 'mule-unicode-0100-24ff |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
328 (+ (/ code-point 96) 32) (+ (% code-point 96) 32))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
329 ((< code-point #x3400) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
330 (setq code-point (- code-point #x2500)) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
331 (make-char 'mule-unicode-2500-33ff |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
332 (+ (/ code-point 96) 32) (+ (% code-point 96) 32))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
333 ((and (>= code-point #xe000) (< code-point #x10000)) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
334 (setq code-point (- code-point #xe000)) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
335 (make-char 'mule-unicode-e000-ffff |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
336 (+ (/ code-point 96) 32) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
337 (+ (% code-point 96) 32)))))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
338 (when c |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
339 (or (aref (get 'utf-translation-table-for-decode |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
340 'translation-table) c) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
341 c))))))) |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
342 |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
343 (defun encode-char (char ccs &optional restriction) |
33245
9366a16a186b
(decode-char, encode-char): Fix doc-string.
Kenichi Handa <handa@m17n.org>
parents:
33045
diff
changeset
|
344 "Return code-point in coded character set CCS that corresponds to CHAR. |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
345 Return nil if CHAR is not included in CCS. |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
346 Currently the only supported coded character set is `ucs' (ISO/IEC |
46505
005d282a48ed
(decode-char): Use utf-8-translation-table-for-decode.
Dave Love <fx@gnu.org>
parents:
46504
diff
changeset
|
347 10646: Universal Multi-Octet Coded Character Set), and CHAR is first |
47708
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
348 translated through the translation-table named |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
349 `utf-translation-table-for-encode' or the translation-hash-table named |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
350 `utf-subst-table-for-encode'. |
33245
9366a16a186b
(decode-char, encode-char): Fix doc-string.
Kenichi Handa <handa@m17n.org>
parents:
33045
diff
changeset
|
351 |
9366a16a186b
(decode-char, encode-char): Fix doc-string.
Kenichi Handa <handa@m17n.org>
parents:
33045
diff
changeset
|
352 CHAR should be in one of these charsets: |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
353 ascii, latin-iso8859-1, mule-unicode-0100-24ff, mule-unicode-2500-33ff, |
35320
aa8df54873a9
(decode-char): Fix conditions.
Kenichi Handa <handa@m17n.org>
parents:
35154
diff
changeset
|
354 mule-unicode-e000-ffff, eight-bit-control |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
355 Otherwise, return nil. |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
356 |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
357 Optional argument RESTRICTION specifies a way to map CHAR to a |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
358 code-point in CCS. Currently not supported and just ignored." |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
359 (let* ((split (split-char char)) |
46505
005d282a48ed
(decode-char): Use utf-8-translation-table-for-decode.
Dave Love <fx@gnu.org>
parents:
46504
diff
changeset
|
360 (charset (car split)) |
005d282a48ed
(decode-char): Use utf-8-translation-table-for-decode.
Dave Love <fx@gnu.org>
parents:
46504
diff
changeset
|
361 trans) |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
362 (cond ((eq ccs 'ucs) |
56039
7dc1250b3b2f
(decode-char): Load subst tables if necessary.
Kenichi Handa <handa@m17n.org>
parents:
55885
diff
changeset
|
363 (or (utf-lookup-subst-table-for-encode char) |
47708
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
364 (let ((table (get 'utf-translation-table-for-encode |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
365 'translation-table))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
366 (setq trans (aref table char)) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
367 (if trans |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
368 (setq split (split-char trans) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
369 charset (car split))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
370 (cond ((eq charset 'ascii) |
52234
8430ee3561fa
(encode-char): Fix for the ASCII case.
Kenichi Handa <handa@m17n.org>
parents:
51978
diff
changeset
|
371 (or trans char)) |
47708
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
372 ((eq charset 'latin-iso8859-1) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
373 (+ (nth 1 split) 128)) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
374 ((eq charset 'mule-unicode-0100-24ff) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
375 (+ #x0100 (+ (* (- (nth 1 split) 32) 96) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
376 (- (nth 2 split) 32)))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
377 ((eq charset 'mule-unicode-2500-33ff) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
378 (+ #x2500 (+ (* (- (nth 1 split) 32) 96) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
379 (- (nth 2 split) 32)))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
380 ((eq charset 'mule-unicode-e000-ffff) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
381 (+ #xe000 (+ (* (- (nth 1 split) 32) 96) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
382 (- (nth 2 split) 32)))) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
383 ((eq charset 'eight-bit-control) |
b9d7faa08e87
(decode-char): Refer to the translation
Kenichi Handa <handa@m17n.org>
parents:
47417
diff
changeset
|
384 char)))))))) |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
385 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
386 |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
387 ;; Coding system stuff |
17052 | 388 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
389 ;; Coding system is a symbol that has the property `coding-system'. |
17052 | 390 ;; |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
391 ;; 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
|
392 ;; following format: |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
393 ;; [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
|
394 ;; We call this vector as coding-spec. See comments in src/coding.c |
36037 | 395 ;; for more detail. |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
396 |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
397 (defconst coding-spec-type-idx 0) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
398 (defconst coding-spec-mnemonic-idx 1) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
399 (defconst coding-spec-doc-string-idx 2) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
400 (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
|
401 (defconst coding-spec-flags-idx 4) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
402 |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
403 ;; PLIST is a property list of a coding system. To share PLIST among |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
404 ;; alias coding systems, a coding system has PLIST in coding-spec |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
405 ;; instead of having it in normal property list of Lisp symbol. |
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
406 ;; Here's a list of coding system properties currently being used. |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
407 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
408 ;; o coding-category |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
409 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
410 ;; The value is a coding category the coding system belongs to. The |
36037 | 411 ;; function `make-coding-system' sets this value automatically |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
412 ;; unless its argument PROPERTIES specifies this property. |
17052 | 413 ;; |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
414 ;; o alias-coding-systems |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
415 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
416 ;; 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
|
417 ;; first element is the coding system made at first, which we call as |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
418 ;; `base coding system'. The function `make-coding-system' sets this |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
419 ;; value automatically and `define-coding-system-alias' updates it. |
17052 | 420 ;; |
35808 | 421 ;; See the documentation of make-coding-system for the meanings of the |
422 ;; following properties. | |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
423 ;; |
35808 | 424 ;; o post-read-conversion |
425 ;; o pre-write-conversion | |
426 ;; o translation-table-for-decode | |
427 ;; o translation-table-for-encode | |
428 ;; o safe-chars | |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
429 ;; o safe-charsets |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
430 ;; o mime-charset |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
431 ;; o valid-codes (meaningful only for a coding system based on CCL) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
432 |
17052 | 433 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
434 (defsubst coding-system-spec (coding-system) |
36037 | 435 "Return coding-spec of CODING-SYSTEM." |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
436 (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
|
437 |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
438 (defun coding-system-type (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
439 "Return the coding type of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
440 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
|
441 of CODING-SYSTEM. See the function `make-coding-system' for more detail." |
46728
bd4c1ae5d8e7
Fix previous unexpected change.
Kenichi Handa <handa@m17n.org>
parents:
46727
diff
changeset
|
442 (aref (coding-system-spec coding-system) coding-spec-type-idx)) |
17052 | 443 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
444 (defun coding-system-mnemonic (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
445 "Return the mnemonic character of CODING-SYSTEM. |
22302
fb2d8c0920c6
(coding-system-mnemonic): Don't crash if arg is nil.
Karl Heuer <kwzh@gnu.org>
parents:
22227
diff
changeset
|
446 The mnemonic character of a coding system is used in mode line |
fb2d8c0920c6
(coding-system-mnemonic): Don't crash if arg is nil.
Karl Heuer <kwzh@gnu.org>
parents:
22227
diff
changeset
|
447 to indicate the coding system. If the arg is nil, return ?-." |
fb2d8c0920c6
(coding-system-mnemonic): Don't crash if arg is nil.
Karl Heuer <kwzh@gnu.org>
parents:
22227
diff
changeset
|
448 (let ((spec (coding-system-spec coding-system))) |
fb2d8c0920c6
(coding-system-mnemonic): Don't crash if arg is nil.
Karl Heuer <kwzh@gnu.org>
parents:
22227
diff
changeset
|
449 (if spec (aref spec coding-spec-mnemonic-idx) ?-))) |
17052 | 450 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
451 (defun coding-system-doc-string (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
452 "Return the documentation string for CODING-SYSTEM." |
46728
bd4c1ae5d8e7
Fix previous unexpected change.
Kenichi Handa <handa@m17n.org>
parents:
46727
diff
changeset
|
453 (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
|
454 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
455 (defun coding-system-plist (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
456 "Return the property list of CODING-SYSTEM." |
46728
bd4c1ae5d8e7
Fix previous unexpected change.
Kenichi Handa <handa@m17n.org>
parents:
46727
diff
changeset
|
457 (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
|
458 |
17052 | 459 (defun coding-system-flags (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
460 "Return `flags' of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
461 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
|
462 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
|
463 for more detail." |
46728
bd4c1ae5d8e7
Fix previous unexpected change.
Kenichi Handa <handa@m17n.org>
parents:
46727
diff
changeset
|
464 (aref (coding-system-spec coding-system) coding-spec-flags-idx)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
465 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
466 (defun coding-system-get (coding-system prop) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
467 "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
|
468 (plist-get (coding-system-plist coding-system) prop)) |
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 (defun coding-system-put (coding-system prop val) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
471 "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
|
472 (let ((plist (coding-system-plist coding-system))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
473 (if plist |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
474 (plist-put plist prop val) |
46728
bd4c1ae5d8e7
Fix previous unexpected change.
Kenichi Handa <handa@m17n.org>
parents:
46727
diff
changeset
|
475 (aset (coding-system-spec coding-system) coding-spec-plist-idx |
bd4c1ae5d8e7
Fix previous unexpected change.
Kenichi Handa <handa@m17n.org>
parents:
46727
diff
changeset
|
476 (list prop val))))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
477 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
478 (defun coding-system-category (coding-system) |
36466 | 479 "Return the coding category of CODING-SYSTEM. |
480 See also `coding-category-list'." | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
481 (coding-system-get coding-system 'coding-category)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
482 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
483 (defun coding-system-base (coding-system) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
484 "Return the base coding system of CODING-SYSTEM. |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
485 A base coding system is what made by `make-coding-system'. |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
486 Any alias nor subsidiary coding systems are not base coding system." |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
487 (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
|
488 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
489 (defalias 'coding-system-parent 'coding-system-base) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28457
diff
changeset
|
490 (make-obsolete 'coding-system-parent 'coding-system-base "20.3") |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
491 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
492 ;; Coding system also has a property `eol-type'. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
493 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
494 ;; 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
|
495 ;; 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
|
496 ;; 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
|
497 ;; 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
|
498 ;; 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
|
499 ;; 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
|
500 ;; system whose `eol-type' property is N. |
17052 | 501 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
502 (defun coding-system-eol-type (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
503 "Return eol-type of CODING-SYSTEM. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
504 An eol-type is integer 0, 1, 2, or a vector of coding systems. |
17052 | 505 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
506 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
|
507 CRLF, and CR respectively. |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
508 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
509 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
|
510 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
|
511 coding system whose eol-type is N." |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
512 (get coding-system 'eol-type)) |
18312
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
513 |
48155
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
514 (defun coding-system-eol-type-mnemonic (coding-system) |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
515 "Return the string indicating end-of-line format of CODING-SYSTEM." |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
516 (let* ((eol-type (coding-system-eol-type coding-system)) |
48164
e2f230bb8acc
(coding-system-eol-type-mnemonic): Use
Kenichi Handa <handa@m17n.org>
parents:
48155
diff
changeset
|
517 (val (cond ((eq eol-type 0) eol-mnemonic-unix) |
48155
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
518 ((eq eol-type 1) eol-mnemonic-dos) |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
519 ((eq eol-type 2) eol-mnemonic-mac) |
48164
e2f230bb8acc
(coding-system-eol-type-mnemonic): Use
Kenichi Handa <handa@m17n.org>
parents:
48155
diff
changeset
|
520 (t eol-mnemonic-undecided)))) |
48155
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
521 (if (stringp val) |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
522 val |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
523 (char-to-string val)))) |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
524 |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
525 (defun coding-system-lessp (x y) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
526 (cond ((eq x 'no-conversion) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
527 ((eq y 'no-conversion) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
528 ((eq x 'emacs-mule) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
529 ((eq y 'emacs-mule) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
530 ((eq x 'undecided) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
531 ((eq y 'undecided) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
532 (t (let ((c1 (coding-system-mnemonic x)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
533 (c2 (coding-system-mnemonic y))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
534 (or (< (downcase c1) (downcase c2)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
535 (and (not (> (downcase c1) (downcase c2))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
536 (< c1 c2))))))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
537 |
57444
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
538 (defun coding-system-equal (coding-system-1 coding-system-2) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
539 "Return t if and only if CODING-SYSTEM-1 and CODING-SYSTEM-2 are identical. |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
540 Two coding systems are identical if two symbols are equal |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
541 or one is an alias of the other." |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
542 (or (eq coding-system-1 coding-system-2) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
543 (and (equal (coding-system-spec coding-system-1) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
544 (coding-system-spec coding-system-2)) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
545 (let ((eol-type-1 (coding-system-eol-type coding-system-1)) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
546 (eol-type-2 (coding-system-eol-type coding-system-2))) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
547 (or (eq eol-type-1 eol-type-2) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
548 (and (vectorp eol-type-1) (vectorp eol-type-2))))))) |
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
549 |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
550 (defun add-to-coding-system-list (coding-system) |
36037 | 551 "Add CODING-SYSTEM to `coding-system-list' while keeping it sorted." |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
552 (if (or (null coding-system-list) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
553 (coding-system-lessp coding-system (car coding-system-list))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
554 (setq coding-system-list (cons coding-system coding-system-list)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
555 (let ((len (length coding-system-list)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
556 mid (tem coding-system-list)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
557 (while (> len 1) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
558 (setq mid (nthcdr (/ len 2) tem)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
559 (if (coding-system-lessp (car mid) coding-system) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
560 (setq tem mid |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
561 len (- len (/ len 2))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
562 (setq len (/ len 2)))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
563 (setcdr tem (cons coding-system (cdr tem)))))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
564 |
24345
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
565 (defun coding-system-list (&optional base-only) |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
566 "Return a list of all existing non-subsidiary coding systems. |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
567 If optional arg BASE-ONLY is non-nil, only base coding systems are listed. |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
568 The value doesn't include subsidiary coding systems which are what |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
569 made from bases and aliases automatically for various end-of-line |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
570 formats (e.g. iso-latin-1-unix, koi8-r-dos)." |
24345
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
571 (let* ((codings (copy-sequence coding-system-list)) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
572 (tail (cons nil codings))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
573 ;; Remove subsidiary coding systems (eol variants) and alias |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
574 ;; coding systems (if necessary). |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
575 (while (cdr tail) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
576 (let* ((coding (car (cdr tail))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
577 (aliases (coding-system-get coding 'alias-coding-systems))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
578 (if (or |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
579 ;; CODING is an eol variant if not in ALIASES. |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
580 (not (memq coding aliases)) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
581 ;; CODING is an alias if it is not car of ALIASES. |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
582 (and base-only (not (eq coding (car aliases))))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
583 (setcdr tail (cdr (cdr tail))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
584 (setq tail (cdr tail))))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
585 codings)) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
586 |
41677 | 587 (defun map-charset-chars (func charset) |
588 "Use FUNC to map over all characters in CHARSET for side effects. | |
589 FUNC is a function of two args, the start and end (inclusive) of a | |
590 character code range. Thus FUNC should iterate over [START, END]." | |
591 (let* ((dim (charset-dimension charset)) | |
592 (chars (charset-chars charset)) | |
593 (start (if (= chars 94) | |
594 33 | |
595 32))) | |
596 (if (= dim 1) | |
597 (funcall func | |
598 (make-char charset start) | |
599 (make-char charset (+ start chars -1))) | |
600 (dotimes (i chars) | |
601 (funcall func | |
602 (make-char charset (+ i start) start) | |
603 (make-char charset (+ i start) (+ start chars -1))))))) | |
604 | |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
605 (defalias 'register-char-codings 'ignore "") |
50181
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
606 (make-obsolete 'register-char-codings |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
607 "it exists just for backward compatibility, and does nothing." |
50181
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
608 "21.3") |
48891
49c591ef85fb
(optimize-char-coding-system-table): New.
Dave Love <fx@gnu.org>
parents:
48880
diff
changeset
|
609 |
50181
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
610 (defconst char-coding-system-table nil |
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
611 "This is an obsolete variable. |
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
612 It exists just for backward compatibility, and the value is always nil.") |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
613 |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
614 (defun make-subsidiary-coding-system (coding-system) |
36037 | 615 "Make subsidiary coding systems (eol-type variants) of CODING-SYSTEM." |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
616 (let ((coding-spec (coding-system-spec coding-system)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
617 (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
|
618 (intern (format "%s-dos" coding-system)) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
619 (intern (format "%s-mac" coding-system)))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
620 (i 0) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
621 temp) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
622 (while (< i 3) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
623 (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
|
624 (put (aref subsidiaries i) 'eol-type i) |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
625 (add-to-coding-system-list (aref subsidiaries i)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
626 (setq coding-system-alist |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
627 (cons (list (symbol-name (aref subsidiaries i))) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
628 coding-system-alist)) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
629 (setq i (1+ i))) |
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
630 subsidiaries)) |
17052 | 631 |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
632 (defun transform-make-coding-system-args (name type &optional doc-string props) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
633 "For internal use only. |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
634 Transform XEmacs style args for `make-coding-system' to Emacs style. |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
635 Value is a list of transformed arguments." |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
636 (let ((mnemonic (string-to-char (or (plist-get props 'mnemonic) "?"))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
637 (eol-type (plist-get props 'eol-type)) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
638 properties tmp) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
639 (cond |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
640 ((eq eol-type 'lf) (setq eol-type 'unix)) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
641 ((eq eol-type 'crlf) (setq eol-type 'dos)) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
642 ((eq eol-type 'cr) (setq eol-type 'mac))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
643 (if (setq tmp (plist-get props 'post-read-conversion)) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
644 (setq properties (plist-put properties 'post-read-conversion tmp))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
645 (if (setq tmp (plist-get props 'pre-write-conversion)) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
646 (setq properties (plist-put properties 'pre-write-conversion tmp))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
647 (cond |
35946
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
648 ((eq type 'shift-jis) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
649 `(,name 1 ,mnemonic ,doc-string () ,properties ,eol-type)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
650 ((eq type 'iso2022) ; This is not perfect. |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
651 (if (plist-get props 'escape-quoted) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
652 (error "escape-quoted is not supported: %S" |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
653 `(,name ,type ,doc-string ,props))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
654 (let ((g0 (plist-get props 'charset-g0)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
655 (g1 (plist-get props 'charset-g1)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
656 (g2 (plist-get props 'charset-g2)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
657 (g3 (plist-get props 'charset-g3)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
658 (use-roman |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
659 (and |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
660 (eq (cadr (assoc 'latin-jisx0201 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
661 (plist-get props 'input-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
662 'ascii) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
663 (eq (cadr (assoc 'ascii |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
664 (plist-get props 'output-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
665 'latin-jisx0201))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
666 (use-oldjis |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
667 (and |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
668 (eq (cadr (assoc 'japanese-jisx0208-1978 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
669 (plist-get props 'input-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
670 'japanese-jisx0208) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
671 (eq (cadr (assoc 'japanese-jisx0208 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
672 (plist-get props 'output-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
673 'japanese-jisx0208-1978)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
674 (if (charsetp g0) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
675 (if (plist-get props 'force-g0-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
676 (setq g0 `(nil ,g0)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
677 (setq g0 `(,g0 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
678 (if (charsetp g1) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
679 (if (plist-get props 'force-g1-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
680 (setq g1 `(nil ,g1)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
681 (setq g1 `(,g1 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
682 (if (charsetp g2) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
683 (if (plist-get props 'force-g2-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
684 (setq g2 `(nil ,g2)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
685 (setq g2 `(,g2 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
686 (if (charsetp g3) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
687 (if (plist-get props 'force-g3-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
688 (setq g3 `(nil ,g3)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
689 (setq g3 `(,g3 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
690 `(,name 2 ,mnemonic ,doc-string |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
691 (,g0 ,g1 ,g2 ,g3 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
692 ,(plist-get props 'short) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
693 ,(not (plist-get props 'no-ascii-eol)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
694 ,(not (plist-get props 'no-ascii-cntl)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
695 ,(plist-get props 'seven) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
696 t |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
697 ,(not (plist-get props 'lock-shift)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
698 ,use-roman |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
699 ,use-oldjis |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
700 ,(plist-get props 'no-iso6429) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
701 nil nil nil nil) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
702 ,properties ,eol-type))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
703 ((eq type 'big5) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
704 `(,name 3 ,mnemonic ,doc-string () ,properties ,eol-type)) |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
705 ((eq type 'ccl) |
35946
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
706 `(,name 4 ,mnemonic ,doc-string |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
707 (,(plist-get props 'decode) . ,(plist-get props 'encode)) |
35946
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
708 ,properties ,eol-type)) |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
709 (t |
35946
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
710 (error "unsupported XEmacs style make-coding-style arguments: %S" |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
711 `(,name ,type ,doc-string ,props)))))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
712 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
713 (defun make-coding-system (coding-system type mnemonic doc-string |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
714 &optional |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
715 flags |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
716 properties |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
717 eol-type) |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
718 "Define a new coding system CODING-SYSTEM (symbol). |
36037 | 719 Remaining arguments are TYPE, MNEMONIC, DOC-STRING, FLAGS (optional), |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
720 and PROPERTIES (optional) which construct a coding-spec of CODING-SYSTEM |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
721 in the following format: |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
722 [TYPE MNEMONIC DOC-STRING PLIST FLAGS] |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
723 |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
724 TYPE is an integer value indicating the type of the coding system as follows: |
17052 | 725 0: Emacs internal format, |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
726 1: Shift-JIS (or MS-Kanji) used mainly on Japanese PCs, |
17052 | 727 2: ISO-2022 including many variants, |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
728 3: Big5 used mainly on Chinese PCs, |
19606
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
729 4: private, CCL programs provide encoding/decoding algorithm, |
36037 | 730 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
|
731 |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
732 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
|
733 |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
734 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
|
735 |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
736 FLAGS specifies more detailed information of the coding system as follows: |
19263
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
737 |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
738 If TYPE is 2 (ISO-2022), FLAGS is a list of these elements: |
17052 | 739 CHARSET0, CHARSET1, CHARSET2, CHARSET3, SHORT-FORM, |
740 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
|
741 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
|
742 SAFE, ACCEPT-LATIN-EXTRA-CODE. |
17052 | 743 CHARSETn are character sets initially designated to Gn graphic registers. |
744 If CHARSETn is nil, Gn is never used. | |
745 If CHARSETn is t, Gn can be used but nothing designated initially. | |
746 If CHARSETn is a list of character sets, those character sets are | |
747 designated to Gn on output, but nothing designated to Gn initially. | |
23281
e07d05f47832
(make-coding-system): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23196
diff
changeset
|
748 But, character set `ascii' can be designated only to G0. |
17052 | 749 SHORT-FORM non-nil means use short designation sequence on output. |
750 ASCII-EOL non-nil means designate ASCII to g0 at end of line on output. | |
751 ASCII-CNTL non-nil means designate ASCII to g0 before control codes and | |
752 SPACE on output. | |
753 SEVEN non-nil means use 7-bit code only on output. | |
754 LOCKING-SHIFT non-nil means use locking-shift. | |
755 SINGLE-SHIFT non-nil means use single-shift. | |
756 USE-ROMAN non-nil means designate JIS0201-1976-Roman instead of ASCII. | |
757 USE-OLDJIS non-nil means designate JIS0208-1976 instead of JIS0208-1983. | |
758 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
|
759 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
|
760 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
|
761 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
|
762 at beginning of line on output. |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
763 SAFE non-nil means convert unsafe characters to `?' on output. |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
764 Characters not specified in the property `safe-charsets' nor |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
765 `safe-chars' are unsafe. |
19395
cf115b0c7458
(make-coding-system): Add a new FLAGS
Richard M. Stallman <rms@gnu.org>
parents:
19263
diff
changeset
|
766 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
|
767 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
|
768 code of the coding system. |
19263
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
769 |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
770 If TYPE is 4 (private), FLAGS should be a cons of CCL programs, for |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
771 decoding and encoding. CCL programs should be specified by their |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
772 symbols. |
17052 | 773 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
774 PROPERTIES is an alist of properties vs the corresponding values. The |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
775 following properties are recognized: |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
776 |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
777 o post-read-conversion |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
778 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
779 The value is a function to call after some text is inserted and |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
780 decoded by the coding system itself and before any functions in |
36037 | 781 `after-insert-functions' are called. The argument of this |
782 function is the same as for a function in | |
783 `after-insert-file-functions', i.e. LENGTH of the text inserted, | |
784 with point at the head of the text to be decoded. | |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
785 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
786 o pre-write-conversion |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
787 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
788 The value is a function to call after all functions in |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
789 `write-region-annotate-functions' and `buffer-file-format' are |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
790 called, and before the text is encoded by the coding system itself. |
36262 | 791 The arguments to this function are the same as those of a function |
792 in `write-region-annotate-functions', i.e. FROM and TO, specifying | |
36037 | 793 a region of text. |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
794 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
795 o translation-table-for-decode |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
796 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
797 The value is a translation table to be applied on decoding. See |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
798 the function `make-translation-table' for the format of translation |
36037 | 799 table. This is not applicable to type 4 (CCL-based) coding systems. |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
800 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
801 o translation-table-for-encode |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
802 |
36037 | 803 The value is a translation table to be applied on encoding. This is |
804 not applicable to type 4 (CCL-based) coding systems. | |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
805 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
806 o safe-chars |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
807 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
808 The value is a char table. If a character has non-nil value in it, |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
809 the character is safely supported by the coding system. This |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
810 overrides the specification of safe-charsets. |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
811 |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
812 o safe-charsets |
36037 | 813 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
814 The value is a list of charsets safely supported by the coding |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
815 system. The value t means that all charsets Emacs handles are |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
816 supported. Even if some charset is not in this list, it doesn't |
36037 | 817 mean that the charset can't be encoded in the coding system; |
818 it just means that some other receiver of text encoded | |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
819 in the coding system won't be able to handle that charset. |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
820 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
821 o mime-charset |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
822 |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
823 The value is a symbol whose name is the `MIME-charset' parameter of |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
824 the coding system. |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
825 |
52289 | 826 o mime-text-unsuitable |
827 | |
828 A non-nil value means the `mime-charset' property names a charset | |
829 which is unsuitable for the top-level media type \"text\". | |
830 | |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
831 o valid-codes (meaningful only for a coding system based on CCL) |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
832 |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
833 The value is a list to indicate valid byte ranges of the encoded |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
834 file. Each element of the list is an integer or a cons of integer. |
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
835 In the former case, the integer value is a valid byte code. In the |
41677 | 836 latter case, the integers specify the range of valid byte codes. |
35807
8e8e96ebe639
(make-coding-system): Add description
Kenichi Handa <handa@m17n.org>
parents:
35750
diff
changeset
|
837 |
47223
2af8e323b449
(decode-char): Translate a character by
Kenichi Handa <handa@m17n.org>
parents:
46944
diff
changeset
|
838 o composition (meaningful only when TYPE is 0 or 2) |
2af8e323b449
(decode-char): Translate a character by
Kenichi Handa <handa@m17n.org>
parents:
46944
diff
changeset
|
839 |
48183
06be0e8df068
(set-buffer-file-coding-system): Call
Dave Love <fx@gnu.org>
parents:
48164
diff
changeset
|
840 If the value is non-nil, the coding system preserves composition |
06be0e8df068
(set-buffer-file-coding-system): Call
Dave Love <fx@gnu.org>
parents:
48164
diff
changeset
|
841 information. |
47223
2af8e323b449
(decode-char): Translate a character by
Kenichi Handa <handa@m17n.org>
parents:
46944
diff
changeset
|
842 |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
843 These properties are set in PLIST, a property list. This function |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
844 also sets properties `coding-category' and `alias-coding-systems' |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
845 automatically. |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
846 |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
847 EOL-TYPE specifies the EOL type of the coding-system in one of the |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
848 following formats: |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
849 |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
850 o symbol (unix, dos, or mac) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
851 |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
852 The symbol `unix' means Unix-like EOL (LF), `dos' means |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
853 DOS-like EOL (CRLF), and `mac' means MAC-like EOL (CR). |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
854 |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
855 o number (0, 1, or 2) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
856 |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
857 The number 0, 1, and 2 mean UNIX, DOS, and MAC-like EOL |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
858 respectively. |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
859 |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
860 o vector of coding-systems of length 3 |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
861 |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
862 The EOL type is detected automatically for the coding system. |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
863 And, according to the detected EOL type, one of the coding |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
864 systems in the vector is selected. Elements of the vector |
30877 | 865 corresponds to Unix-like EOL, DOS-like EOL, and Mac-like EOL |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
866 in this order. |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
867 |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
868 Kludgy features for backward compatibility: |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
869 |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
870 1. If TYPE is 4 and car or cdr of FLAGS is a vector, the vector is |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
871 treated as a compiled CCL code. |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
872 |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
873 2. If PROPERTIES is just a list of character sets, the list is set as |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
874 a value of `safe-charsets' in PLIST." |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
875 |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
876 ;; For compatiblity with XEmacs, we check the type of TYPE. If it |
35553 | 877 ;; is a symbol, perhaps, this function is called with XEmacs-style |
878 ;; arguments. Here, try to transform that kind of arguments to | |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
879 ;; Emacs style. |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
880 (if (symbolp type) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
881 (let ((args (transform-make-coding-system-args coding-system type |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
882 mnemonic doc-string))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
883 (setq coding-system (car args) |
35491 | 884 type (nth 1 args) |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
885 mnemonic (nth 2 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
886 doc-string (nth 3 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
887 flags (nth 4 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
888 properties (nth 5 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
889 eol-type (nth 6 args)))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
890 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
891 ;; Set a value of `coding-system' property. |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
892 (let ((coding-spec (make-vector 5 nil)) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
893 (no-initial-designation t) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
894 (no-alternative-designation t) |
35154
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
895 (accept-latin-extra-code nil) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
896 coding-category) |
19606
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
897 (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
|
898 (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
|
899 (if (or (not (integerp mnemonic)) (<= mnemonic ? ) (> mnemonic 127)) |
36037 | 900 (error "MNEMONIC argument must be an ASCII printable character")) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
901 (aset coding-spec coding-spec-type-idx type) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
902 (aset coding-spec coding-spec-mnemonic-idx mnemonic) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
903 (aset coding-spec coding-spec-doc-string-idx |
28457
bbe7b99b5b28
(make-coding-system): Purecopy doc-string.
Dave Love <fx@gnu.org>
parents:
28018
diff
changeset
|
904 (purecopy (if (stringp doc-string) doc-string ""))) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
905 (cond ((= type 0) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
906 (setq coding-category 'coding-category-emacs-mule)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
907 ((= type 1) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
908 (setq coding-category 'coding-category-sjis)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
909 ((= type 2) ; ISO2022 |
17052 | 910 (let ((i 0) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
911 (vec (make-vector 32 nil)) |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
912 (g1-designation nil) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
913 (fl flags)) |
17052 | 914 (while (< i 4) |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
915 (let ((charset (car fl))) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
916 (if (and no-initial-designation |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
917 (> i 0) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
918 (or (charsetp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
919 (and (consp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
920 (charsetp (car charset))))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
921 (setq no-initial-designation nil)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
922 (if (charsetp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
923 (if (= i 1) (setq g1-designation charset)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
924 (if (consp charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
925 (let ((tail charset) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
926 elt) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
927 (while tail |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
928 (setq elt (car tail)) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
929 (if (eq elt t) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
930 (setq no-alternative-designation nil) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
931 (if (and elt (not (charsetp elt))) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
932 (error "Invalid charset: %s" elt))) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
933 (setq tail (cdr tail))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
934 (setq g1-designation (car charset))) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
935 (if charset |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
936 (if (eq charset t) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
937 (setq no-alternative-designation nil) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
938 (error "Invalid charset: %s" charset))))) |
17052 | 939 (aset vec i charset)) |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
940 (setq fl (cdr fl) i (1+ i))) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
941 (while (and (< i 32) fl) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
942 (aset vec i (car fl)) |
35154
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
943 (if (and (= i 16) ; ACCEPT-LATIN-EXTRA-CODE |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
944 (car fl)) |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
945 (setq accept-latin-extra-code t)) |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
946 (setq fl (cdr fl) i (1+ i))) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
947 (aset coding-spec 4 vec) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
948 (setq coding-category |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
949 (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
|
950 (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
|
951 'coding-category-iso-8-else) |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
952 (if (aref vec 7) ; 7-bit only. |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
953 (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
|
954 'coding-category-iso-7-else |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
955 (if no-alternative-designation |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
956 'coding-category-iso-7-tight |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
957 'coding-category-iso-7)) |
22160
c1998807c140
(make-coding-system): If ISO2022 based
Kenichi Handa <handa@m17n.org>
parents:
22125
diff
changeset
|
958 (if (or no-initial-designation |
c1998807c140
(make-coding-system): If ISO2022 based
Kenichi Handa <handa@m17n.org>
parents:
22125
diff
changeset
|
959 (not no-alternative-designation)) |
18798
d4c708a5f181
(make-coding-system): Distinguish coding-category-iso-7-else and
Kenichi Handa <handa@m17n.org>
parents:
18583
diff
changeset
|
960 'coding-category-iso-8-else |
18298
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
961 (if (and (charsetp g1-designation) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
962 (= (charset-dimension g1-designation) 2)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
963 'coding-category-iso-8-2 |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
964 'coding-category-iso-8-1))))))) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
965 ((= type 3) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
966 (setq coding-category 'coding-category-big5)) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
967 ((= type 4) ; private |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
968 (setq coding-category 'coding-category-ccl) |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
969 (if (not (consp flags)) |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
970 (error "Invalid FLAGS argument for TYPE 4 (CCL)") |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
971 (let ((decoder (check-ccl-program |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
972 (car flags) |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
973 (intern (format "%s-decoder" coding-system)))) |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
974 (encoder (check-ccl-program |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
975 (cdr flags) |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
976 (intern (format "%s-encoder" coding-system))))) |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
977 (if (and decoder encoder) |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
978 (aset coding-spec 4 (cons decoder encoder)) |
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
979 (error "Invalid FLAGS argument for TYPE 4 (CCL)"))))) |
19606
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
980 (t ; i.e. (= type 5) |
0fbb8f15450e
(make-coding-system): Make TYPE 5 means
Kenichi Handa <handa@m17n.org>
parents:
19454
diff
changeset
|
981 (setq coding-category 'coding-category-raw-text))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
982 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
983 (let ((plist (list 'coding-category coding-category |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
984 'alias-coding-systems (list coding-system)))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
985 (if no-initial-designation |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
986 (plist-put plist 'no-initial-designation t)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
987 (if (and properties |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
988 (or (eq properties t) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
989 (not (consp (car properties))))) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
990 ;; In the old version, the arg PROPERTIES is a list to be |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
991 ;; set in PLIST as a value of property `safe-charsets'. |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
992 (setq properties (list (cons 'safe-charsets properties)))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
993 ;; In the current version PROPERTIES is a property list. |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
994 ;; Reflect it into PLIST one by one while handling safe-chars |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
995 ;; specially. |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
996 (let ((safe-charsets (cdr (assq 'safe-charsets properties))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
997 (safe-chars (cdr (assq 'safe-chars properties))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
998 (l properties) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
999 prop val) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1000 ;; If only safe-charsets is specified, make a char-table from |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1001 ;; it, and store that char-table as the value of `safe-chars'. |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1002 (if (and (not safe-chars) safe-charsets) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1003 (let (charset) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1004 (if (eq safe-charsets t) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1005 (setq safe-chars t) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1006 (setq safe-chars (make-char-table 'safe-chars)) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1007 (while safe-charsets |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1008 (setq charset (car safe-charsets) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1009 safe-charsets (cdr safe-charsets)) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1010 (cond ((eq charset 'ascii)) ; just ignore |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1011 ((eq charset 'eight-bit-control) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1012 (let ((i 128)) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1013 (while (< i 160) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1014 (aset safe-chars i t) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1015 (setq i (1+ i))))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1016 ((eq charset 'eight-bit-graphic) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1017 (let ((i 160)) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1018 (while (< i 256) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1019 (aset safe-chars i t) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1020 (setq i (1+ i))))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1021 (t |
35154
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
1022 (aset safe-chars (make-char charset) t)))) |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
1023 (if accept-latin-extra-code |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
1024 (let ((i 128)) |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
1025 (while (< i 160) |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
1026 (if (aref latin-extra-code-table i) |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
1027 (aset safe-chars i t)) |
e459e9bee789
(make-coding-system): If the coding system
Kenichi Handa <handa@m17n.org>
parents:
34759
diff
changeset
|
1028 (setq i (1+ i)))))) |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1029 (setq l (cons (cons 'safe-chars safe-chars) l)))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1030 (while l |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1031 (setq prop (car (car l)) val (cdr (car l)) l (cdr l)) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1032 (if (eq prop 'safe-chars) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1033 (progn |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
1034 (if (and (symbolp val) |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
1035 (get val 'translation-table)) |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
1036 (setq safe-chars (get val 'translation-table))) |
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
1037 (setq val safe-chars))) |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1038 (plist-put plist prop val))) |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1039 ;; The property `coding-category' may have been set differently |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1040 ;; through PROPERTIES. |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1041 (setq coding-category (plist-get plist 'coding-category)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1042 (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
|
1043 (put coding-system 'coding-system coding-spec) |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
1044 (put coding-category 'coding-systems |
3d036a21fc93
(coding-system-type): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
18195
diff
changeset
|
1045 (cons coding-system (get coding-category 'coding-systems)))) |
17052 | 1046 |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1047 ;; Next, set a value of `eol-type' property. |
29722
4a60ce7cede2
(make-coding-system): Generate subsidiary coding systems for EOL
Kenichi Handa <handa@m17n.org>
parents:
29692
diff
changeset
|
1048 (if (not eol-type) |
28018
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1049 ;; If EOL-TYPE is nil, set a vector of subsidiary coding |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1050 ;; systems, each corresponds to a coding system for the detected |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1051 ;; EOL format. |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1052 (setq eol-type (make-subsidiary-coding-system coding-system))) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1053 (setq eol-type |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1054 (cond ((or (eq eol-type 'unix) (null eol-type)) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1055 0) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1056 ((eq eol-type 'dos) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1057 1) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1058 ((eq eol-type 'mac) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1059 2) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1060 ((or (and (vectorp eol-type) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1061 (= (length eol-type) 3)) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1062 (and (numberp eol-type) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1063 (and (>= eol-type 0) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1064 (<= eol-type 2)))) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1065 eol-type) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1066 (t |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1067 (error "Invalid EOL-TYPE spec:%S" eol-type)))) |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1068 (put coding-system 'eol-type eol-type) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1069 |
50181
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
1070 (define-coding-system-internal coding-system) |
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
1071 |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1072 ;; 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
|
1073 ;; `coding-system-alist'. |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
1074 (add-to-coding-system-list coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1075 (setq coding-system-alist (cons (list (symbol-name coding-system)) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1076 coding-system-alist)) |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1077 |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1078 ;; For a coding system of cateogory iso-8-1 and iso-8-2, create |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1079 ;; XXX-with-esc variants. |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1080 (let ((coding-category (coding-system-category coding-system))) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1081 (if (or (eq coding-category 'coding-category-iso-8-1) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1082 (eq coding-category 'coding-category-iso-8-2)) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1083 (let ((esc (intern (concat (symbol-name coding-system) "-with-esc"))) |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1084 (doc (format "Same as %s but can handle any charsets by ISO's escape sequences." coding-system)) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1085 (safe-charsets (assq 'safe-charsets properties)) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1086 (mime-charset (assq 'mime-charset properties))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1087 (if safe-charsets |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1088 (setcdr safe-charsets t) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1089 (setq properties (cons (cons 'safe-charsets t) properties))) |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1090 (if mime-charset |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1091 (setcdr mime-charset nil)) |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1092 (make-coding-system esc type mnemonic doc |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1093 (if (listp (car flags)) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1094 (cons (append (car flags) '(t)) (cdr flags)) |
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1095 (cons (list (car flags) t) (cdr flags))) |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
1096 properties)))) |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1097 |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1098 coding-system) |
17052 | 1099 |
46742
8f29b98466a8
(safe-chars): Put `char-table-extra-slots' property with value 0.
Kenichi Handa <handa@m17n.org>
parents:
46728
diff
changeset
|
1100 (put 'safe-chars 'char-table-extra-slots 0) |
8f29b98466a8
(safe-chars): Put `char-table-extra-slots' property with value 0.
Kenichi Handa <handa@m17n.org>
parents:
46728
diff
changeset
|
1101 |
18518
425c8fa4227b
(define-coding-system-alias): Swap the args.
Richard M. Stallman <rms@gnu.org>
parents:
18457
diff
changeset
|
1102 (defun define-coding-system-alias (alias coding-system) |
19162 | 1103 "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
|
1104 (put alias 'coding-system (coding-system-spec coding-system)) |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
1105 (add-to-coding-system-list alias) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1106 (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
|
1107 coding-system-alist)) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1108 (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
|
1109 (if (vectorp eol-type) |
46489
e429a944355d
(define-coding-system-alias): Don't append ALIAS in the property
Kenichi Handa <handa@m17n.org>
parents:
46190
diff
changeset
|
1110 (progn |
e429a944355d
(define-coding-system-alias): Don't append ALIAS in the property
Kenichi Handa <handa@m17n.org>
parents:
46190
diff
changeset
|
1111 (nconc (coding-system-get alias 'alias-coding-systems) (list alias)) |
e429a944355d
(define-coding-system-alias): Don't append ALIAS in the property
Kenichi Handa <handa@m17n.org>
parents:
46190
diff
changeset
|
1112 (put alias 'eol-type (make-subsidiary-coding-system alias))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1113 (put alias 'eol-type eol-type)))) |
17052 | 1114 |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1115 (defun merge-coding-systems (first second) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1116 "Fill in any unspecified aspects of coding system FIRST from SECOND. |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1117 Return the resulting coding system." |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1118 (let ((base (coding-system-base second)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1119 (eol (coding-system-eol-type second))) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1120 ;; If FIRST doesn't specify text conversion, merge with that of SECOND. |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1121 (if (eq (coding-system-base first) 'undecided) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1122 (setq first (coding-system-change-text-conversion first base))) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1123 ;; If FIRST doesn't specify eol conversion, merge with that of SECOND. |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1124 (if (and (vectorp (coding-system-eol-type first)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1125 (numberp eol) (>= eol 0) (<= eol 2)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1126 (setq first (coding-system-change-eol-conversion |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1127 first eol))) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1128 first)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1129 |
52795
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1130 (defun autoload-coding-system (symbol form) |
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1131 "Define SYMBOL as a coding-system that is defined on demand. |
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1132 |
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1133 FROM is a form to evaluate to define the coding-system." |
52799
482664d12a27
(autoload-coding-system): Add SYMBOL to coding-system-alist.
Kenichi Handa <handa@m17n.org>
parents:
52795
diff
changeset
|
1134 (put symbol 'coding-system-define-form form) |
482664d12a27
(autoload-coding-system): Add SYMBOL to coding-system-alist.
Kenichi Handa <handa@m17n.org>
parents:
52795
diff
changeset
|
1135 (setq coding-system-alist (cons (list (symbol-name symbol)) |
482664d12a27
(autoload-coding-system): Add SYMBOL to coding-system-alist.
Kenichi Handa <handa@m17n.org>
parents:
52795
diff
changeset
|
1136 coding-system-alist))) |
52795
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1137 |
58277
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1138 (defun set-buffer-file-coding-system (coding-system &optional force nomodify) |
19162 | 1139 "Set the file coding-system of the current buffer to CODING-SYSTEM. |
1140 This means that when you save the buffer, it will be converted | |
1141 according to CODING-SYSTEM. For a list of possible values of CODING-SYSTEM, | |
1142 use \\[list-coding-systems]. | |
1143 | |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1144 If CODING-SYSTEM leaves the text conversion unspecified, or if it |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1145 leaves the end-of-line conversion unspecified, FORCE controls what to |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1146 do. If FORCE is nil, get the unspecified aspect (or aspects) from the |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1147 buffer's previous `buffer-file-coding-system' value (if it is |
52289 | 1148 specified there). Otherwise, leave it unspecified. |
26716 | 1149 |
1150 This marks the buffer modified so that the succeeding \\[save-buffer] | |
1151 surely saves the buffer with CODING-SYSTEM. From a program, if you | |
58277
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1152 don't want to mark the buffer modified, specify t for NOMODIFY. |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1153 If you know exactly what coding system you want to use, |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1154 just set the variable `buffer-file-coding-system' directly." |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1155 (interactive "zCoding system for saving file (default, nil): \nP") |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1156 (check-coding-system coding-system) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1157 (if (and coding-system buffer-file-coding-system (null force)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1158 (setq coding-system |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1159 (merge-coding-systems coding-system buffer-file-coding-system))) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1160 (setq buffer-file-coding-system coding-system) |
48354
63020c84491a
(set-buffer-file-coding-system): Redo prev chg.
Richard M. Stallman <rms@gnu.org>
parents:
48339
diff
changeset
|
1161 ;; This is in case of an explicit call. Normally, `normal-mode' and |
63020c84491a
(set-buffer-file-coding-system): Redo prev chg.
Richard M. Stallman <rms@gnu.org>
parents:
48339
diff
changeset
|
1162 ;; `set-buffer-major-mode-hook' take care of setting the table. |
63020c84491a
(set-buffer-file-coding-system): Redo prev chg.
Richard M. Stallman <rms@gnu.org>
parents:
48339
diff
changeset
|
1163 (if (fboundp 'ucs-set-table-for-input) ; don't lose when building |
63020c84491a
(set-buffer-file-coding-system): Redo prev chg.
Richard M. Stallman <rms@gnu.org>
parents:
48339
diff
changeset
|
1164 (ucs-set-table-for-input)) |
58285
34e39dcb6763
(set-buffer-file-coding-system): Finish previous change.
Richard M. Stallman <rms@gnu.org>
parents:
58277
diff
changeset
|
1165 (unless nomodify |
34e39dcb6763
(set-buffer-file-coding-system): Finish previous change.
Richard M. Stallman <rms@gnu.org>
parents:
58277
diff
changeset
|
1166 (set-buffer-modified-p t)) |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1167 (force-mode-line-update)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1168 |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1169 (defun revert-buffer-with-coding-system (coding-system &optional force) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1170 "Visit the current buffer's file again using coding system CODING-SYSTEM. |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1171 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1172 |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1173 If CODING-SYSTEM leaves the text conversion unspecified, or if it |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1174 leaves the end-of-line conversion unspecified, FORCE controls what to |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1175 do. If FORCE is nil, get the unspecified aspect (or aspects) from the |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1176 buffer's previous `buffer-file-coding-system' value (if it is |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1177 specified there). Otherwise, determine it from the file contents as |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1178 usual for visiting a file." |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1179 (interactive "zCoding system for visited file (default, nil): \nP") |
17052 | 1180 (check-coding-system coding-system) |
29575
ab979e3b519a
(set-buffer-file-coding-system): If CODING-SYSTEM is nil, set
Kenichi Handa <handa@m17n.org>
parents:
29544
diff
changeset
|
1181 (if (and coding-system buffer-file-coding-system (null force)) |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1182 (setq coding-system |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1183 (merge-coding-systems coding-system buffer-file-coding-system))) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1184 (let ((coding-system-for-read coding-system)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1185 (revert-buffer))) |
17052 | 1186 |
48880
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1187 (defun set-file-name-coding-system (coding-system) |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1188 "Set coding system for decoding and encoding file names to CODING-SYSTEM. |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1189 It actually just set the variable `file-name-coding-system' (which |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1190 see) to CODING-SYSTEM." |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1191 (interactive "zCoding system for file names (default, nil): ") |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1192 (check-coding-system coding-system) |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1193 (setq file-name-coding-system coding-system)) |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1194 |
19162 | 1195 (defvar default-terminal-coding-system nil |
1196 "Default value for the terminal coding system. | |
1197 This is normally set according to the selected language environment. | |
1198 See also the command `set-terminal-coding-system'.") | |
1199 | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1200 (defun set-terminal-coding-system (coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1201 "Set coding system of your terminal to CODING-SYSTEM. |
19162 | 1202 All text output to the terminal will be encoded |
1203 with the specified coding system. | |
1204 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. | |
1205 The default is determined by the selected language environment | |
1206 or by the previous use of this command." | |
1207 (interactive | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1208 (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
|
1209 default-terminal-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1210 default-terminal-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1211 (read-coding-system |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1212 (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
|
1213 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1214 default)))) |
19162 | 1215 (if (and (not coding-system) |
1216 (not (terminal-coding-system))) | |
1217 (setq coding-system default-terminal-coding-system)) | |
1218 (if coding-system | |
36037 | 1219 (setq default-terminal-coding-system coding-system)) |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1220 (set-terminal-coding-system-internal coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1221 (redraw-frame (selected-frame))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1222 |
19162 | 1223 (defvar default-keyboard-coding-system nil |
1224 "Default value of the keyboard coding system. | |
1225 This is normally set according to the selected language environment. | |
1226 See also the command `set-keyboard-coding-system'.") | |
1227 | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1228 (defun set-keyboard-coding-system (coding-system) |
19162 | 1229 "Set coding system for keyboard input to CODING-SYSTEM. |
1230 In addition, this command enables Encoded-kbd minor mode. | |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1231 \(If CODING-SYSTEM is nil, Encoded-kbd mode is turned off -- see |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1232 `encoded-kbd-mode'.) |
19162 | 1233 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. |
1234 The default is determined by the selected language environment | |
1235 or by the previous use of this command." | |
1236 (interactive | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1237 (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
|
1238 default-keyboard-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1239 default-keyboard-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1240 (read-coding-system |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1241 (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
|
1242 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1243 default)))) |
19162 | 1244 (if (and (not coding-system) |
1245 (not (keyboard-coding-system))) | |
1246 (setq coding-system default-keyboard-coding-system)) | |
1247 (if coding-system | |
1248 (setq default-keyboard-coding-system coding-system)) | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1249 (set-keyboard-coding-system-internal coding-system) |
38614
2be878396f1e
(set-keyboard-coding-system): Set
Gerd Moellmann <gerd@gnu.org>
parents:
38414
diff
changeset
|
1250 (setq keyboard-coding-system coding-system) |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1251 (encoded-kbd-mode (if coding-system 1 0))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1252 |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1253 (defcustom keyboard-coding-system nil |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1254 "Specify coding system for keyboard input. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1255 If you set this on a terminal which can't distinguish Meta keys from |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1256 8-bit characters, you will have to use ESC to type Meta characters. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1257 See Info node `Specify Coding' and Info node `Single-Byte Character Support'. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1258 |
49026
4ecab4bfe0cd
(register-char-codings): Don't call
Dave Love <fx@gnu.org>
parents:
48891
diff
changeset
|
1259 On non-windowing terminals, this is set from the locale by default. |
4ecab4bfe0cd
(register-char-codings): Don't call
Dave Love <fx@gnu.org>
parents:
48891
diff
changeset
|
1260 |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1261 Setting this variable directly does not take effect; |
54546
f357f325cc85
* international/mule.el (keyboard-coding-system): Fix docstring.
Juri Linkov <juri@jurta.org>
parents:
53526
diff
changeset
|
1262 use either \\[customize] or \\[set-keyboard-coding-system]." |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1263 :type '(coding-system :tag "Coding system") |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1264 :link '(info-link "(emacs)Specify Coding") |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1265 :link '(info-link "(emacs)Single-Byte Character Support") |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1266 :set (lambda (symbol value) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1267 ;; Don't load encoded-kbd-mode unnecessarily. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1268 (if (or value (boundp 'encoded-kbd-mode)) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1269 (set-keyboard-coding-system value) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1270 (set-default 'keyboard-coding-system nil))) ; must initialize |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59226
diff
changeset
|
1271 :version "22.1" |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1272 :group 'keyboard |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1273 :group 'mule) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1274 |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1275 (defun set-buffer-process-coding-system (decoding encoding) |
19162 | 1276 "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
|
1277 DECODING is the coding system to be used to decode input from the process, |
19162 | 1278 ENCODING is the coding system to be used to encode output to the process. |
1279 | |
1280 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]." | |
17052 | 1281 (interactive |
30965
d3223b7bcd96
(set-buffer-process-coding-system): Make interactive prompt less confusing.
Miles Bader <miles@gnu.org>
parents:
30877
diff
changeset
|
1282 "zCoding-system for output from the process: \nzCoding-system for input to the process: ") |
17052 | 1283 (let ((proc (get-buffer-process (current-buffer)))) |
1284 (if (null proc) | |
36037 | 1285 (error "No process") |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1286 (check-coding-system decoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1287 (check-coding-system encoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1288 (set-process-coding-system proc decoding encoding))) |
17052 | 1289 (force-mode-line-update)) |
1290 | |
22836
f3603840ddbc
(set-clipboard-coding-system): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents:
22832
diff
changeset
|
1291 (defalias 'set-clipboard-coding-system 'set-selection-coding-system) |
f3603840ddbc
(set-clipboard-coding-system): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents:
22832
diff
changeset
|
1292 |
22741
763e88fd4ca2
(set-selection-coding-system): Renamed from set-clipboard-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
22700
diff
changeset
|
1293 (defun set-selection-coding-system (coding-system) |
47874
4c9cbf50a76c
(set-selection-coding-system): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents:
47708
diff
changeset
|
1294 "Make CODING-SYSTEM used for communicating with other X clients. |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1295 When sending or receiving text via cut_buffer, selection, and clipboard, |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1296 the text is encoded or decoded by CODING-SYSTEM." |
23030
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1297 (interactive "zCoding system for X selection: ") |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1298 (check-coding-system coding-system) |
22741
763e88fd4ca2
(set-selection-coding-system): Renamed from set-clipboard-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
22700
diff
changeset
|
1299 (setq selection-coding-system coding-system)) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1300 |
23196 | 1301 ;; Coding system lastly specified by the command |
23030
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1302 ;; set-next-selection-coding-system. |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1303 (defvar last-next-selection-coding-system nil) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1304 |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1305 (defun set-next-selection-coding-system (coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1306 "Make CODING-SYSTEM used for the next communication with other X clients. |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1307 This setting is effective for the next communication only." |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1308 (interactive |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1309 (list (read-coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1310 (if last-next-selection-coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1311 (format "Coding system for the next X selection (default, %S): " |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1312 last-next-selection-coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1313 "Coding system for the next X selection: ") |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1314 last-next-selection-coding-system))) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1315 (if coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1316 (setq last-next-selection-coding-system coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1317 (setq coding-system last-next-selection-coding-system)) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1318 (check-coding-system coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1319 |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1320 (setq next-selection-coding-system coding-system)) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1321 |
17052 | 1322 (defun set-coding-priority (arg) |
36037 | 1323 "Set priority of coding categories according to ARG. |
1324 ARG is a list of coding categories ordered by priority." | |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1325 (let ((l arg) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1326 (current-list (copy-sequence coding-category-list))) |
23196 | 1327 ;; Check the validity of ARG while deleting coding categories in |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1328 ;; ARG from CURRENT-LIST. We assume that CODING-CATEGORY-LIST |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1329 ;; contains all coding categories. |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1330 (while l |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1331 (if (or (null (get (car l) 'coding-category-index)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1332 (null (memq (car l) current-list))) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1333 (error "Invalid or duplicated element in argument: %s" arg)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1334 (setq current-list (delq (car l) current-list)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1335 (setq l (cdr l))) |
17052 | 1336 ;; Update `coding-category-list' and return it. |
22227
e7ac7f644152
(set-coding-priority): Call
Kenichi Handa <handa@m17n.org>
parents:
22225
diff
changeset
|
1337 (setq coding-category-list (append arg current-list)) |
e7ac7f644152
(set-coding-priority): Call
Kenichi Handa <handa@m17n.org>
parents:
22225
diff
changeset
|
1338 (set-coding-priority-internal))) |
17052 | 1339 |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1340 ;;; X selections |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1341 |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1342 (defvar ctext-non-standard-encodings-alist |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1343 '(("big5-0" big5 2 (chinese-big5-1 chinese-big5-2)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1344 ("ISO8859-14" iso-8859-14 1 latin-iso8859-14) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1345 ("ISO8859-15" iso-8859-15 1 latin-iso8859-15)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1346 "Alist of non-standard encoding names vs the corresponding usages in CTEXT. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1347 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1348 It controls how extended segments of a compound text are handled |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1349 by the coding system `compound-text-with-extensions'. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1350 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1351 Each element has the form (ENCODING-NAME CODING-SYSTEM N-OCTET CHARSET). |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1352 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1353 ENCODING-NAME is an encoding name of an \"extended segments\". |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1354 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1355 CODING-SYSTEM is the coding-system to encode (or decode) the |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1356 characters into (or from) the extended segment. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1357 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1358 N-OCTET is the number of octets (bytes) that encodes a character |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1359 in the segment. It can be 0 (meaning the number of octets per |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1360 character is variable), 1, 2, 3, or 4. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1361 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1362 CHARSET is a charater set containing characters that are encoded |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1363 in the segment. It can be a list of character sets. It can also |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1364 be a char-table, in which case characters that have non-nil value |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1365 in the char-table are the target. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1366 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1367 On decoding CTEXT, all encoding names listed here are recognized. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1368 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1369 On encoding CTEXT, encoding names in the variable |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1370 `ctext-non-standard-encodings' (which see) and in the information |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1371 listed for the current language environment under the key |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1372 `ctext-non-standard-encodings' are used.") |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1373 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1374 (defvar ctext-non-standard-encodings |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1375 '("big5-0") |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1376 "List of non-standard encoding names used in extended segments of CTEXT. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1377 Each element must be one of the names listed in the variable |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1378 `ctext-non-standard-encodings-alist' (which see).") |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1379 |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1380 (defvar ctext-non-standard-encodings-regexp |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1381 (string-to-multibyte |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1382 (concat |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1383 ;; For non-standard encodings. |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1384 "\\(\e%/[0-4][\200-\377][\200-\377]\\([^\002]+\\)\002\\)" |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1385 "\\|" |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1386 ;; For UTF-8 encoding. |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1387 "\\(\e%G[^\e]*\e%@\\)"))) |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1388 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1389 ;; Functions to support "Non-Standard Character Set Encodings" defined |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1390 ;; by the COMPOUND-TEXT spec. They also support "The UTF-8 encoding" |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1391 ;; described in the section 7 of the documentation of COMPOUND-TEXT |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1392 ;; distributed with XFree86. |
46727
ef296b0ffe50
(ctext-post-read-conversion): Add support for emboded utf-8 encodng
Kenichi Handa <handa@m17n.org>
parents:
46675
diff
changeset
|
1393 |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1394 (defun ctext-post-read-conversion (len) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1395 "Decode LEN characters encoded as Compound Text with Extended Segments." |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1396 (save-match-data |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1397 (save-restriction |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1398 (let ((case-fold-search nil) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1399 (in-workbuf (string= (buffer-name) " *code-converting-work*")) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1400 last-coding-system-used |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1401 pos bytes) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1402 (or in-workbuf |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1403 (narrow-to-region (point) (+ (point) len))) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1404 (if in-workbuf |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1405 (set-buffer-multibyte t)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1406 (while (re-search-forward ctext-non-standard-encodings-regexp |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1407 nil 'move) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1408 (setq pos (match-beginning 0)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1409 (if (match-beginning 1) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1410 ;; ESC % / [0-4] M L --ENCODING-NAME-- \002 --BYTES-- |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1411 (let* ((M (char-after (+ pos 4))) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1412 (L (char-after (+ pos 5))) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1413 (encoding (match-string 2)) |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
1414 (encoding-info (assoc-string |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1415 encoding |
55048
e703f6cf2d7f
(ctext-post-read-conversion): Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
54546
diff
changeset
|
1416 ctext-non-standard-encodings-alist t)) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1417 (coding (if encoding-info |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1418 (nth 1 encoding-info) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1419 (setq encoding (intern (downcase encoding))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1420 (and (coding-system-p encoding) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1421 encoding)))) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1422 (setq bytes (- (+ (* (- M 128) 128) (- L 128)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1423 (- (point) (+ pos 6)))) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1424 (when coding |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1425 (delete-region pos (point)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1426 (forward-char bytes) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1427 (decode-coding-region (- (point) bytes) (point) coding))) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1428 ;; ESC % G --UTF-8-BYTES-- ESC % @ |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1429 (delete-char -3) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1430 (delete-region pos (+ pos 3)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1431 (decode-coding-region pos (point) 'utf-8)))) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1432 (goto-char (point-min)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1433 (- (point-max) (point))))) |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1434 |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1435 ;; Return a char table of extended segment usage for each character. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1436 ;; Each value of the char table is nil, one of the elements of |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1437 ;; `ctext-non-standard-encodings-alist', or the symbol `utf-8'. |
52289 | 1438 |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1439 (defun ctext-non-standard-encodings-table () |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1440 (let ((table (make-char-table 'translation-table))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1441 (aset table (make-char 'mule-unicode-0100-24ff) 'utf-8) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1442 (aset table (make-char 'mule-unicode-2500-33ff) 'utf-8) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1443 (aset table (make-char 'mule-unicode-e000-ffff) 'utf-8) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1444 (dolist (encoding (reverse |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1445 (append |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1446 (get-language-info current-language-environment |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1447 'ctext-non-standard-encodings) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1448 ctext-non-standard-encodings))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1449 (let* ((slot (assoc encoding ctext-non-standard-encodings-alist)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1450 (charset (nth 3 slot))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1451 (if charset |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1452 (cond ((charsetp charset) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1453 (aset table (make-char charset) slot)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1454 ((listp charset) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1455 (dolist (elt charset) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1456 (aset table (make-char elt) slot))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1457 ((char-table-p charset) |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
1458 (map-char-table #'(lambda (k v) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1459 (if (and v (> k 128)) (aset table k slot))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1460 charset)))))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1461 table)) |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1462 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1463 (defun ctext-pre-write-conversion (from to) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1464 "Encode characters between FROM and TO as Compound Text w/Extended Segments. |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1465 |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1466 If FROM is a string, or if the current buffer is not the one set up for us |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1467 by encode-coding-string, generate a new temp buffer, insert the |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1468 text, and convert it in the temporary buffer. Otherwise, convert in-place." |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1469 (save-match-data |
60188
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1470 (let ((workbuf (get-buffer-create " *code-conversion-work*"))) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1471 ;; Setup a working buffer if necessary. |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1472 (cond ((stringp from) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1473 (set-buffer workbuf) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1474 (erase-buffer) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1475 (set-buffer-multibyte (multibyte-string-p from)) |
60188
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1476 (insert from)) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1477 ((not (eq (current-buffer) workbuf)) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1478 (let ((buf (current-buffer)) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1479 (multibyte enable-multibyte-characters)) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1480 (set-buffer workbuf) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1481 (erase-buffer) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1482 (set-buffer-multibyte multibyte) |
d9ca15a0952c
(ctext-pre-write-conversion): Always use
Kenichi Handa <handa@m17n.org>
parents:
59996
diff
changeset
|
1483 (insert-buffer-substring buf from to))))) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1484 |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1485 ;; Now we can encode the whole buffer. |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1486 (let ((encoding-table (ctext-non-standard-encodings-table)) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1487 last-coding-system-used |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1488 last-pos last-encoding-info |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1489 encoding-info end-pos) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1490 (goto-char (setq last-pos (point-min))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1491 (setq end-pos (point-marker)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1492 (while (re-search-forward "[^\000-\177]+" nil t) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1493 ;; Found a sequence of non-ASCII characters. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1494 (setq last-pos (match-beginning 0) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1495 last-encoding-info (aref encoding-table (char-after last-pos))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1496 (set-marker end-pos (match-end 0)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1497 (goto-char (1+ last-pos)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1498 (catch 'tag |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1499 (while t |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1500 (setq encoding-info |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1501 (if (< (point) end-pos) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1502 (aref encoding-table (following-char)))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1503 (unless (eq last-encoding-info encoding-info) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1504 (cond ((consp last-encoding-info) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1505 ;; Encode the previous range using an extended |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1506 ;; segment. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1507 (let ((encoding-name (car last-encoding-info)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1508 (coding-system (nth 1 last-encoding-info)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1509 (noctets (nth 2 last-encoding-info)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1510 len) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1511 (encode-coding-region last-pos (point) coding-system) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1512 (setq len (+ (length encoding-name) 1 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1513 (- (point) last-pos))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1514 (save-excursion |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1515 (goto-char last-pos) |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
1516 (insert (string-to-multibyte |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1517 (format "\e%%/%d%c%c%s" |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1518 noctets |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1519 (+ (/ len 128) 128) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1520 (+ (% len 128) 128) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1521 encoding-name)))))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1522 ((eq last-encoding-info 'utf-8) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1523 ;; Encode the previous range using UTF-8 encoding |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1524 ;; extention. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1525 (encode-coding-region last-pos (point) 'mule-utf-8) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1526 (save-excursion |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1527 (goto-char last-pos) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1528 (insert "\e%G")) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1529 (insert "\e%@"))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1530 (setq last-pos (point) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1531 last-encoding-info encoding-info)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1532 (if (< (point) end-pos) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1533 (forward-char 1) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1534 (throw 'tag nil))))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1535 (set-marker end-pos nil) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1536 (goto-char (point-min)))) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1537 ;; Must return nil, as build_annotations_2 expects that. |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1538 nil) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1539 |
17052 | 1540 ;;; FILE I/O |
1541 | |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1542 (defcustom auto-coding-alist |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
1543 '(("\\.\\(arc\\|zip\\|lzh\\|zoo\\|jar\\|sx[dmicw]\\|tar\\|tgz\\)\\'" . no-conversion) |
45417
fe2a8cd911d0
(auto-coding-alist): Use no-conversion
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
43558
diff
changeset
|
1544 ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion) |
45418
8a2b953f3d6c
(auto-coding-alist): Use emacs-mule
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45417
diff
changeset
|
1545 ("/#[^/]+#\\'" . emacs-mule)) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1546 "Alist of filename patterns vs corresponding coding systems. |
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1547 Each element looks like (REGEXP . CODING-SYSTEM). |
22819
da7ae4205e0b
(auto-coding-alist): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
22813
diff
changeset
|
1548 A file whose name matches REGEXP is decoded by CODING-SYSTEM on reading. |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1549 |
22826
e81f7de474b3
(auto-coding-alist): Another doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22819
diff
changeset
|
1550 The settings in this alist take priority over `coding:' tags |
e81f7de474b3
(auto-coding-alist): Another doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22819
diff
changeset
|
1551 in the file (see the function `set-auto-coding') |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1552 and the contents of `file-coding-system-alist'." |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1553 :group 'files |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1554 :group 'mule |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1555 :type '(repeat (cons (regexp :tag "File name regexp") |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1556 (symbol :tag "Coding system")))) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1557 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1558 (defcustom auto-coding-regexp-alist |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1559 '(("^BABYL OPTIONS:[ \t]*-\\*-[ \t]*rmail[ \t]*-\\*-" . no-conversion)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1560 "Alist of patterns vs corresponding coding systems. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1561 Each element looks like (REGEXP . CODING-SYSTEM). |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1562 A file whose first bytes match REGEXP is decoded by CODING-SYSTEM on reading. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1563 |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1564 The settings in this alist take priority over `coding:' tags |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1565 in the file (see the function `set-auto-coding') |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1566 and the contents of `file-coding-system-alist'." |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1567 :group 'files |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1568 :group 'mule |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1569 :type '(repeat (cons (regexp :tag "Regexp") |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1570 (symbol :tag "Coding system")))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1571 |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1572 ;; See the bottom of this file for built-in auto coding functions. |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1573 (defcustom auto-coding-functions '(sgml-xml-auto-coding-function |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1574 sgml-html-meta-auto-coding-function) |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1575 "A list of functions which attempt to determine a coding system. |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1576 |
51978
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1577 Each function in this list should be written to operate on the |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1578 current buffer, but should not modify it in any way. The buffer |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1579 will contain undecoded text of parts of the file. Each function |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1580 should take one argument, SIZE, which says how many |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1581 characters (starting from point) it should look at. |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1582 |
51978
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1583 If one of these functions succeeds in determining a coding |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1584 system, it should return that coding system. Otherwise, it |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1585 should return nil. |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1586 |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1587 If a file has a `coding:' tag, that takes precedence over these |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1588 functions, so they won't be called at all." |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1589 :group 'files |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1590 :group 'mule |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1591 :type '(repeat function)) |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1592 |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1593 (defvar set-auto-coding-for-load nil |
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1594 "Non-nil means look for `load-coding' property instead of `coding'. |
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1595 This is used for loading and byte-compiling Emacs Lisp files.") |
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1596 |
24602
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1597 (defun auto-coding-alist-lookup (filename) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1598 "Return the coding system specified by `auto-coding-alist' for FILENAME." |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1599 (let ((alist auto-coding-alist) |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
49417
diff
changeset
|
1600 (case-fold-search (memq system-type '(vax-vms windows-nt ms-dos cygwin))) |
24602
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1601 coding-system) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1602 (while (and alist (not coding-system)) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1603 (if (string-match (car (car alist)) filename) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1604 (setq coding-system (cdr (car alist))) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1605 (setq alist (cdr alist)))) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1606 coding-system)) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1607 |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1608 (defun set-auto-coding (filename size) |
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1609 "Return coding system for a file FILENAME of which SIZE bytes follow point. |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1610 These bytes should include at least the first 1k of the file |
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1611 and the last 3k of the file, but the middle may be omitted. |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1612 |
46675 | 1613 The function checks FILENAME against the variable `auto-coding-alist'. |
1614 If FILENAME doesn't match any entries in the variable, it checks the | |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1615 contents of the current buffer following point against |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1616 `auto-coding-regexp-alist'. If no match is found, it checks for a |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1617 `coding:' tag in the first one or two lines following point. If no |
46675 | 1618 `coding:' tag is found, it checks any local variables list in the last |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1619 3K bytes out of the SIZE bytes. Finally, if none of these methods |
46675 | 1620 succeed, it checks to see if any function in `auto-coding-functions' |
1621 gives a match. | |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1622 |
46675 | 1623 The return value is the specified coding system, or nil if nothing is |
1624 specified. | |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
1625 |
21728
ea71ddaad673
(load-with-code-conversion): Don't pass extra arg to eval-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
21675
diff
changeset
|
1626 The variable `set-auto-coding-function' (which see) is set to this |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
1627 function by default." |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1628 (or (auto-coding-alist-lookup filename) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1629 ;; Try using `auto-coding-regexp-alist'. |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1630 (save-excursion |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1631 (let ((alist auto-coding-regexp-alist) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1632 coding-system) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1633 (while (and alist (not coding-system)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1634 (let ((regexp (car (car alist)))) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1635 (when (re-search-forward regexp (+ (point) size) t) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1636 (setq coding-system (cdr (car alist))))) |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
1637 (setq alist (cdr alist))) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1638 coding-system)) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1639 (let* ((case-fold-search t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1640 (head-start (point)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1641 (head-end (+ head-start (min size 1024))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1642 (tail-start (+ head-start (max (- size 3072) 0))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1643 (tail-end (+ head-start size)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1644 coding-system head-found tail-found pos) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1645 ;; Try a short cut by searching for the string "coding:" |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1646 ;; and for "unibyte:" at the head and tail of SIZE bytes. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1647 (setq head-found (or (search-forward "coding:" head-end t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1648 (search-forward "unibyte:" head-end t))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1649 (if (and head-found (> head-found tail-start)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1650 ;; Head and tail are overlapped. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1651 (setq tail-found head-found) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1652 (goto-char tail-start) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1653 (setq tail-found (or (search-forward "coding:" tail-end t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1654 (search-forward "unibyte:" tail-end t)))) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1655 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1656 ;; At first check the head. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1657 (when head-found |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1658 (goto-char head-start) |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1659 (setq head-end (set-auto-mode-1)) |
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1660 (setq head-start (point)) |
42011
235915876f5b
(set-auto-coding): Don't search for
Eli Zaretskii <eliz@gnu.org>
parents:
41983
diff
changeset
|
1661 (when (and head-end (< head-found head-end)) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1662 (goto-char head-start) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1663 (when (and set-auto-coding-for-load |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1664 (re-search-forward |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1665 "\\(.*;\\)?[ \t]*unibyte:[ \t]*\\([^ ;]+\\)" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1666 head-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1667 (setq coding-system 'raw-text)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1668 (when (and (not coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1669 (re-search-forward |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1670 "\\(.*;\\)?[ \t]*coding:[ \t]*\\([^ ;]+\\)" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1671 head-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1672 (setq coding-system (intern (match-string 2))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1673 (or (coding-system-p coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1674 (setq coding-system nil))))) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1675 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1676 ;; If no coding: tag in the head, check the tail. |
53526
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1677 ;; Here we must pay attention to the case that the end-of-line |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1678 ;; is just "\r" and we can't use "^" nor "$" in regexp. |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1679 (when (and tail-found (not coding-system)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1680 (goto-char tail-start) |
53526
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1681 (re-search-forward "[\r\n]\^L" nil t) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1682 (if (re-search-forward |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
1683 "[\r\n]\\([^[\r\n]*\\)[ \t]*Local Variables:[ \t]*\\([^\r\n]*\\)[\r\n]" |
53526
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1684 tail-end t) |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1685 ;; The prefix is what comes before "local variables:" in its |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1686 ;; line. The suffix is what comes after "local variables:" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1687 ;; in its line. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1688 (let* ((prefix (regexp-quote (match-string 1))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1689 (suffix (regexp-quote (match-string 2))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1690 (re-coding |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1691 (concat |
53526
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1692 "[\r\n]" prefix |
39947
9c7e9fea58dc
(set-auto-coding): Fix regexps for local
Gerd Moellmann <gerd@gnu.org>
parents:
38614
diff
changeset
|
1693 ;; N.B. without the \n below, the regexp can |
9c7e9fea58dc
(set-auto-coding): Fix regexps for local
Gerd Moellmann <gerd@gnu.org>
parents:
38614
diff
changeset
|
1694 ;; eat newlines. |
53526
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1695 "[ \t]*coding[ \t]*:[ \t]*\\([^ \t\r\n]+\\)[ \t]*" |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1696 suffix "[\r\n]")) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1697 (re-unibyte |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1698 (concat |
53526
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1699 "[\r\n]" prefix |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1700 "[ \t]*unibyte[ \t]*:[ \t]*\\([^ \t\r\n]+\\)[ \t]*" |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1701 suffix "[\r\n]")) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1702 (re-end |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
1703 (concat "[\r\n]" prefix "[ \t]*End *:[ \t]*" suffix |
53526
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1704 "[\r\n]?")) |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1705 (pos (1- (point)))) |
5c66f1de4907
(set-auto-coding): Fix for the case that end-of-line is only CR.
Kenichi Handa <handa@m17n.org>
parents:
53240
diff
changeset
|
1706 (forward-char -1) ; skip back \r or \n. |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1707 (re-search-forward re-end tail-end 'move) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1708 (setq tail-end (point)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1709 (goto-char pos) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1710 (when (and set-auto-coding-for-load |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1711 (re-search-forward re-unibyte tail-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1712 (setq coding-system 'raw-text)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1713 (when (and (not coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1714 (re-search-forward re-coding tail-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1715 (setq coding-system (intern (match-string 1))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1716 (or (coding-system-p coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1717 (setq coding-system nil)))))) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1718 coding-system) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1719 ;; Finally, try all the `auto-coding-functions'. |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1720 (let ((funcs auto-coding-functions) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1721 (coding-system nil)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1722 (while (and funcs (not coding-system)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1723 (setq coding-system (condition-case e |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1724 (save-excursion |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1725 (goto-char (point-min)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1726 (funcall (pop funcs) size)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1727 (error nil)))) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1728 coding-system))) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1729 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1730 (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
|
1731 |
59208
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1732 ;; This variable is set in these two cases: |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1733 ;; (1) A file is read by a coding system specified explicitly. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1734 ;; after-insert-file-set-coding sets this value to |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1735 ;; coding-system-for-read. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1736 ;; (2) A buffer is saved. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1737 ;; After writing, basic-save-buffer-1 sets this value to |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1738 ;; last-coding-system-used. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1739 ;; This variable is used for decoding in revert-buffer. |
59226
1d3fcf11a9ad
(buffer-file-coding-system-explicit):
Kenichi Handa <handa@m17n.org>
parents:
59208
diff
changeset
|
1740 (defvar buffer-file-coding-system-explicit nil |
59208
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1741 "The file coding system explicitly specified for the current buffer. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1742 Internal use only.") |
59226
1d3fcf11a9ad
(buffer-file-coding-system-explicit):
Kenichi Handa <handa@m17n.org>
parents:
59208
diff
changeset
|
1743 (make-variable-buffer-local 'buffer-file-coding-system-explicit) |
1d3fcf11a9ad
(buffer-file-coding-system-explicit):
Kenichi Handa <handa@m17n.org>
parents:
59208
diff
changeset
|
1744 (put 'buffer-file-coding-system-explicit 'permanent-local t) |
59208
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1745 |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1746 (defun after-insert-file-set-coding (inserted &optional visit) |
50584
e36ce541f439
(after-insert-file-set-coding): Properly treat INSERTED as number of
Richard M. Stallman <rms@gnu.org>
parents:
50547
diff
changeset
|
1747 "Set `buffer-file-coding-system' of current buffer after text is inserted. |
e36ce541f439
(after-insert-file-set-coding): Properly treat INSERTED as number of
Richard M. Stallman <rms@gnu.org>
parents:
50547
diff
changeset
|
1748 INSERTED is the number of characters that were inserted, as figured |
e36ce541f439
(after-insert-file-set-coding): Properly treat INSERTED as number of
Richard M. Stallman <rms@gnu.org>
parents:
50547
diff
changeset
|
1749 in the situation before this function. Return the number of characters |
e36ce541f439
(after-insert-file-set-coding): Properly treat INSERTED as number of
Richard M. Stallman <rms@gnu.org>
parents:
50547
diff
changeset
|
1750 inserted, as figured in the situation after. The two numbers can be |
59208
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1751 different if the buffer has become unibyte. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1752 The optional second arg VISIT non-nil means that we are visiting a file." |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1753 (if (and visit |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1754 coding-system-for-read |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1755 (not (eq coding-system-for-read 'auto-save-coding))) |
59226
1d3fcf11a9ad
(buffer-file-coding-system-explicit):
Kenichi Handa <handa@m17n.org>
parents:
59208
diff
changeset
|
1756 (setq buffer-file-coding-system-explicit coding-system-for-read)) |
17052 | 1757 (if last-coding-system-used |
1758 (let ((coding-system | |
1759 (find-new-buffer-file-coding-system last-coding-system-used)) | |
1760 (modified-p (buffer-modified-p))) | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1761 (when coding-system |
58277
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1762 ;; Tell set-buffer-file-coding-system not to mark the file |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1763 ;; as modified; we just read it, and it's supposed to be unmodified. |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1764 ;; Marking it modified would try to lock it, which would |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1765 ;; check the modtime, and we don't want to do that again now. |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1766 (set-buffer-file-coding-system coding-system t t) |
23717
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1767 (if (and enable-multibyte-characters |
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1768 (or (eq coding-system 'no-conversion) |
22041
e977f2414da5
(after-insert-file-set-buffer-file-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
21728
diff
changeset
|
1769 (eq (coding-system-type coding-system) 5)) |
29504
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1770 ;; If buffer was unmodified and the size is the |
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1771 ;; same as INSERTED, we must be visiting it. |
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1772 (not modified-p) |
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1773 (= (buffer-size) inserted)) |
22041
e977f2414da5
(after-insert-file-set-buffer-file-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
21728
diff
changeset
|
1774 ;; For coding systems no-conversion and raw-text..., |
e977f2414da5
(after-insert-file-set-buffer-file-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
21728
diff
changeset
|
1775 ;; edit the buffer as unibyte. |
58277
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1776 (let ((pos-marker (copy-marker (+ (point) inserted))) |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1777 ;; Prevent locking. |
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1778 (buffer-file-name nil)) |
23717
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1779 (set-buffer-multibyte nil) |
50584
e36ce541f439
(after-insert-file-set-coding): Properly treat INSERTED as number of
Richard M. Stallman <rms@gnu.org>
parents:
50547
diff
changeset
|
1780 (setq inserted (- pos-marker (point))))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1781 (set-buffer-modified-p modified-p)))) |
23717
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1782 inserted) |
17052 | 1783 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
1784 ;; The coding-spec and eol-type of coding-system returned is decided |
17052 | 1785 ;; independently in the following order. |
1786 ;; 1. That of buffer-file-coding-system locally bound. | |
1787 ;; 2. That of CODING. | |
1788 | |
1789 (defun find-new-buffer-file-coding-system (coding) | |
1790 "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
|
1791 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
|
1792 is set to the returned value. |
24575
a95503af9112
(find-new-buffer-file-coding-system): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24373
diff
changeset
|
1793 Return nil if there's no need to set `buffer-file-coding-system'." |
17052 | 1794 (let (local-coding local-eol |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1795 found-coding found-eol |
17052 | 1796 new-coding new-eol) |
1797 (if (null coding) | |
1798 ;; Nothing found about coding. | |
1799 nil | |
1800 | |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1801 ;; 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
|
1802 ;; and LOCAL-CODING. |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1803 (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
|
1804 (if (null (numberp local-eol)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1805 ;; 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
|
1806 (setq local-eol nil)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1807 (if (and buffer-file-coding-system |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1808 (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
|
1809 ;; This is not `undecided'. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1810 (setq local-coding (coding-system-base buffer-file-coding-system))) |
17052 | 1811 |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1812 (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
|
1813 local-eol local-coding) |
17052 | 1814 ;; The current buffer has already set full coding-system, we |
1815 ;; had better not change it. | |
1816 nil | |
1817 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
1818 (setq found-eol (coding-system-eol-type coding)) |
17052 | 1819 (if (null (numberp found-eol)) |
22903
77e68af369b1
(find-new-buffer-file-coding-system): When
Eli Zaretskii <eliz@gnu.org>
parents:
22884
diff
changeset
|
1820 ;; But eol-type is not found. |
77e68af369b1
(find-new-buffer-file-coding-system): When
Eli Zaretskii <eliz@gnu.org>
parents:
22884
diff
changeset
|
1821 ;; If EOL conversions are inhibited, force unix eol-type. |
77e68af369b1
(find-new-buffer-file-coding-system): When
Eli Zaretskii <eliz@gnu.org>
parents:
22884
diff
changeset
|
1822 (setq found-eol (if inhibit-eol-conversion 0))) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1823 (if (eq (coding-system-type coding) t) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1824 (setq found-coding 'undecided) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1825 (setq found-coding (coding-system-base coding))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1826 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1827 (if (and (not found-eol) (eq found-coding 'undecided)) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1828 ;; No valid coding information found. |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1829 nil |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1830 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1831 ;; Some coding information (eol or text) found. |
17052 | 1832 |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1833 ;; The local setting takes precedence over the found one. |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1834 (setq new-coding (if (local-variable-p 'buffer-file-coding-system) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1835 (or local-coding found-coding) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1836 (or found-coding local-coding))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1837 (setq new-eol (if (local-variable-p 'buffer-file-coding-system) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1838 (or local-eol found-eol) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1839 (or found-eol local-eol))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1840 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1841 (let ((eol-type (coding-system-eol-type new-coding))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1842 (if (and (numberp new-eol) (vectorp eol-type)) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1843 (aref eol-type new-eol) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1844 new-coding))))))) |
17052 | 1845 |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1846 (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
|
1847 "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
|
1848 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
|
1849 `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
|
1850 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1851 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
|
1852 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
|
1853 If it is `process', it affects `process-coding-system-alist' (which see). |
23196 | 1854 If it is `network', it affects `network-coding-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
|
1855 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1856 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
|
1857 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
|
1858 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
|
1859 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
|
1860 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1861 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
|
1862 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
|
1863 for decoding and encoding respectively, |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
1864 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
|
1865 (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
|
1866 (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
|
1867 (or (stringp regexp) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1868 (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
|
1869 (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
|
1870 (if (symbolp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1871 (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
|
1872 (progn |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1873 (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
|
1874 (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
|
1875 (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
|
1876 (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
|
1877 (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
|
1878 (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
|
1879 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1880 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1881 (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
|
1882 (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
|
1883 file-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1884 ((eq target-type 'process) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1885 (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
|
1886 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1887 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1888 (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
|
1889 (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
|
1890 process-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1891 (t |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1892 (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
|
1893 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1894 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1895 (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
|
1896 (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
|
1897 network-coding-system-alist))))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1898 |
49417
c0097d579165
(decode-coding-inserted-region): Renamed
Kenichi Handa <handa@m17n.org>
parents:
49376
diff
changeset
|
1899 (defun decode-coding-inserted-region (from to filename |
c0097d579165
(decode-coding-inserted-region): Renamed
Kenichi Handa <handa@m17n.org>
parents:
49376
diff
changeset
|
1900 &optional visit beg end replace) |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1901 "Decode the region between FROM and TO as if it is read from file FILENAME. |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1902 The idea is that the text between FROM and TO was just inserted somehow. |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1903 Optional arguments VISIT, BEG, END, and REPLACE are the same as those |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1904 of the function `insert-file-contents'. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1905 Part of the job of this function is setting `buffer-undo-list' appropriately." |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1906 (save-excursion |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1907 (save-restriction |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1908 (let ((coding coding-system-for-read) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1909 undo-list-saved) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1910 (if visit |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1911 ;; Temporarily turn off undo recording, if we're decoding the |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1912 ;; text of a visited file. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1913 (setq buffer-undo-list t) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1914 ;; Otherwise, if we can recognize the undo elt for the insertion, |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1915 ;; remove it and get ready to replace it later. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1916 ;; In the mean time, turn off undo recording. |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59226
diff
changeset
|
1917 (let ((last (car-safe buffer-undo-list))) |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1918 (if (and (consp last) (eql (car last) from) (eql (cdr last) to)) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1919 (setq undo-list-saved (cdr buffer-undo-list) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1920 buffer-undo-list t)))) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1921 (narrow-to-region from to) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1922 (goto-char (point-min)) |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1923 (or coding |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1924 (setq coding (funcall set-auto-coding-function |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1925 filename (- (point-max) (point-min))))) |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1926 (or coding |
52660
99ed1d8cf6da
(decode-coding-inserted-region): Use car
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1927 (setq coding (car (find-operation-coding-system |
99ed1d8cf6da
(decode-coding-inserted-region): Use car
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1928 'insert-file-contents |
99ed1d8cf6da
(decode-coding-inserted-region): Use car
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
1929 filename visit beg end replace)))) |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1930 (if (coding-system-p coding) |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1931 (or enable-multibyte-characters |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1932 (setq coding |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1933 (coding-system-change-text-conversion coding 'raw-text))) |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1934 (setq coding nil)) |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1935 (if coding |
56345
84f77e8cff58
(decode-coding-inserted-region): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
56344
diff
changeset
|
1936 (decode-coding-region (point-min) (point-max) coding) |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1937 (setq last-coding-system-used coding)) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1938 ;; If we're decoding the text of a visited file, |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1939 ;; the undo list should start out empty. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1940 (if visit |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1941 (setq buffer-undo-list nil) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1942 ;; If we decided to replace the undo entry for the insertion, |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1943 ;; do so now. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1944 (if undo-list-saved |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1945 (setq buffer-undo-list |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1946 (cons (cons from (point-max)) undo-list-saved)))))))) |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1947 |
59175
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1948 (defun recode-region (start end new-coding coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1949 "Re-decode the region (previously decoded by CODING) by NEW-CODING." |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1950 (interactive |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1951 (list (region-beginning) (region-end) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1952 (read-coding-system "Text was really in: ") |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1953 (let ((coding (or buffer-file-coding-system last-coding-system-used))) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1954 (read-coding-system |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1955 (concat "But was interpreted as" |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1956 (if coding (format " (default %S): " coding) ": ")) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1957 coding)))) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1958 (or (and new-coding coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1959 (error "Coding system not specified")) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1960 ;; Check it before we encode the region. |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1961 (check-coding-system new-coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1962 (save-restriction |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1963 (narrow-to-region start end) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1964 (encode-coding-region (point-min) (point-max) coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1965 (decode-coding-region (point-min) (point-max) new-coding))) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
1966 |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1967 (defun make-translation-table (&rest args) |
36262 | 1968 "Make a translation table from arguments. |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
1969 A translation table is a char table intended for character |
36262 | 1970 translation in CCL programs. |
1971 | |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
1972 Each argument is a list of elements of the form (FROM . TO), where FROM |
36262 | 1973 is a character to be translated to TO. |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1974 |
22225
6f56af1aab96
(make-translation-table): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22186
diff
changeset
|
1975 FROM can be a generic character (see `make-char'). In this case, TO is |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
1976 a generic character containing the same number of characters, or an |
22225
6f56af1aab96
(make-translation-table): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22186
diff
changeset
|
1977 ordinary character. If FROM and TO are both generic characters, all |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1978 characters belonging to FROM are translated to characters belonging to TO |
35481
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1979 without changing their position code(s). |
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1980 |
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1981 The arguments and forms in each argument are processed in the given |
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1982 order, and if a previous form already translates TO to some other |
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1983 character, say TO-ALT, FROM is also translated to TO-ALT." |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1984 (let ((table (make-char-table 'translation-table)) |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1985 revlist) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1986 (while args |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1987 (let ((elts (car args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1988 (while elts |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1989 (let* ((from (car (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1990 (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
|
1991 (from-rev (nreverse (split-char from))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1992 (to (cdr (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1993 (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
|
1994 (to-rev (nreverse (split-char to)))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1995 ;; 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
|
1996 (while (eq (car from-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1997 (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
|
1998 (while (eq (car to-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1999 (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
|
2000 (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
|
2001 (error "Invalid character pair (%d . %d)" from to)) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2002 ;; If we have already translated TO to TO-ALT, FROM should |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2003 ;; also be translated to TO-ALT. But, this is only if TO |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2004 ;; is a generic character or TO-ALT is not a generic |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
2005 ;; character. |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
2006 (let ((to-alt (aref table to))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
2007 (if (and to-alt |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
2008 (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
|
2009 (setq to to-alt))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
2010 (if (> from-i 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
2011 (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
|
2012 (aset table from to)) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2013 ;; If we have already translated some chars to FROM, they |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2014 ;; should also be translated to TO. |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2015 (let ((l (assq from revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2016 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2017 (let ((ch (car l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2018 (setcar l to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2019 (setq l (cdr l)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2020 (while l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2021 (aset table ch to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2022 (setq l (cdr l)) )))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2023 ;; Now update REVLIST. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2024 (let ((l (assq to revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2025 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2026 (setcdr l (cons from (cdr l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2027 (setq revlist (cons (list to from) revlist))))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2028 (setq elts (cdr elts)))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2029 (setq args (cdr args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2030 ;; Return TABLE just created. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2031 table)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2032 |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2033 (defun make-translation-table-from-vector (vec) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2034 "Make translation table from decoding vector VEC. |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2035 VEC is an array of 256 elements to map unibyte codes to multibyte |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2036 characters. Elements may be nil for undefined code points. |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2037 See also the variable `nonascii-translation-table'." |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2038 (let ((table (make-char-table 'translation-table)) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2039 (rev-table (make-char-table 'translation-table)) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2040 ch) |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2041 (dotimes (i 256) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2042 (setq ch (aref vec i)) |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2043 (when ch |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2044 (aset table i ch) |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2045 (if (>= ch 256) |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2046 (aset rev-table ch i)))) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2047 (set-char-table-extra-slot table 0 rev-table) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2048 table)) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2049 |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2050 (defun define-translation-table (symbol &rest args) |
36262 | 2051 "Define SYMBOL as the name of translation table made by ARGS. |
2052 This sets up information so that the table can be used for | |
2053 translations in a CCL program. | |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2054 |
36262 | 2055 If the first element of ARGS is a char-table whose purpose is |
2056 `translation-table', just define SYMBOL to name it. (Note that this | |
2057 function does not bind SYMBOL.) | |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2058 |
36262 | 2059 Any other ARGS should be suitable as arguments of the function |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2060 `make-translation-table' (which see). |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2061 |
22225
6f56af1aab96
(make-translation-table): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22186
diff
changeset
|
2062 This function sets properties `translation-table' and |
36037 | 2063 `translation-table-id' of SYMBOL to the created table itself and the |
2064 identification number of the table respectively. It also registers | |
2065 the table in `translation-table-vector'." | |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2066 (let ((table (if (and (char-table-p (car args)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2067 (eq (char-table-subtype (car args)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2068 'translation-table)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2069 (car args) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2070 (apply 'make-translation-table args))) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2071 (len (length translation-table-vector)) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
2072 (id 0) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2073 (done nil)) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2074 (put symbol 'translation-table table) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2075 (while (not done) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2076 (if (>= id len) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2077 (setq translation-table-vector |
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2078 (vconcat translation-table-vector (make-vector len nil)))) |
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2079 (let ((slot (aref translation-table-vector id))) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2080 (if (or (not slot) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2081 (eq (car slot) symbol)) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2082 (progn |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2083 (aset translation-table-vector id (cons symbol table)) |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2084 (setq done t)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2085 (setq id (1+ id))))) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2086 (put symbol 'translation-table-id id) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
2087 id)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
2088 |
57645
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2089 (defun translate-region (start end table) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2090 "From START to END, translate characters according to TABLE. |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2091 TABLE is a string or a char-table. |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2092 If TABLE is a string, the Nth character in it is the mapping |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2093 for the character with code N. |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2094 If TABLE is a char-table, the element for character N is the mapping |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2095 for the character with code N. |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2096 It returns the number of characters changed." |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2097 (interactive |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2098 (list (region-beginning) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2099 (region-end) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2100 (let (table l) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2101 (dotimes (i (length translation-table-vector)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2102 (if (consp (aref translation-table-vector i)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2103 (push (list (symbol-name |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2104 (car (aref translation-table-vector i)))) l))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2105 (if (not l) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2106 (error "No translation table defined")) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2107 (while (not table) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2108 (setq table (completing-read "Translation table: " l nil t))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2109 (intern table)))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2110 (if (symbolp table) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2111 (let ((val (get table 'translation-table))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2112 (or (char-table-p val) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2113 (error "Invalid translation table name: %s" table)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2114 (setq table val))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2115 (translate-region-internal start end table)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2116 |
26887
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
2117 (put 'with-category-table 'lisp-indent-function 1) |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
2118 |
50336
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2119 (defmacro with-category-table (table &rest body) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2120 "Evaluate BODY with category table of current buffer set to TABLE. |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2121 The category table of the current buffer is saved, BODY is evaluated, |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2122 then the saved table is restored, even in case of an abnormal exit. |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2123 Value is what BODY returns." |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2124 (let ((old-table (make-symbol "old-table")) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2125 (old-buffer (make-symbol "old-buffer"))) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2126 `(let ((,old-table (category-table)) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2127 (,old-buffer (current-buffer))) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2128 (unwind-protect |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2129 (progn |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2130 (set-category-table ,table) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2131 ,@body) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2132 (save-current-buffer |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2133 (set-buffer ,old-buffer) |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2134 (set-category-table ,old-table)))))) |
26887
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
2135 |
46504
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2136 (defun define-translation-hash-table (symbol table) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2137 "Define SYMBOL as the name of the hash translation TABLE for use in CCL. |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2138 |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2139 Analogous to `define-translation-table', but updates |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2140 `translation-hash-table-vector' and the table is for use in the CCL |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2141 `lookup-integer' and `lookup-character' functions." |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2142 (unless (and (symbolp symbol) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2143 (hash-table-p table)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2144 (error "Bad args to define-translation-hash-table")) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2145 (let ((len (length translation-hash-table-vector)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2146 (id 0) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2147 done) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2148 (put symbol 'translation-hash-table table) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2149 (while (not done) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2150 (if (>= id len) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2151 (setq translation-hash-table-vector |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2152 (vconcat translation-hash-table-vector [nil]))) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2153 (let ((slot (aref translation-hash-table-vector id))) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2154 (if (or (not slot) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2155 (eq (car slot) symbol)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2156 (progn |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2157 (aset translation-hash-table-vector id (cons symbol table)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2158 (setq done t)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2159 (setq id (1+ id))))) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2160 (put symbol 'translation-hash-table-id id) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2161 id)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2162 |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2163 ;;; Initialize some variables. |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2164 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2165 (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
|
2166 (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
|
2167 (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
|
2168 (setq ignore-relative-composition |
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
2169 (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
|
2170 |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2171 |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2172 ;;; Built-in auto-coding-functions: |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2173 |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2174 (defun sgml-xml-auto-coding-function (size) |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2175 "Determine whether the buffer is XML, and if so, its encoding. |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2176 This function is intended to be added to `auto-coding-functions'." |
51080
e5124f8f4dc9
(sgml-xml-auto-coding-function, sgml-html-meta-auto-coding-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50584
diff
changeset
|
2177 (setq size (+ (point) size)) |
e5124f8f4dc9
(sgml-xml-auto-coding-function, sgml-html-meta-auto-coding-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50584
diff
changeset
|
2178 (when (re-search-forward "\\`[[:space:]\n]*<\\?xml" size t) |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2179 (let ((end (save-excursion |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2180 ;; This is a hack. |
45456
8da743b93fbf
(sgml-xml-auto-coding-function): Update with more known XML encodings.
Colin Walters <walters@gnu.org>
parents:
45450
diff
changeset
|
2181 (re-search-forward "\"\\s-*\\?>" size t)))) |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2182 (when end |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2183 (if (re-search-forward "encoding=\"\\(.+?\\)\"" end t) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2184 (let* ((match (match-string 1)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2185 (sym (intern (downcase match)))) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2186 (if (coding-system-p sym) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2187 sym |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2188 (message "Warning: unknown coding system \"%s\"" match) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2189 nil)) |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2190 'utf-8))))) |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2191 |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2192 (defun sgml-html-meta-auto-coding-function (size) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2193 "If the buffer has an HTML meta tag, use it to determine encoding. |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2194 This function is intended to be added to `auto-coding-functions'." |
51080
e5124f8f4dc9
(sgml-xml-auto-coding-function, sgml-html-meta-auto-coding-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50584
diff
changeset
|
2195 (setq size (min (+ (point) size) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2196 ;; Only search forward 10 lines |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2197 (save-excursion |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2198 (forward-line 10) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2199 (point)))) |
58149
a469fda36737
(sgml-html-meta-auto-coding-function):
Juri Linkov <juri@jurta.org>
parents:
57645
diff
changeset
|
2200 (when (and (search-forward "<html" size t) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2201 (re-search-forward "<meta\\s-+http-equiv=\"content-type\"\\s-+content=\"text/\\sw+;\\s-*charset=\\(.+?\\)\"" size t)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2202 (let* ((match (match-string 1)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2203 (sym (intern (downcase match)))) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2204 (if (coding-system-p sym) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2205 sym |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2206 (message "Warning: unknown coding system \"%s\"" match) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2207 nil)))) |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
2208 |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2209 ;;; |
17052 | 2210 (provide 'mule) |
2211 | |
52401 | 2212 ;;; arch-tag: 9aebaa6e-0e8a-40a9-b857-cb5d04a39e7c |
17052 | 2213 ;;; mule.el ends here |