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