annotate lisp/international/mule.el @ 88698:97ff20849724

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