Mercurial > emacs
annotate lisp/international/mule.el @ 88562:30c5971edc3c
Doc fixes.
(charset-list, generic-char-p, set-coding-priority): Make
obsolete.
(coding-system-get): Try to convert old-style symbol to keyword.
(define-charset): Purecopy strings in property list.
(define-coding-system): Purecopy docstring.
author | Dave Love <fx@gnu.org> |
---|---|
date | Fri, 17 May 2002 20:17:04 +0000 |
parents | 936dca068940 |
children | fc23956c9f9b |
rev | line source |
---|---|
88551 | 1 ;;; mule.el --- basic commands for multilingual environment |
17052 | 2 |
3 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. | |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
4 ;; Licensed to the Free Software Foundation. |
37765
0a94387bba65
Add copyright notice for FSF.
Gerd Moellmann <gerd@gnu.org>
parents:
37746
diff
changeset
|
5 ;; Copyright (C) 2001 Free Software Foundation, Inc. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
6 ;; Copyright (C) 2001, 2002 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
7 ;; 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
|
8 ;; Registration Number H13PRO009 |
17052 | 9 |
10 ;; Keywords: mule, multilingual, character set, coding system | |
11 | |
12 ;; This file is part of GNU Emacs. | |
13 | |
14 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
15 ;; it under the terms of the GNU General Public License as published by | |
16 ;; the Free Software Foundation; either version 2, or (at your option) | |
17 ;; any later version. | |
18 | |
19 ;; GNU Emacs is distributed in the hope that it will be useful, | |
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 ;; GNU General Public License for more details. | |
23 | |
24 ;; You should have received a copy of the GNU General Public License | |
17071 | 25 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
26 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
27 ;; Boston, MA 02111-1307, USA. | |
17052 | 28 |
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37995
diff
changeset
|
29 ;;; Commentary: |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37995
diff
changeset
|
30 |
17052 | 31 ;;; Code: |
32 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
33 (defconst mule-version "7.0 (SAKAKI)" "\ |
17052 | 34 Version number and name of this version of MULE (multilingual environment).") |
35 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
36 (defconst mule-version-date "2002.2.28" "\ |
17052 | 37 Distribution date of this version of MULE (multilingual environment).") |
38 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
39 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
40 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
41 ;;; CHARACTER |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
42 (defalias 'char-valid-p 'characterp) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
43 (make-obsolete 'char-valid-p 'characterp "22.1") |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
44 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
45 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
46 ;;; CHARSET |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
47 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
48 (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
|
49 "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
|
50 The remaining arguments must come in pairs ATTRIBUTE VALUE. ATTRIBUTE |
88551 | 51 may be any symbol. The following have special meanings, and one of |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
52 `:code-offset', `:map', `:parents' must be specified. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
53 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
54 `:short-name' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
55 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
56 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
|
57 NAME is used. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
58 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
59 `:long-name' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
60 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
61 VALUE must be a string longer than `:short-name' to identify the |
88551 | 62 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
|
63 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
64 `:dimension' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
65 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
66 VALUE must be an integer 0, 1, 2, or 3, specifying the dimension of |
88551 | 67 code-points of the charsets. If omitted, it is calculated from the |
68 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
|
69 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
70 `:code-space' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
71 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
72 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
|
73 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
|
74 [ MIN-1 MAX-1 MIN-2 MAX-2 ... ] |
88551 | 75 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
|
76 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
|
77 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
78 `:iso-final-char' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
79 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
80 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
|
81 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
|
82 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
|
83 coding-systems. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
84 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
85 `:iso-revision-number' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
86 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
87 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
|
88 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
|
89 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
90 `:emacs-mule-id' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
91 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
92 VALUE must be an integer of 0, 128..255. If omitted, the charset |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
93 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
|
94 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
95 `:ascii-compatible-p' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
96 |
88551 | 97 VALUE must be nil or t (default nil). If VALUE is t, the charset is |
98 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
|
99 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
100 `:supplementary-p' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
101 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
102 VALUE must be nil or t. If the VALUE is t, the charset is |
88551 | 103 supplementary, which means it is used only as a parent of some other |
104 charset. | |
88413
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 `:invalid-code' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
107 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
108 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
|
109 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
|
110 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
|
111 should not be omitted. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
112 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
113 `:code-offset' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
114 |
88551 | 115 VALUE must be an integer added to the index number of a character to |
116 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
|
117 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
118 `:map' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
119 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
120 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
|
121 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
122 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
|
123 where CODE-n is a code-point of the charset, and CHAR-n is the |
88551 | 124 corresponding character code. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
125 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
126 If it is a string, it is a name of file that contains the above |
88436 | 127 information. Each line of the file must be this format: |
128 0xXXX 0xYYY | |
129 where XXX is a hexadecimal representation of CODE-n and YYY is a | |
130 hexadecimal representation of CHAR-n. A line starting with `#' is a | |
131 comment line. | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
132 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
133 `:parents' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
134 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
135 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
|
136 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
|
137 . OFFSET), where PARENT is a parent charset, and OFFSET is an offset |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
138 value to add to a code point of this charset to get the corresponding |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
139 code point of PARENT. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
140 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
141 `:unify-map' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
142 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
143 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
|
144 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
145 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
|
146 where CODE-n is a code-point of the charset, and CHAR-n is the |
88551 | 147 corresponding Unicode character code. |
88413
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 If it is a string, it is a name of file that contains the above |
88436 | 150 information. The file format is the same as what described for `:map' |
151 attribute." | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
152 (let ((attrs (mapcar 'list '(:dimension |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
153 :code-space |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
154 :iso-final-char |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
155 :iso-revision-number |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
156 :emacs-mule-id |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
157 :ascii-compatible-p |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
158 :supplementary-p |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
159 :invalid-code |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
160 :code-offset |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
161 :map |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
162 :parents |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
163 :unify-map |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
164 :plist)))) |
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 ;; 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
|
167 (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
|
168 (or dimension |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
169 (progn |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
170 (setq dimension (/ (length (plist-get props :code-space)) 2)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
171 (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
|
172 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
173 (dolist (slot attrs) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
174 (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
|
175 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
176 ;; 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
|
177 ;; elements. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
178 (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
|
179 (val (cdr slot)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
180 (len (length val))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
181 (if (< len 8) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
182 (setcdr slot |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
183 (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
|
184 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
185 ;; 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
|
186 (setq props |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
187 (cons :name (cons name (cons :docstring (cons docstring props))))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
188 (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
|
189 (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
|
190 (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
|
191 (plist-put props :long-name (plist-get props :short-name))) |
88562 | 192 ;; We can probably get a worthwhile amount in purespace. |
193 (setq props | |
194 (mapcar (lambda (elt) | |
195 (if (stringp elt) | |
196 (purecopy elt) | |
197 elt)) | |
198 props)) | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
199 (setcdr (assq :plist attrs) props) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
200 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
201 (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
|
202 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
203 |
17052 | 204 (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
|
205 "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
|
206 The file contents are decoded before evaluation if necessary. |
17052 | 207 If optional second arg NOERROR is non-nil, |
208 report no error if FILE doesn't exist. | |
209 Print messages at start and end of loading unless | |
210 optional third arg NOMESSAGE is non-nil. | |
211 Return t if file exists." | |
212 (if (null (file-readable-p fullname)) | |
213 (and (null noerror) | |
214 (signal 'file-error (list "Cannot open load file" file))) | |
215 ;; Read file with code conversion, and then eval. | |
216 (let* ((buffer | |
217 ;; To avoid any autoloading, set default-major-mode to | |
218 ;; fundamental-mode. | |
21675
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
219 ;; So that we don't get completely screwed if the |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
220 ;; file is encoded in some complicated character set, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
221 ;; read it with real decoding, as a multibyte buffer, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
222 ;; even if this is a --unibyte Emacs session. |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
223 (let ((default-major-mode 'fundamental-mode) |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
224 (default-enable-multibyte-characters t)) |
17052 | 225 ;; We can't use `generate-new-buffer' because files.el |
226 ;; is not yet loaded. | |
227 (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
|
228 (load-in-progress t) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
229 (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
|
230 (unless nomessage |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
231 (if source |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
232 (message "Loading %s (source)..." file) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
233 (message "Loading %s..." file))) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
234 (when purify-flag |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
235 (setq preloaded-file-list (cons file preloaded-file-list))) |
17052 | 236 (unwind-protect |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
237 (let ((load-file-name fullname) |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
238 (set-auto-coding-for-load t) |
20161
0d9c6ccdc45c
(load-with-code-conversion): Update
Kenichi Handa <handa@m17n.org>
parents:
20112
diff
changeset
|
239 (inhibit-file-name-operation nil)) |
17052 | 240 (save-excursion |
241 (set-buffer buffer) | |
242 (insert-file-contents fullname) | |
23860
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
243 ;; 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
|
244 ;; 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
|
245 ;; 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
|
246 ;; binary junk as multibyte characters. |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
247 (if (and enable-multibyte-characters |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
248 (or (eq (coding-system-type last-coding-system-used) 5) |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
249 (eq last-coding-system-used 'no-conversion))) |
2ce75856e89f
(load-with-code-conversion): If the loaded
Eli Zaretskii <eliz@gnu.org>
parents:
23770
diff
changeset
|
250 (set-buffer-multibyte nil)) |
17052 | 251 ;; Make `kill-buffer' quiet. |
252 (set-buffer-modified-p nil)) | |
20405
faf18d58a01b
(load-with-code-conversion): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
20168
diff
changeset
|
253 ;; Have the original buffer current while we eval. |
21675
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
254 (eval-buffer buffer nil file |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
255 ;; If this Emacs is running with --unibyte, |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
256 ;; convert multibyte strings to unibyte |
f000ba659241
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
21660
diff
changeset
|
257 ;; after reading them. |
21728
ea71ddaad673
(load-with-code-conversion): Don't pass extra arg to eval-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
21675
diff
changeset
|
258 ;; (not default-enable-multibyte-characters) |
25198
aaa595530183
(load-with-code-conversion): Pass t to eval-buffer for DO-ALLOW-PRINT.
Richard M. Stallman <rms@gnu.org>
parents:
25144
diff
changeset
|
259 nil t |
21728
ea71ddaad673
(load-with-code-conversion): Don't pass extra arg to eval-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
21675
diff
changeset
|
260 )) |
18583
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
261 (let (kill-buffer-hook kill-buffer-query-functions) |
66e7a91e32ef
(load-with-code-conversion):
Richard M. Stallman <rms@gnu.org>
parents:
18558
diff
changeset
|
262 (kill-buffer buffer))) |
17052 | 263 (let ((hook (assoc file after-load-alist))) |
20168
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
264 (when hook |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
265 (mapcar (function eval) (cdr hook)))) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
266 (unless (or nomessage noninteractive) |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
267 (if source |
13074c25ab06
Indicate in messages if source code is being loaded.
Simon Marshall <simon@gnu.org>
parents:
20161
diff
changeset
|
268 (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
|
269 (message "Loading %s...done" file))) |
17052 | 270 t))) |
271 | |
272 ;; API (Application Program Interface) for charsets. | |
273 | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
274 ;;; Charset property |
17052 | 275 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
276 (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
|
277 "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
|
278 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
|
279 (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
|
280 (plist-get (charset-plist charset) propname)) |
17052 | 281 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
282 (defun 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
|
283 "Store CHARSETS's PROPNAME property with value VALUE. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
284 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
|
285 (set-charset-plist charset |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
286 (plist-put (charset-plist charset) propname value))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
287 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
25198
diff
changeset
|
288 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
289 (defun charset-description (charset) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
290 "Return description string of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
291 (plist-get (charset-plist charset) :docstring)) |
17052 | 292 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
293 (defun charset-dimension (charset) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
294 "Return dimension string of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
295 (plist-get (charset-plist charset) :dimension)) |
17052 | 296 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
297 (defun charset-chars (charset) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
298 "Return character numbers contained in a dimension of CHARSET." |
88450
4f93848ba5a8
(charset-chars): Fix typo.
Kenichi Handa <handa@m17n.org>
parents:
88436
diff
changeset
|
299 (let ((code-space (plist-get (charset-plist charset) :code-space))) |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
300 (1+ (- (aref code-space 1) (aref code-space 0))))) |
17052 | 301 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
302 (defun charset-iso-final-char (charset) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
303 "Return final char of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
304 (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
|
305 -1)) |
17052 | 306 |
307 (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
|
308 "Return short name of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
309 (plist-get (charset-plist charset) :short-name)) |
17052 | 310 |
311 (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
|
312 "Return long name of CHARSET." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
313 (plist-get (charset-plist charset) :long-name)) |
17052 | 314 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
315 (defun charset-list () |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
316 "Return list of charsets ever defined. |
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
317 |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
318 This function is provided for backward compatibility. |
18558
09cc19f19722
(charset-bytes, charset-dimension,
Kenichi Handa <handa@m17n.org>
parents:
18518
diff
changeset
|
319 Now we have the variable `charset-list'." |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
320 charset-list) |
88551 | 321 (make-obsolete 'charset-list "Use variable `charset-list'" "22.1") |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
322 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
323 (defun generic-char-p (char) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
324 "Always return nil. This exists only for backward compatibility." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
325 nil) |
88551 | 326 (make-obsolete 'generic-char-p "Generic characters no longer exist" "22.1") |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
327 |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
328 ;; Coding system stuff |
17052 | 329 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
330 ;; 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
|
331 ;; `define-coding-system'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
332 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
333 (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
|
334 '(long-form |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
335 ascii-at-eol |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
336 ascii-at-cntl |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
337 7-bit |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
338 locking-shift |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
339 single-shift |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
340 designation |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
341 revision |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
342 direction |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
343 init-at-bol |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
344 designate-at-bol |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
345 safe |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
346 latin-extra |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
347 composition |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
348 euc-tw-shift) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
349 "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
|
350 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
351 The value of `:flags' attribute in the argument of the function |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
352 `define-coding-system' must be one of them. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
353 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
354 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
|
355 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
|
356 and `japanese-jisx0208'. The long designation sequence doesn't |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
357 conform to ISO 2022, but used by such a coding system as |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
358 `compound-text'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
359 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
360 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
|
361 on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
362 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
363 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
|
364 codes and SPC on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
365 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
366 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
|
367 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
368 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
|
369 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
|
370 encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
371 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
372 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
|
373 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
|
374 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
375 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
|
376 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
|
377 element on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
378 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
379 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
|
380 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
|
381 always correctly decoded on decoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
382 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
383 If `direction' is specified, decode ISO6429's code for specifying |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
384 direction correctly, and produced the code on encoding. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
385 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
386 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
|
387 invocation and designation statuses are reset at each beginning of |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
388 line even if `ascii-at-eol' is not specified thus no code for |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
389 resetting them are produced. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
390 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
391 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
|
392 coding are replaced with `?'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
393 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
394 If `latin-extra' is specified, code-detection routine assumes that a |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
395 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
|
396 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
397 If `composition' is specified, an escape sequence to specify |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
398 composition sequence is correctly decode on decoding, and is produced |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
399 on encoding. |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
400 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
401 If `euc-tw-shift' is specified, the EUC-TW specific shifting code is |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
402 correctly decoded on decoding, and is produced on encoding.") |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
403 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
404 (defun define-coding-system (name docstring &rest props) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
405 "Define NAME (symbol) as a coding system with DOCSTRING and attributes. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
406 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
|
407 may be any symbol. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
408 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
409 The following attributes have special meanings. If labeled as |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
410 \"(required)\", it should not be omitted. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
411 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
412 `:mnemonic' (required) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
413 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
414 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
|
415 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
416 `:coding-type' (required) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
417 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
418 VALUE must be one of `charset', `utf-8', `utf-16', `iso-2022', |
88495
5082b2d8d5eb
(define-coding-system): Docstring fixed (sjis->shift-jis).
Kenichi Handa <handa@m17n.org>
parents:
88450
diff
changeset
|
419 `emacs-mule', `shift-jis', `big5', `ccl', `raw-text', `undecided'. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
420 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
421 `:eol-type' (optional) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
422 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
423 VALUE is an EOL (end-of-line) format of the coding system. It must be |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
424 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
|
425 \(i.e. single LF), `dos' means DOS-like EOL \(i.e. sequence of CR LF), |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
426 and `mac' means MAC-like EOL \(i.e. single CR). If omitted, on |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
427 decoding by the coding system, Emacs automatically detects an EOL |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
428 format of the source text. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
429 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
430 `:charset-list' (required) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
431 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
432 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
|
433 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
|
434 charsets in the list, a charset that comes earlier in the list is |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
435 selected. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
436 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
437 `:ascii-compatible-p' (optional) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
438 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
439 If VALUE is non-nil, the coding system decodes all 7-bit bytes into |
88551 | 440 the corresponding ASCII characters, and encodes all ASCII characters |
441 back to the corresponding 7-bit bytes. If omitted, the VALUE defaults | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
442 to nil. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
443 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
444 `:decode-translation-table' (optional) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
445 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
446 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
|
447 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
448 `:encode-translation-table' (optional) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
449 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
450 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
|
451 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
452 `:post-read-conversion' (optional) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
453 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
454 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
|
455 decoded by the coding system itself and before any functions in |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
456 `after-insert-functions' are called. The arguments to this function |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
457 is the same as those of a function in `after-insert-functions', |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
458 i.e. LENGTH of a text while putting point at the head of the text to |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
459 be decoded |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
460 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
461 `:pre-write-conversion' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
462 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
463 VALUE must be a function to call after all functions in |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
464 `write-region-annotate-functions' and `buffer-file-format' are called, |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
465 and before the text is encoded by the coding system itself. The |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
466 arguments to this function is the same as those of a function in |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
467 `write-region-annotate-functions', i.e. FROM and TO specifying region |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
468 of a text. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
469 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
470 `:default-char' |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
471 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
472 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
|
473 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
|
474 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
475 `:eol-type' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
476 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
477 VALUE must be `unix', `dos', `mac'. The symbol `unix' means Unix-like |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
478 EOL (LF), `dos' means DOS-like EOL (CRLF), and `mac' means MAC-like |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
479 EOL (CR). If omitted, on decoding, the coding system detect EOL |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
480 format automatically, and on encoding, used Unix-like EOL. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
481 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
482 `:mime-charset' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
483 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
484 VALUE must be a symbol who has MIME-charset name. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
485 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
486 `:flags' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
487 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
488 VALUE must be a list of symbols that control ISO-2022 converter. Each |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
489 symbol must be a member of the variable `coding-system-iso-2022-flags' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
490 \(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
|
491 is `iso-2022'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
492 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
493 `:designation' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
494 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
495 VALUE must be a vector [ G0-USAGE G1-USAGE G2-USAGE G3-USAGE]. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
496 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
|
497 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
498 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
|
499 |
88551 | 500 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
|
501 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
|
502 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
503 If it is a list, the elements must be charsets, nil, 94, or 96. GN |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
504 can be used by all listed charsets. If the list contains 94, any |
88551 | 505 charsets whose iso-chars is 94 can be designated to GN. If the list |
506 contains 96, any charsets whose iso-chars is 96 can be designated to | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
507 GN. If the first element is a charset, the charset is initially |
88551 | 508 designated to GN. |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
509 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
510 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
|
511 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
512 `:bom' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
513 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
514 VALUE must nil, t, or cons of coding systems whose `:coding-type' is |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
515 `utf-16'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
516 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
517 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
|
518 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
519 `:endian' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
520 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
521 VALUE must be t or nil. See the above description for the detail. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
522 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
523 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
|
524 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
525 `:ccl-decoder' |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
526 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
527 This attribute has a meaning only when `:coding-type' is `ccl'. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
528 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
529 `:ccl-encoder' |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
530 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
531 This attribute has a meaning only when `:coding-type' is `ccl'." |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
532 (let* ((common-attrs (mapcar 'list |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
533 '(:mnemonic |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
534 :coding-type |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
535 :charset-list |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
536 :ascii-compatible-p |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
537 :docode-translation-table |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
538 :encode-translation-table |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
539 :post-read-conversion |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
540 :pre-write-conversion |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
541 :default-char |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
542 :plist |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
543 :eol-type))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
544 (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
|
545 (spec-attrs (mapcar 'list |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
546 (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
|
547 '(:initial |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
548 :reg-usage |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
549 :request |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
550 :flags)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
551 ((eq coding-type 'utf-16) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
552 '(:bom |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
553 :endian)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
554 ((eq coding-type 'ccl) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
555 '(:ccl-decoder |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
556 :ccl-encoder |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
557 :valids)))))) |
17052 | 558 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
559 (dolist (slot common-attrs) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
560 (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
|
561 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
562 (dolist (slot spec-attrs) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
563 (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
|
564 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
565 (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
|
566 (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
|
567 (flags (plist-get props :flags)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
568 (initial (make-vector 4 nil)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
569 (reg-usage (cons 4 4)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
570 request elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
571 (dotimes (i 4) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
572 (setq elt (aref designation i)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
573 (cond ((charsetp elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
574 (aset initial i elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
575 (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
|
576 ((consp elt) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
577 (aset initial i (car elt)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
578 (if (charsetp (car elt)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
579 (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
|
580 (dolist (e (cdr elt)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
581 (cond ((charsetp e) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
582 (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
|
583 ((eq e 94) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
584 (setcar reg-usage i)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
585 ((eq e 96) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
586 (setcdr reg-usage i)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
587 ((eq e t) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
588 (setcar reg-usage i) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
589 (setcdr reg-usage i))))))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
590 (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
|
591 (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
|
592 (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
|
593 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
594 ;; 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
|
595 (let ((bits 0) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
596 (i 0)) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
597 (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
|
598 (if (memq elt flags) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
599 (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
|
600 (setq i (1+ i))) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
601 (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
|
602 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
603 ;; 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
|
604 (setq props |
88562 | 605 (cons :name (cons name (cons :docstring (cons (purecopy docstring) |
606 props))))) | |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
607 (setcdr (assq :plist common-attrs) props) |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
608 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
609 (apply 'define-coding-system-internal |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
610 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
|
611 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
612 (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
|
613 "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
|
614 (plist-get (coding-system-plist coding-system) :docstring)) |
17052 | 615 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
616 (defun coding-system-mnemonic (coding-system) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
617 "Return the mnemonic character of CODING-SYSTEM. |
22302
fb2d8c0920c6
(coding-system-mnemonic): Don't crash if arg is nil.
Karl Heuer <kwzh@gnu.org>
parents:
22227
diff
changeset
|
618 The mnemonic character of a coding system is used in mode line |
fb2d8c0920c6
(coding-system-mnemonic): Don't crash if arg is nil.
Karl Heuer <kwzh@gnu.org>
parents:
22227
diff
changeset
|
619 to indicate the coding system. If the arg is nil, return ?-." |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
620 (plist-get (coding-system-plist coding-system) :mnemonic)) |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
621 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
622 (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
|
623 "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
|
624 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
|
625 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
|
626 (plist-get (coding-system-plist coding-system) :coding-type)) |
19985
930e7515c033
(charset-list): Change it to function.
Kenichi Handa <handa@m17n.org>
parents:
19948
diff
changeset
|
627 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
628 (defun coding-system-charset-list (coding-system) |
88551 | 629 "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
|
630 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
|
631 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
|
632 (plist-get (coding-system-plist coding-system) :charset-list)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
633 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
634 (defun coding-system-get (coding-system prop) |
88551 | 635 "Extract a value from CODING-SYSTEM's property list for property PROP. |
636 For compatibility with Emacs 20/21, this accepts old-style symbols | |
637 like `mime-charset' as well as the current style like `:mime-charset'." | |
638 (or (plist-get (coding-system-plist coding-system) prop) | |
639 (if (not (keywordp prop)) | |
640 (plist-get (coding-system-plist coding-system) | |
641 (intern (concat ":" (symbol-name prop))))))) | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
642 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
643 (defun coding-system-put (coding-system prop val) |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
644 "Change value in CODING-SYSTEM's property list PROP to VAL." |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
645 (plist-put (coding-system-plist coding-system) prop val)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
646 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
647 (defalias 'coding-system-parent 'coding-system-base) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28457
diff
changeset
|
648 (make-obsolete 'coding-system-parent 'coding-system-base "20.3") |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
649 |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
650 ;; Coding system also has a property `eol-type'. |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
651 ;; |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
652 ;; This property indicates how the coding system handles end-of-line |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
653 ;; format. The value is integer 0, 1, 2, or a vector of three coding |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
654 ;; systems. Each integer value 0, 1, and 2 indicates the format of |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
655 ;; end-of-line LF, CRLF, and CR respectively. A vector value |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
656 ;; indicates that the format of end-of-line should be detected |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
657 ;; automatically. Nth element of the vector is the subsidiary coding |
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
658 ;; system whose `eol-type' property is N. |
17052 | 659 |
24276
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
660 (defun coding-system-lessp (x y) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
661 (cond ((eq x 'no-conversion) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
662 ((eq y 'no-conversion) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
663 ((eq x 'emacs-mule) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
664 ((eq y 'emacs-mule) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
665 ((eq x 'undecided) t) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
666 ((eq y 'undecided) nil) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
667 (t (let ((c1 (coding-system-mnemonic x)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
668 (c2 (coding-system-mnemonic y))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
669 (or (< (downcase c1) (downcase c2)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
670 (and (not (> (downcase c1) (downcase c2))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
671 (< c1 c2))))))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
672 |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
673 (defun add-to-coding-system-list (coding-system) |
36037 | 674 "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
|
675 (if (or (null coding-system-list) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
676 (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
|
677 (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
|
678 (let ((len (length coding-system-list)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
679 mid (tem coding-system-list)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
680 (while (> len 1) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
681 (setq mid (nthcdr (/ len 2) tem)) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
682 (if (coding-system-lessp (car mid) coding-system) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
683 (setq tem mid |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
684 len (- len (/ len 2))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
685 (setq len (/ len 2)))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
686 (setcdr tem (cons coding-system (cdr tem)))))) |
ec0195eb2657
(coding-system-lessp): Moved here from
Andreas Schwab <schwab@suse.de>
parents:
24026
diff
changeset
|
687 |
24345
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
688 (defun coding-system-list (&optional base-only) |
30491
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
689 "Return a list of all existing non-subsidiary coding systems. |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
690 If optional arg BASE-ONLY is non-nil, only base coding systems are listed. |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
691 The value doesn't include subsidiary coding systems which are what |
7b4fadfac0c8
(register-char-codings): New function.
Kenichi Handa <handa@m17n.org>
parents:
29722
diff
changeset
|
692 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
|
693 formats (e.g. iso-latin-1-unix, koi8-r-dos)." |
24345
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
694 (let* ((codings (copy-sequence coding-system-list)) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
695 (tail (cons nil codings))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
696 ;; Remove subsidiary coding systems (eol variants) and alias |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
697 ;; coding systems (if necessary). |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
698 (while (cdr tail) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
699 (let* ((coding (car (cdr tail))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
700 (aliases (coding-system-get coding 'alias-coding-systems))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
701 (if (or |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
702 ;; CODING is an eol variant if not in ALIASES. |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
703 (not (memq coding aliases)) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
704 ;; CODING is an alias if it is not car of ALIASES. |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
705 (and base-only (not (eq coding (car aliases))))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
706 (setcdr tail (cdr (cdr tail))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
707 (setq tail (cdr tail))))) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
708 codings)) |
26fcfef41d24
(coding-system-list): Moved here from
Kenichi Handa <handa@m17n.org>
parents:
24299
diff
changeset
|
709 |
17052 | 710 (defun set-buffer-file-coding-system (coding-system &optional force) |
19162 | 711 "Set the file coding-system of the current buffer to CODING-SYSTEM. |
712 This means that when you save the buffer, it will be converted | |
713 according to CODING-SYSTEM. For a list of possible values of CODING-SYSTEM, | |
714 use \\[list-coding-systems]. | |
715 | |
716 If the buffer's previous file coding-system value specifies end-of-line | |
717 conversion, and CODING-SYSTEM does not specify one, CODING-SYSTEM is | |
718 merged with the already-specified end-of-line conversion. | |
29544
6f22d585904b
(set-buffer-file-coding-system): If one of undecided-XXX is specified,
Kenichi Handa <handa@m17n.org>
parents:
29504
diff
changeset
|
719 |
6f22d585904b
(set-buffer-file-coding-system): If one of undecided-XXX is specified,
Kenichi Handa <handa@m17n.org>
parents:
29504
diff
changeset
|
720 If the buffer's previous file coding-system value specifies text |
6f22d585904b
(set-buffer-file-coding-system): If one of undecided-XXX is specified,
Kenichi Handa <handa@m17n.org>
parents:
29504
diff
changeset
|
721 conversion, and CODING-SYSTEM does not specify one, CODING-SYSTEM is |
6f22d585904b
(set-buffer-file-coding-system): If one of undecided-XXX is specified,
Kenichi Handa <handa@m17n.org>
parents:
29504
diff
changeset
|
722 merged with the already-specified text conversion. |
6f22d585904b
(set-buffer-file-coding-system): If one of undecided-XXX is specified,
Kenichi Handa <handa@m17n.org>
parents:
29504
diff
changeset
|
723 |
6f22d585904b
(set-buffer-file-coding-system): If one of undecided-XXX is specified,
Kenichi Handa <handa@m17n.org>
parents:
29504
diff
changeset
|
724 However, if the optional prefix argument FORCE is non-nil, then |
6f22d585904b
(set-buffer-file-coding-system): If one of undecided-XXX is specified,
Kenichi Handa <handa@m17n.org>
parents:
29504
diff
changeset
|
725 CODING-SYSTEM is used exactly as specified. |
26716 | 726 |
727 This marks the buffer modified so that the succeeding \\[save-buffer] | |
728 surely saves the buffer with CODING-SYSTEM. From a program, if you | |
729 don't want to mark the buffer modified, just set the variable | |
730 `buffer-file-coding-system' directly." | |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
731 (interactive "zCoding system for visited file (default, nil): \nP") |
17052 | 732 (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
|
733 (if (and coding-system buffer-file-coding-system (null force)) |
29659
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
734 (let ((base (coding-system-base buffer-file-coding-system)) |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
735 (eol (coding-system-eol-type buffer-file-coding-system))) |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
736 ;; If CODING-SYSTEM doesn't specify text conversion, merge |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
737 ;; with that of buffer-file-coding-system. |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
738 (if (eq (coding-system-base coding-system) 'undecided) |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
739 (setq coding-system (coding-system-change-text-conversion |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
740 coding-system base))) |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
741 ;; If CODING-SYSTEM doesn't specify eol conversion, merge with |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
742 ;; that of buffer-file-coding-system. |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
743 (if (and (vectorp (coding-system-eol-type coding-system)) |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
744 (numberp eol) (>= eol 0) (<= eol 2)) |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
745 (setq coding-system (coding-system-change-eol-conversion |
4f79b4ed9ebc
(set-buffer-file-coding-system): Almost rewritten to handle
Kenichi Handa <handa@m17n.org>
parents:
29641
diff
changeset
|
746 coding-system eol))))) |
17052 | 747 (setq buffer-file-coding-system coding-system) |
748 (set-buffer-modified-p t) | |
749 (force-mode-line-update)) | |
750 | |
19162 | 751 (defvar default-terminal-coding-system nil |
752 "Default value for the terminal coding system. | |
753 This is normally set according to the selected language environment. | |
754 See also the command `set-terminal-coding-system'.") | |
755 | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
756 (defun set-terminal-coding-system (coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
757 "Set coding system of your terminal to CODING-SYSTEM. |
19162 | 758 All text output to the terminal will be encoded |
759 with the specified coding system. | |
760 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. | |
761 The default is determined by the selected language environment | |
762 or by the previous use of this command." | |
763 (interactive | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
764 (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
|
765 default-terminal-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
766 default-terminal-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
767 (read-coding-system |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
768 (format "Coding system for terminal display (default, %s): " |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
769 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
770 default)))) |
19162 | 771 (if (and (not coding-system) |
772 (not (terminal-coding-system))) | |
773 (setq coding-system default-terminal-coding-system)) | |
774 (if coding-system | |
36037 | 775 (setq default-terminal-coding-system coding-system)) |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
776 (set-terminal-coding-system-internal coding-system) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
777 (redraw-frame (selected-frame))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
778 |
19162 | 779 (defvar default-keyboard-coding-system nil |
780 "Default value of the keyboard coding system. | |
781 This is normally set according to the selected language environment. | |
782 See also the command `set-keyboard-coding-system'.") | |
783 | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
784 (defun set-keyboard-coding-system (coding-system) |
19162 | 785 "Set coding system for keyboard input to CODING-SYSTEM. |
786 In addition, this command enables Encoded-kbd minor mode. | |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
787 \(If CODING-SYSTEM is nil, Encoded-kbd mode is turned off -- see |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
788 `encoded-kbd-mode'.) |
19162 | 789 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]. |
790 The default is determined by the selected language environment | |
791 or by the previous use of this command." | |
792 (interactive | |
19760
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
793 (list (let ((default (if (and (not (keyboard-coding-system)) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
794 default-keyboard-coding-system) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
795 default-keyboard-coding-system))) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
796 (read-coding-system |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
797 (format "Coding system for keyboard input (default, %s): " |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
798 default) |
ad4989a73bf0
(charset-quoted-standard-p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
19749
diff
changeset
|
799 default)))) |
19162 | 800 (if (and (not coding-system) |
801 (not (keyboard-coding-system))) | |
802 (setq coding-system default-keyboard-coding-system)) | |
803 (if coding-system | |
804 (setq default-keyboard-coding-system coding-system)) | |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
805 (set-keyboard-coding-system-internal coding-system) |
38614
2be878396f1e
(set-keyboard-coding-system): Set
Gerd Moellmann <gerd@gnu.org>
parents:
38414
diff
changeset
|
806 (setq keyboard-coding-system coding-system) |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
807 (encoded-kbd-mode (if coding-system 1 0))) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
808 |
34688
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
809 (defcustom keyboard-coding-system nil |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
810 "Specify coding system for keyboard input. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
811 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
|
812 8-bit characters, you will have to use ESC to type Meta characters. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
813 See Info node `Specify Coding' and Info node `Single-Byte Character Support'. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
814 |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
815 Setting this variable directly does not take effect; |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
816 use either M-x customize or \\[set-keyboard-coding-system]." |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
817 :type '(coding-system :tag "Coding system") |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
818 :link '(info-link "(emacs)Specify Coding") |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
819 :link '(info-link "(emacs)Single-Byte Character Support") |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
820 :set (lambda (symbol value) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
821 ;; Don't load encoded-kbd-mode unnecessarily. |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
822 (if (or value (boundp 'encoded-kbd-mode)) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
823 (set-keyboard-coding-system value) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
824 (set-default 'keyboard-coding-system nil))) ; must initialize |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
825 :version "21.1" |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
826 :group 'keyboard |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
827 :group 'mule) |
8f397d03b992
(set-keyboard-coding-system): Doc fix.
Dave Love <fx@gnu.org>
parents:
34297
diff
changeset
|
828 |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
829 (defun set-buffer-process-coding-system (decoding encoding) |
19162 | 830 "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
|
831 DECODING is the coding system to be used to decode input from the process, |
19162 | 832 ENCODING is the coding system to be used to encode output to the process. |
833 | |
834 For a list of possible values of CODING-SYSTEM, use \\[list-coding-systems]." | |
17052 | 835 (interactive |
30965
d3223b7bcd96
(set-buffer-process-coding-system): Make interactive prompt less confusing.
Miles Bader <miles@gnu.org>
parents:
30877
diff
changeset
|
836 "zCoding-system for output from the process: \nzCoding-system for input to the process: ") |
17052 | 837 (let ((proc (get-buffer-process (current-buffer)))) |
838 (if (null proc) | |
36037 | 839 (error "No process") |
17984
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
840 (check-coding-system decoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
841 (check-coding-system encoding) |
4882d58acf01
(set-terminal-coding-system): New function.
Kenichi Handa <handa@m17n.org>
parents:
17837
diff
changeset
|
842 (set-process-coding-system proc decoding encoding))) |
17052 | 843 (force-mode-line-update)) |
844 | |
22836
f3603840ddbc
(set-clipboard-coding-system): Define as alias.
Richard M. Stallman <rms@gnu.org>
parents:
22832
diff
changeset
|
845 (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
|
846 |
22741
763e88fd4ca2
(set-selection-coding-system): Renamed from set-clipboard-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
22700
diff
changeset
|
847 (defun set-selection-coding-system (coding-system) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
848 "Make CODING-SYSTEM used for communicating with other X clients . |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
849 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
|
850 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
|
851 (interactive "zCoding system for X selection: ") |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
852 (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
|
853 (setq selection-coding-system coding-system)) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
854 |
23196 | 855 ;; Coding system lastly specified by the command |
23030
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
856 ;; set-next-selection-coding-system. |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
857 (defvar last-next-selection-coding-system nil) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
858 |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
859 (defun set-next-selection-coding-system (coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
860 "Make CODING-SYSTEM used for the next communication with other X clients. |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
861 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
|
862 (interactive |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
863 (list (read-coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
864 (if last-next-selection-coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
865 (format "Coding system for the next X selection (default, %S): " |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
866 last-next-selection-coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
867 "Coding system for the next X selection: ") |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
868 last-next-selection-coding-system))) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
869 (if coding-system |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
870 (setq last-next-selection-coding-system coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
871 (setq coding-system last-next-selection-coding-system)) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
872 (check-coding-system coding-system) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
873 |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
874 (setq next-selection-coding-system coding-system)) |
d2ceee5cd572
(set-selection-coding-system): Make it
Kenichi Handa <handa@m17n.org>
parents:
22903
diff
changeset
|
875 |
17052 | 876 (defun set-coding-priority (arg) |
36037 | 877 "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
|
878 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
|
879 |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
880 This function is provided for backward compatibility. |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
881 Now we have more convenient function `set-coding-system-priority'." |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
882 (let ((l arg) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
883 (current-list (copy-sequence coding-category-list))) |
23196 | 884 ;; Check the validity of ARG while deleting coding categories in |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
885 ;; ARG from CURRENT-LIST. We assume that CODING-CATEGORY-LIST |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
886 ;; contains all coding categories. |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
887 (while l |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
888 (if (or (null (get (car l) 'coding-category-index)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
889 (null (memq (car l) current-list))) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
890 (error "Invalid or duplicated element in argument: %s" arg)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
891 (setq current-list (delq (car l) current-list)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
892 (setq l (cdr l))) |
17052 | 893 ;; Update `coding-category-list' and return it. |
22227
e7ac7f644152
(set-coding-priority): Call
Kenichi Handa <handa@m17n.org>
parents:
22225
diff
changeset
|
894 (setq coding-category-list (append arg current-list)) |
88551 | 895 ;; Fixme: not defined. |
22227
e7ac7f644152
(set-coding-priority): Call
Kenichi Handa <handa@m17n.org>
parents:
22225
diff
changeset
|
896 (set-coding-priority-internal))) |
88551 | 897 (make-obsolete 'set-coding-priority 'set-coding-system-priority "22.1") |
17052 | 898 |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
899 ;;; X selections |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
900 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
901 (defvar non-standard-icccm-encodings-alist |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
902 '(("ISO8859-15" . latin-iso8859-15) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
903 ("ISO8859-14" . latin-iso8859-14) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
904 ("KOI8-R" . koi8-r) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
905 ("BIG5-0" . big5)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
906 "Alist of font charset names defined by XLFD, and the corresponding Emacs |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
907 charsets or coding systems.") |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
908 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
909 ;; Functions to support "Non-Standard Character Set Encodings" defined |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
910 ;; by the ICCCM spec. We support that by converting the leading |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
911 ;; sequence of the ``extended segment'' to the corresponding ISO-2022 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
912 ;; sequences (if the leading sequence names an Emacs charset), or decode |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
913 ;; the segment (if it names a coding system). Encoding does the reverse. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
914 (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
|
915 "Decode LEN characters encoded as Compound Text with Extended Segments." |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
916 (buffer-disable-undo) ; minimize consing due to insertions and deletions |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
917 (narrow-to-region (point) (+ (point) len)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
918 (save-match-data |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
919 (let ((pt (point-marker)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
920 (oldpt (point-marker)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
921 (newpt (make-marker)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
922 (modified-p (buffer-modified-p)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
923 (case-fold-search nil) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
924 last-coding-system-used |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
925 encoding textlen chset) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
926 (while (re-search-forward |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
927 "\\(\e\\)%/[0-4]\\([\200-\377][\200-\377]\\)\\([^\002]+\\)\002" |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
928 nil 'move) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
929 (set-marker newpt (point)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
930 (set-marker pt (match-beginning 0)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
931 (setq encoding (match-string 3)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
932 (setq textlen (- (+ (* (- (aref (match-string 2) 0) 128) 128) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
933 (- (aref (match-string 2) 1) 128)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
934 (1+ (length encoding)))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
935 (setq |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
936 chset (cdr (assoc-ignore-case encoding |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
937 non-standard-icccm-encodings-alist))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
938 (cond ((null chset) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
939 ;; This charset is not supported--leave this extended |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
940 ;; segment unaltered and skip over it. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
941 (goto-char (+ (point) textlen))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
942 ((charsetp chset) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
943 ;; If it's a charset, replace the leading escape sequence |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
944 ;; with a standard ISO-2022 sequence. We will decode all |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
945 ;; such segments later, in one go, when we exit the loop |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
946 ;; or find an extended segment that names a coding |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
947 ;; system, not a charset. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
948 (replace-match |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
949 (concat "\\1" |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
950 (if (= 0 (charset-iso-graphic-plane chset)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
951 ;; GL charsets |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
952 (if (= 1 (charset-dimension chset)) "(" "$(") |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
953 ;; GR charsets |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
954 (if (= 96 (charset-chars chset)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
955 "-" |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
956 (if (= 1 (charset-dimension chset)) ")" "$)"))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
957 (string (charset-iso-final-char chset))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
958 t) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
959 (goto-char (+ (point) textlen))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
960 ((coding-system-p chset) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
961 ;; If it's a coding system, we need to decode the segment |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
962 ;; right away. But first, decode what we've skipped |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
963 ;; across until now. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
964 (when (> pt oldpt) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
965 (decode-coding-region oldpt pt 'ctext-no-compositions)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
966 (delete-region pt newpt) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
967 (set-marker newpt (+ newpt textlen)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
968 (decode-coding-region pt newpt chset) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
969 (goto-char newpt) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
970 (set-marker oldpt newpt)))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
971 ;; Decode what's left. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
972 (when (> (point) oldpt) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
973 (decode-coding-region oldpt (point) 'ctext-no-compositions)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
974 ;; This buffer started as unibyte, because the string we get from |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
975 ;; the X selection is a unibyte string. We must now make it |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
976 ;; multibyte, so that the decoded text is inserted as multibyte |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
977 ;; into its buffer. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
978 (set-buffer-multibyte t) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
979 (set-buffer-modified-p modified-p) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
980 (- (point-max) (point-min))))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
981 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
982 (defvar non-standard-designations-alist |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
983 '(("$(0" . (big5 "big5-0" 2)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
984 ("$(1" . (big5 "big5-0" 2)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
985 ("-V" . (t "iso8859-10" 1)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
986 ("-Y" . (t "iso8859-13" 1)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
987 ("-_" . (t "iso8859-14" 1)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
988 ("-b" . (t "iso8859-15" 1)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
989 ("-f" . (t "iso8859-16" 1))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
990 "Alist of ctext control sequences that introduce character sets which |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
991 are not in the list of approved ICCCM encodings, and the corresponding |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
992 coding system, identifier string, and number of octets per encoded |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
993 character. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
994 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
995 Each element has the form (CTLSEQ . (ENCODING CHARSET NOCTETS)). CTLSEQ |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
996 is the control sequence (sans the leading ESC) that introduces the character |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
997 set in the text encoded by compound-text. ENCODING is a coding system |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
998 symbol; if it is t, it means that the ctext coding system already encodes |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
999 the text correctly, and only the leading control sequence needs to be altered. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1000 If ENCODING is a coding system, we need to re-encode the text with that |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1001 coding system. CHARSET is the ICCCM name of the charset we need to put into |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1002 the leading control sequence. NOCTETS is the number of octets (bytes) that |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1003 encode each character in this charset. NOCTETS can be 0 (meaning the number |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1004 of octets per character is variable), 1, 2, 3, or 4.") |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1005 |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1006 (defun ctext-pre-write-conversion (from to) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1007 "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
|
1008 |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1009 If FROM is a string, or if the current buffer is not the one set up for us |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1010 by run_pre_post_conversion_on_str, generate a new temp buffer, insert the |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1011 text, and convert it in the temporary buffer. Otherwise, convert in-place." |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1012 (cond ((and (string= (buffer-name) " *code-converting-work*") |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1013 (not (stringp from))) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1014 ; Minimize consing due to subsequent insertions and deletions. |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1015 (buffer-disable-undo) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1016 (narrow-to-region from to)) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1017 (t |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1018 (let ((buf (current-buffer))) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1019 (set-buffer (generate-new-buffer " *temp")) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1020 (buffer-disable-undo) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1021 (if (stringp from) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1022 (insert from) |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1023 (insert-buffer-substring buf from to))))) |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1024 (encode-coding-region from to 'ctext-no-compositions) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1025 ;; Replace ISO-2022 charset designations with extended segments, for |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1026 ;; those charsets that are not part of the official X registry. |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1027 (save-match-data |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1028 (goto-char (point-min)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1029 (let ((newpt (make-marker)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1030 (case-fold-search nil) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1031 pt desig encode-info encoding chset noctets textlen) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1032 (set-buffer-multibyte nil) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1033 ;; The regexp below finds the leading sequences for big5 and |
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1034 ;; iso8859-1[03-6] charsets. |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1035 (while (re-search-forward "\e\\(\$([01]\\|-[VY_bf]\\)" nil 'move) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1036 (setq desig (match-string 1) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1037 pt (point-marker) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1038 encode-info (cdr (assoc desig non-standard-designations-alist)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1039 encoding (car encode-info) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1040 chset (cadr encode-info) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1041 noctets (car (cddr encode-info))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1042 (skip-chars-forward "^\e") |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1043 (set-marker newpt (point)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1044 (cond |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1045 ((eq encoding t) ; only the leading sequence needs to be changed |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1046 (setq textlen (+ (- newpt pt) (length chset) 1)) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1047 ;; Generate the ICCCM control sequence for an extended segment. |
43457
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1048 (replace-match (format "\e%%/%d%c%c%s" |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1049 noctets |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1050 (+ (/ textlen 128) 128) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1051 (+ (% textlen 128) 128) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1052 chset) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1053 t t)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1054 ((coding-system-p encoding) ; need to recode the entire segment... |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1055 (set-marker pt (match-beginning 0)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1056 (decode-coding-region pt newpt 'ctext-no-compositions) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1057 (set-buffer-multibyte t) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1058 (encode-coding-region pt newpt encoding) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1059 (set-buffer-multibyte nil) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1060 (setq textlen (+ (- newpt pt) (length chset) 1)) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1061 (goto-char pt) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1062 (insert (format "\e%%/%d%c%c%s" |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1063 noctets |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1064 (+ (/ textlen 128) 128) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1065 (+ (% textlen 128) 128) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1066 chset)))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1067 (goto-char newpt)))) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1068 (set-buffer-multibyte t) |
43558
5ee62a93032e
(ctext-pre-write-conversion): Handle the
Eli Zaretskii <eliz@gnu.org>
parents:
43457
diff
changeset
|
1069 ;; 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
|
1070 nil) |
28a141684094
(non-standard-icccm-encodings-alist, non-standard-designations-alist): New
Eli Zaretskii <eliz@gnu.org>
parents:
42011
diff
changeset
|
1071 |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1072 (make-obsolete 'set-coding-priority 'set-coding-system-priority "22.0") |
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1073 |
17052 | 1074 ;;; FILE I/O |
1075 | |
34297
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1076 (defcustom auto-coding-alist |
24681 | 1077 '(("\\.\\(arc\\|zip\\|lzh\\|zoo\\|jar\\|tar\\|tgz\\)\\'" . no-conversion) |
37995
35006c638de9
(auto-coding-alist): Remove redundant
Eli Zaretskii <eliz@gnu.org>
parents:
37826
diff
changeset
|
1078 ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1079 "Alist of filename patterns vs corresponding coding systems. |
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1080 Each element looks like (REGEXP . CODING-SYSTEM). |
22819
da7ae4205e0b
(auto-coding-alist): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
22813
diff
changeset
|
1081 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
|
1082 |
22826
e81f7de474b3
(auto-coding-alist): Another doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22819
diff
changeset
|
1083 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
|
1084 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
|
1085 and the contents of `file-coding-system-alist'." |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1086 :group 'files |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1087 :group 'mule |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1088 :type '(repeat (cons (regexp :tag "File name regexp") |
8fffee49b42e
(decode-char, encode-char): Doc fix.
Dave Love <fx@gnu.org>
parents:
34123
diff
changeset
|
1089 (symbol :tag "Coding system")))) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1090 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1091 (defcustom auto-coding-regexp-alist |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1092 '(("^BABYL OPTIONS:[ \t]*-\\*-[ \t]*rmail[ \t]*-\\*-" . no-conversion)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1093 "Alist of patterns vs corresponding coding systems. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1094 Each element looks like (REGEXP . CODING-SYSTEM). |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1095 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
|
1096 |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1097 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
|
1098 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
|
1099 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
|
1100 :group 'files |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1101 :group 'mule |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1102 :type '(repeat (cons (regexp :tag "Regexp") |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1103 (symbol :tag "Coding system")))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1104 |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1105 (defvar set-auto-coding-for-load nil |
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1106 "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
|
1107 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
|
1108 |
24602
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1109 (defun auto-coding-alist-lookup (filename) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1110 "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
|
1111 (let ((alist auto-coding-alist) |
24610
66a14155ad78
(auto-coding-alist-lookup): Include ms-dos
Eli Zaretskii <eliz@gnu.org>
parents:
24602
diff
changeset
|
1112 (case-fold-search (memq system-type '(vax-vms windows-nt ms-dos))) |
24602
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1113 coding-system) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1114 (while (and alist (not coding-system)) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1115 (if (string-match (car (car alist)) filename) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1116 (setq coding-system (cdr (car alist))) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1117 (setq alist (cdr alist)))) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1118 coding-system)) |
ca3a341bfd58
(auto-coding-alist-lookup): New function.
Richard M. Stallman <rms@gnu.org>
parents:
24575
diff
changeset
|
1119 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1120 |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1121 (defun auto-coding-from-file-contents (size) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1122 "Determine a coding system from the contents of the current buffer. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1123 The current buffer contains SIZE bytes starting at point. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1124 Value is either a coding system or nil." |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1125 (save-excursion |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1126 (let ((alist auto-coding-regexp-alist) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1127 coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1128 (while (and alist (not coding-system)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1129 (let ((regexp (car (car alist)))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1130 (when (re-search-forward regexp (+ (point) size) t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1131 (setq coding-system (cdr (car alist))))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1132 (setq alist (cdr alist))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1133 coding-system))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1134 |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1135 |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1136 (defun set-auto-coding (filename size) |
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1137 "Return coding system for a file FILENAME of which SIZE bytes follow point. |
22699
754703e243e6
(set-auto-coding-for-load): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22654
diff
changeset
|
1138 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
|
1139 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
|
1140 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1141 It checks FILENAME against the variable `auto-coding-alist'. If |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1142 FILENAME doesn't match any entries in the variable, it checks the |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1143 contents of the current buffer following point against |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1144 `auto-coding-regexp-alist'. If no match is found, it checks for a |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1145 `coding:' tag in the first one or two lines following point. If no |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1146 `coding:' tag is found, it checks for local variables list in the last |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1147 3K bytes out of the SIZE bytes. |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1148 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1149 The return value is the specified coding system, |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1150 or nil if nothing specified. |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
1151 |
21728
ea71ddaad673
(load-with-code-conversion): Don't pass extra arg to eval-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
21675
diff
changeset
|
1152 The variable `set-auto-coding-function' (which see) is set to this |
19454
5a08bc0f02d3
(make-coding-system): Doc-string fixed.
Kenichi Handa <handa@m17n.org>
parents:
19395
diff
changeset
|
1153 function by default." |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1154 (or (auto-coding-alist-lookup filename) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1155 (auto-coding-from-file-contents size) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1156 (let* ((case-fold-search t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1157 (head-start (point)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1158 (head-end (+ head-start (min size 1024))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1159 (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
|
1160 (tail-end (+ head-start size)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1161 coding-system head-found tail-found pos) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1162 ;; 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
|
1163 ;; 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
|
1164 (setq head-found (or (search-forward "coding:" head-end t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1165 (search-forward "unibyte:" head-end t))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1166 (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
|
1167 ;; Head and tail are overlapped. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1168 (setq tail-found head-found) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1169 (goto-char tail-start) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1170 (setq tail-found (or (search-forward "coding:" tail-end t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1171 (search-forward "unibyte:" tail-end t)))) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1172 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1173 ;; At first check the head. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1174 (when head-found |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1175 (goto-char head-start) |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1176 (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
|
1177 (setq head-start (point)) |
42011
235915876f5b
(set-auto-coding): Don't search for
Eli Zaretskii <eliz@gnu.org>
parents:
41983
diff
changeset
|
1178 (when (and head-end (< head-found head-end)) |
22813
b209a00e464e
(auto-coding-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
22741
diff
changeset
|
1179 (goto-char head-start) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1180 (when (and set-auto-coding-for-load |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1181 (re-search-forward |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1182 "\\(.*;\\)?[ \t]*unibyte:[ \t]*\\([^ ;]+\\)" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1183 head-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1184 (setq coding-system 'raw-text)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1185 (when (and (not coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1186 (re-search-forward |
41973
903480208cfd
(set-auto-coding): Use set-auto-mode-1.
Richard M. Stallman <rms@gnu.org>
parents:
41677
diff
changeset
|
1187 "\\(.*;\\)?[ \t]*coding:[ \t]*\\([^ ;]+\\)" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1188 head-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1189 (setq coding-system (intern (match-string 2))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1190 (or (coding-system-p coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1191 (setq coding-system nil))))) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1192 |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1193 ;; If no coding: tag in the head, check the tail. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1194 (when (and tail-found (not coding-system)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1195 (goto-char tail-start) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1196 (search-forward "\n\^L" nil t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1197 (if (re-search-forward |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1198 "^\\(.*\\)[ \t]*Local Variables:[ \t]*\\(.*\\)$" tail-end t) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1199 ;; The prefix is what comes before "local variables:" in its |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1200 ;; line. The suffix is what comes after "local variables:" |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1201 ;; in its line. |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1202 (let* ((prefix (regexp-quote (match-string 1))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1203 (suffix (regexp-quote (match-string 2))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1204 (re-coding |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1205 (concat |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1206 "^" prefix |
39947
9c7e9fea58dc
(set-auto-coding): Fix regexps for local
Gerd Moellmann <gerd@gnu.org>
parents:
38614
diff
changeset
|
1207 ;; 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
|
1208 ;; eat newlines. |
9c7e9fea58dc
(set-auto-coding): Fix regexps for local
Gerd Moellmann <gerd@gnu.org>
parents:
38614
diff
changeset
|
1209 "[ \t]*coding[ \t]*:[ \t]*\\([^ \t\n]+\\)[ \t]*" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1210 suffix "$")) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1211 (re-unibyte |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1212 (concat |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1213 "^" prefix |
39947
9c7e9fea58dc
(set-auto-coding): Fix regexps for local
Gerd Moellmann <gerd@gnu.org>
parents:
38614
diff
changeset
|
1214 "[ \t]*unibyte[ \t]*:[ \t]*\\([^ \t\n]+\\)[ \t]*" |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1215 suffix "$")) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1216 (re-end |
39947
9c7e9fea58dc
(set-auto-coding): Fix regexps for local
Gerd Moellmann <gerd@gnu.org>
parents:
38614
diff
changeset
|
1217 (concat "^" prefix "[ \t]*End *:[ \t]*" suffix "$")) |
37746
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1218 (pos (point))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1219 (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
|
1220 (setq tail-end (point)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1221 (goto-char pos) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1222 (when (and set-auto-coding-for-load |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1223 (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
|
1224 (setq coding-system 'raw-text)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1225 (when (and (not coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1226 (re-search-forward re-coding tail-end t)) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1227 (setq coding-system (intern (match-string 1))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1228 (or (coding-system-p coding-system) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1229 (setq coding-system nil)))))) |
0204bb9ccc1e
(auto-coding-regexp-alist): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
36466
diff
changeset
|
1230 coding-system))) |
19648
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1231 |
e9031152e052
(set-auto-coding): Name changed from
Kenichi Handa <handa@m17n.org>
parents:
19606
diff
changeset
|
1232 (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
|
1233 |
17052 | 1234 (defun after-insert-file-set-buffer-file-coding-system (inserted) |
36037 | 1235 "Set `buffer-file-coding-system' of current buffer after text is inserted." |
17052 | 1236 (if last-coding-system-used |
1237 (let ((coding-system | |
1238 (find-new-buffer-file-coding-system last-coding-system-used)) | |
1239 (modified-p (buffer-modified-p))) | |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1240 (when coding-system |
29641
703433352fc4
(after-insert-file-set-buffer-file-coding-system): Call
Kenichi Handa <handa@m17n.org>
parents:
29575
diff
changeset
|
1241 (set-buffer-file-coding-system coding-system t) |
23717
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1242 (if (and enable-multibyte-characters |
88413
418777d5ccd4
(char-valid-p): Make it an alias of characterp.
Kenichi Handa <handa@m17n.org>
parents:
43558
diff
changeset
|
1243 (or (eq (coding-system-type coding-system) 'raw-text)) |
29504
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1244 ;; If buffer was unmodified and the size is the |
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1245 ;; same as INSERTED, we must be visiting it. |
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1246 (not modified-p) |
09063dfdc92c
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
29428
diff
changeset
|
1247 (= (buffer-size) inserted)) |
22041
e977f2414da5
(after-insert-file-set-buffer-file-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
21728
diff
changeset
|
1248 ;; For coding systems no-conversion and raw-text..., |
e977f2414da5
(after-insert-file-set-buffer-file-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
21728
diff
changeset
|
1249 ;; edit the buffer as unibyte. |
23717
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1250 (let ((pos-byte (position-bytes (+ (point) inserted)))) |
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1251 (set-buffer-multibyte nil) |
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1252 (setq inserted (- pos-byte (position-bytes (point)))))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1253 (set-buffer-modified-p modified-p)))) |
23717
ad0e76fa89be
(after-insert-file-set-buffer-file-coding-system): If the buffer
Kenichi Handa <handa@m17n.org>
parents:
23456
diff
changeset
|
1254 inserted) |
17052 | 1255 |
21023 | 1256 (add-hook 'after-insert-file-functions |
1257 'after-insert-file-set-buffer-file-coding-system) | |
17052 | 1258 |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
1259 ;; The coding-spec and eol-type of coding-system returned is decided |
17052 | 1260 ;; independently in the following order. |
1261 ;; 1. That of buffer-file-coding-system locally bound. | |
1262 ;; 2. That of CODING. | |
1263 | |
1264 (defun find-new-buffer-file-coding-system (coding) | |
1265 "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
|
1266 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
|
1267 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
|
1268 Return nil if there's no need to set `buffer-file-coding-system'." |
17052 | 1269 (let (local-coding local-eol |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1270 found-coding found-eol |
17052 | 1271 new-coding new-eol) |
1272 (if (null coding) | |
1273 ;; Nothing found about coding. | |
1274 nil | |
1275 | |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1276 ;; 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
|
1277 ;; and LOCAL-CODING. |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1278 (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
|
1279 (if (null (numberp local-eol)) |
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1280 ;; 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
|
1281 (setq local-eol nil)) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1282 (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
|
1283 (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
|
1284 'undecided))) |
20112
6e6838a12511
The summary of the following changes:
Kenichi Handa <handa@m17n.org>
parents:
19986
diff
changeset
|
1285 (setq local-coding (coding-system-base buffer-file-coding-system))) |
17052 | 1286 |
19948
46e5df654a35
(find-new-buffer-file-coding-system): Reflect
Richard M. Stallman <rms@gnu.org>
parents:
19802
diff
changeset
|
1287 (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
|
1288 local-eol local-coding) |
17052 | 1289 ;; The current buffer has already set full coding-system, we |
1290 ;; had better not change it. | |
1291 nil | |
1292 | |
18195
9650375d0a68
Delete declaration for buffer-file-coding-system. It
Kenichi Handa <handa@m17n.org>
parents:
17984
diff
changeset
|
1293 (setq found-eol (coding-system-eol-type coding)) |
17052 | 1294 (if (null (numberp found-eol)) |
22903
77e68af369b1
(find-new-buffer-file-coding-system): When
Eli Zaretskii <eliz@gnu.org>
parents:
22884
diff
changeset
|
1295 ;; But eol-type is not found. |
77e68af369b1
(find-new-buffer-file-coding-system): When
Eli Zaretskii <eliz@gnu.org>
parents:
22884
diff
changeset
|
1296 ;; 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
|
1297 (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
|
1298 (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
|
1299 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1300 (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
|
1301 ;; No valid coding information found. |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1302 nil |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1303 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1304 ;; Some coding information (eol or text) found. |
17052 | 1305 |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1306 ;; 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
|
1307 (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
|
1308 (or local-coding found-coding) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1309 (or found-coding local-coding))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1310 (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
|
1311 (or local-eol found-eol) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1312 (or found-eol local-eol))) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1313 |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1314 (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
|
1315 (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
|
1316 (aref eol-type new-eol) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1317 new-coding))))))) |
17052 | 1318 |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1319 (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
|
1320 "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
|
1321 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
|
1322 `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
|
1323 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1324 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
|
1325 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
|
1326 If it is `process', it affects `process-coding-system-alist' (which see). |
23196 | 1327 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
|
1328 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1329 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
|
1330 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
|
1331 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
|
1332 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
|
1333 |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1334 CODING-SYSTEM is a coding system to perform code conversion on the I/O |
18913
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
1335 operation, or a cons cell (DECODING . ENCODING) specifying the coding systems |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
1336 for decoding and encoding respectively, |
7333c3179621
(modify-coding-system-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18874
diff
changeset
|
1337 or a function symbol which, when called, returns such a cons cell." |
18874
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1338 (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
|
1339 (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
|
1340 (or (stringp regexp) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1341 (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
|
1342 (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
|
1343 (if (symbolp coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1344 (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
|
1345 (progn |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1346 (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
|
1347 (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
|
1348 (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
|
1349 (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
|
1350 (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
|
1351 (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
|
1352 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1353 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1354 (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
|
1355 (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
|
1356 file-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1357 ((eq target-type 'process) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1358 (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
|
1359 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1360 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1361 (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
|
1362 (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
|
1363 process-coding-system-alist))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1364 (t |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1365 (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
|
1366 (if slot |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1367 (setcdr slot coding-system) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1368 (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
|
1369 (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
|
1370 network-coding-system-alist))))))) |
e44ac570f54f
(modify-coding-system-alist): Moved to mule-util.el.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18798
diff
changeset
|
1371 |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1372 (defun make-translation-table (&rest args) |
36262 | 1373 "Make a translation table from arguments. |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
1374 A translation table is a char table intended for character |
36262 | 1375 translation in CCL programs. |
1376 | |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
1377 Each argument is a list of elements of the form (FROM . TO), where FROM |
36262 | 1378 is a character to be translated to TO. |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1379 |
22225
6f56af1aab96
(make-translation-table): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22186
diff
changeset
|
1380 FROM can be a generic character (see `make-char'). In this case, TO is |
40826
24ea3c263919
(make-translation-table): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
39947
diff
changeset
|
1381 a generic character containing the same number of characters, or an |
22225
6f56af1aab96
(make-translation-table): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22186
diff
changeset
|
1382 ordinary character. If FROM and TO are both generic characters, all |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1383 characters belonging to FROM are translated to characters belonging to TO |
35481
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1384 without changing their position code(s). |
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1385 |
df08279e042b
(make-translation-table): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35324
diff
changeset
|
1386 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
|
1387 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
|
1388 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
|
1389 (let ((table (make-char-table 'translation-table)) |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1390 revlist) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1391 (while args |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1392 (let ((elts (car args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1393 (while elts |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1394 (let* ((from (car (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1395 (from-i 0) ; degree of freedom of FROM |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1396 (from-rev (nreverse (split-char from))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1397 (to (cdr (car elts))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1398 (to-i 0) ; degree of freedom of TO |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1399 (to-rev (nreverse (split-char to)))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1400 ;; Check numbers of heading 0s in FROM-REV and TO-REV. |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1401 (while (eq (car from-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1402 (setq from-i (1+ from-i) from-rev (cdr from-rev))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1403 (while (eq (car to-rev) 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1404 (setq to-i (1+ to-i) to-rev (cdr to-rev))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1405 (if (and (/= from-i to-i) (/= to-i 0)) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1406 (error "Invalid character pair (%d . %d)" from to)) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1407 ;; If we have already translated TO to TO-ALT, FROM should |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1408 ;; also be translated to TO-ALT. But, this is only if TO |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1409 ;; is a generic character or TO-ALT is not a generic |
17837
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1410 ;; character. |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1411 (let ((to-alt (aref table to))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1412 (if (and to-alt |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1413 (or (> to-i 0) (not (generic-char-p to-alt)))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1414 (setq to to-alt))) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1415 (if (> from-i 0) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1416 (set-char-table-default table from to) |
a4d3078a83e9
(make-unification-table): Fix handling of a generic
Kenichi Handa <handa@m17n.org>
parents:
17761
diff
changeset
|
1417 (aset table from to)) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1418 ;; If we have already translated some chars to FROM, they |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1419 ;; should also be translated to TO. |
17761
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1420 (let ((l (assq from revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1421 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1422 (let ((ch (car l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1423 (setcar l to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1424 (setq l (cdr l)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1425 (while l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1426 (aset table ch to) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1427 (setq l (cdr l)) )))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1428 ;; Now update REVLIST. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1429 (let ((l (assq to revlist))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1430 (if l |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1431 (setcdr l (cons from (cdr l))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1432 (setq revlist (cons (list to from) revlist))))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1433 (setq elts (cdr elts)))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1434 (setq args (cdr args))) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1435 ;; Return TABLE just created. |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1436 table)) |
c5f430853301
(make-char): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
17175
diff
changeset
|
1437 |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1438 (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
|
1439 "Make translation table from decoding vector VEC. |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
1440 VEC is an array of 256 elements to map unibyte codes to multibyte |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
1441 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
|
1442 See also the variable `nonascii-translation-table'." |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1443 (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
|
1444 (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
|
1445 ch) |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
1446 (dotimes (i 256) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1447 (setq ch (aref vec i)) |
41983
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
1448 (when ch |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
1449 (aset table i ch) |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
1450 (if (>= ch 256) |
8acbb96a91c3
(make-translation-table-from-vector):
Dave Love <fx@gnu.org>
parents:
41973
diff
changeset
|
1451 (aset rev-table ch i)))) |
22884
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1452 (set-char-table-extra-slot table 0 rev-table) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1453 table)) |
e7a1b839f16c
(make-coding-system): If the arg TYPE is
Kenichi Handa <handa@m17n.org>
parents:
22836
diff
changeset
|
1454 |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1455 (defun define-translation-table (symbol &rest args) |
36262 | 1456 "Define SYMBOL as the name of translation table made by ARGS. |
1457 This sets up information so that the table can be used for | |
1458 translations in a CCL program. | |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1459 |
36262 | 1460 If the first element of ARGS is a char-table whose purpose is |
1461 `translation-table', just define SYMBOL to name it. (Note that this | |
1462 function does not bind SYMBOL.) | |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
1463 |
36262 | 1464 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
|
1465 `make-translation-table' (which see). |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1466 |
22225
6f56af1aab96
(make-translation-table): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22186
diff
changeset
|
1467 This function sets properties `translation-table' and |
36037 | 1468 `translation-table-id' of SYMBOL to the created table itself and the |
1469 identification number of the table respectively. It also registers | |
1470 the table in `translation-table-vector'." | |
23770
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
1471 (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
|
1472 (eq (char-table-subtype (car args)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
1473 'translation-table)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
1474 (car args) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
1475 (apply 'make-translation-table args))) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1476 (len (length translation-table-vector)) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1477 (id 0) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1478 (done nil)) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1479 (put symbol 'translation-table table) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1480 (while (not done) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1481 (if (>= id len) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1482 (setq translation-table-vector |
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1483 (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
|
1484 (let ((slot (aref translation-table-vector id))) |
22125
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1485 (if (or (not slot) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1486 (eq (car slot) symbol)) |
8e8f1bc7f743
Change term unification to translation
Kenichi Handa <handa@m17n.org>
parents:
22083
diff
changeset
|
1487 (progn |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1488 (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
|
1489 (setq done t)) |
45f1d511e726
(define-translation-table): Fix bug of
Kenichi Handa <handa@m17n.org>
parents:
23717
diff
changeset
|
1490 (setq id (1+ id))))) |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22160
diff
changeset
|
1491 (put symbol 'translation-table-id id) |
20729
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1492 id)) |
821b2167b6c3
(define-character-unification-table): New
Kenichi Handa <handa@m17n.org>
parents:
20405
diff
changeset
|
1493 |
26887
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1494 (put 'with-category-table 'lisp-indent-function 1) |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1495 |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1496 (defmacro with-category-table (category-table &rest body) |
88551 | 1497 "Execute BODY like `progn' with CATEGORY-TABLE the current category table." |
26887
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1498 `(let ((current-category-table (category-table))) |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1499 (set-category-table ,category-table) |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1500 (unwind-protect |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1501 (progn ,@body) |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1502 (set-category-table current-category-table)))) |
2f284b9ec711
(mule-version): Updated to 5.0 (AOI).
Kenichi Handa <handa@m17n.org>
parents:
26716
diff
changeset
|
1503 |
17094
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1504 ;;; Initialize some variables. |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1505 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1506 (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
|
1507 (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
|
1508 (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
|
1509 (setq ignore-relative-composition |
9d34beb088bf
(make-coding-system): Add a new FLAGS
Kenichi Handa <handa@m17n.org>
parents:
19162
diff
changeset
|
1510 (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
|
1511 |
c237252970e5
(make-coding-system): For ISO-2022 type conding systems,
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1512 ;;; |
17052 | 1513 (provide 'mule) |
1514 | |
1515 ;;; mule.el ends here |