Mercurial > emacs
annotate lisp/international/mule.el @ 92833:272f566348a7
(generated-autoload-file): Don't set, instead use different values of
generate-autoload-cookie plus Makefile rules to allow for a mixture of
internal calendar autoloads and normal autoloads.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 13 Mar 2008 05:44:04 +0000 |
parents | d2f0754ed2f5 |
children | 3d15658dfdee |
rev | line source |
---|---|
88551 | 1 ;;; mule.el --- basic commands for multilingual environment |
17052 | 2 |
79709 | 3 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 |
62274 | 4 ;; Free Software Foundation, Inc. |
74605
6ee41fdd69ff
Update AIST copyright years.
Kenichi Handa <handa@m17n.org>
parents:
74544
diff
changeset
|
5 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
79709 | 6 ;; 2005, 2006, 2007, 2008 |
62274 | 7 ;; National Institute of Advanced Industrial Science and Technology (AIST) |
8 ;; Registration Number H14PRO021 | |
89483 | 9 ;; Copyright (C) 2003 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
10 ;; National Institute of Advanced Industrial Science and Technology (AIST) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
11 ;; Registration Number H13PRO009 |
17052 | 12 |
13 ;; Keywords: mule, multilingual, character set, coding system | |
14 | |
15 ;; This file is part of GNU Emacs. | |
16 | |
17 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
18 ;; it under the terms of the GNU General Public License as published by | |
78310
2daf9c28b3a4
Restore comma mistakenly removed in last change.
Glenn Morris <rgm@gnu.org>
parents:
78301
diff
changeset
|
19 ;; the Free Software Foundation; either version 3, or (at your option) |
17052 | 20 ;; any later version. |
21 | |
22 ;; GNU Emacs is distributed in the hope that it will be useful, | |
23 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
25 ;; GNU General Public License for more details. | |
26 | |
27 ;; You should have received a copy of the GNU General Public License | |
17071 | 28 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
64085 | 29 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
30 ;; Boston, MA 02110-1301, USA. | |
17052 | 31 |
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37995
diff
changeset
|
32 ;;; Commentary: |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37995
diff
changeset
|
33 |
17052 | 34 ;;; Code: |
35 | |
89483 | 36 (defconst mule-version "6.0 (HANACHIRUSATO)" "\ |
17052 | 37 Version number and name of this version of MULE (multilingual environment).") |
38 | |
89483 | 39 (defconst mule-version-date "2003.9.1" "\ |
17052 | 40 Distribution date of this version of MULE (multilingual environment).") |
41 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
42 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
43 ;;; CHARSET |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
44 |
89628 | 45 ;; Backward compatibility code for handling emacs-mule charsets. |
46 (defvar private-char-area-1-min #xF0000) | |
47 (defvar private-char-area-1-max #xFFFFE) | |
48 (defvar private-char-area-2-min #x100000) | |
49 (defvar private-char-area-2-max #x10FFFE) | |
50 | |
51 ;; Table of emacs-mule charsets indexed by their emacs-mule ID. | |
52 (defvar emacs-mule-charset-table (make-vector 256 nil)) | |
53 (aset emacs-mule-charset-table 0 'ascii) | |
54 | |
55 ;; Convert the argument of old-style calll of define-charset to a | |
56 ;; property list used by the new-style. | |
57 ;; INFO-VECTOR is a vector of the format: | |
58 ;; [DIMENSION CHARS WIDTH DIRECTION ISO-FINAL-CHAR ISO-GRAPHIC-PLANE | |
59 ;; SHORT-NAME LONG-NAME DESCRIPTION] | |
60 | |
61 (defun convert-define-charset-argument (emacs-mule-id info-vector) | |
62 (let* ((dim (aref info-vector 0)) | |
63 (chars (aref info-vector 1)) | |
64 (total (if (= dim 1) chars (* chars chars))) | |
65 (code-space (if (= dim 1) (if (= chars 96) [32 127] [33 126]) | |
66 (if (= chars 96) [32 127 32 127] [33 126 33 126]))) | |
67 code-offset) | |
68 (if (integerp emacs-mule-id) | |
69 (or (= emacs-mule-id 0) | |
70 (and (>= emacs-mule-id 129) (< emacs-mule-id 256)) | |
71 (error "Invalid CHARSET-ID: %d" emacs-mule-id)) | |
72 (let (from-id to-id) | |
73 (if (= dim 1) (setq from-id 160 to-id 224) | |
74 (setq from-id 224 to-id 255)) | |
75 (while (and (< from-id to-id) | |
76 (not (aref emacs-mule-charset-table from-id))) | |
77 (setq from-id (1+ from-id))) | |
78 (if (= from-id to-id) | |
79 (error "No more room for the new Emacs-mule charset")) | |
80 (setq emacs-mule-id from-id))) | |
81 (if (> (- private-char-area-1-max private-char-area-1-min) total) | |
82 (setq code-offset private-char-area-1-min | |
83 private-char-area-1-min (+ private-char-area-1-min total)) | |
84 (if (> (- private-char-area-2-max private-char-area-2-min) total) | |
85 (setq code-offset private-char-area-2-min | |
86 private-char-area-2-min (+ private-char-area-2-min total)) | |
87 (error "No more space for a new charset."))) | |
88 (list :dimension dim | |
89 :code-space code-space | |
90 :iso-final-char (aref info-vector 4) | |
91 :code-offset code-offset | |
92 :emacs-mule-id emacs-mule-id))) | |
93 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
94 (defun define-charset (name docstring &rest props) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
95 "Define NAME (symbol) as a charset with DOCSTRING. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
96 The remaining arguments must come in pairs ATTRIBUTE VALUE. ATTRIBUTE |
88551 | 97 may be any symbol. The following have special meanings, and one of |
88755 | 98 `:code-offset', `:map', `:subset', `:superset' must be specified. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
99 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
100 `:short-name' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
101 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
102 VALUE must be a short string to identify the charset. If omitted, |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
103 NAME is used. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
104 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
105 `:long-name' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
106 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
107 VALUE must be a string longer than `:short-name' to identify the |
88551 | 108 charset. If omitted, the value of the `:short-name' attribute is used. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
109 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
110 `:dimension' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
111 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
112 VALUE must be an integer 0, 1, 2, or 3, specifying the dimension of |
88551 | 113 code-points of the charsets. If omitted, it is calculated from the |
114 value of the `:code-space' attribute. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
115 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
116 `:code-space' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
117 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
118 VALUE must be a vector of length at most 8 specifying the byte code |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
119 range of each dimension in this format: |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
120 [ MIN-1 MAX-1 MIN-2 MAX-2 ... ] |
88551 | 121 where MIN-N is the minimum byte value of Nth dimension of code-point, |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
122 MAX-N is the maximum byte value of that. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
123 |
88680
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
124 `:min-code' |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
125 |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
126 VALUE must be an integer specifying the mininum code point of the |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
127 charset. If omitted, it is calculated from `:code-space'. VALUE may |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
128 be a cons (HIGH . LOW), where HIGH is the most significant 16 bits of |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
129 the code point and LOW is the least significant 16 bits. |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
130 |
88844
1aa1ab8cd2fa
(set-coding-priority): Fix obsolete spec.
Dave Love <fx@gnu.org>
parents:
88831
diff
changeset
|
131 `:max-code' |
88680
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
132 |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
133 VALUE must be an integer specifying the maxinum code point of the |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
134 charset. If omitted, it is calculated from `:code-space'. VALUE may |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
135 be a cons (HIGH . LOW), where HIGH is the most significant 16 bits of |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
136 the code point and LOW is the least significant 16 bits. |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
137 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
138 `:iso-final-char' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
139 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
140 VALUE must be a character in the range 32 to 127 (inclusive) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
141 specifying the final char of the charset for ISO-2022 encoding. If |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
142 omitted, the charset can't be encoded by ISO-2022 based |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
143 coding-systems. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
144 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
145 `:iso-revision-number' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
146 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
147 VALUE must be an integer in the range 0..63, specifying the revision |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
148 number of the charset for ISO-2022 encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
149 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
150 `:emacs-mule-id' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
151 |
89628 | 152 VALUE must be an integer of 0, 129..255. If omitted, the charset |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
153 can't be encoded by coding-systems of type `emacs-mule'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
154 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
155 `:ascii-compatible-p' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
156 |
88551 | 157 VALUE must be nil or t (default nil). If VALUE is t, the charset is |
158 compatible with ASCII, i.e. the first 128 code points map to ASCII. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
159 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
160 `:supplementary-p' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
161 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
162 VALUE must be nil or t. If the VALUE is t, the charset is |
91196
0243246adece
(define-charset): Update the docstring for
Kenichi Handa <handa@m17n.org>
parents:
91041
diff
changeset
|
163 supplementary, which means it is used only as a parent or a |
0243246adece
(define-charset): Update the docstring for
Kenichi Handa <handa@m17n.org>
parents:
91041
diff
changeset
|
164 subset of some other charset, or it is provided just for backward |
0243246adece
(define-charset): Update the docstring for
Kenichi Handa <handa@m17n.org>
parents:
91041
diff
changeset
|
165 compatibility. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
166 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
167 `:invalid-code' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
168 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
169 VALUE must be a nonnegative integer that can be used as an invalid |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
170 code point of the charset. If the minimum code is 0 and the maximum |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
171 code is greater than Emacs' maximum integer value, `:invalid-code' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
172 should not be omitted. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
173 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
174 `:code-offset' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
175 |
88551 | 176 VALUE must be an integer added to the index number of a character to |
177 get the corresponding character code. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
178 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
179 `:map' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
180 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
181 VALUE must be vector or string. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
182 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
183 If it is a vector, the format is [ CODE-1 CHAR-1 CODE-2 CHAR-2 ... ], |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
184 where CODE-n is a code-point of the charset, and CHAR-n is the |
88551 | 185 corresponding character code. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
186 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
187 If it is a string, it is a name of file that contains the above |
88436 | 188 information. Each line of the file must be this format: |
189 0xXXX 0xYYY | |
190 where XXX is a hexadecimal representation of CODE-n and YYY is a | |
191 hexadecimal representation of CHAR-n. A line starting with `#' is a | |
192 comment line. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
193 |
88750
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
194 `:subset' |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
195 |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
196 VALUE must be a list: |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
197 ( PARENT MIN-CODE MAX-CODE OFFSET ) |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
198 PARENT is a parent charset. MIN-CODE and MAX-CODE specify the range |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
199 of characters inherited from the parent. OFFSET is an integer value |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
200 to add to a code point of the parent charset to get the corresponding |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
201 code point of this charset. |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
202 |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
203 `:superset' |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
204 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
205 VALUE must be a list of parent charsets. The charset inherits |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
206 characters from them. Each element of the list may be a cons (PARENT |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
207 . OFFSET), where PARENT is a parent charset, and OFFSET is an offset |
88750
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
208 value to add to a code point of PARENT to get the corresponding code |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
209 point of this charset. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
210 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
211 `:unify-map' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
212 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
213 VALUE must be vector or string. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
214 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
215 If it is a vector, the format is [ CODE-1 CHAR-1 CODE-2 CHAR-2 ... ], |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
216 where CODE-n is a code-point of the charset, and CHAR-n is the |
88551 | 217 corresponding Unicode character code. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
218 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
219 If it is a string, it is a name of file that contains the above |
88436 | 220 information. The file format is the same as what described for `:map' |
221 attribute." | |
89628 | 222 (when (vectorp (car props)) |
223 ;; Old style code: | |
224 ;; (define-charset CHARSET-ID CHARSET-SYMBOL INFO-VECTOR) | |
225 ;; Convert the argument to make it fit with the current style. | |
226 (let ((vec (car props))) | |
227 (setq props (convert-define-charset-argument name vec) | |
228 name docstring | |
229 docstring (aref vec 8)))) | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
230 (let ((attrs (mapcar 'list '(:dimension |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
231 :code-space |
88680
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
232 :min-code |
e574f078b30d
(define-charset): New args :min-code and :max-code.
Kenichi Handa <handa@m17n.org>
parents:
88651
diff
changeset
|
233 :max-code |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
234 :iso-final-char |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
235 :iso-revision-number |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
236 :emacs-mule-id |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
237 :ascii-compatible-p |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
238 :supplementary-p |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
239 :invalid-code |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
240 :code-offset |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
241 :map |
88750
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
242 :subset |
62636e000934
(define-charset): Change the attribute
Kenichi Handa <handa@m17n.org>
parents:
88700
diff
changeset
|
243 :superset |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
244 :unify-map |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
245 :plist)))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
246 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
247 ;; If :dimension is omitted, get the dimension from :code-space. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
248 (let ((dimension (plist-get props :dimension))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
249 (or dimension |
89735
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
250 (let ((code-space (plist-get props :code-space))) |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
251 (setq dimension (if code-space (/ (length code-space) 2) 4)) |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
252 (setq props (plist-put props :dimension dimension))))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
253 |
89735
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
254 (let ((code-space (plist-get props :code-space))) |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
255 (or code-space |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
256 (let ((dimension (plist-get props :dimension))) |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
257 (setq code-space (make-vector 8 0)) |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
258 (dotimes (i dimension) |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
259 (aset code-space (1+ (* i 2)) #xFF)) |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
260 (setq props (plist-put props :code-space code-space))))) |
9de89ee4b8c6
(define-charset): If :code-space is not given, generate it from
Kenichi Handa <handa@m17n.org>
parents:
89638
diff
changeset
|
261 |
89628 | 262 ;; If :emacs-mule-id is specified, update emacs-mule-charset-table. |
263 (let ((emacs-mule-id (plist-get props :emacs-mule-id))) | |
264 (if (integerp emacs-mule-id) | |
265 (aset emacs-mule-charset-table emacs-mule-id name))) | |
266 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
267 (dolist (slot attrs) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
268 (setcdr slot (plist-get props (car slot)))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
269 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
270 ;; Make sure that the value of :code-space is a vector of 8 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
271 ;; elements. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
272 (let* ((slot (assq :code-space attrs)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
273 (val (cdr slot)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
274 (len (length val))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
275 (if (< len 8) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
276 (setcdr slot |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
277 (vconcat val (make-vector (- 8 len) 0))))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
278 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
279 ;; Add :name and :docstring properties to PROPS. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
280 (setq props |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
281 (cons :name (cons name (cons :docstring (cons docstring props))))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
282 (or (plist-get props :short-name) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
283 (plist-put props :short-name (symbol-name name))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
284 (or (plist-get props :long-name) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
285 (plist-put props :long-name (plist-get props :short-name))) |
88562 | 286 ;; We can probably get a worthwhile amount in purespace. |
287 (setq props | |
288 (mapcar (lambda (elt) | |
289 (if (stringp elt) | |
290 (purecopy elt) | |
291 elt)) | |
292 props)) | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
293 (setcdr (assq :plist attrs) props) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
294 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
295 (apply 'define-charset-internal name (mapcar 'cdr attrs)))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
296 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
297 |
17052 | 298 (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
|
299 "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
|
300 The file contents are decoded before evaluation if necessary. |
73799
223a7f633c49
(make-char): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
73151
diff
changeset
|
301 If optional third arg NOERROR is non-nil, |
17052 | 302 report no error if FILE doesn't exist. |
303 Print messages at start and end of loading unless | |
73799
223a7f633c49
(make-char): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
73151
diff
changeset
|
304 optional fourth arg NOMESSAGE is non-nil. |
17052 | 305 Return t if file exists." |
306 (if (null (file-readable-p fullname)) | |
307 (and (null noerror) | |
308 (signal 'file-error (list "Cannot open load file" file))) | |
309 ;; Read file with code conversion, and then eval. | |
310 (let* ((buffer | |
311 ;; To avoid any autoloading, set default-major-mode to | |
312 ;; fundamental-mode. | |
21675
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
313 ;; 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
|
314 ;; file is encoded in some complicated character set, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
315 ;; read it with real decoding, as a multibyte buffer, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
316 ;; even if this is a --unibyte Emacs session. |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
317 (let ((default-major-mode 'fundamental-mode) |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
318 (default-enable-multibyte-characters t)) |
17052 | 319 ;; We can't use `generate-new-buffer' because files.el |
320 ;; is not yet loaded. | |
321 (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
|
322 (load-in-progress t) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
323 (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
|
324 (unless nomessage |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
325 (if source |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
326 (message "Loading %s (source)..." file) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
327 (message "Loading %s..." file))) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
328 (when purify-flag |
49693
ae8bfbc6d9ef
(load-with-code-conversion): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49549
diff
changeset
|
329 (push file preloaded-file-list)) |
17052 | 330 (unwind-protect |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
331 (let ((load-file-name fullname) |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
332 (set-auto-coding-for-load t) |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
333 (inhibit-file-name-operation nil)) |
74164
a3d2bf407246
(load-with-code-conversion, with-category-table): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73799
diff
changeset
|
334 (with-current-buffer buffer |
67517
527e6fc032c7
(load-with-code-conversion): Bind deactivate-mark.
Richard M. Stallman <rms@gnu.org>
parents:
66345
diff
changeset
|
335 ;; Don't let deactivate-mark remain set. |
527e6fc032c7
(load-with-code-conversion): Bind deactivate-mark.
Richard M. Stallman <rms@gnu.org>
parents:
66345
diff
changeset
|
336 (let (deactivate-mark) |
527e6fc032c7
(load-with-code-conversion): Bind deactivate-mark.
Richard M. Stallman <rms@gnu.org>
parents:
66345
diff
changeset
|
337 (insert-file-contents fullname)) |
23860
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
338 ;; 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
|
339 ;; 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
|
340 ;; 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
|
341 ;; binary junk as multibyte characters. |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
342 (if (and enable-multibyte-characters |
89483 | 343 (or (eq (coding-system-type last-coding-system-used) |
344 'raw-text))) | |
23860
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
345 (set-buffer-multibyte nil)) |
17052 | 346 ;; Make `kill-buffer' quiet. |
347 (set-buffer-modified-p nil)) | |
20405
faf18d58a01b
(load-with-code-conversion): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
20168
diff
changeset
|
348 ;; Have the original buffer current while we eval. |
66345
27a95070b049
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
65680
diff
changeset
|
349 (eval-buffer buffer nil |
27a95070b049
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
65680
diff
changeset
|
350 ;; This is compatible with what `load' does. |
27a95070b049
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
65680
diff
changeset
|
351 (if purify-flag file fullname) |
21675
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
352 ;; If this Emacs is running with --unibyte, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
353 ;; convert multibyte strings to unibyte |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
354 ;; 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
|
355 ;; (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
|
356 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
|
357 )) |
18583
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
358 (let (kill-buffer-hook kill-buffer-query-functions) |
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
359 (kill-buffer buffer))) |
70879
238e43ed886e
startup.el (command-line): For names of preloaded files, don't append
Alan Mackenzie <acm@muc.de>
parents:
70682
diff
changeset
|
360 (unless purify-flag |
238e43ed886e
startup.el (command-line): For names of preloaded files, don't append
Alan Mackenzie <acm@muc.de>
parents:
70682
diff
changeset
|
361 (do-after-load-evaluation fullname)) |
73799
223a7f633c49
(make-char): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
73151
diff
changeset
|
362 |
20168
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
363 (unless (or nomessage noninteractive) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
364 (if source |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
365 (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
|
366 (message "Loading %s...done" file))) |
17052 | 367 t))) |
368 | |
89483 | 369 (defun charset-info (charset) |
370 "Return a vector of information of CHARSET. | |
371 This function is provided for backward compatibility. | |
17052 | 372 |
373 The elements of the vector are: | |
374 CHARSET-ID, BYTES, DIMENSION, CHARS, WIDTH, DIRECTION, | |
375 LEADING-CODE-BASE, LEADING-CODE-EXT, | |
376 ISO-FINAL-CHAR, ISO-GRAPHIC-PLANE, | |
377 REVERSE-CHARSET, SHORT-NAME, LONG-NAME, DESCRIPTION, | |
89483 | 378 PLIST. |
17052 | 379 where |
89483 | 380 CHARSET-ID is always 0. |
381 BYTES is always 0. | |
382 DIMENSION is the number of bytes of a code-point of the charset: | |
383 1, 2, 3, or 4. | |
384 CHARS is the number of characters in a dimension: | |
385 94, 96, 128, or 256. | |
386 WIDTH is always 0. | |
387 DIRECTION is always 0. | |
388 LEADING-CODE-BASE is always 0. | |
389 LEADING-CODE-EXT is always 0. | |
17052 | 390 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
|
391 corresponding ISO 2022 charset. If the charset is not assigned |
fbb4712321dd
(charset-info): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35553
diff
changeset
|
392 any final character, the value is -1. |
89483 | 393 ISO-GRAPHIC-PLANE is always 0. |
394 REVERSE-CHARSET is always -1. | |
17052 | 395 SHORT-NAME (string) is the short name to refer to the charset. |
396 LONG-NAME (string) is the long name to refer to the charset | |
397 DESCRIPTION (string) is the description string of the charset. | |
398 PLIST (property list) may contain any type of information a user | |
399 want to put and get by functions `put-charset-property' and | |
400 `get-charset-property' respectively." | |
89483 | 401 (vector 0 |
402 0 | |
403 (charset-dimension charset) | |
404 (charset-chars charset) | |
405 0 | |
406 0 | |
407 0 | |
408 0 | |
409 (charset-iso-final-char charset) | |
410 0 | |
411 -1 | |
412 (get-charset-property charset :short-name) | |
413 (get-charset-property charset :short-name) | |
414 (charset-description charset) | |
415 (charset-plist charset))) | |
17052 | 416 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
417 ;; 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
|
418 ;; because that makes a bootstrapping problem |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
419 ;; 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
|
420 |
89483 | 421 (defun charset-id (charset) |
422 "Always return 0. This is provided for backward compatibility." | |
423 0) | |
17052 | 424 |
425 (defmacro charset-bytes (charset) | |
89483 | 426 "Always return 0. This is provided for backward compatibility." |
427 0) | |
17052 | 428 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
429 (defun get-charset-property (charset propname) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
430 "Return the value of CHARSET's PROPNAME property. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
431 This is the last value stored with |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
432 (put-charset-property CHARSET PROPNAME VALUE)." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
433 (plist-get (charset-plist charset) propname)) |
17052 | 434 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
435 (defun put-charset-property (charset propname value) |
88844
1aa1ab8cd2fa
(set-coding-priority): Fix obsolete spec.
Dave Love <fx@gnu.org>
parents:
88831
diff
changeset
|
436 "Set CHARSETS's PROPNAME property to value VALUE. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
437 It can be retrieved with `(get-charset-property CHARSET PROPNAME)'." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
438 (set-charset-plist charset |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
439 (plist-put (charset-plist charset) propname value))) |
17052 | 440 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
441 (defun charset-description (charset) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
442 "Return description string of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
443 (plist-get (charset-plist charset) :docstring)) |
17052 | 444 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
445 (defun charset-dimension (charset) |
88805 | 446 "Return dimension of CHARSET." |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
447 (plist-get (charset-plist charset) :dimension)) |
17052 | 448 |
88700
c712966df91c
(charset-chars): Add optional dimension arg.
Dave Love <fx@gnu.org>
parents:
88698
diff
changeset
|
449 (defun charset-chars (charset &optional dimension) |
88805 | 450 "Return number of characters contained in DIMENSION of CHARSET. |
88700
c712966df91c
(charset-chars): Add optional dimension arg.
Dave Love <fx@gnu.org>
parents:
88698
diff
changeset
|
451 DIMENSION defaults to the first dimension." |
c712966df91c
(charset-chars): Add optional dimension arg.
Dave Love <fx@gnu.org>
parents:
88698
diff
changeset
|
452 (unless dimension (setq dimension 1)) |
88450
4f93848ba5a8
(charset-chars): Fix typo.
Kenichi Handa <handa@m17n.org>
parents:
88436
diff
changeset
|
453 (let ((code-space (plist-get (charset-plist charset) :code-space))) |
88700
c712966df91c
(charset-chars): Add optional dimension arg.
Dave Love <fx@gnu.org>
parents:
88698
diff
changeset
|
454 (1+ (- (aref code-space (1- (* 2 dimension))) |
c712966df91c
(charset-chars): Add optional dimension arg.
Dave Love <fx@gnu.org>
parents:
88698
diff
changeset
|
455 (aref code-space (- (* 2 dimension) 2)))))) |
17052 | 456 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
457 (defun charset-iso-final-char (charset) |
89385 | 458 "Return ISO-2022 final character of CHARSET. |
459 Return -1 if charset isn't an ISO 2022 one." | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
460 (or (plist-get (charset-plist charset) :iso-final-char) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
461 -1)) |
17052 | 462 |
463 (defmacro charset-short-name (charset) | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
464 "Return short name of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
465 (plist-get (charset-plist charset) :short-name)) |
17052 | 466 |
467 (defmacro charset-long-name (charset) | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
468 "Return long name of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
469 (plist-get (charset-plist charset) :long-name)) |
17052 | 470 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
471 (defun charset-list () |
88805 | 472 "Return list of all charsets ever defined. |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
473 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
474 This function is provided for backward compatibility. |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
475 Now we have the variable `charset-list'." |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
476 charset-list) |
90104
a01e7a9f1659
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-14
Miles Bader <miles@gnu.org>
parents:
90103
diff
changeset
|
477 (make-obsolete 'charset-list "Use variable `charset-list'" "23.1") |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
478 |
89628 | 479 |
480 ;;; CHARACTER | |
481 (defalias 'char-valid-p 'characterp) | |
90104
a01e7a9f1659
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-14
Miles Bader <miles@gnu.org>
parents:
90103
diff
changeset
|
482 (make-obsolete 'char-valid-p 'characterp "23.1") |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
483 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
484 (defun generic-char-p (char) |
89483 | 485 "Always return nil. This is provided for backward compatibility." |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
486 nil) |
90104
a01e7a9f1659
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-14
Miles Bader <miles@gnu.org>
parents:
90103
diff
changeset
|
487 (make-obsolete 'generic-char-p "Generic characters no longer exist" "23.1") |
33045
694e6396dc8b
(decode-char, encode-char): New functions.
Kenichi Handa <handa@m17n.org>
parents:
30965
diff
changeset
|
488 |
89628 | 489 (defun make-char-internal (charset-id &optional code1 code2) |
490 (let ((charset (aref emacs-mule-charset-table charset-id))) | |
491 (or charset | |
492 (error "Invalid Emacs-mule charset ID: %d" charset-id)) | |
493 (make-char charset code1 code2))) | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
494 |
76940
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
495 ;; Save the ASCII case table in case we need it later. Some locales |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
496 ;; (such as Turkish) modify the case behavior of ASCII characters, |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
497 ;; which can interfere with networking code that uses ASCII strings. |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
498 |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
499 (defvar ascii-case-table |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
500 ;; Code copied from copy-case-table to avoid requiring case-table.el |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
501 (let ((tbl (copy-sequence (standard-case-table))) |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
502 (up (char-table-extra-slot (standard-case-table) 0))) |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
503 (if up (set-char-table-extra-slot tbl 0 (copy-sequence up))) |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
504 (set-char-table-extra-slot tbl 1 nil) |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
505 (set-char-table-extra-slot tbl 2 nil) |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
506 tbl) |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
507 "Case table for the ASCII character set.") |
c4ac2750f7e4
(ascii-case-table): New var.
Chong Yidong <cyd@stupidchicken.com>
parents:
76286
diff
changeset
|
508 |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
509 ;; Coding system stuff |
17052 | 510 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
511 ;; Coding system is a symbol that has been defined by the function |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
512 ;; `define-coding-system'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
513 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
514 (defconst coding-system-iso-2022-flags |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
515 '(long-form |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
516 ascii-at-eol |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
517 ascii-at-cntl |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
518 7-bit |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
519 locking-shift |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
520 single-shift |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
521 designation |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
522 revision |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
523 direction |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
524 init-at-bol |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
525 designate-at-bol |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
526 safe |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
527 latin-extra |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
528 composition |
88685
f1ce7c70c868
(coding-system-iso-2022-flags): Add use-roman, use-oldjis.
Kenichi Handa <handa@m17n.org>
parents:
88680
diff
changeset
|
529 euc-tw-shift |
f1ce7c70c868
(coding-system-iso-2022-flags): Add use-roman, use-oldjis.
Kenichi Handa <handa@m17n.org>
parents:
88680
diff
changeset
|
530 use-roman |
f1ce7c70c868
(coding-system-iso-2022-flags): Add use-roman, use-oldjis.
Kenichi Handa <handa@m17n.org>
parents:
88680
diff
changeset
|
531 use-oldjis) |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
532 "List of symbols that control ISO-2022 encoder/decoder. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
533 |
88805 | 534 The value of the `:flags' attribute in the argument of the function |
88643
db559e54c9e0
(coding-system-iso-2022-flags): Revert
Dave Love <fx@gnu.org>
parents:
88636
diff
changeset
|
535 `define-coding-system' must be one of them. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
536 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
537 If `long-form' is specified, use a long designation sequence on |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
538 encoding for the charsets `japanese-jisx0208-1978', `chinese-gb2312', |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
539 and `japanese-jisx0208'. The long designation sequence doesn't |
88805 | 540 conform to ISO 2022, but is used by such coding systems as |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
541 `compound-text'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
542 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
543 If `ascii-at-eol' is specified, designate ASCII to g0 at end of line |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
544 on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
545 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
546 If `ascii-at-cntl' is specified, designate ASCII to g0 before control |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
547 codes and SPC on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
548 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
549 If `7-bit' is specified, use 7-bit code only on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
550 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
551 If `locking-shift' is specified, decode locking-shift code correctly |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
552 on decoding, and use locking-shift to invoke a graphic element on |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
553 encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
554 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
555 If `single-shift' is specified, decode single-shift code correctly on |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
556 decoding, and use single-shift to invoke a graphic element on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
557 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
558 If `designation' is specified, decode designation code correctly on |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
559 decoding, and use designation to designate a charset to a graphic |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
560 element on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
561 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
562 If `revision' is specified, produce an escape sequence to specify |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
563 revision number of a charset on encoding. Such an escape sequence is |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
564 always correctly decoded on decoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
565 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
566 If `direction' is specified, decode ISO6429's code for specifying |
88805 | 567 direction correctly, and produce the code on encoding. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
568 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
569 If `init-at-bol' is specified, on encoding, it is assumed that |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
570 invocation and designation statuses are reset at each beginning of |
88805 | 571 line even if `ascii-at-eol' is not specified; thus no codes for |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
572 resetting them are produced. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
573 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
574 If `safe' is specified, on encoding, characters not supported by a |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
575 coding are replaced with `?'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
576 |
88805 | 577 If `latin-extra' is specified, the code-detection routine assumes that a |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
578 code specified in `latin-extra-code-table' (which see) is valid. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
579 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
580 If `composition' is specified, an escape sequence to specify |
88805 | 581 composition sequence is correctly decoded on decoding, and is produced |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
582 on encoding. |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
583 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
584 If `euc-tw-shift' is specified, the EUC-TW specific shifting code is |
88805 | 585 correctly decoded on decoding, and is produced on encoding. |
586 | |
587 If `use-roman' is specified, JIS0201-1976-Roman is designated instead | |
588 of ASCII. | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
589 |
88805 | 590 If `use-oldjis' is specified, JIS0208-1976 is designated instead of |
591 JIS0208-1983.") | |
592 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
593 (defun define-coding-system (name docstring &rest props) |
88805 | 594 "Define NAME (a symbol) as a coding system with DOCSTRING and attributes. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
595 The remaining arguments must come in pairs ATTRIBUTE VALUE. ATTRIBUTE |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
596 may be any symbol. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
597 |
88805 | 598 The following attributes have special meanings. Those labeled as |
599 \"(required)\", should not be omitted. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
600 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
601 `:mnemonic' (required) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
602 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
603 VALUE is a character to display on mode line for the coding system. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
604 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
605 `:coding-type' (required) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
606 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
607 VALUE must be one of `charset', `utf-8', `utf-16', `iso-2022', |
89437 | 608 `emacs-mule', `shift-jis', `ccl', `raw-text', `undecided'. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
609 |
88805 | 610 `:eol-type' |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
611 |
88805 | 612 VALUE is the EOL (end-of-line) format of the coding system. It must be |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
613 one of `unix', `dos', `mac'. The symbol `unix' means Unix-like EOL |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
614 \(i.e. single LF), `dos' means DOS-like EOL \(i.e. sequence of CR LF), |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
615 and `mac' means MAC-like EOL \(i.e. single CR). If omitted, on |
88805 | 616 decoding by the coding system, Emacs automatically detects the EOL |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
617 format of the source text. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
618 |
89101 | 619 `:charset-list' |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
620 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
621 VALUE must be a list of charsets supported by the coding system. On |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
622 encoding by the coding system, if a character belongs to multiple |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
623 charsets in the list, a charset that comes earlier in the list is |
89101 | 624 selected. If `:coding-type' is `iso-2022', VALUE may be `iso-2022', |
625 which indicates that the coding system supports all ISO-2022 based | |
626 charsets. If `:coding-type' is `emacs-mule', VALUE may be | |
627 `emacs-mule', which indicates that the coding system supports all | |
89385 | 628 charsets that have the `:emacs-mule-id' property. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
629 |
88805 | 630 `:ascii-compatible-p' |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
631 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
632 If VALUE is non-nil, the coding system decodes all 7-bit bytes into |
88551 | 633 the corresponding ASCII characters, and encodes all ASCII characters |
88805 | 634 back to the corresponding 7-bit bytes. VALUE defaults to nil. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
635 |
88805 | 636 `:decode-translation-table' |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
637 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
638 VALUE must be a translation table to use on decoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
639 |
88805 | 640 `:encode-translation-table' |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
641 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
642 VALUE must be a translation table to use on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
643 |
88805 | 644 `:post-read-conversion' |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
645 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
646 VALUE must be a function to call after some text is inserted and |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
647 decoded by the coding system itself and before any functions in |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
648 `after-insert-functions' are called. The arguments to this function |
88805 | 649 are the same as those of a function in `after-insert-file-functions', |
650 i.e. LENGTH of the text to be decoded with point at the head of it, | |
651 and the function should leave point unchanged. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
652 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
653 `:pre-write-conversion' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
654 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
655 VALUE must be a function to call after all functions in |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
656 `write-region-annotate-functions' and `buffer-file-format' are called, |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
657 and before the text is encoded by the coding system itself. The |
88805 | 658 arguments to this function are the same as those of a function in |
659 `write-region-annotate-functions'. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
660 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
661 `:default-char' |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
662 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
663 VALUE must be a character. On encoding, a character not supported by |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
664 the coding system is replaced with VALUE. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
665 |
89483 | 666 `:for-unibyte' |
667 | |
668 VALUE non-nil means that visiting a file with the coding system | |
669 results in a unibyte buffer. | |
670 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
671 `:eol-type' |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
672 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
673 VALUE must be `unix', `dos', `mac'. The symbol `unix' means Unix-like |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
674 EOL (LF), `dos' means DOS-like EOL (CRLF), and `mac' means MAC-like |
88805 | 675 EOL (CR). If omitted, on decoding, the coding system detects EOL |
676 format automatically, and on encoding, uses Unix-like EOL. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
677 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
678 `:mime-charset' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
679 |
88805 | 680 VALUE must be a symbol whose name is that of a MIME charset converted |
681 to lower case. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
682 |
89437 | 683 `:mime-text-unsuitable' |
684 | |
685 VALUE non-nil means the `:mime-charset' property names a charset which | |
89444
ccdb59cdceed
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
89437
diff
changeset
|
686 is unsuitable for the top-level media type \"text\". |
89437 | 687 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
688 `:flags' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
689 |
88805 | 690 VALUE must be a list of symbols that control the ISO-2022 converter. |
691 Each must be a member of the list `coding-system-iso-2022-flags' | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
692 \(which see). This attribute has a meaning only when `:coding-type' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
693 is `iso-2022'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
694 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
695 `:designation' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
696 |
88805 | 697 VALUE must be a vector [G0-USAGE G1-USAGE G2-USAGE G3-USAGE]. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
698 GN-USAGE specifies the usage of graphic register GN as follows. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
699 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
700 If it is nil, no charset can be designated to GN. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
701 |
88551 | 702 If it is a charset, the charset is initially designated to GN, and |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
703 never used by the other charsets. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
704 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
705 If it is a list, the elements must be charsets, nil, 94, or 96. GN |
88805 | 706 can be used by all the listed charsets. If the list contains 94, any |
707 iso-2022 charset whose code-space ranges are 94 long can be designated | |
708 to GN. If the list contains 96, any charsets whose whose ranges are | |
709 96 long can be designated to GN. If the first element is a charset, | |
710 that charset is initially designated to GN. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
711 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
712 This attribute has a meaning only when `:coding-type' is `iso-2022'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
713 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
714 `:bom' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
715 |
88805 | 716 This attributes specifies whether the coding system uses a `byte order |
717 mark'. VALUE must nil, t, or cons of coding systems whose | |
718 `:coding-type' is `utf-16'. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
719 |
89421
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
720 If the value is nil, on decoding, don't treat the first two-byte as |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
721 BOM, and on encoding, don't produce BOM bytes. |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
722 |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
723 If the value is t, on decoding, skip the first two-byte as BOM, and on |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
724 encoding, produce BOM bytes accoding to the value of `:endian'. |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
725 |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
726 If the value is cons, on decoding, check the first two-byte. If theyq |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
727 are 0xFE 0xFF, use the car part coding system of the value. If they |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
728 are 0xFF 0xFE, use the car part coding system of the value. |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
729 Otherwise, treat them as bytes for a normal character. On encoding, |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
730 produce BOM bytes accoding to the value of `:endian'. |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
731 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
732 This attribute has a meaning only when `:coding-type' is `utf-16'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
733 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
734 `:endian' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
735 |
89421
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
736 VALUE must be `big' or `little' specifying big-endian and |
8357b304ef57
(define-coding-system): Fix docstring about :bom and :endian.
Kenichi Handa <handa@m17n.org>
parents:
89385
diff
changeset
|
737 little-endian respectively. The default value is `big'. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
738 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
739 This attribute has a meaning only when `:coding-type' is `utf-16'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
740 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
741 `:ccl-decoder' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
742 |
88805 | 743 VALUE is a symbol representing the registered CCL program used for |
744 decoding. This attribute has a meaning only when `:coding-type' is | |
745 `ccl'. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
746 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
747 `:ccl-encoder' |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
748 |
88805 | 749 VALUE is a symbol representing the registered CCL program used for |
750 encoding. This attribute has a meaning only when `:coding-type' is | |
751 `ccl'." | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
752 (let* ((common-attrs (mapcar 'list |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
753 '(:mnemonic |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
754 :coding-type |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
755 :charset-list |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
756 :ascii-compatible-p |
89214
c7c628d65cc4
(define-coding-system): Fix typo; "docode" -> "decode".
Kenichi Handa <handa@m17n.org>
parents:
89101
diff
changeset
|
757 :decode-translation-table |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
758 :encode-translation-table |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
759 :post-read-conversion |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
760 :pre-write-conversion |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
761 :default-char |
89539
681ad4b7421f
(define-coding-system): Fix attribute name :for-unibyte.
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
762 :for-unibyte |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
763 :plist |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
764 :eol-type))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
765 (coding-type (plist-get props :coding-type)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
766 (spec-attrs (mapcar 'list |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
767 (cond ((eq coding-type 'iso-2022) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
768 '(:initial |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
769 :reg-usage |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
770 :request |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
771 :flags)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
772 ((eq coding-type 'utf-16) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
773 '(:bom |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
774 :endian)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
775 ((eq coding-type 'ccl) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
776 '(:ccl-decoder |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
777 :ccl-encoder |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
778 :valids)))))) |
17052 | 779 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
780 (dolist (slot common-attrs) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
781 (setcdr slot (plist-get props (car slot)))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
782 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
783 (dolist (slot spec-attrs) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
784 (setcdr slot (plist-get props (car slot)))) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
785 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
786 (if (eq coding-type 'iso-2022) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
787 (let ((designation (plist-get props :designation)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
788 (flags (plist-get props :flags)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
789 (initial (make-vector 4 nil)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
790 (reg-usage (cons 4 4)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
791 request elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
792 (dotimes (i 4) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
793 (setq elt (aref designation i)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
794 (cond ((charsetp elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
795 (aset initial i elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
796 (setq request (cons (cons elt i) request))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
797 ((consp elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
798 (aset initial i (car elt)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
799 (if (charsetp (car elt)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
800 (setq request (cons (cons (car elt) i) request))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
801 (dolist (e (cdr elt)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
802 (cond ((charsetp e) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
803 (setq request (cons (cons e i) request))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
804 ((eq e 94) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
805 (setcar reg-usage i)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
806 ((eq e 96) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
807 (setcdr reg-usage i)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
808 ((eq e t) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
809 (setcar reg-usage i) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
810 (setcdr reg-usage i))))))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
811 (setcdr (assq :initial spec-attrs) initial) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
812 (setcdr (assq :reg-usage spec-attrs) reg-usage) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
813 (setcdr (assq :request spec-attrs) request) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
814 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
815 ;; Change :flags value from a list to a bit-mask. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
816 (let ((bits 0) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
817 (i 0)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
818 (dolist (elt coding-system-iso-2022-flags) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
819 (if (memq elt flags) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
820 (setq bits (logior bits (lsh 1 i)))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
821 (setq i (1+ i))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
822 (setcdr (assq :flags spec-attrs) bits)))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
823 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
824 ;; Add :name and :docstring properties to PROPS. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
825 (setq props |
88562 | 826 (cons :name (cons name (cons :docstring (cons (purecopy docstring) |
827 props))))) | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
828 (setcdr (assq :plist common-attrs) props) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
829 (apply 'define-coding-system-internal |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
830 name (mapcar 'cdr (append common-attrs spec-attrs))))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
831 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
832 (defun coding-system-doc-string (coding-system) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
833 "Return the documentation string for CODING-SYSTEM." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
834 (plist-get (coding-system-plist coding-system) :docstring)) |
17052 | 835 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
836 (defun coding-system-mnemonic (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
837 "Return the mnemonic character of CODING-SYSTEM. |
88805 | 838 The mnemonic character of a coding system is used in mode line to |
839 indicate the coding system. If CODING-SYSTEM. is nil, return ?=." | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
840 (plist-get (coding-system-plist coding-system) :mnemonic)) |
17052 | 841 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
842 (defun coding-system-type (coding-system) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
843 "Return the coding type of CODING-SYSTEM. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
844 A coding type is a symbol indicating the encoding method of CODING-SYSTEM. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
845 See the function `define-coding-system' for more detail." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
846 (plist-get (coding-system-plist coding-system) :coding-type)) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
847 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
848 (defun coding-system-charset-list (coding-system) |
88551 | 849 "Return list of charsets supported by CODING-SYSTEM. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
850 If CODING-SYSTEM supports all ISO-2022 charsets, return `iso-2022'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
851 If CODING-SYSTEM supports all emacs-mule charsets, return `emacs-mule'." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
852 (plist-get (coding-system-plist coding-system) :charset-list)) |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
853 |
89474
d30982a5faa9
(coding-system-category): New function.
Kenichi Handa <handa@m17n.org>
parents:
89465
diff
changeset
|
854 (defun coding-system-category (coding-system) |
d30982a5faa9
(coding-system-category): New function.
Kenichi Handa <handa@m17n.org>
parents:
89465
diff
changeset
|
855 "Return a category symbol of CODING-SYSTEM." |
d30982a5faa9
(coding-system-category): New function.
Kenichi Handa <handa@m17n.org>
parents:
89465
diff
changeset
|
856 (plist-get (coding-system-plist coding-system) :category)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
857 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
858 (defun coding-system-get (coding-system prop) |
88551 | 859 "Extract a value from CODING-SYSTEM's property list for property PROP. |
860 For compatibility with Emacs 20/21, this accepts old-style symbols | |
861 like `mime-charset' as well as the current style like `:mime-charset'." | |
862 (or (plist-get (coding-system-plist coding-system) prop) | |
863 (if (not (keywordp prop)) | |
90212
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
864 ;; For backward compatiblity. |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
865 (if (eq prop 'ascii-incompatible) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
866 (not (plist-get (coding-system-plist coding-system) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
867 :ascii-compatible-p)) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
868 (plist-get (coding-system-plist coding-system) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
869 (intern (concat ":" (symbol-name prop)))))))) |
18312
705da3ce58c0
(coding-system-parent): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
18298
diff
changeset
|
870 |
48155
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
871 (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
|
872 "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
|
873 (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
|
874 (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
|
875 ((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
|
876 ((eq eol-type 2) eol-mnemonic-mac) |
48164
e2f230bb8acc
(coding-system-eol-type-mnemonic): Use
Kenichi Handa <handa@m17n.org>
parents:
48155
diff
changeset
|
877 (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
|
878 (if (stringp val) |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
879 val |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
880 (char-to-string val)))) |
f1434b395146
(coding-system-eol-type-mnemonic): Move from mule-util.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
47874
diff
changeset
|
881 |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
882 (defun coding-system-lessp (x y) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
883 (cond ((eq x 'no-conversion) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
884 ((eq y 'no-conversion) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
885 ((eq x 'emacs-mule) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
886 ((eq y 'emacs-mule) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
887 ((eq x 'undecided) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
888 ((eq y 'undecided) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
889 (t (let ((c1 (coding-system-mnemonic x)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
890 (c2 (coding-system-mnemonic y))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
891 (or (< (downcase c1) (downcase c2)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
892 (and (not (> (downcase c1) (downcase c2))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
893 (< c1 c2))))))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
894 |
57444
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
895 (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
|
896 "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
|
897 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
|
898 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
|
899 (or (eq coding-system-1 coding-system-2) |
90027
1be970d6f282
(coding-system-equal): Fix merging of
Kenichi Handa <handa@m17n.org>
parents:
90016
diff
changeset
|
900 (and (equal (coding-system-plist coding-system-1) |
1be970d6f282
(coding-system-equal): Fix merging of
Kenichi Handa <handa@m17n.org>
parents:
90016
diff
changeset
|
901 (coding-system-plist coding-system-2)) |
57444
5af5500fd1de
(coding-system-equal): Moved from mule-util.el.
Kenichi Handa <handa@m17n.org>
parents:
56345
diff
changeset
|
902 (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
|
903 (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
|
904 (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
|
905 (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
|
906 |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
907 (defun add-to-coding-system-list (coding-system) |
36037 | 908 "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
|
909 (if (or (null coding-system-list) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
910 (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
|
911 (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
|
912 (let ((len (length coding-system-list)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
913 mid (tem coding-system-list)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
914 (while (> len 1) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
915 (setq mid (nthcdr (/ len 2) tem)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
916 (if (coding-system-lessp (car mid) coding-system) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
917 (setq tem mid |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
918 len (- len (/ len 2))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
919 (setq len (/ len 2)))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
920 (setcdr tem (cons coding-system (cdr tem)))))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
921 |
24345
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
922 (defun coding-system-list (&optional base-only) |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
923 "Return a list of all existing non-subsidiary coding systems. |
88805 | 924 If optional arg BASE-ONLY is non-nil, only base coding systems are |
925 listed. The value doesn't include subsidiary coding systems which are | |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
926 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
|
927 formats (e.g. iso-latin-1-unix, koi8-r-dos)." |
90620
b6af682a7e04
(coding-system-list): Be sure to exclude
Kenichi Handa <handa@m17n.org>
parents:
90533
diff
changeset
|
928 (let ((codings nil)) |
b6af682a7e04
(coding-system-list): Be sure to exclude
Kenichi Handa <handa@m17n.org>
parents:
90533
diff
changeset
|
929 (dolist (coding coding-system-list) |
b6af682a7e04
(coding-system-list): Be sure to exclude
Kenichi Handa <handa@m17n.org>
parents:
90533
diff
changeset
|
930 (if (eq (coding-system-base coding) coding) |
b6af682a7e04
(coding-system-list): Be sure to exclude
Kenichi Handa <handa@m17n.org>
parents:
90533
diff
changeset
|
931 (if base-only |
b6af682a7e04
(coding-system-list): Be sure to exclude
Kenichi Handa <handa@m17n.org>
parents:
90533
diff
changeset
|
932 (setq codings (cons coding codings)) |
b6af682a7e04
(coding-system-list): Be sure to exclude
Kenichi Handa <handa@m17n.org>
parents:
90533
diff
changeset
|
933 (dolist (alias (coding-system-aliases coding)) |
b6af682a7e04
(coding-system-list): Be sure to exclude
Kenichi Handa <handa@m17n.org>
parents:
90533
diff
changeset
|
934 (setq codings (cons alias codings)))))) |
24345
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
935 codings)) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
936 |
50181
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
937 (defconst char-coding-system-table nil |
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
938 "This is an obsolete variable. |
b88623fccdf1
* international/mule.el (optimize-char-coding-system-table):
Kenichi Handa <handa@m17n.org>
parents:
50168
diff
changeset
|
939 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
|
940 |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
941 (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
|
942 "For internal use only. |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
943 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
|
944 Value is a list of transformed arguments." |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
945 (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
|
946 (eol-type (plist-get props 'eol-type)) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
947 properties tmp) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
948 (cond |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
949 ((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
|
950 ((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
|
951 ((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
|
952 (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
|
953 (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
|
954 (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
|
955 (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
|
956 (cond |
35946
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
957 ((eq type 'shift-jis) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
958 `(,name 1 ,mnemonic ,doc-string () ,properties ,eol-type)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
959 ((eq type 'iso2022) ; This is not perfect. |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
960 (if (plist-get props 'escape-quoted) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
961 (error "escape-quoted is not supported: %S" |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
962 `(,name ,type ,doc-string ,props))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
963 (let ((g0 (plist-get props 'charset-g0)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
964 (g1 (plist-get props 'charset-g1)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
965 (g2 (plist-get props 'charset-g2)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
966 (g3 (plist-get props 'charset-g3)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
967 (use-roman |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
968 (and |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
969 (eq (cadr (assoc 'latin-jisx0201 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
970 (plist-get props 'input-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
971 'ascii) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
972 (eq (cadr (assoc 'ascii |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
973 (plist-get props 'output-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
974 'latin-jisx0201))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
975 (use-oldjis |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
976 (and |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
977 (eq (cadr (assoc 'japanese-jisx0208-1978 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
978 (plist-get props 'input-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
979 'japanese-jisx0208) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
980 (eq (cadr (assoc 'japanese-jisx0208 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
981 (plist-get props 'output-charset-conversion))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
982 'japanese-jisx0208-1978)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
983 (if (charsetp g0) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
984 (if (plist-get props 'force-g0-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
985 (setq g0 `(nil ,g0)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
986 (setq g0 `(,g0 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
987 (if (charsetp g1) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
988 (if (plist-get props 'force-g1-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
989 (setq g1 `(nil ,g1)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
990 (setq g1 `(,g1 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
991 (if (charsetp g2) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
992 (if (plist-get props 'force-g2-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
993 (setq g2 `(nil ,g2)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
994 (setq g2 `(,g2 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
995 (if (charsetp g3) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
996 (if (plist-get props 'force-g3-on-output) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
997 (setq g3 `(nil ,g3)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
998 (setq g3 `(,g3 t)))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
999 `(,name 2 ,mnemonic ,doc-string |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1000 (,g0 ,g1 ,g2 ,g3 |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1001 ,(plist-get props 'short) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1002 ,(not (plist-get props 'no-ascii-eol)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1003 ,(not (plist-get props 'no-ascii-cntl)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1004 ,(plist-get props 'seven) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1005 t |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1006 ,(not (plist-get props 'lock-shift)) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1007 ,use-roman |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1008 ,use-oldjis |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1009 ,(plist-get props 'no-iso6429) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1010 nil nil nil nil) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1011 ,properties ,eol-type))) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1012 ((eq type 'big5) |
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1013 `(,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
|
1014 ((eq type 'ccl) |
35946
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1015 `(,name 4 ,mnemonic ,doc-string |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1016 (,(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
|
1017 ,properties ,eol-type)) |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1018 (t |
35946
c5fa4e9ce635
(transform-make-coding-system-args): Make
Kenichi Handa <handa@m17n.org>
parents:
35808
diff
changeset
|
1019 (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
|
1020 `(,name ,type ,doc-string ,props)))))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1021 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
1022 (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
|
1023 &optional |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1024 flags |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1025 properties |
dade22d104f2
Modify comment about coding system
Kenichi Handa <handa@m17n.org>
parents:
26887
diff
changeset
|
1026 eol-type) |
21660
9e5b579ba4f9
(make-coding-system): If TYPE is 4, FLAGS
Kenichi Handa <handa@m17n.org>
parents:
21639
diff
changeset
|
1027 "Define a new coding system CODING-SYSTEM (symbol). |
89483 | 1028 This function is provided for backward compatibility. |
1029 Use `define-coding-system' instead." | |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1030 ;; For compatiblity with XEmacs, we check the type of TYPE. If it |
35553 | 1031 ;; is a symbol, perhaps, this function is called with XEmacs-style |
1032 ;; 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
|
1033 ;; Emacs style. |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1034 (if (symbolp type) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1035 (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
|
1036 mnemonic doc-string))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1037 (setq coding-system (car args) |
35491 | 1038 type (nth 1 args) |
35324
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1039 mnemonic (nth 2 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1040 doc-string (nth 3 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1041 flags (nth 4 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1042 properties (nth 5 args) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1043 eol-type (nth 6 args)))) |
dcbb79777f94
(transform-make-coding-system-args): New function.
Kenichi Handa <handa@m17n.org>
parents:
35320
diff
changeset
|
1044 |
89483 | 1045 (setq type |
1046 (cond ((eq type 0) 'emacs-mule) | |
1047 ((eq type 1) 'shift-jis) | |
1048 ((eq type 2) 'iso2022) | |
1049 ((eq type 3) 'big5) | |
1050 ((eq type 4) 'ccl) | |
1051 ((eq type 5) 'raw-text) | |
1052 (t | |
1053 (error "Invalid coding system type: %s" type)))) | |
1054 | |
1055 (setq properties | |
1056 (let ((plist nil) key) | |
1057 (dolist (elt properties) | |
1058 (setq key (car elt)) | |
1059 (cond ((eq key 'post-read-conversion) | |
1060 (setq key :post-read-conversion)) | |
1061 ((eq key 'pre-write-conversion) | |
1062 (setq key :pre-write-conversion)) | |
1063 ((eq key 'translation-table-for-decode) | |
1064 (setq key :decode-translation-table)) | |
1065 ((eq key 'translation-table-for-encode) | |
1066 (setq key :encode-translation-table)) | |
1067 ((eq key 'safe-charsets) | |
1068 (setq key :charset-list)) | |
1069 ((eq key 'mime-charset) | |
1070 (setq key :mime-charset)) | |
1071 ((eq key 'valid-codes) | |
1072 (setq key :valids))) | |
1073 (setq plist (plist-put plist key (cdr elt)))) | |
1074 plist)) | |
89638
1a8a006eeb76
(make-coding-system): Fix generation of properties.
Kenichi Handa <handa@m17n.org>
parents:
89628
diff
changeset
|
1075 (setq properties (plist-put properties :mnemonic mnemonic)) |
89483 | 1076 (plist-put properties :coding-type type) |
1077 (cond ((eq eol-type 0) (setq eol-type 'unix)) | |
1078 ((eq eol-type 1) (setq eol-type 'dos)) | |
1079 ((eq eol-type 2) (setq eol-type 'mac)) | |
1080 ((vectorp eol-type) (setq eol-type nil))) | |
1081 (plist-put properties :eol-type eol-type) | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1082 |
89483 | 1083 (cond |
1084 ((eq type 'iso2022) | |
1085 (plist-put properties :flags | |
1086 (list (and (or (consp (nth 0 flags)) | |
1087 (consp (nth 1 flags)) | |
1088 (consp (nth 2 flags)) | |
1089 (consp (nth 3 flags))) 'designation) | |
1090 (or (nth 4 flags) 'long-form) | |
1091 (and (nth 5 flags) 'ascii-at-eol) | |
1092 (and (nth 6 flags) 'ascii-at-cntl) | |
1093 (and (nth 7 flags) '7-bit) | |
1094 (and (nth 8 flags) 'locking-shift) | |
1095 (and (nth 9 flags) 'single-shift) | |
1096 (and (nth 10 flags) 'use-roman) | |
1097 (and (nth 11 flags) 'use-oldjis) | |
1098 (or (nth 12 flags) 'direction) | |
1099 (and (nth 13 flags) 'init-at-bol) | |
1100 (and (nth 14 flags) 'designate-at-bol) | |
1101 (and (nth 15 flags) 'safe) | |
1102 (and (nth 16 flags) 'latin-extra))) | |
1103 (plist-put properties :designation | |
1104 (let ((vec (make-vector 4 nil))) | |
1105 (dotimes (i 4) | |
1106 (let ((spec (nth i flags))) | |
1107 (if (eq spec t) | |
1108 (aset vec i '(94 96)) | |
1109 (if (consp spec) | |
1110 (progn | |
1111 (if (memq t spec) | |
1112 (setq spec (append (delq t spec) '(94 96)))) | |
1113 (aset vec i spec)))))) | |
1114 vec))) | |
17052 | 1115 |
89483 | 1116 ((eq type 'ccl) |
1117 (plist-put properties :ccl-decoder (car flags)) | |
1118 (plist-put properties :ccl-encoder (cdr flags)))) | |
23456
934152e1b9a4
(make-coding-system): Create -with-esc variant coding system.
Kenichi Handa <handa@m17n.org>
parents:
23281
diff
changeset
|
1119 |
89483 | 1120 (apply 'define-coding-system coding-system doc-string properties)) |
17052 | 1121 |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1122 (defun merge-coding-systems (first second) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1123 "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
|
1124 Return the resulting coding system." |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1125 (let ((base (coding-system-base second)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1126 (eol (coding-system-eol-type second))) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1127 ;; 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
|
1128 (if (eq (coding-system-base first) 'undecided) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1129 (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
|
1130 ;; 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
|
1131 (if (and (vectorp (coding-system-eol-type first)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1132 (numberp eol) (>= eol 0) (<= eol 2)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1133 (setq first (coding-system-change-eol-conversion |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1134 first eol))) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1135 first)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1136 |
52795
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1137 (defun autoload-coding-system (symbol form) |
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1138 "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
|
1139 |
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1140 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
|
1141 (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
|
1142 (setq coding-system-alist (cons (list (symbol-name symbol)) |
68209
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1143 coding-system-alist)) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1144 (dolist (elt '("-unix" "-dos" "-mac")) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1145 (let ((name (concat (symbol-name symbol) elt))) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1146 (put (intern name) 'coding-system-define-form form) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1147 (setq coding-system-alist (cons (list name) coding-system-alist))))) |
52795
2e3d2f94a2ba
(autoload-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
52660
diff
changeset
|
1148 |
58277
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1149 (defun set-buffer-file-coding-system (coding-system &optional force nomodify) |
19162 | 1150 "Set the file coding-system of the current buffer to CODING-SYSTEM. |
1151 This means that when you save the buffer, it will be converted | |
1152 according to CODING-SYSTEM. For a list of possible values of CODING-SYSTEM, | |
1153 use \\[list-coding-systems]. | |
1154 | |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1155 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
|
1156 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
|
1157 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
|
1158 buffer's previous `buffer-file-coding-system' value (if it is |
52289 | 1159 specified there). Otherwise, leave it unspecified. |
26716 | 1160 |
1161 This marks the buffer modified so that the succeeding \\[save-buffer] | |
1162 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
|
1163 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
|
1164 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
|
1165 just set the variable `buffer-file-coding-system' directly." |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
64482
diff
changeset
|
1166 (interactive "zCoding system for saving file (default nil): \nP") |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1167 (check-coding-system coding-system) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1168 (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
|
1169 (setq coding-system |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1170 (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
|
1171 (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
|
1172 ;; 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
|
1173 ;; `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
|
1174 (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
|
1175 (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
|
1176 (unless nomodify |
34e39dcb6763
(set-buffer-file-coding-system): Finish previous change.
Richard M. Stallman <rms@gnu.org>
parents:
58277
diff
changeset
|
1177 (set-buffer-modified-p t)) |
46785
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1178 (force-mode-line-update)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1179 |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1180 (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
|
1181 "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
|
1182 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
|
1183 |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1184 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
|
1185 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
|
1186 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
|
1187 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
|
1188 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
|
1189 usual for visiting a file." |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
64482
diff
changeset
|
1190 (interactive "zCoding system for visited file (default nil): \nP") |
17052 | 1191 (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
|
1192 (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
|
1193 (setq coding-system |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1194 (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
|
1195 (let ((coding-system-for-read coding-system)) |
28581ef4c224
(merge-coding-systems): New function.
Richard M. Stallman <rms@gnu.org>
parents:
46761
diff
changeset
|
1196 (revert-buffer))) |
17052 | 1197 |
48880
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1198 (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
|
1199 "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
|
1200 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
|
1201 see) to CODING-SYSTEM." |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
64482
diff
changeset
|
1202 (interactive "zCoding system for file names (default nil): ") |
48880
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1203 (check-coding-system coding-system) |
64125
9f966287a535
(make-coding-system): Describe
Kenichi Handa <handa@m17n.org>
parents:
64085
diff
changeset
|
1204 (if (and coding-system |
90212
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
1205 (not (coding-system-get coding-system :ascii-compatible-p)) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
1206 (not (coding-system-get coding-system :suitable-for-file-name))) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
1207 (error "%s is not suitable for file names" coding-system)) |
48880
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1208 (setq file-name-coding-system coding-system)) |
669a7bd630a8
(set-file-name-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
48354
diff
changeset
|
1209 |
19162 | 1210 (defvar default-terminal-coding-system nil |
1211 "Default value for the terminal coding system. | |
1212 This is normally set according to the selected language environment. | |
1213 See also the command `set-terminal-coding-system'.") | |
1214 | |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1215 (defun set-terminal-coding-system (coding-system &optional display) |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1216 "Set coding system of terminal output to CODING-SYSTEM. |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1217 All text output to DISPLAY will be encoded |
19162 | 1218 with the specified coding system. |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1219 |
19162 | 1220 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. |
1221 The default is determined by the selected language environment | |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1222 or by the previous use of this command. |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1223 |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1224 DISPLAY may be a display id, a frame, or nil for the selected frame's display. |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1225 The setting has no effect on graphical displays." |
19162 | 1226 (interactive |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1227 (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
|
1228 default-terminal-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1229 default-terminal-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1230 (read-coding-system |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
64482
diff
changeset
|
1231 (format "Coding system for terminal display (default %s): " |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1232 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1233 default)))) |
19162 | 1234 (if (and (not coding-system) |
1235 (not (terminal-coding-system))) | |
1236 (setq coding-system default-terminal-coding-system)) | |
1237 (if coding-system | |
36037 | 1238 (setq default-terminal-coding-system coding-system)) |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1239 (set-terminal-coding-system-internal coding-system display) |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1240 (redraw-frame (selected-frame))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1241 |
19162 | 1242 (defvar default-keyboard-coding-system nil |
1243 "Default value of the keyboard coding system. | |
1244 This is normally set according to the selected language environment. | |
1245 See also the command `set-keyboard-coding-system'.") | |
1246 | |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1247 (defun set-keyboard-coding-system (coding-system &optional display) |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1248 "Set coding system for keyboard input on DISPLAY to CODING-SYSTEM. |
83321
f6ed7ae6fa8d
Replace encoded-kbd-mode with display-specific encoded-kbd-setup-display. (Doesn't work yet.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83304
diff
changeset
|
1249 In addition, this command calls `encoded-kbd-setup-display' to set up the |
f6ed7ae6fa8d
Replace encoded-kbd-mode with display-specific encoded-kbd-setup-display. (Doesn't work yet.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83304
diff
changeset
|
1250 translation of keyboard input events to the specified coding system. |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1251 |
19162 | 1252 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. |
1253 The default is determined by the selected language environment | |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1254 or by the previous use of this command. |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1255 |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1256 DISPLAY may be a display id, a frame, or nil for the selected frame's display. |
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1257 The setting has no effect on graphical displays." |
19162 | 1258 (interactive |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1259 (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
|
1260 default-keyboard-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1261 default-keyboard-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1262 (read-coding-system |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
64482
diff
changeset
|
1263 (format "Coding system for keyboard input (default %s): " |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1264 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
1265 default)))) |
19162 | 1266 (if (and (not coding-system) |
1267 (not (keyboard-coding-system))) | |
1268 (setq coding-system default-keyboard-coding-system)) | |
1269 (if coding-system | |
1270 (setq default-keyboard-coding-system coding-system)) | |
64125
9f966287a535
(make-coding-system): Describe
Kenichi Handa <handa@m17n.org>
parents:
64085
diff
changeset
|
1271 (if (and coding-system |
90212
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
1272 (not (coding-system-get coding-system :ascii-compatible-p)) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
1273 (not (coding-system-get coding-system :suitable-for-keyboard))) |
76ab0b868ab0
(coding-system-get): Check
Kenichi Handa <handa@m17n.org>
parents:
90203
diff
changeset
|
1274 (error "%s is not suitable for keyboard" coding-system)) |
83298
ed09a89e2b25
Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents:
61031
diff
changeset
|
1275 (set-keyboard-coding-system-internal coding-system display) |
38614
2be878396f1e
(set-keyboard-coding-system): Set
Gerd Moellmann <gerd@gnu.org>
parents:
38414
diff
changeset
|
1276 (setq keyboard-coding-system coding-system) |
83321
f6ed7ae6fa8d
Replace encoded-kbd-mode with display-specific encoded-kbd-setup-display. (Doesn't work yet.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83304
diff
changeset
|
1277 (encoded-kbd-setup-display display)) |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1278 |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1279 (defcustom keyboard-coding-system nil |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1280 "Specify coding system for keyboard input. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1281 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
|
1282 8-bit characters, you will have to use ESC to type Meta characters. |
70157
eadcb9a07042
(keyboard-coding-system): defcustom info-link fixes: "Specify Coding" has
Eli Zaretskii <eliz@gnu.org>
parents:
69504
diff
changeset
|
1283 See Info node `Terminal Coding' and Info node `Unibyte Mode'. |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1284 |
49026
4ecab4bfe0cd
(register-char-codings): Don't call
Dave Love <fx@gnu.org>
parents:
48891
diff
changeset
|
1285 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
|
1286 |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1287 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
|
1288 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
|
1289 :type '(coding-system :tag "Coding system") |
70157
eadcb9a07042
(keyboard-coding-system): defcustom info-link fixes: "Specify Coding" has
Eli Zaretskii <eliz@gnu.org>
parents:
69504
diff
changeset
|
1290 :link '(info-link "(emacs)Terminal Coding") |
eadcb9a07042
(keyboard-coding-system): defcustom info-link fixes: "Specify Coding" has
Eli Zaretskii <eliz@gnu.org>
parents:
69504
diff
changeset
|
1291 :link '(info-link "(emacs)Unibyte Mode") |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1292 :set (lambda (symbol value) |
83325
9e41c80c6389
Work around nondeterministic binding of terminal-local variables. (Fixes national character input on ttys.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83321
diff
changeset
|
1293 ;; Don't load encoded-kb unnecessarily. |
9e41c80c6389
Work around nondeterministic binding of terminal-local variables. (Fixes national character input on ttys.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83321
diff
changeset
|
1294 (if (or value (boundp 'encoded-kbd-setup-display)) |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1295 (set-keyboard-coding-system value) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1296 (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
|
1297 :version "22.1" |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1298 :group 'keyboard |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1299 :group 'mule) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
1300 |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1301 (defun set-buffer-process-coding-system (decoding encoding) |
19162 | 1302 "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
|
1303 DECODING is the coding system to be used to decode input from the process, |
19162 | 1304 ENCODING is the coding system to be used to encode output to the process. |
1305 | |
1306 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]." | |
17052 | 1307 (interactive |
30965
d3223b7bcd96
(set-buffer-process-coding-system): Make interactive prompt less confusing.
Miles Bader <miles@gnu.org>
parents:
30877
diff
changeset
|
1308 "zCoding-system for output from the process: \nzCoding-system for input to the process: ") |
17052 | 1309 (let ((proc (get-buffer-process (current-buffer)))) |
1310 (if (null proc) | |
36037 | 1311 (error "No process") |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1312 (check-coding-system decoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1313 (check-coding-system encoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
1314 (set-process-coding-system proc decoding encoding))) |
17052 | 1315 (force-mode-line-update)) |
1316 | |
22836
f3603840ddbc
(set-clipboard-coding-system): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents:
22832
diff
changeset
|
1317 (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
|
1318 |
22741
763e88fd4ca2
(set-selection-coding-system): Renamed from set-clipboard-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
22700
diff
changeset
|
1319 (defun set-selection-coding-system (coding-system) |
47874
4c9cbf50a76c
(set-selection-coding-system): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents:
47708
diff
changeset
|
1320 "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
|
1321 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
|
1322 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
|
1323 (interactive "zCoding system for X selection: ") |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1324 (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
|
1325 (setq selection-coding-system coding-system)) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1326 |
23196 | 1327 ;; Coding system lastly specified by the command |
23030
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1328 ;; set-next-selection-coding-system. |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1329 (defvar last-next-selection-coding-system nil) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1330 |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1331 (defun set-next-selection-coding-system (coding-system) |
88805 | 1332 "Use CODING-SYSTEM for next communication with other window system clients. |
23030
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1333 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
|
1334 (interactive |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1335 (list (read-coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1336 (if last-next-selection-coding-system |
90233
ee12d75eb214
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-85
Miles Bader <miles@gnu.org>
diff
changeset
|
1337 (format "Coding system for the next selection (default %S): " |
23030
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1338 last-next-selection-coding-system) |
88805 | 1339 "Coding system for the next selection: ") |
23030
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1340 last-next-selection-coding-system))) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1341 (if coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1342 (setq last-next-selection-coding-system coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1343 (setq coding-system last-next-selection-coding-system)) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1344 (check-coding-system coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1345 |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1346 (setq next-selection-coding-system coding-system)) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
1347 |
17052 | 1348 (defun set-coding-priority (arg) |
36037 | 1349 "Set priority of coding categories according to ARG. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1350 ARG is a list of coding categories ordered by priority. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1351 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1352 This function is provided for backward compatibility. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1353 Now we have more convenient function `set-coding-system-priority'." |
89465
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
1354 (apply 'set-coding-system-priority |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
1355 (mapcar #'(lambda (x) (symbol-value x)) arg))) |
90104
a01e7a9f1659
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-14
Miles Bader <miles@gnu.org>
parents:
90103
diff
changeset
|
1356 (make-obsolete 'set-coding-priority 'set-coding-system-priority "23.1") |
17052 | 1357 |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1358 ;;; X selections |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1359 |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1360 (defvar ctext-non-standard-encodings-alist |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1361 '(("big5-0" big5 2 big5) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1362 ("ISO8859-14" iso-8859-14 1 latin-iso8859-14) |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1363 ("ISO8859-15" iso-8859-15 1 latin-iso8859-15) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1364 ("gbk-0" gbk 2 chinese-gbk)) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1365 "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
|
1366 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1367 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
|
1368 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
|
1369 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1370 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
|
1371 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1372 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
|
1373 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1374 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
|
1375 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
|
1376 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1377 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
|
1378 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
|
1379 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
|
1380 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1381 CHARSET is a charater set containing characters that are encoded |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1382 in the segment. It can be a list of character sets. |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1383 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1384 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
|
1385 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1386 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
|
1387 `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
|
1388 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
|
1389 `ctext-non-standard-encodings' are used.") |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1390 |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1391 (defvar ctext-non-standard-encodings nil |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1392 "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
|
1393 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
|
1394 `ctext-non-standard-encodings-alist' (which see).") |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1395 |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1396 (defvar ctext-non-standard-encodings-regexp |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1397 (string-to-multibyte |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1398 (concat |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1399 ;; For non-standard encodings. |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1400 "\\(\e%/[0-4][\200-\377][\200-\377]\\([^\002]+\\)\002\\)" |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1401 "\\|" |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1402 ;; For UTF-8 encoding. |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1403 "\\(\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
|
1404 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1405 ;; 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
|
1406 ;; 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
|
1407 ;; 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
|
1408 ;; 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
|
1409 |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1410 (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
|
1411 "Decode LEN characters encoded as Compound Text with Extended Segments." |
89444
ccdb59cdceed
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
89437
diff
changeset
|
1412 ;; We don't need the following because it is expected that this |
ccdb59cdceed
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
89437
diff
changeset
|
1413 ;; function is mainly used for decoding X selection which is not |
ccdb59cdceed
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
89437
diff
changeset
|
1414 ;; that big data. |
ccdb59cdceed
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
89437
diff
changeset
|
1415 ;;(buffer-disable-undo) ; minimize consing due to insertions and deletions |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1416 (save-match-data |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1417 (save-restriction |
89444
ccdb59cdceed
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
89437
diff
changeset
|
1418 (narrow-to-region (point) (+ (point) len)) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1419 (let ((case-fold-search nil) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1420 last-coding-system-used |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1421 pos bytes) |
89444
ccdb59cdceed
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
89437
diff
changeset
|
1422 (decode-coding-region (point-min) (point-max) 'ctext) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1423 (while (re-search-forward ctext-non-standard-encodings-regexp |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1424 nil 'move) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1425 (setq pos (match-beginning 0)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1426 (if (match-beginning 1) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1427 ;; ESC % / [0-4] M L --ENCODING-NAME-- \002 --BYTES-- |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1428 (let* ((M (multibyte-char-to-unibyte (char-after (+ pos 4)))) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1429 (L (multibyte-char-to-unibyte (char-after (+ pos 5)))) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1430 (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
|
1431 (encoding-info (assoc-string |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1432 encoding |
55048
e703f6cf2d7f
(ctext-post-read-conversion): Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
54546
diff
changeset
|
1433 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
|
1434 (coding (if encoding-info |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1435 (nth 1 encoding-info) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1436 (setq encoding (intern (downcase encoding))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1437 (and (coding-system-p encoding) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1438 encoding)))) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1439 (setq bytes (- (+ (* (- M 128) 128) (- L 128)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1440 (- (point) (+ pos 6)))) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1441 (when coding |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1442 (delete-region pos (point)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1443 (forward-char bytes) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1444 (decode-coding-region (- (point) bytes) (point) coding))) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1445 ;; 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
|
1446 (delete-char -3) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1447 (delete-region pos (+ pos 3)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1448 (decode-coding-region pos (point) 'utf-8)))) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1449 (goto-char (point-min)) |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1450 (- (point-max) (point))))) |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1451 |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1452 ;; Return an alist of CHARSET vs CTEXT-USAGE-INFO generated from |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1453 ;; `ctext-non-standard-encodings' and a list specified by the key |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1454 ;; `ctext-non-standard-encodings' for the currrent language |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1455 ;; environment. CTEXT-USAGE-INFO is one of the element of |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1456 ;; `ctext-non-standard-encodings-alist' or nil. In the former case, a |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1457 ;; character in CHARSET is encoded using extended segment. In the |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1458 ;; latter case, a character in CHARSET is encoded using normal ISO2022 |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1459 ;; designation sequence. If a character is not in any of CHARSETs, it |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1460 ;; is encoded using UTF-8 encoding extention. |
52289 | 1461 |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1462 (defun ctext-non-standard-encodings-table () |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1463 (let (table) |
90353
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1464 ;; Setup charsets specified by the key |
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1465 ;; `ctext-non-standard-encodings' for the current language |
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1466 ;; environment and in `ctext-non-standard-encodings'. |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1467 (dolist (encoding (append |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1468 (get-language-info current-language-environment |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1469 'ctext-non-standard-encodings) |
90353
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1470 ctext-non-standard-encodings)) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1471 (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
|
1472 (charset (nth 3 slot))) |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1473 (if (charsetp charset) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1474 (push (cons charset slot) table) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1475 (dolist (cs charset) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1476 (push (cons cs slot) table))))) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1477 |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1478 ;; Next prepend charsets for ISO2022 designation sequence. |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1479 (dolist (charset charset-list) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1480 (let ((final (plist-get (charset-plist charset) :iso-final-char))) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1481 (if (and (integerp final) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1482 (>= final #x40) (<= final #x7e) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1483 ;; Exclude ascii and chinese-cns11643-X. |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1484 (not (eq charset 'ascii)) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1485 (not (string-match "cns11643" (symbol-name charset)))) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1486 (push (cons charset nil) table)))) |
90353
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1487 |
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1488 ;; Returned reversed list so that the charsets specified by the |
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1489 ;; key `ctext-non-standard-encodings' for the current language |
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1490 ;; have the highest priority. |
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1491 (nreverse table))) |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1492 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1493 (defun ctext-pre-write-conversion (from to) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1494 "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
|
1495 |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1496 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
|
1497 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
|
1498 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
|
1499 (save-match-data |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1500 ;; Setup a working buffer if necessary. |
89451
dfec40127cbe
(ctext-non-standard-designations-alist):
Kenichi Handa <handa@m17n.org>
parents:
89444
diff
changeset
|
1501 (when (stringp from) |
dfec40127cbe
(ctext-non-standard-designations-alist):
Kenichi Handa <handa@m17n.org>
parents:
89444
diff
changeset
|
1502 (set-buffer (generate-new-buffer " *temp")) |
dfec40127cbe
(ctext-non-standard-designations-alist):
Kenichi Handa <handa@m17n.org>
parents:
89444
diff
changeset
|
1503 (set-buffer-multibyte (multibyte-string-p from)) |
dfec40127cbe
(ctext-non-standard-designations-alist):
Kenichi Handa <handa@m17n.org>
parents:
89444
diff
changeset
|
1504 (insert from)) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1505 |
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1506 ;; 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
|
1507 (let ((encoding-table (ctext-non-standard-encodings-table)) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1508 last-coding-system-used |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1509 last-pos last-encoding-info |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1510 encoding-info end-pos ch) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1511 (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
|
1512 (setq end-pos (point-marker)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1513 (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
|
1514 ;; 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
|
1515 (setq last-pos (match-beginning 0) |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1516 ch (char-after last-pos) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1517 last-encoding-info (catch 'tag |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1518 (dolist (elt encoding-table) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1519 (if (encode-char ch (car elt)) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1520 (throw 'tag (cdr elt)))) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1521 'utf-8)) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1522 (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
|
1523 (goto-char (1+ last-pos)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1524 (catch 'tag |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1525 (while t |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1526 (setq encoding-info |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1527 (if (< (point) end-pos) |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1528 (catch 'tag |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1529 (setq ch (following-char)) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1530 (dolist (elt encoding-table) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1531 (if (encode-char ch (car elt)) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1532 (throw 'tag (cdr elt)))) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1533 'utf-8))) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1534 (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
|
1535 (cond ((consp last-encoding-info) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1536 ;; 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
|
1537 ;; segment. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1538 (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
|
1539 (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
|
1540 (noctets (nth 2 last-encoding-info)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1541 len) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1542 (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
|
1543 (setq len (+ (length encoding-name) 1 |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1544 (- (point) last-pos))) |
90356
c363a0b675ba
(ctext-pre-write-conversion): Produce
Kenichi Handa <handa@m17n.org>
parents:
90353
diff
changeset
|
1545 ;; According to the spec of CTEXT, it is not |
90358 | 1546 ;; necessary to produce this extra designation |
90357 | 1547 ;; sequence, but some buggy application |
1548 ;; (e.g. crxvt-gb) requires it. | |
90356
c363a0b675ba
(ctext-pre-write-conversion): Produce
Kenichi Handa <handa@m17n.org>
parents:
90353
diff
changeset
|
1549 (insert "\e(B") |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1550 (save-excursion |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1551 (goto-char last-pos) |
90324
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1552 (insert (format "\e%%/%d" noctets)) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1553 (insert-byte (+ (/ len 128) 128) 1) |
b3b869baa1c3
(ctext-non-standard-encodings-alist): Add an entry for gbk-0. Set
Kenichi Handa <handa@m17n.org>
parents:
90269
diff
changeset
|
1554 (insert-byte (+ (% len 128) 128) 1) |
90353
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1555 (insert encoding-name) |
6e94ff6be848
(ctext-non-standard-encodings-table):
Kenichi Handa <handa@m17n.org>
parents:
90324
diff
changeset
|
1556 (insert 2)))) |
53240
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1557 ((eq last-encoding-info 'utf-8) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1558 ;; 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
|
1559 ;; extention. |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1560 (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
|
1561 (save-excursion |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1562 (goto-char last-pos) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1563 (insert "\e%G")) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1564 (insert "\e%@"))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1565 (setq last-pos (point) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1566 last-encoding-info encoding-info)) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1567 (if (< (point) end-pos) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1568 (forward-char 1) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1569 (throw 'tag nil))))) |
ee5206ee4439
(ctext-non-standard-encodings-alist): Change the format.
Kenichi Handa <handa@m17n.org>
parents:
53048
diff
changeset
|
1570 (set-marker end-pos nil) |
51313
36fa2cf14d0c
(ctext-non-standard-encodings-alist):
Kenichi Handa <handa@m17n.org>
parents:
51080
diff
changeset
|
1571 (goto-char (point-min)))) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1572 ;; 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
|
1573 nil) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1574 |
17052 | 1575 ;;; FILE I/O |
1576 | |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1577 (defcustom auto-coding-alist |
77328
212f98e1241b
(auto-coding-alist): no-conversion for .exe and .EXE.
Chong Yidong <cyd@stupidchicken.com>
parents:
76940
diff
changeset
|
1578 ;; .exe and .EXE are added to support archive-mode looking at DOS |
212f98e1241b
(auto-coding-alist): no-conversion for .exe and .EXE.
Chong Yidong <cyd@stupidchicken.com>
parents:
76940
diff
changeset
|
1579 ;; self-extracting exe archives. |
84663
f9580a1df229
(auto-coding-alist): Rar archives are binary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
83648
diff
changeset
|
1580 '(("\\.\\(\ |
f9580a1df229
(auto-coding-alist): Rar archives are binary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
83648
diff
changeset
|
1581 arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|exe\\|rar\\|\ |
f9580a1df229
(auto-coding-alist): Rar archives are binary.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
83648
diff
changeset
|
1582 ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|EXE\\|RAR\\)\\'" . no-conversion) |
69367
f4bef16905cb
(auto-coding-alist): Add .odt (OpenOffice's open document) files.
Eli Zaretskii <eliz@gnu.org>
parents:
68381
diff
changeset
|
1583 ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion) |
45417
fe2a8cd911d0
(auto-coding-alist): Use no-conversion
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
43558
diff
changeset
|
1584 ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion) |
61031
58d0ad735f41
(auto-coding-alist): Associate non-ascii
Juri Linkov <juri@jurta.org>
parents:
60987
diff
changeset
|
1585 ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion) |
77617
7f67adabb125
(auto-coding-alist): Add pdf => no-conversion.
Richard M. Stallman <rms@gnu.org>
parents:
77328
diff
changeset
|
1586 ("\\.pdf\\'" . no-conversion) |
45418
8a2b953f3d6c
(auto-coding-alist): Use emacs-mule
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
45417
diff
changeset
|
1587 ("/#[^/]+#\\'" . emacs-mule)) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1588 "Alist of filename patterns vs corresponding coding systems. |
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1589 Each element looks like (REGEXP . CODING-SYSTEM). |
22819
da7ae4205e0b
(auto-coding-alist): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
22813
diff
changeset
|
1590 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
|
1591 |
22826
e81f7de474b3
(auto-coding-alist): Another doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22819
diff
changeset
|
1592 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
|
1593 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
|
1594 and the contents of `file-coding-system-alist'." |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1595 :group 'files |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1596 :group 'mule |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1597 :type '(repeat (cons (regexp :tag "File name regexp") |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1598 (symbol :tag "Coding system")))) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1599 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1600 (defcustom auto-coding-regexp-alist |
69504
112d44d51c3e
(auto-coding-regexp-alist): Add entries
Kenichi Handa <handa@m17n.org>
parents:
69367
diff
changeset
|
1601 '(("^BABYL OPTIONS:[ \t]*-\\*-[ \t]*rmail[ \t]*-\\*-" . no-conversion) |
112d44d51c3e
(auto-coding-regexp-alist): Add entries
Kenichi Handa <handa@m17n.org>
parents:
69367
diff
changeset
|
1602 ("\\`\xFE\xFF" . utf-16be-with-signature) |
112d44d51c3e
(auto-coding-regexp-alist): Add entries
Kenichi Handa <handa@m17n.org>
parents:
69367
diff
changeset
|
1603 ("\\`\xFF\xFE" . utf-16le-with-signature) |
90370
e3bacb89536a
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-46
Miles Bader <miles@gnu.org>
diff
changeset
|
1604 ("\\`\xEF\xBB\xBF" . utf-8) |
90107
02eaf6dd9258
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-17
Miles Bader <miles@gnu.org>
parents:
90104
diff
changeset
|
1605 ("\\`;ELC\024\0\0\0" . emacs-mule)) ; Emacs 20-compiled |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1606 "Alist of patterns vs corresponding coding systems. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1607 Each element looks like (REGEXP . CODING-SYSTEM). |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1608 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
|
1609 |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1610 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
|
1611 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
|
1612 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
|
1613 :group 'files |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1614 :group 'mule |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1615 :type '(repeat (cons (regexp :tag "Regexp") |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1616 (symbol :tag "Coding system")))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1617 |
68209
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1618 (defun auto-coding-regexp-alist-lookup (from to) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1619 "Lookup `auto-coding-regexp-alist' for the contents of the current buffer. |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1620 The value is a coding system is specified for the region FROM and TO, |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1621 or nil." |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1622 (save-excursion |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1623 (goto-char from) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1624 (let ((alist auto-coding-regexp-alist) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1625 coding-system) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1626 (while (and alist (not coding-system)) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1627 (let ((regexp (car (car alist)))) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1628 (if enable-multibyte-characters |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1629 (setq regexp (string-to-multibyte regexp))) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1630 (if (re-search-forward regexp to t) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1631 (setq coding-system (cdr (car alist))) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1632 (setq alist (cdr alist))))) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1633 coding-system))) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1634 |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1635 ;; 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
|
1636 (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
|
1637 sgml-html-meta-auto-coding-function) |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1638 "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
|
1639 |
51978
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1640 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
|
1641 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
|
1642 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
|
1643 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
|
1644 characters (starting from point) it should look at. |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1645 |
51978
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1646 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
|
1647 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
|
1648 should return nil. |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1649 |
afa6be6a5c62
(auto-coding-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
51314
diff
changeset
|
1650 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
|
1651 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
|
1652 :group 'files |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1653 :group 'mule |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1654 :type '(repeat function)) |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
1655 |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1656 (defvar set-auto-coding-for-load nil |
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1657 "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
|
1658 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
|
1659 |
24602
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1660 (defun auto-coding-alist-lookup (filename) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1661 "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
|
1662 (let ((alist auto-coding-alist) |
49549
99be3a1e2589
Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents:
49417
diff
changeset
|
1663 (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
|
1664 coding-system) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1665 (while (and alist (not coding-system)) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1666 (if (string-match (car (car alist)) filename) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1667 (setq coding-system (cdr (car alist))) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1668 (setq alist (cdr alist)))) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1669 coding-system)) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1670 |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1671 (put 'enable-character-translation 'permanent-local t) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1672 (put 'enable-character-translation 'safe-local-variable 'booleanp) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1673 |
64482
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1674 (defun find-auto-coding (filename size) |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1675 "Find a 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
|
1676 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
|
1677 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
|
1678 |
46675 | 1679 The function checks FILENAME against the variable `auto-coding-alist'. |
1680 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
|
1681 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
|
1682 `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
|
1683 `coding:' tag in the first one or two lines following point. If no |
46675 | 1684 `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
|
1685 3K bytes out of the SIZE bytes. Finally, if none of these methods |
46675 | 1686 succeed, it checks to see if any function in `auto-coding-functions' |
1687 gives a match. | |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1688 |
64482
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1689 If a coding system is specifed, the return value is a |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1690 cons (CODING . SOURCE), where CODING is the specified coding |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1691 system and SOURCE is a symbol `auto-coding-alist', |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1692 `auto-coding-regexp-alist', `coding:', or `auto-coding-functions' |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1693 indicating by what CODING is specified. Note that the validity |
75513
99dc233f3753
(find-auto-coding): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
75347
diff
changeset
|
1694 of CODING is not checked; it's the caller's responsibility to check it. |
64482
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1695 |
68209
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1696 If nothing is specified, the return value is nil." |
64482
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1697 (or (let ((coding-system (auto-coding-alist-lookup filename))) |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1698 (if coding-system |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1699 (cons coding-system 'auto-coding-alist))) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1700 ;; Try using `auto-coding-regexp-alist'. |
68209
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1701 (let ((coding-system (auto-coding-regexp-alist-lookup (point) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1702 (+ (point) size)))) |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1703 (if coding-system |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1704 (cons coding-system 'auto-coding-regexp-alist))) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1705 (let* ((case-fold-search t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1706 (head-start (point)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1707 (head-end (+ head-start (min size 1024))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1708 (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
|
1709 (tail-end (+ head-start size)) |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1710 coding-system head-found tail-found pos char-trans) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1711 ;; 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
|
1712 ;; 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
|
1713 (setq head-found (or (search-forward "coding:" head-end t) |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1714 (search-forward "unibyte:" head-end t) |
73799
223a7f633c49
(make-char): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
73151
diff
changeset
|
1715 (search-forward "enable-character-translation:" |
71255
ea0fe02fbe1b
(find-auto-coding): Don't handle the short name `char-trans'.
Kenichi Handa <handa@m17n.org>
parents:
71220
diff
changeset
|
1716 head-end t))) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1717 (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
|
1718 ;; Head and tail are overlapped. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1719 (setq tail-found head-found) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1720 (goto-char tail-start) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1721 (setq tail-found (or (search-forward "coding:" tail-end t) |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1722 (search-forward "unibyte:" tail-end t) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1723 (search-forward "enable-character-translation:" |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1724 tail-end t)))) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1725 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1726 ;; At first check the head. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1727 (when head-found |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1728 (goto-char head-start) |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1729 (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
|
1730 (setq head-start (point)) |
42011
235915876f5b
(set-auto-coding): Don't search for
Eli Zaretskii <eliz@gnu.org>
parents:
41983
diff
changeset
|
1731 (when (and head-end (< head-found head-end)) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1732 (goto-char head-start) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1733 (when (and set-auto-coding-for-load |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1734 (re-search-forward |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1735 "\\(.*;\\)?[ \t]*unibyte:[ \t]*\\([^ ;]+\\)" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1736 head-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1737 (setq coding-system 'raw-text)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1738 (when (and (not coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1739 (re-search-forward |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1740 "\\(.*;\\)?[ \t]*coding:[ \t]*\\([^ ;]+\\)" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1741 head-end t)) |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1742 (setq coding-system (intern (match-string 2)))) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1743 (when (re-search-forward |
71255
ea0fe02fbe1b
(find-auto-coding): Don't handle the short name `char-trans'.
Kenichi Handa <handa@m17n.org>
parents:
71220
diff
changeset
|
1744 "\\(.*;\\)?[ \t]*enable-character-translation:[ \t]*\\([^ ;]+\\)" |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1745 head-end t) |
71255
ea0fe02fbe1b
(find-auto-coding): Don't handle the short name `char-trans'.
Kenichi Handa <handa@m17n.org>
parents:
71220
diff
changeset
|
1746 (setq char-trans (match-string 2))))) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1747 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1748 ;; 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
|
1749 ;; 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
|
1750 ;; is just "\r" and we can't use "^" nor "$" in regexp. |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1751 (when (and tail-found (or (not coding-system) (not char-trans))) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1752 (goto-char tail-start) |
76286
2b80d4245e1d
(find-auto-coding): Don't search for line-ending characters past the
Chong Yidong <cyd@stupidchicken.com>
parents:
75513
diff
changeset
|
1753 (re-search-forward "[\r\n]\^L" tail-end t) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1754 (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
|
1755 "[\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
|
1756 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
|
1757 ;; 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
|
1758 ;; 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
|
1759 ;; in its line. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1760 (let* ((prefix (regexp-quote (match-string 1))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1761 (suffix (regexp-quote (match-string 2))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1762 (re-coding |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1763 (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
|
1764 "[\r\n]" prefix |
39947
9c7e9fea58dc
(set-auto-coding): Fix regexps for local
Gerd Moellmann <gerd@gnu.org>
parents:
38614
diff
changeset
|
1765 ;; 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
|
1766 ;; 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
|
1767 "[ \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
|
1768 suffix "[\r\n]")) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1769 (re-unibyte |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1770 (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
|
1771 "[\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
|
1772 "[ \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
|
1773 suffix "[\r\n]")) |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1774 (re-char-trans |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1775 (concat |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1776 "[\r\n]" prefix |
71255
ea0fe02fbe1b
(find-auto-coding): Don't handle the short name `char-trans'.
Kenichi Handa <handa@m17n.org>
parents:
71220
diff
changeset
|
1777 "[ \t]*enable-character-translation[ \t]*:[ \t]*\\([^ \t\r\n]+\\)[ \t]*" |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1778 suffix "[\r\n]")) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1779 (re-end |
55885
9d46d8e2e70b
(register-char-codings): Make alias for `ignore'. Move docstring to
Juanma Barranquero <lekktu@gmail.com>
parents:
55048
diff
changeset
|
1780 (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
|
1781 "[\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
|
1782 (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
|
1783 (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
|
1784 (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
|
1785 (setq tail-end (point)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1786 (goto-char pos) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1787 (when (and set-auto-coding-for-load |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1788 (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
|
1789 (setq coding-system 'raw-text)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1790 (when (and (not coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1791 (re-search-forward re-coding tail-end t)) |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1792 (setq coding-system (intern (match-string 1)))) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1793 (when (and (not char-trans) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1794 (re-search-forward re-char-trans tail-end t)) |
71255
ea0fe02fbe1b
(find-auto-coding): Don't handle the short name `char-trans'.
Kenichi Handa <handa@m17n.org>
parents:
71220
diff
changeset
|
1795 (setq char-trans (match-string 1)))))) |
71156
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1796 (if coding-system |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1797 ;; If the coding-system name ends with "!", remove it and |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1798 ;; set char-trans to "nil". |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1799 (let ((name (symbol-name coding-system))) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1800 (if (= (aref name (1- (length name))) ?!) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1801 (setq coding-system (intern (substring name 0 -1)) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1802 char-trans "nil")))) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1803 (when (and char-trans |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1804 (not (setq char-trans (intern char-trans)))) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1805 (make-local-variable 'enable-character-translation) |
bb2f67aa85f1
(enable-character-translation): Put
Kenichi Handa <handa@m17n.org>
parents:
71154
diff
changeset
|
1806 (setq enable-character-translation nil)) |
64482
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1807 (if coding-system |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1808 (cons coding-system :coding))) |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1809 ;; 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
|
1810 (let ((funcs auto-coding-functions) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1811 (coding-system nil)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1812 (while (and funcs (not coding-system)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1813 (setq coding-system (condition-case e |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1814 (save-excursion |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1815 (goto-char (point-min)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1816 (funcall (pop funcs) size)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
1817 (error nil)))) |
64482
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1818 (if coding-system |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1819 (cons coding-system 'auto-coding-functions))))) |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1820 |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1821 (defun set-auto-coding (filename size) |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1822 "Return coding system for a file FILENAME of which SIZE bytes follow point. |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1823 See `find-auto-coding' for how the coding system is found. |
68209
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1824 Return nil if an invalid coding system is found. |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1825 |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1826 The variable `set-auto-coding-function' (which see) is set to this |
ac1d7b21ddfc
(autoload-coding-system): Prepare for EOL variants.
Kenichi Handa <handa@m17n.org>
parents:
67517
diff
changeset
|
1827 function by default." |
64482
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1828 (let ((found (find-auto-coding filename size))) |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1829 (if (and found (coding-system-p (car found))) |
62fe32ed4496
(find-auto-coding): New function created
Kenichi Handa <handa@m17n.org>
parents:
64125
diff
changeset
|
1830 (car found)))) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1831 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1832 (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
|
1833 |
59208
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1834 ;; This variable is set in these two cases: |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1835 ;; (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
|
1836 ;; 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
|
1837 ;; coding-system-for-read. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1838 ;; (2) A buffer is saved. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1839 ;; 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
|
1840 ;; last-coding-system-used. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1841 ;; 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
|
1842 (defvar buffer-file-coding-system-explicit nil |
59208
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1843 "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
|
1844 Internal use only.") |
59226
1d3fcf11a9ad
(buffer-file-coding-system-explicit):
Kenichi Handa <handa@m17n.org>
parents:
59208
diff
changeset
|
1845 (make-variable-buffer-local 'buffer-file-coding-system-explicit) |
1d3fcf11a9ad
(buffer-file-coding-system-explicit):
Kenichi Handa <handa@m17n.org>
parents:
59208
diff
changeset
|
1846 (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
|
1847 |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1848 (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
|
1849 "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
|
1850 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
|
1851 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
|
1852 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
|
1853 different if the buffer has become unibyte. |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1854 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
|
1855 (if (and visit |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1856 coding-system-for-read |
34a8622540ad
(explicit-buffer-file-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
59187
diff
changeset
|
1857 (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
|
1858 (setq buffer-file-coding-system-explicit coding-system-for-read)) |
17052 | 1859 (if last-coding-system-used |
1860 (let ((coding-system | |
90046
b637c617432f
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-72
Miles Bader <miles@gnu.org>
diff
changeset
|
1861 (find-new-buffer-file-coding-system last-coding-system-used))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1862 (when coding-system |
58277
a8baec933fd4
(set-buffer-file-coding-system): New arg NOMODIFY.
Richard M. Stallman <rms@gnu.org>
parents:
58149
diff
changeset
|
1863 ;; 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
|
1864 ;; 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
|
1865 ;; 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
|
1866 ;; check the modtime, and we don't want to do that again now. |
90046
b637c617432f
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-72
Miles Bader <miles@gnu.org>
diff
changeset
|
1867 (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
|
1868 inserted) |
17052 | 1869 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
1870 ;; The coding-spec and eol-type of coding-system returned is decided |
17052 | 1871 ;; independently in the following order. |
1872 ;; 1. That of buffer-file-coding-system locally bound. | |
1873 ;; 2. That of CODING. | |
1874 | |
1875 (defun find-new-buffer-file-coding-system (coding) | |
1876 "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
|
1877 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
|
1878 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
|
1879 Return nil if there's no need to set `buffer-file-coding-system'." |
17052 | 1880 (let (local-coding local-eol |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1881 found-coding found-eol |
17052 | 1882 new-coding new-eol) |
1883 (if (null coding) | |
1884 ;; Nothing found about coding. | |
1885 nil | |
1886 | |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1887 ;; 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
|
1888 ;; and LOCAL-CODING. |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1889 (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
|
1890 (if (null (numberp local-eol)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1891 ;; 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
|
1892 (setq local-eol nil)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1893 (if (and buffer-file-coding-system |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1894 (not (eq (coding-system-type buffer-file-coding-system) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1895 'undecided))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1896 (setq local-coding (coding-system-base buffer-file-coding-system))) |
17052 | 1897 |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1898 (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
|
1899 local-eol local-coding) |
17052 | 1900 ;; The current buffer has already set full coding-system, we |
1901 ;; had better not change it. | |
1902 nil | |
1903 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
1904 (setq found-eol (coding-system-eol-type coding)) |
17052 | 1905 (if (null (numberp found-eol)) |
22903
77e68af369b1
(find-new-buffer-file-coding-system): When
Eli Zaretskii <eliz@gnu.org>
parents:
22884
diff
changeset
|
1906 ;; But eol-type is not found. |
77e68af369b1
(find-new-buffer-file-coding-system): When
Eli Zaretskii <eliz@gnu.org>
parents:
22884
diff
changeset
|
1907 ;; 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
|
1908 (setq found-eol (if inhibit-eol-conversion 0))) |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1909 (setq found-coding (coding-system-base coding)) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1910 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1911 (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
|
1912 ;; No valid coding information found. |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1913 nil |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1914 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1915 ;; Some coding information (eol or text) found. |
17052 | 1916 |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1917 ;; 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
|
1918 (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
|
1919 (or local-coding found-coding) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1920 (or found-coding local-coding))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1921 (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
|
1922 (or local-eol found-eol) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1923 (or found-eol local-eol))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1924 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1925 (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
|
1926 (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
|
1927 (aref eol-type new-eol) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1928 new-coding))))))) |
17052 | 1929 |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1930 (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
|
1931 "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
|
1932 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
|
1933 `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
|
1934 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1935 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
|
1936 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
|
1937 If it is `process', it affects `process-coding-system-alist' (which see). |
23196 | 1938 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
|
1939 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1940 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
|
1941 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
|
1942 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
|
1943 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
|
1944 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1945 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
|
1946 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
|
1947 for decoding and encoding respectively, |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
1948 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
|
1949 (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
|
1950 (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
|
1951 (or (stringp regexp) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1952 (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
|
1953 (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
|
1954 (if (symbolp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1955 (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
|
1956 (progn |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1957 (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
|
1958 (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
|
1959 (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
|
1960 (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
|
1961 (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
|
1962 (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
|
1963 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1964 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1965 (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
|
1966 (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
|
1967 file-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1968 ((eq target-type 'process) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1969 (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
|
1970 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1971 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1972 (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
|
1973 (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
|
1974 process-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1975 (t |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1976 (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
|
1977 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1978 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1979 (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
|
1980 (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
|
1981 network-coding-system-alist))))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1982 |
49417
c0097d579165
(decode-coding-inserted-region): Renamed
Kenichi Handa <handa@m17n.org>
parents:
49376
diff
changeset
|
1983 (defun decode-coding-inserted-region (from to filename |
c0097d579165
(decode-coding-inserted-region): Renamed
Kenichi Handa <handa@m17n.org>
parents:
49376
diff
changeset
|
1984 &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
|
1985 "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
|
1986 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
|
1987 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
|
1988 of the function `insert-file-contents'. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1989 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
|
1990 (save-excursion |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
1991 (save-restriction |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1992 (let ((coding coding-system-for-read) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1993 undo-list-saved) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1994 (if visit |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1995 ;; 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
|
1996 ;; text of a visited file. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1997 (setq buffer-undo-list t) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
1998 ;; 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
|
1999 ;; remove it and get ready to replace it later. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2000 ;; 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
|
2001 (let ((last (car-safe buffer-undo-list))) |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2002 (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
|
2003 (setq undo-list-saved (cdr buffer-undo-list) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2004 buffer-undo-list t)))) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2005 (narrow-to-region from to) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2006 (goto-char (point-min)) |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2007 (or coding |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2008 (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
|
2009 filename (- (point-max) (point-min))))) |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2010 (or coding |
52660
99ed1d8cf6da
(decode-coding-inserted-region): Use car
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
2011 (setq coding (car (find-operation-coding-system |
99ed1d8cf6da
(decode-coding-inserted-region): Use car
Kenichi Handa <handa@m17n.org>
parents:
52401
diff
changeset
|
2012 'insert-file-contents |
70947
48b2a1baa586
(decode-coding-inserted-region): Call
Kenichi Handa <handa@m17n.org>
parents:
70879
diff
changeset
|
2013 (cons filename (current-buffer)) |
48b2a1baa586
(decode-coding-inserted-region): Call
Kenichi Handa <handa@m17n.org>
parents:
70879
diff
changeset
|
2014 visit beg end replace)))) |
49376
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2015 (if (coding-system-p coding) |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2016 (or enable-multibyte-characters |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2017 (setq coding |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2018 (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
|
2019 (setq coding nil)) |
ed922baa8df3
(decode-coding-region-as-inserted-from-file): New function.
Kenichi Handa <handa@m17n.org>
parents:
49252
diff
changeset
|
2020 (if coding |
56345
84f77e8cff58
(decode-coding-inserted-region): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
56344
diff
changeset
|
2021 (decode-coding-region (point-min) (point-max) coding) |
59119
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2022 (setq last-coding-system-used coding)) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2023 ;; 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
|
2024 ;; the undo list should start out empty. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2025 (if visit |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2026 (setq buffer-undo-list nil) |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2027 ;; 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
|
2028 ;; do so now. |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2029 (if undo-list-saved |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2030 (setq buffer-undo-list |
803b2fab7ec1
(decode-coding-inserted-region):
Richard M. Stallman <rms@gnu.org>
parents:
58285
diff
changeset
|
2031 (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
|
2032 |
59175
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2033 (defun recode-region (start end new-coding coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2034 "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
|
2035 (interactive |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2036 (list (region-beginning) (region-end) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2037 (read-coding-system "Text was really in: ") |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2038 (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
|
2039 (read-coding-system |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2040 (concat "But was interpreted as" |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2041 (if coding (format " (default %S): " coding) ": ")) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2042 coding)))) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2043 (or (and new-coding coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2044 (error "Coding system not specified")) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2045 ;; Check it before we encode the region. |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2046 (check-coding-system new-coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2047 (save-restriction |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2048 (narrow-to-region start end) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2049 (encode-coding-region (point-min) (point-max) coding) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2050 (decode-coding-region (point-min) (point-max) new-coding))) |
a9efc32867d2
(recode-region): New function.
Kenichi Handa <handa@m17n.org>
parents:
59119
diff
changeset
|
2051 |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2052 (defun make-translation-table (&rest args) |
36262 | 2053 "Make a translation table from arguments. |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
2054 A translation table is a char table intended for character |
36262 | 2055 translation in CCL programs. |
2056 | |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
2057 Each argument is a list of elements of the form (FROM . TO), where FROM |
36262 | 2058 is a character to be translated to TO. |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2059 |
35481
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
2060 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
|
2061 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
|
2062 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
|
2063 (let ((table (make-char-table 'translation-table)) |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2064 revlist) |
89465
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2065 (dolist (elts args) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2066 (dolist (elt elts) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2067 (let ((from (car elt)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2068 (to (cdr elt)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2069 to-alt rev-from rev-to) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2070 ;; If we have already translated TO to TO-ALT, FROM should |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2071 ;; also be translated to TO-ALT. |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2072 (if (setq to-alt (aref table to)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2073 (setq to to-alt)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2074 (aset table from to) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2075 ;; If we have already translated some chars to FROM, they |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2076 ;; should also be translated to TO. |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2077 (when (setq rev-from (assq from revlist)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2078 (dolist (elt (cdr rev-from)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2079 (aset table elt to)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2080 (setq revlist (delq rev-from revlist) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2081 rev-from (cdr rev-from))) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2082 ;; Now update REVLIST. |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2083 (setq rev-to (assq to revlist)) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2084 (if rev-to |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2085 (setcdr rev-to (cons from (cdr rev-to))) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2086 (setq rev-to (list to from) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2087 revlist (cons rev-to revlist))) |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2088 (if rev-from |
1a44cedd7a0b
(set-coding-priority): Re-written.
Kenichi Handa <handa@m17n.org>
parents:
89451
diff
changeset
|
2089 (setcdr rev-to (append rev-from (cdr rev-to))))))) |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2090 ;; Return TABLE just created. |
89877
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2091 (set-char-table-extra-slot table 1 1) |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2092 table)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
2093 |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2094 (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
|
2095 "Make translation table from decoding vector VEC. |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2096 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
|
2097 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
|
2098 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
|
2099 (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
|
2100 (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
|
2101 ch) |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2102 (dotimes (i 256) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2103 (setq ch (aref vec i)) |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2104 (when ch |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2105 (aset table i ch) |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2106 (if (>= ch 256) |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
2107 (aset rev-table ch i)))) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2108 (set-char-table-extra-slot table 0 rev-table) |
89877
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2109 (set-char-table-extra-slot table 1 1) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2110 (set-char-table-extra-slot rev-table 1 1) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2111 table)) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
2112 |
89855
182d3c31dea9
(define-translation-table): New function.
Kenichi Handa <handa@m17n.org>
parents:
89839
diff
changeset
|
2113 (defun make-translation-table-from-alist (alist) |
182d3c31dea9
(define-translation-table): New function.
Kenichi Handa <handa@m17n.org>
parents:
89839
diff
changeset
|
2114 "Make translation table from N<->M mapping in ALIST. |
182d3c31dea9
(define-translation-table): New function.
Kenichi Handa <handa@m17n.org>
parents:
89839
diff
changeset
|
2115 ALIST is an alist, each element has the form (FROM . TO). |
182d3c31dea9
(define-translation-table): New function.
Kenichi Handa <handa@m17n.org>
parents:
89839
diff
changeset
|
2116 FROM and TO are a character or a vector of characters. |
182d3c31dea9
(define-translation-table): New function.
Kenichi Handa <handa@m17n.org>
parents:
89839
diff
changeset
|
2117 If FROM is a character, that character is translated to TO. |
182d3c31dea9
(define-translation-table): New function.
Kenichi Handa <handa@m17n.org>
parents:
89839
diff
changeset
|
2118 If FROM is a vector of characters, that sequence is translated to TO. |
89877
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2119 The first extra-slot of the value is a translation table for reverse mapping." |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2120 (let ((tables (vector (make-char-table 'translation-table) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2121 (make-char-table 'translation-table))) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2122 table max-lookup from to idx val) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2123 (dotimes (i 2) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2124 (setq table (aref tables i)) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2125 (setq max-lookup 1) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2126 (dolist (elt alist) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2127 (if (= i 0) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2128 (setq from (car elt) to (cdr elt)) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2129 (setq from (cdr elt) to (car elt))) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2130 (if (characterp from) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2131 (setq idx from) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2132 (setq idx (aref from 0) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2133 max-lookup (max max-lookup (length from)))) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2134 (setq val (aref table idx)) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2135 (if val |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2136 (progn |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2137 (or (consp val) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2138 (setq val (list (cons (vector idx) val)))) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2139 (if (characterp from) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2140 (setq from (vector from))) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2141 (setq val (nconc val (list (cons from to))))) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2142 (if (characterp from) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2143 (setq val to) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2144 (setq val (list (cons from to))))) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2145 (aset table idx val)) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2146 (set-char-table-extra-slot table 1 max-lookup)) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2147 (set-char-table-extra-slot (aref tables 0) 0 (aref tables 1)) |
151284908aa2
(make-translation-table): Set second extra
Kenichi Handa <handa@m17n.org>
parents:
89855
diff
changeset
|
2148 (aref tables 0))) |
89855
182d3c31dea9
(define-translation-table): New function.
Kenichi Handa <handa@m17n.org>
parents:
89839
diff
changeset
|
2149 |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2150 (defun define-translation-table (symbol &rest args) |
36262 | 2151 "Define SYMBOL as the name of translation table made by ARGS. |
2152 This sets up information so that the table can be used for | |
2153 translations in a CCL program. | |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2154 |
36262 | 2155 If the first element of ARGS is a char-table whose purpose is |
2156 `translation-table', just define SYMBOL to name it. (Note that this | |
2157 function does not bind SYMBOL.) | |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2158 |
36262 | 2159 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
|
2160 `make-translation-table' (which see). |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2161 |
22225
6f56af1aab96
(make-translation-table): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22186
diff
changeset
|
2162 This function sets properties `translation-table' and |
36037 | 2163 `translation-table-id' of SYMBOL to the created table itself and the |
2164 identification number of the table respectively. It also registers | |
2165 the table in `translation-table-vector'." | |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2166 (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
|
2167 (eq (char-table-subtype (car args)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2168 'translation-table)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2169 (car args) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2170 (apply 'make-translation-table args))) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2171 (len (length translation-table-vector)) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
2172 (id 0) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2173 (done nil)) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2174 (put symbol 'translation-table table) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2175 (while (not done) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2176 (if (>= id len) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2177 (setq translation-table-vector |
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2178 (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
|
2179 (let ((slot (aref translation-table-vector id))) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2180 (if (or (not slot) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2181 (eq (car slot) symbol)) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
2182 (progn |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2183 (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
|
2184 (setq done t)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
2185 (setq id (1+ id))))) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
2186 (put symbol 'translation-table-id id) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
2187 id)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
2188 |
57645
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2189 (defun translate-region (start end table) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2190 "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
|
2191 TABLE is a string or a char-table. |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2192 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
|
2193 for the character with code N. |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2194 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
|
2195 for the character with code N. |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2196 It returns the number of characters changed." |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2197 (interactive |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2198 (list (region-beginning) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2199 (region-end) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2200 (let (table l) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2201 (dotimes (i (length translation-table-vector)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2202 (if (consp (aref translation-table-vector i)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2203 (push (list (symbol-name |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2204 (car (aref translation-table-vector i)))) l))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2205 (if (not l) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2206 (error "No translation table defined")) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2207 (while (not table) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2208 (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
|
2209 (intern table)))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2210 (if (symbolp table) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2211 (let ((val (get table 'translation-table))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2212 (or (char-table-p val) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2213 (error "Invalid translation table name: %s" table)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2214 (setq table val))) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2215 (translate-region-internal start end table)) |
24ec89bbe7bc
(translate-region): Implement it in Lisp
Kenichi Handa <handa@m17n.org>
parents:
57444
diff
changeset
|
2216 |
26887
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
2217 (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
|
2218 |
50336
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2219 (defmacro with-category-table (table &rest body) |
89483 | 2220 "Execute BODY like `progn' with CATEGORY-TABLE the current category table. |
50336
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2221 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
|
2222 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
|
2223 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
|
2224 (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
|
2225 (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
|
2226 `(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
|
2227 (,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
|
2228 (unwind-protect |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2229 (progn |
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2230 (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
|
2231 ,@body) |
74164
a3d2bf407246
(load-with-code-conversion, with-category-table): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73799
diff
changeset
|
2232 (with-current-buffer ,old-buffer |
50336
15141bb6dc1f
(with-category-table): Use `make-symbol' to avoid variable capture.
John Paul Wallington <jpw@pobox.com>
parents:
50181
diff
changeset
|
2233 (set-category-table ,old-table)))))) |
26887
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
2234 |
46504
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2235 (defun define-translation-hash-table (symbol table) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2236 "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
|
2237 |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2238 Analogous to `define-translation-table', but updates |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2239 `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
|
2240 `lookup-integer' and `lookup-character' functions." |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2241 (unless (and (symbolp symbol) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2242 (hash-table-p table)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2243 (error "Bad args to define-translation-hash-table")) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2244 (let ((len (length translation-hash-table-vector)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2245 (id 0) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2246 done) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2247 (put symbol 'translation-hash-table table) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2248 (while (not done) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2249 (if (>= id len) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2250 (setq translation-hash-table-vector |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2251 (vconcat translation-hash-table-vector [nil]))) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2252 (let ((slot (aref translation-hash-table-vector id))) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2253 (if (or (not slot) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2254 (eq (car slot) symbol)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2255 (progn |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2256 (aset translation-hash-table-vector id (cons symbol table)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2257 (setq done t)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2258 (setq id (1+ id))))) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2259 (put symbol 'translation-hash-table-id id) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2260 id)) |
2d28ee240bd7
(define-translation-hash-table): New.
Dave Love <fx@gnu.org>
parents:
46489
diff
changeset
|
2261 |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2262 ;;; Initialize some variables. |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2263 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2264 (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
|
2265 (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
|
2266 (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
|
2267 (setq ignore-relative-composition |
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
2268 (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
|
2269 |
88831
883ff81d531d
(set-char-table-default): Make obsolete.
Dave Love <fx@gnu.org>
parents:
88805
diff
changeset
|
2270 (make-obsolete 'set-char-table-default |
90104
a01e7a9f1659
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-14
Miles Bader <miles@gnu.org>
parents:
90103
diff
changeset
|
2271 "Generic characters no longer exist" "23.1") |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2272 |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2273 ;;; Built-in auto-coding-functions: |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2274 |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2275 (defun sgml-xml-auto-coding-function (size) |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2276 "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
|
2277 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
|
2278 (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
|
2279 (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
|
2280 (let ((end (save-excursion |
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2281 ;; This is a hack. |
62154
2d0b029e8560
(sgml-xml-auto-coding-function): Recognize encoding='FOO'
Eli Zaretskii <eliz@gnu.org>
parents:
61995
diff
changeset
|
2282 (re-search-forward "[\"']\\s-*\\?>" size t)))) |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2283 (when end |
62154
2d0b029e8560
(sgml-xml-auto-coding-function): Recognize encoding='FOO'
Eli Zaretskii <eliz@gnu.org>
parents:
61995
diff
changeset
|
2284 (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
|
2285 (let* ((match (match-string 1)) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2286 (sym (intern (downcase match)))) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2287 (if (coding-system-p sym) |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2288 sym |
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2289 (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
|
2290 nil)) |
91922
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2291 ;; Files without an encoding tag should be UTF-8. But users |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2292 ;; may be naive about encodings, and have saved the file from |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2293 ;; another editor that does not help them get the encoding right. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2294 ;; Detect the encoding and warn the user if it is detected as |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2295 ;; something other than UTF-8. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2296 (let ((detected |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2297 (with-coding-priority '(utf-8) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2298 (coding-system-base |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2299 (detect-coding-region (point-min) size t))))) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2300 ;; Pure ASCII always comes back as undecided. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2301 (if (memq detected '(utf-8 undecided)) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2302 'utf-8 |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2303 (warn "File contents detected as %s. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2304 Consider adding an encoding attribute to the xml declaration, |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2305 or saving as utf-8, as mandated by the xml specification." detected) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2306 detected))))))) |
45450
3b83834d8f74
(make-coding-system): Doc fixes.
Colin Walters <walters@gnu.org>
parents:
45418
diff
changeset
|
2307 |
45691
febc3fe8ff9b
(sgml-html-meta-auto-coding-function): New function.
Colin Walters <walters@gnu.org>
parents:
45479
diff
changeset
|
2308 (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
|
2309 "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
|
2310 This function is intended to be added to `auto-coding-functions'." |
78853
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2311 (let ((case-fold-search t)) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2312 (setq size (min (+ (point) size) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2313 (save-excursion |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2314 ;; Limit the search by the end of the HTML header. |
91802
3a35316b344f
(sgml-html-meta-auto-coding-function): Make sure the search limit is ahead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
91327
diff
changeset
|
2315 (or (search-forward "</head>" (+ (point) size) t) |
78853
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2316 ;; In case of no header, search only 10 lines. |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2317 (forward-line 10)) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2318 (point)))) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2319 ;; Make sure that the buffer really contains an HTML document, by |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2320 ;; checking that it starts with a doctype or a <HTML> start tag |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2321 ;; (allowing for whitespace at bob). Note: 'DOCTYPE NETSCAPE' is |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2322 ;; useful for Mozilla bookmark files. |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2323 (when (and (re-search-forward "\\`[[:space:]\n]*\\(<!doctype[[:space:]\n]+\\(html\\|netscape\\)\\|<html\\)" size t) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2324 (re-search-forward "<meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']text/\\sw+;\\s-*charset=\\(.+?\\)[\"']" size t)) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2325 (let* ((match (match-string 1)) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2326 (sym (intern (downcase match)))) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2327 (if (coding-system-p sym) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2328 sym |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2329 (message "Warning: unknown coding system \"%s\"" match) |
4e8fc43ecce3
Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents:
78310
diff
changeset
|
2330 nil))))) |
46190
dabcd09794f7
(auto-coding-alist): Add knowledge of .sx[dmicw] file
Francesco Potortì <pot@gnu.org>
parents:
45857
diff
changeset
|
2331 |
91922
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2332 (defun xml-find-file-coding-system (args) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2333 "Determine the coding system of an XML file without a declaration. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2334 Strictly speaking, the file should be utf-8, but mistakes are |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2335 made, and there are genuine cases where XML fragments are saved, |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2336 with the encoding properly specified in a master document, or |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2337 added by processing software." |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2338 (if (eq (car args) 'insert-file-contents) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2339 (let ((detected |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2340 (with-coding-priority '(utf-8) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2341 (coding-system-base |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2342 (detect-coding-region (point-min) (point-max) t))))) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2343 ;; Pure ASCII always comes back as undecided. |
91926
d2f0754ed2f5
(xml-find-file-coding-system): Don't warn about utf-16 with BOM.
Jason Rumney <jasonr@gnu.org>
parents:
91922
diff
changeset
|
2344 (cond |
d2f0754ed2f5
(xml-find-file-coding-system): Don't warn about utf-16 with BOM.
Jason Rumney <jasonr@gnu.org>
parents:
91922
diff
changeset
|
2345 ((memq detected '(utf-8 undecided)) |
d2f0754ed2f5
(xml-find-file-coding-system): Don't warn about utf-16 with BOM.
Jason Rumney <jasonr@gnu.org>
parents:
91922
diff
changeset
|
2346 'utf-8) |
d2f0754ed2f5
(xml-find-file-coding-system): Don't warn about utf-16 with BOM.
Jason Rumney <jasonr@gnu.org>
parents:
91922
diff
changeset
|
2347 ((eq detected 'utf-16le-with-signature) 'utf-16le-with-signature) |
d2f0754ed2f5
(xml-find-file-coding-system): Don't warn about utf-16 with BOM.
Jason Rumney <jasonr@gnu.org>
parents:
91922
diff
changeset
|
2348 ((eq detected 'utf-16be-with-signature) 'utf-16be-with-signature) |
d2f0754ed2f5
(xml-find-file-coding-system): Don't warn about utf-16 with BOM.
Jason Rumney <jasonr@gnu.org>
parents:
91922
diff
changeset
|
2349 (t |
91922
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2350 (warn "File contents detected as %s. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2351 Consider adding an xml declaration with the encoding specified, |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2352 or saving as utf-8, as mandated by the xml specification." detected) |
91926
d2f0754ed2f5
(xml-find-file-coding-system): Don't warn about utf-16 with BOM.
Jason Rumney <jasonr@gnu.org>
parents:
91922
diff
changeset
|
2353 detected))) |
91922
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2354 ;; Don't interfere with the user's wishes for saving the buffer. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2355 ;; We did what we could when the buffer was created to ensure the |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2356 ;; correct encoding was used, or the user was warned, so any |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2357 ;; non-conformity here is deliberate on the part of the user. |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2358 'undecided)) |
89b7a215ead9
* international/mule.el (sgml-xml-auto-coding-function): Detect
Jason Rumney <jasonr@gnu.org>
parents:
91802
diff
changeset
|
2359 |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
2360 ;;; |
17052 | 2361 (provide 'mule) |
2362 | |
71676
6930c75732b8
(make-char): Remove redundancy.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
71255
diff
changeset
|
2363 ;; arch-tag: 9aebaa6e-0e8a-40a9-b857-cb5d04a39e7c |
17052 | 2364 ;;; mule.el ends here |