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