Mercurial > emacs
annotate lisp/international/mule-cmds.el @ 50183:42387e68072a
(find-coding-systems-for-charsets):
Use find-coding-systems-string instead of looking up
char-coding-system-table.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 18 Mar 2003 04:23:50 +0000 |
parents | f2c182eeeda2 |
children | 32b881425e3d |
rev | line source |
---|---|
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37953
diff
changeset
|
1 ;;; mule-cmds.el --- commands for mulitilingual environment |
17052 | 2 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. |
18377
8b4a66c66dd6
Change copyright notice.
Richard M. Stallman <rms@gnu.org>
parents:
18351
diff
changeset
|
3 ;; Licensed to the Free Software Foundation. |
49796
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
4 ;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. |
17052 | 5 |
6 ;; Keywords: mule, multilingual | |
7 | |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
17071 | 21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
17052 | 24 |
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37953
diff
changeset
|
25 ;;; Commentary: |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37953
diff
changeset
|
26 |
17052 | 27 ;;; Code: |
28 | |
28456 | 29 (eval-when-compile (defvar dos-codepage)) |
30 | |
17052 | 31 ;;; MULE related key bindings and menus. |
32 | |
19725 | 33 (defvar mule-keymap (make-sparse-keymap) |
24725
269f6a206499
Change MULE to Mule in docstrings and menus.
Kenichi Handa <handa@m17n.org>
parents:
24617
diff
changeset
|
34 "Keymap for Mule (Multilingual environment) specific commands.") |
17052 | 35 |
17294
d7ae63db9e6e
Prefix for Mule related commands is changed.
Kenichi Handa <handa@m17n.org>
parents:
17090
diff
changeset
|
36 ;; Keep "C-x C-m ..." for mule specific commands. |
19725 | 37 (define-key ctl-x-map "\C-m" mule-keymap) |
17090
8085a8690c87
(mule-keymap): Re-arranged.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
38 |
17052 | 39 (define-key mule-keymap "f" 'set-buffer-file-coding-system) |
46786
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
40 (define-key mule-keymap "r" 'revert-buffer-with-coding-system) |
48879
153dc2e78966
(mule-keymap, set-coding-system-map):
Kenichi Handa <handa@m17n.org>
parents:
48877
diff
changeset
|
41 (define-key mule-keymap "F" 'set-file-name-coding-system) |
17052 | 42 (define-key mule-keymap "t" 'set-terminal-coding-system) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
43 (define-key mule-keymap "k" 'set-keyboard-coding-system) |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
44 (define-key mule-keymap "p" 'set-buffer-process-coding-system) |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
45 (define-key mule-keymap "x" 'set-selection-coding-system) |
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
46 (define-key mule-keymap "X" 'set-next-selection-coding-system) |
20295
27ae44142cfd
(set-input-method): Renamed from select-input-method.
Karl Heuer <kwzh@gnu.org>
parents:
20231
diff
changeset
|
47 (define-key mule-keymap "\C-\\" 'set-input-method) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
48 (define-key mule-keymap "c" 'universal-coding-system-argument) |
18801
f60dbf4f7d7c
(mule-keymap): Bind l to set-language-environment.
Kenichi Handa <handa@m17n.org>
parents:
18712
diff
changeset
|
49 (define-key mule-keymap "l" 'set-language-environment) |
17052 | 50 |
27731 | 51 (defvar mule-menu-keymap |
52 (make-sparse-keymap "Mule (Multilingual Environment)") | |
24725
269f6a206499
Change MULE to Mule in docstrings and menus.
Kenichi Handa <handa@m17n.org>
parents:
24617
diff
changeset
|
53 "Keymap for Mule (Multilingual environment) menu specific commands.") |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
54 |
23924
e3421077c412
Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents:
23916
diff
changeset
|
55 (defvar describe-language-environment-map |
e3421077c412
Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents:
23916
diff
changeset
|
56 (make-sparse-keymap "Describe Language Environment")) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
57 |
23924
e3421077c412
Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents:
23916
diff
changeset
|
58 (defvar setup-language-environment-map |
e3421077c412
Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents:
23916
diff
changeset
|
59 (make-sparse-keymap "Set Language Environment")) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
60 |
23924
e3421077c412
Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents:
23916
diff
changeset
|
61 (defvar set-coding-system-map |
e3421077c412
Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents:
23916
diff
changeset
|
62 (make-sparse-keymap "Set Coding System")) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
63 |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
64 (define-key-after mule-menu-keymap [set-language-environment] |
28456 | 65 (list 'menu-item "Set Language Environment" setup-language-environment-map |
66 :help "Multilingual environment suitable for a specific language")) | |
18351
8cc30b266976
Define mouse-set-font in mule-menu-keymap agian.
Kenichi Handa <handa@m17n.org>
parents:
18301
diff
changeset
|
67 (define-key-after mule-menu-keymap [mouse-set-font] |
27731 | 68 '(menu-item "Set Font/Fontset" mouse-set-font |
28456 | 69 :visible (fboundp 'generate-fontset-menu) |
70 :help "Select a font from list of known fonts/fontsets")) | |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
71 (define-key-after mule-menu-keymap [separator-mule] |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
72 '("--") |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
73 t) |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
74 (define-key-after mule-menu-keymap [toggle-input-method] |
27731 | 75 '(menu-item "Toggle Input Method" toggle-input-method) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
76 t) |
20295
27ae44142cfd
(set-input-method): Renamed from select-input-method.
Karl Heuer <kwzh@gnu.org>
parents:
20231
diff
changeset
|
77 (define-key-after mule-menu-keymap [set-input-method] |
27731 | 78 '(menu-item "Select Input Method..." set-input-method) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
79 t) |
28456 | 80 (define-key-after mule-menu-keymap [describe-input-method] |
81 '(menu-item "Describe Input Method" describe-input-method)) | |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
82 (define-key-after mule-menu-keymap [separator-input-method] |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
83 '("--") |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
84 t) |
27731 | 85 (define-key-after mule-menu-keymap [set-various-coding-system] |
28456 | 86 (list 'menu-item "Set Coding Systems" set-coding-system-map |
87 :enable 'enable-multibyte-characters)) | |
27731 | 88 (define-key-after mule-menu-keymap [view-hello-file] |
89 '(menu-item "Show Multi-lingual Text" view-hello-file | |
90 :enable (file-readable-p | |
91 (expand-file-name "HELLO" data-directory)) | |
92 :help "Display file which says HELLO in many languages") | |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
93 t) |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
94 (define-key-after mule-menu-keymap [separator-coding-system] |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
95 '("--") |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
96 t) |
27731 | 97 (define-key-after mule-menu-keymap [describe-language-environment] |
98 (list 'menu-item "Describe Language Environment" | |
99 describe-language-environment-map | |
28456 | 100 :help "Show multilingual settings for a specific language") |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
101 t) |
27731 | 102 (define-key-after mule-menu-keymap [describe-input-method] |
103 '(menu-item "Describe Input Method..." describe-input-method | |
28456 | 104 :help "Keyboard layout for a specific input method") |
27731 | 105 t) |
106 (define-key-after mule-menu-keymap [describe-coding-system] | |
107 '(menu-item "Describe Coding System..." describe-coding-system) | |
108 t) | |
28456 | 109 (define-key-after mule-menu-keymap [list-character-sets] |
110 '(menu-item "List Character Sets" list-character-sets | |
111 :help "Show table of available character sets")) | |
27731 | 112 (define-key-after mule-menu-keymap [mule-diag] |
113 '(menu-item "Show All of Mule Status" mule-diag | |
114 :help "Display multilingual environment settings") | |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
115 t) |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
116 |
19673
da7f50da6773
(set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
19654
diff
changeset
|
117 (define-key-after set-coding-system-map [universal-coding-system-argument] |
27731 | 118 '(menu-item "For Next Command" universal-coding-system-argument |
119 :help "Coding system to be used by next command") | |
19673
da7f50da6773
(set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
19654
diff
changeset
|
120 t) |
46786
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
121 (define-key-after set-coding-system-map [separator-1] |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
122 '("--") |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
123 t) |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
124 (define-key-after set-coding-system-map [set-buffer-file-coding-system] |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
125 '(menu-item "For Saving This Buffer" set-buffer-file-coding-system |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
126 :help "How to encode this buffer when saved") |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
127 t) |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
128 (define-key-after set-coding-system-map [revert-buffer-with-coding-system] |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
129 '(menu-item "For Reverting This File Now" revert-buffer-with-coding-system |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
130 :enable buffer-file-name |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
131 :help "Revisit this file immediately using specified coding system") |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
132 t) |
48879
153dc2e78966
(mule-keymap, set-coding-system-map):
Kenichi Handa <handa@m17n.org>
parents:
48877
diff
changeset
|
133 (define-key-after set-coding-system-map [set-file-name-coding-system] |
153dc2e78966
(mule-keymap, set-coding-system-map):
Kenichi Handa <handa@m17n.org>
parents:
48877
diff
changeset
|
134 '(menu-item "For File Name" set-file-name-coding-system |
153dc2e78966
(mule-keymap, set-coding-system-map):
Kenichi Handa <handa@m17n.org>
parents:
48877
diff
changeset
|
135 :help "How to decode/encode file names") |
153dc2e78966
(mule-keymap, set-coding-system-map):
Kenichi Handa <handa@m17n.org>
parents:
48877
diff
changeset
|
136 t) |
46786
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
137 (define-key-after set-coding-system-map [separator-2] |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
138 '("--") |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
139 t) |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
140 |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
141 (define-key-after set-coding-system-map [set-keyboard-coding-system] |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
142 '(menu-item "For Keyboard" set-keyboard-coding-system |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
143 :help "How to decode keyboard input") |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
144 t) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
145 (define-key-after set-coding-system-map [set-terminal-coding-system] |
27731 | 146 '(menu-item "For Terminal" set-terminal-coding-system |
147 :enable (null (memq window-system '(x w32 mac))) | |
148 :help "How to encode terminal output") | |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
149 t) |
46786
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
150 (define-key-after set-coding-system-map [separator-3] |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
151 '("--") |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
152 t) |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
153 (define-key-after set-coding-system-map [set-selection-coding-system] |
27731 | 154 '(menu-item "For X Selections/Clipboard" set-selection-coding-system |
155 :visible (display-selections-p) | |
156 :help "How to en/decode data to/from selection/clipboard") | |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
157 t) |
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
158 (define-key-after set-coding-system-map [set-next-selection-coding-system] |
27731 | 159 '(menu-item "For Next X Selection" set-next-selection-coding-system |
160 :visible (display-selections-p) | |
161 :help "How to en/decode next selection/clipboard operation") | |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
162 t) |
46786
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
163 (define-key-after set-coding-system-map [set-buffer-process-coding-system] |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
164 '(menu-item "For I/O with Subprocess" set-buffer-process-coding-system |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
165 :visible (fboundp 'start-process) |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
166 :enable (get-buffer-process (current-buffer)) |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
167 :help "How to en/decode I/O from/to subprocess connected to this buffer") |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
168 t) |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
169 |
703592d3b794
(mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents:
46674
diff
changeset
|
170 |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
171 (define-key setup-language-environment-map |
27731 | 172 [Default] '(menu-item "Default" setup-specified-language-environment)) |
17052 | 173 |
28456 | 174 (define-key describe-language-environment-map |
175 [Default] '(menu-item "Default" describe-specified-language-support)) | |
176 | |
17052 | 177 ;; This should be a single character key binding because users use it |
178 ;; very frequently while editing multilingual text. Now we can use | |
179 ;; only two such keys: "\C-\\" and "\C-^", but the latter is not | |
180 ;; convenient because it requires shifting on most keyboards. An | |
181 ;; alternative is "\C-\]" which is now bound to `abort-recursive-edit' | |
182 ;; but it won't be used that frequently. | |
183 (define-key global-map "\C-\\" 'toggle-input-method) | |
184 | |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
185 ;; This is no good because people often type Shift-SPC |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
186 ;; meaning to type SPC. -- rms. |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
187 ;; ;; Here's an alternative key binding for X users (Shift-SPACE). |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
188 ;; (define-key global-map [?\S- ] 'toggle-input-method) |
18801
f60dbf4f7d7c
(mule-keymap): Bind l to set-language-environment.
Kenichi Handa <handa@m17n.org>
parents:
18712
diff
changeset
|
189 |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
190 ;;; Mule related hyperlinks. |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
191 (defconst help-xref-mule-regexp-template |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
192 (purecopy (concat "\\(\\<\\(" |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
193 "\\(coding system\\)\\|" |
31423
afa66a3f39dc
(help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents:
31245
diff
changeset
|
194 "\\(input method\\)\\|" |
afa66a3f39dc
(help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents:
31245
diff
changeset
|
195 "\\(character set\\)\\|" |
afa66a3f39dc
(help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents:
31245
diff
changeset
|
196 "\\(charset\\)" |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
197 "\\)\\s-+\\)?" |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
198 ;; Note starting with word-syntax character: |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
199 "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'"))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
200 |
24007
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
201 (defun coding-system-change-eol-conversion (coding-system eol-type) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
202 "Return a coding system which differs from CODING-SYSTEM in eol conversion. |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
203 The returned coding system converts end-of-line by EOL-TYPE |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
204 but text as the same way as CODING-SYSTEM. |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
205 EOL-TYPE should be `unix', `dos', `mac', or nil. |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
206 If EOL-TYPE is nil, the returned coding system detects |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
207 how end-of-line is formatted automatically while decoding. |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
208 |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
209 EOL-TYPE can be specified by an integer 0, 1, or 2. |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
210 They means `unix', `dos', and `mac' respectively." |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
211 (if (symbolp eol-type) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
212 (setq eol-type (cond ((eq eol-type 'unix) 0) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
213 ((eq eol-type 'dos) 1) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
214 ((eq eol-type 'mac) 2) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
215 (t eol-type)))) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
216 (let ((orig-eol-type (coding-system-eol-type coding-system))) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
217 (if (vectorp orig-eol-type) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
218 (if (not eol-type) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
219 coding-system |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
220 (aref orig-eol-type eol-type)) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
221 (let ((base (coding-system-base coding-system))) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
222 (if (not eol-type) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
223 base |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
224 (if (= eol-type orig-eol-type) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
225 coding-system |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
226 (setq orig-eol-type (coding-system-eol-type base)) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
227 (if (vectorp orig-eol-type) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
228 (aref orig-eol-type eol-type)))))))) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
229 |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
230 (defun coding-system-change-text-conversion (coding-system coding) |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
231 "Return a coding system which differs from CODING-SYSTEM in text conversion. |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
232 The returned coding system converts text by CODING |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
233 but end-of-line as the same way as CODING-SYSTEM. |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
234 If CODING is nil, the returned coding system detects |
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
235 how text is formatted automatically while decoding." |
44425
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
236 (let ((eol-type (coding-system-eol-type coding-system))) |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
237 (coding-system-change-eol-conversion |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
238 (if coding coding 'undecided) |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
239 (if (numberp eol-type) (aref [unix dos mac] eol-type))))) |
24007
0e0b1cdfbfe3
(coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents:
23966
diff
changeset
|
240 |
17052 | 241 (defun toggle-enable-multibyte-characters (&optional arg) |
20483
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
242 "Change whether this buffer uses multibyte characters. |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
243 With arg, use multibyte characters if the arg is positive. |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
244 |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
245 Note that this command does not convert the byte contents of |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
246 the buffer; it only changes the way those bytes are interpreted. |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
247 In general, therefore, this command *changes* the sequence of |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
248 characters that the current buffer contains. |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
249 |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
250 We suggest you avoid using use this command unless you know what you |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
251 are doing. If you use it by mistake, and the buffer is now displayed |
141c2d41d39c
(toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
20467
diff
changeset
|
252 wrong, use this command again to toggle back to the right mode." |
17052 | 253 (interactive "P") |
20830
237a0f70c61d
(toggle-enable-multibyte-characters): Use set-buffer-multibyte.
Richard M. Stallman <rms@gnu.org>
parents:
20733
diff
changeset
|
254 (let ((new-flag |
237a0f70c61d
(toggle-enable-multibyte-characters): Use set-buffer-multibyte.
Richard M. Stallman <rms@gnu.org>
parents:
20733
diff
changeset
|
255 (if (null arg) (null enable-multibyte-characters) |
237a0f70c61d
(toggle-enable-multibyte-characters): Use set-buffer-multibyte.
Richard M. Stallman <rms@gnu.org>
parents:
20733
diff
changeset
|
256 (> (prefix-numeric-value arg) 0)))) |
237a0f70c61d
(toggle-enable-multibyte-characters): Use set-buffer-multibyte.
Richard M. Stallman <rms@gnu.org>
parents:
20733
diff
changeset
|
257 (set-buffer-multibyte new-flag)) |
17052 | 258 (force-mode-line-update)) |
259 | |
260 (defun view-hello-file () | |
261 "Display the HELLO file which list up many languages and characters." | |
262 (interactive) | |
17294
d7ae63db9e6e
Prefix for Mule related commands is changed.
Kenichi Handa <handa@m17n.org>
parents:
17090
diff
changeset
|
263 ;; We have to decode the file in any environment. |
d7ae63db9e6e
Prefix for Mule related commands is changed.
Kenichi Handa <handa@m17n.org>
parents:
17090
diff
changeset
|
264 (let ((default-enable-multibyte-characters t) |
18217
13a240aa1960
(view-hello-file): Adjusted for the changes of
Kenichi Handa <handa@m17n.org>
parents:
18176
diff
changeset
|
265 (coding-system-for-read 'iso-2022-7bit)) |
49779
2207016a3e9e
(view-hello-file): Use `view-file' instead of `find-file-read-only'.
Juanma Barranquero <lekktu@gmail.com>
parents:
49776
diff
changeset
|
266 (view-file (expand-file-name "HELLO" data-directory)))) |
17052 | 267 |
47450
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
268 (defun universal-coding-system-argument (coding-system) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
269 "Execute an I/O command using the specified coding system." |
47450
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
270 (interactive |
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
271 (let ((default (and buffer-file-coding-system |
21882
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
272 (not (eq (coding-system-type buffer-file-coding-system) |
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
273 t)) |
47450
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
274 buffer-file-coding-system))) |
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
275 (list (read-coding-system |
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
276 (if default |
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
277 (format "Coding system for following command (default, %s): " default) |
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
278 "Coding system for following command: ") |
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
279 default)))) |
6bd30e077257
(universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents:
46857
diff
changeset
|
280 (let* ((keyseq (read-key-sequence |
19798
054497f70932
(universal-coding-system-argument): Improve prompt strings.
Richard M. Stallman <rms@gnu.org>
parents:
19784
diff
changeset
|
281 (format "Command to execute with %s:" coding-system))) |
35504
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
282 (cmd (key-binding keyseq)) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
283 prefix) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
284 |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
285 (when (eq cmd 'universal-argument) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
286 (call-interactively cmd) |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49435
diff
changeset
|
287 |
35504
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
288 ;; Process keys bound in `universal-argument-map'. |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
289 (while (progn |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
290 (setq keyseq (read-key-sequence nil t) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
291 cmd (key-binding keyseq t)) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
292 (not (eq cmd 'universal-argument-other-key))) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
293 (let ((current-prefix-arg prefix-arg) |
46674 | 294 ;; Have to bind `last-command-char' here so that |
35504
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
295 ;; `digit-argument', for isntance, can compute the |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
296 ;; prefix arg. |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
297 (last-command-char (aref keyseq 0))) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
298 (call-interactively cmd))) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
299 |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
300 ;; This is the final call to `univeral-argument-other-key', which |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
301 ;; set's the final `prefix-arg. |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
302 (let ((current-prefix-arg prefix-arg)) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
303 (call-interactively cmd)) |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49435
diff
changeset
|
304 |
35504
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
305 ;; Read the command to execute with the given prefix arg. |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
306 (setq prefix prefix-arg |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
307 keyseq (read-key-sequence nil t) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
308 cmd (key-binding keyseq))) |
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
309 |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
310 (let ((coding-system-for-read coding-system) |
35504
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
311 (coding-system-for-write coding-system) |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
312 (coding-system-require-warning t) |
35504
9545aa93e735
(universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents:
35254
diff
changeset
|
313 (current-prefix-arg prefix)) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
314 (message "") |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
315 (call-interactively cmd)))) |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
316 |
19141
9e0468e59b5f
(set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents:
19083
diff
changeset
|
317 (defun set-default-coding-systems (coding-system) |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
318 "Set default value of various coding systems to CODING-SYSTEM. |
21042
b6530c2add6a
(set-default-coding-systems): Set
Kenichi Handa <handa@m17n.org>
parents:
20941
diff
changeset
|
319 This sets the following coding systems: |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
320 o coding system of a newly created buffer |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
321 o default coding system for subprocess I/O |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
322 This also sets the following values: |
46674 | 323 o default value used as `file-name-coding-system' for converting file names. |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
324 o default value for the command `set-terminal-coding-system' (not on MSDOS) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
325 o default value for the command `set-keyboard-coding-system'." |
19141
9e0468e59b5f
(set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents:
19083
diff
changeset
|
326 (check-coding-system coding-system) |
9e0468e59b5f
(set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents:
19083
diff
changeset
|
327 (setq-default buffer-file-coding-system coding-system) |
22899
5f874a55feb3
(set-default-coding-systems):
Richard M. Stallman <rms@gnu.org>
parents:
22887
diff
changeset
|
328 (if default-enable-multibyte-characters |
5f874a55feb3
(set-default-coding-systems):
Richard M. Stallman <rms@gnu.org>
parents:
22887
diff
changeset
|
329 (setq default-file-name-coding-system coding-system)) |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
330 ;; If coding-system is nil, honor that on MS-DOS as well, so |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
331 ;; that they could reset the terminal coding system. |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
332 (unless (and (eq window-system 'pc) coding-system) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
333 (setq default-terminal-coding-system coding-system)) |
19141
9e0468e59b5f
(set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents:
19083
diff
changeset
|
334 (setq default-keyboard-coding-system coding-system) |
44425
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
335 ;; Preserve eol-type from existing default-process-coding-systems. |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
336 ;; On non-unix-like systems in particular, these may have been set |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
337 ;; carefully by the user, or by the startup code, to deal with the |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
338 ;; users shell appropriately, so should not be altered by changing |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
339 ;; language environment. |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
340 (let ((output-coding |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
341 (coding-system-change-text-conversion |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
342 (car default-process-coding-system) coding-system)) |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
343 (input-coding |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
344 (coding-system-change-text-conversion |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
345 (cdr default-process-coding-system) coding-system))) |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
346 (setq default-process-coding-system |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
347 (cons output-coding input-coding)))) |
19141
9e0468e59b5f
(set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents:
19083
diff
changeset
|
348 |
22887
e24b79da83d6
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
22854
diff
changeset
|
349 (defalias 'update-iso-coding-systems 'update-coding-systems-internal) |
29354
4ed4a700358b
Update calls to make-obsolete with a WHEN argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29227
diff
changeset
|
350 (make-obsolete 'update-iso-coding-systems 'update-coding-systems-internal "20.3") |
22887
e24b79da83d6
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
22854
diff
changeset
|
351 |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
352 (defun prefer-coding-system (coding-system) |
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
353 "Add CODING-SYSTEM at the front of the priority list for automatic detection. |
21042
b6530c2add6a
(set-default-coding-systems): Set
Kenichi Handa <handa@m17n.org>
parents:
20941
diff
changeset
|
354 This also sets the following coding systems: |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
355 o coding system of a newly created buffer |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
356 o default coding system for subprocess I/O |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
357 This also sets the following values: |
36464 | 358 o default value used as `file-name-coding-system' for converting file names. |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
359 o default value for the command `set-terminal-coding-system' (not on MSDOS) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
360 o default value for the command `set-keyboard-coding-system' |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
361 |
23960
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
362 If CODING-SYSTEM specifies a certain type of EOL conversion, the coding |
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
363 systems set by this function will use that type of EOL conversion. |
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
364 |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
365 This command does not change the default value of terminal coding system |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
366 for MS-DOS terminal, because DOS terminals only support a single coding |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
367 system, and Emacs automatically sets the default to that coding system at |
35254
54d36c772e7b
(prefer-coding-system): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35248
diff
changeset
|
368 startup. |
54d36c772e7b
(prefer-coding-system): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
35248
diff
changeset
|
369 |
36464 | 370 A coding system that requires automatic detection of text |
371 encoding (e.g. undecided, unix) can't be preferred. | |
372 | |
373 See also `coding-category-list' and `coding-system-category'." | |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
374 (interactive "zPrefer coding system: ") |
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
375 (if (not (and coding-system (coding-system-p coding-system))) |
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
376 (error "Invalid coding system `%s'" coding-system)) |
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
377 (let ((coding-category (coding-system-category coding-system)) |
23960
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
378 (base (coding-system-base coding-system)) |
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
379 (eol-type (coding-system-eol-type coding-system))) |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
380 (if (not coding-category) |
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
381 ;; CODING-SYSTEM is no-conversion or undecided. |
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
382 (error "Can't prefer the coding system `%s'" coding-system)) |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
383 (set coding-category (or base coding-system)) |
22887
e24b79da83d6
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
22854
diff
changeset
|
384 (update-coding-systems-internal) |
24008
1d70b06238e8
(prefer-coding-system): Call set-coding-priority, so that the internal
Eli Zaretskii <eliz@gnu.org>
parents:
24007
diff
changeset
|
385 (or (eq coding-category (car coding-category-list)) |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
386 ;; We must change the order. |
24008
1d70b06238e8
(prefer-coding-system): Call set-coding-priority, so that the internal
Eli Zaretskii <eliz@gnu.org>
parents:
24007
diff
changeset
|
387 (set-coding-priority (list coding-category))) |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
388 (if (and base (interactive-p)) |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
389 (message "Highest priority is set to %s (base of %s)" |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
390 base coding-system)) |
23960
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
391 ;; If they asked for specific EOL conversion, honor that. |
23966
f3102db5fde0
(prefer-coding-system): Fix previous change.
Eli Zaretskii <eliz@gnu.org>
parents:
23960
diff
changeset
|
392 (if (memq eol-type '(0 1 2)) |
23960
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
393 (setq coding-system |
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
394 (coding-system-change-eol-conversion base eol-type)) |
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
395 (setq coding-system base)) |
37905ac69d9c
(prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents:
23924
diff
changeset
|
396 (set-default-coding-systems coding-system))) |
19267
6e152439176f
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
19141
diff
changeset
|
397 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
398 (defvar sort-coding-systems-predicate nil |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
399 "If non-nil, a predicate function to sort coding systems. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
400 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
401 It is called with two coding systems, and should return t if the first |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
402 one is \"less\" than the second. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
403 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
404 The function `sort-coding-systems' use it.") |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
405 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
406 (defun sort-coding-systems (codings) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
407 "Sort coding system list CODINGS by a priority of each coding system. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
408 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
409 If a coding system is most preferred, it has the highest priority. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
410 Otherwise, a coding system corresponds to some MIME charset has higher |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
411 priorities. Among them, a coding system included in `coding-system' |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
412 key of the current language environment has higher priorities. See |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
413 also the documentation of `language-info-alist'. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
414 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
415 If the variable `sort-coding-systems-predicate' (which see) is |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
416 non-nil, it is used to sort CODINGS in the different way than above." |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
417 (if sort-coding-systems-predicate |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
418 (sort codings sort-coding-systems-predicate) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
419 (let* ((most-preferred (symbol-value (car coding-category-list))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
420 (lang-preferred (get-language-info current-language-environment |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
421 'coding-system)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
422 (func (function |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
423 (lambda (x) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
424 (let ((base (coding-system-base x))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
425 (+ (if (eq base most-preferred) 64 0) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
426 (let ((mime (coding-system-get base 'mime-charset))) |
49029 | 427 ;; Prefer coding systems corresponding to a |
428 ;; MIME charset. | |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
429 (if mime |
49029 | 430 ;; Lower utf-16 priority so that we |
431 ;; normally prefer utf-8 to it, and put | |
432 ;; x-ctext below that. | |
433 (cond ((or (eq base 'mule-utf-16-le) | |
434 (eq base 'mule-utf-16-be)) | |
435 16) | |
436 ((string-match "^x-" (symbol-name mime)) | |
437 8) | |
438 (t 32)) | |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
439 0)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
440 (if (memq base lang-preferred) 8 0) |
49776
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
441 (if (string-match "-with-esc\\'" (symbol-name base)) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
442 0 4) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
443 (if (eq (coding-system-type base) 2) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
444 ;; For ISO based coding systems, prefer |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
445 ;; one that doesn't use escape sequences. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
446 (let ((flags (coding-system-flags base))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
447 (if (or (consp (aref flags 0)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
448 (consp (aref flags 1)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
449 (consp (aref flags 2)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
450 (consp (aref flags 3))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
451 (if (or (aref flags 8) (aref flags 9)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
452 0 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
453 1) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
454 2)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
455 1))))))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
456 (sort codings (function (lambda (x y) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
457 (> (funcall func x) (funcall func y)))))))) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
458 |
21377 | 459 (defun find-coding-systems-region (from to) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
460 "Return a list of proper coding systems to encode a text between FROM and TO. |
46674 | 461 If FROM is a string, find coding systems in that instead of the buffer. |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
462 All coding systems in the list can safely encode any multibyte characters |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
463 in the text. |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
464 |
23196 | 465 If the text contains no multibyte characters, return a list of a single |
21377 | 466 element `undecided'." |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
467 (let ((codings (find-coding-systems-region-internal from to))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
468 (if (eq codings t) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
469 ;; The text contains only ASCII characters. Any coding |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
470 ;; systems are safe. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
471 '(undecided) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
472 ;; We need copy-sequence because sorting will alter the argument. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
473 (sort-coding-systems (copy-sequence codings))))) |
21377 | 474 |
475 (defun find-coding-systems-string (string) | |
476 "Return a list of proper coding systems to encode STRING. | |
477 All coding systems in the list can safely encode any multibyte characters | |
478 in STRING. | |
479 | |
23196 | 480 If STRING contains no multibyte characters, return a list of a single |
21377 | 481 element `undecided'." |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
482 (find-coding-systems-region string nil)) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
483 |
21377 | 484 (defun find-coding-systems-for-charsets (charsets) |
485 "Return a list of proper coding systems to encode characters of CHARSETS. | |
50183
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
486 CHARSETS is a list of character sets. |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
487 It actually checks at most the first 96 characters of each charset. |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
488 So, if a charset of dimension two is included in CHARSETS, the value may |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
489 contain a coding system that can't encode all characters of the charset." |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
490 (cond ((or (null charsets) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
491 (and (= (length charsets) 1) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
492 (eq 'ascii (car charsets)))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
493 '(undecided)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
494 ((or (memq 'eight-bit-control charsets) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
495 (memq 'eight-bit-graphic charsets)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
496 '(raw-text emacs-mule)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
497 (t |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
498 (let ((codings t) |
50183
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
499 charset l str) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
500 (while (and codings charsets) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
501 (setq charset (car charsets) charsets (cdr charsets)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
502 (unless (eq charset 'ascii) |
50183
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
503 (setq str (make-string 96 32)) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
504 (if (= (charset-dimension charset) 1) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
505 (if (= (charset-chars charset) 96) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
506 (dotimes (i 96) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
507 (aset str i (make-char charset (+ i 32)))) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
508 (dotimes (i 94) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
509 (aset str i (make-char charset (+ i 33))))) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
510 (if (= (charset-chars charset) 96) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
511 (dotimes (i 96) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
512 (aset str i (make-char charset 32 (+ i 32)))) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
513 (dotimes (i 94) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
514 (aset str i (make-char charset 33 (+ i 33)))))) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
515 (setq l (find-coding-systems-string str)) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
516 (if (eq codings t) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
517 (setq codings l) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
518 (let ((ll nil)) |
50183
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
519 (dolist (elt codings) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
520 (if (memq elt l) |
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
521 (setq ll (cons elt ll)))) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
522 (setq codings ll))))) |
50183
42387e68072a
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
50116
diff
changeset
|
523 codings)))) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
524 |
22815
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
525 (defun find-multibyte-characters (from to &optional maxcount excludes) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
526 "Find multibyte characters in the region specified by FROM and TO. |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
527 If FROM is a string, find multibyte characters in the string. |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
528 The return value is an alist of the following format: |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
529 ((CHARSET COUNT CHAR ...) ...) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
530 where |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
531 CHARSET is a character set, |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
532 COUNT is a number of characters, |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
533 CHARs are found characters of the character set. |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
534 Optional 3rd arg MAXCOUNT limits how many CHARs are put in the above list. |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
535 Optional 4th arg EXCLUDE is a list of character sets to be ignored. |
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
536 |
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
537 For invalid characters, CHARs are actually strings." |
22815
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
538 (let ((chars nil) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
539 charset char) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
540 (if (stringp from) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
541 (let ((idx 0)) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
542 (while (setq idx (string-match "[^\000-\177]" from idx)) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
543 (setq char (aref from idx) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
544 charset (char-charset char)) |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
545 (if (eq charset 'unknown) |
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
546 (setq char (match-string 0))) |
29027
03d05a02d1ba
(find-multibyte-characters): Never
Kenichi Handa <handa@m17n.org>
parents:
28897
diff
changeset
|
547 (if (or (memq charset '(unknown |
03d05a02d1ba
(find-multibyte-characters): Never
Kenichi Handa <handa@m17n.org>
parents:
28897
diff
changeset
|
548 eight-bit-control eight-bit-graphic)) |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
549 (not (or (eq excludes t) (memq charset excludes)))) |
22815
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
550 (let ((slot (assq charset chars))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
551 (if slot |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
552 (if (not (memq char (nthcdr 2 slot))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
553 (let ((count (nth 1 slot))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
554 (setcar (cdr slot) (1+ count)) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
555 (if (or (not maxcount) (< count maxcount)) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
556 (nconc slot (list char))))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
557 (setq chars (cons (list charset 1 char) chars))))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
558 (setq idx (1+ idx)))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
559 (save-excursion |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
560 (goto-char from) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
561 (while (re-search-forward "[^\000-\177]" to t) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
562 (setq char (preceding-char) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
563 charset (char-charset char)) |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
564 (if (eq charset 'unknown) |
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
565 (setq char (match-string 0))) |
29027
03d05a02d1ba
(find-multibyte-characters): Never
Kenichi Handa <handa@m17n.org>
parents:
28897
diff
changeset
|
566 (if (or (memq charset '(unknown eight-bit-control eight-bit-graphic)) |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
567 (not (or (eq excludes t) (memq charset excludes)))) |
22815
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
568 (let ((slot (assq charset chars))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
569 (if slot |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
570 (if (not (member char (nthcdr 2 slot))) |
22815
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
571 (let ((count (nth 1 slot))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
572 (setcar (cdr slot) (1+ count)) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
573 (if (or (not maxcount) (< count maxcount)) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
574 (nconc slot (list char))))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
575 (setq chars (cons (list charset 1 char) chars)))))))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
576 (nreverse chars))) |
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
577 |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
578 |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
579 (defun search-unencodable-char (coding-system) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
580 "Search forward from point for a character that is not encodable. |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
581 It asks which coding system to check. |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
582 If such a character is found, set point after that character. |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
583 Otherwise, don't move point. |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
584 |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
585 When called from a program, the value is a position of the found character, |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
586 or nil if all characters are encodable." |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
587 (interactive |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
588 (list (let ((default (or buffer-file-coding-system 'us-ascii))) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
589 (read-coding-system |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
590 (format "Coding-system (default, %s): " default) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
591 default)))) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
592 (let ((pos (unencodable-char-position (point) (point-max) coding-system))) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
593 (if pos |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
594 (goto-char (1+ pos)) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
595 (message "All following characters are encodable by %s" coding-system)) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
596 pos)) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
597 |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
598 |
22025
369ac7fae774
(last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents:
21983
diff
changeset
|
599 (defvar last-coding-system-specified nil |
369ac7fae774
(last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents:
21983
diff
changeset
|
600 "Most recent coding system explicitly specified by the user when asked. |
369ac7fae774
(last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents:
21983
diff
changeset
|
601 This variable is set whenever Emacs asks the user which coding system |
369ac7fae774
(last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents:
21983
diff
changeset
|
602 to use in order to write a file. If you set it to nil explicitly, |
369ac7fae774
(last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents:
21983
diff
changeset
|
603 then call `write-region', then afterward this variable will be non-nil |
369ac7fae774
(last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents:
21983
diff
changeset
|
604 only if the user was explicitly asked and specified a coding system.") |
369ac7fae774
(last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents:
21983
diff
changeset
|
605 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
606 (defvar select-safe-coding-system-accept-default-p nil |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
607 "If non-nil, a function to control the behaviour of coding system selection. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
608 The meaning is the same as the argument ACCEPT-DEFAULT-P of the |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
609 function `select-safe-coding-system' (which see). This variable |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
610 overrides that argument.") |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
611 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
612 (defun select-safe-coding-system (from to &optional default-coding-system |
45631
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
613 accept-default-p file) |
20842
428831a6f4d1
(find-safe-coding-system): Return
Kenichi Handa <handa@m17n.org>
parents:
20830
diff
changeset
|
614 "Ask a user to select a safe coding system from candidates. |
428831a6f4d1
(find-safe-coding-system): Return
Kenichi Handa <handa@m17n.org>
parents:
20830
diff
changeset
|
615 The candidates of coding systems which can safely encode a text |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
616 between FROM and TO are shown in a popup window. Among them, the most |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
617 proper one is suggested as the default. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
618 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
619 The list of `buffer-file-coding-system' of the current buffer and the |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
620 most preferred coding system (if it corresponds to a MIME charset) is |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
621 treated as the default coding system list. Among them, the first one |
46674 | 622 that safely encodes the text is normally selected silently and |
623 returned without any user interaction. See also the command | |
624 `prefer-coding-system'. | |
625 | |
626 However, the user is queried if the chosen coding system is | |
627 inconsistent with what would be selected by `set-auto-coding' from | |
628 coding cookies &c. if the contents of the region were read from a | |
629 file. (That could lead to data corruption in a file subsequently | |
630 re-visited and edited.) | |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
631 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
632 Optional 3rd arg DEFAULT-CODING-SYSTEM specifies a coding system or a |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
633 list of coding systems to be prepended to the default coding system |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
634 list. However, if DEFAULT-CODING-SYSTEM is a list and the first |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
635 element is t, the cdr part is used as the defualt coding system list, |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
636 i.e. `buffer-file-coding-system' and the most prepended coding system |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
637 is not used. |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
638 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
639 Optional 4th arg ACCEPT-DEFAULT-P, if non-nil, is a function to |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
640 determine the acceptability of the silently selected coding system. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
641 It is called with that coding system, and should return nil if it |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
642 should not be silently selected and thus user interaction is required. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
643 |
45631
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
644 Optional 5th arg FILE is the file name to use for this purpose. |
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
645 That is different from `buffer-file-name' when handling `write-region' |
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
646 \(for example). |
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
647 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
648 The variable `select-safe-coding-system-accept-default-p', if |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
649 non-nil, overrides ACCEPT-DEFAULT-P. |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
650 |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
651 Kludgy feature: if FROM is a string, the string is the target text, |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
652 and TO is ignored." |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
653 (if (and default-coding-system |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
654 (not (listp default-coding-system))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
655 (setq default-coding-system (list default-coding-system))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
656 |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
657 (let ((no-other-defaults nil)) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
658 (if (eq (car default-coding-system) t) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
659 (setq no-other-defaults t |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
660 default-coding-system (cdr default-coding-system))) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
661 |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
662 ;; Change elements of the list to (coding . base-coding). |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
663 (setq default-coding-system |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
664 (mapcar (function (lambda (x) (cons x (coding-system-base x)))) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
665 default-coding-system)) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
666 |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
667 (unless no-other-defaults |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
668 ;; If buffer-file-coding-system is not nil nor undecided, append it |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
669 ;; to the defaults. |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
670 (if buffer-file-coding-system |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
671 (let ((base (coding-system-base buffer-file-coding-system))) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
672 (or (eq base 'undecided) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
673 (rassq base default-coding-system) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
674 (setq default-coding-system |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
675 (append default-coding-system |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
676 (list (cons buffer-file-coding-system base))))))) |
29507 | 677 |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
678 ;; If the most preferred coding system has the property mime-charset, |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
679 ;; append it to the defaults. |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
680 (let ((tail coding-category-list) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
681 preferred base) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
682 (while (and tail |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
683 (not (setq preferred (symbol-value (car tail))))) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
684 (setq tail (cdr tail))) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
685 (and (coding-system-p preferred) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
686 (setq base (coding-system-base preferred)) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
687 (coding-system-get preferred 'mime-charset) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
688 (not (rassq base default-coding-system)) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
689 (setq default-coding-system |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
690 (append default-coding-system |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
691 (list (cons preferred base)))))))) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
692 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
693 (if select-safe-coding-system-accept-default-p |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
694 (setq accept-default-p select-safe-coding-system-accept-default-p)) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
695 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
696 (let ((codings (find-coding-systems-region from to)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
697 (coding-system nil) |
43182
faaa5a3adc82
(select-safe-coding-system): State the buffer's name in the message
Eli Zaretskii <eliz@gnu.org>
parents:
43078
diff
changeset
|
698 (bufname (buffer-name)) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
699 safe rejected unsafe) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
700 (if (eq (car codings) 'undecided) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
701 ;; Any coding system is ok. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
702 (setq coding-system t) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
703 ;; Classify the defaults into safe, rejected, and unsafe. |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
704 (dolist (elt default-coding-system) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
705 (if (memq (cdr elt) codings) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
706 (if (and (functionp accept-default-p) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
707 (not (funcall accept-default-p (cdr elt)))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
708 (push (car elt) rejected) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
709 (push (car elt) safe)) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
710 (push (car elt) unsafe))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
711 (if safe |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
712 (setq coding-system (car (last safe))))) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
713 |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
714 ;; If all the defaults failed, ask a user. |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
715 (when (not coding-system) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
716 ;; At first, if some defaults are unsafe, record at most 11 |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
717 ;; problematic characters and their positions for them by turning |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
718 ;; (CODING ...) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
719 ;; into |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
720 ;; ((CODING (POS . CHAR) (POS . CHAR) ...) ...) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
721 (if unsafe |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
722 (if (stringp from) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
723 (setq unsafe |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
724 (mapcar #'(lambda (coding) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
725 (cons coding |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
726 (mapcar #'(lambda (pos) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
727 (cons pos (aref from pos))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
728 (unencodable-char-position |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
729 0 (length from) coding |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
730 11 from)))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
731 unsafe)) |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49435
diff
changeset
|
732 (setq unsafe |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
733 (mapcar #'(lambda (coding) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
734 (cons coding |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
735 (mapcar #'(lambda (pos) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
736 (cons pos (char-after pos))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
737 (unencodable-char-position |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
738 from to coding 11)))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
739 unsafe)))) |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
740 |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
741 ;; Change each safe coding system to the corresponding |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
742 ;; mime-charset name if it is also a coding system. Such a name |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
743 ;; is more friendly to users. |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
744 (let ((l codings) |
21882
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
745 mime-charset) |
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
746 (while l |
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
747 (setq mime-charset (coding-system-get (car l) 'mime-charset)) |
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
748 (if (and mime-charset (coding-system-p mime-charset)) |
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
749 (setcar l mime-charset)) |
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
750 (setq l (cdr l)))) |
4fb3860a1f26
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
21856
diff
changeset
|
751 |
45082
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
752 ;; Don't offer variations with locking shift, which you |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
753 ;; basically never want. |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
754 (let (l) |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
755 (dolist (elt codings (setq codings (nreverse l))) |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
756 (unless (or (eq 'coding-category-iso-7-else |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
757 (coding-system-category elt)) |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
758 (eq 'coding-category-iso-8-else |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
759 (coding-system-category elt))) |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
760 (push elt l)))) |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
761 |
49776
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
762 ;; Remove raw-text, emacs-mule and no-conversion unless nothing |
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
763 ;; else is available. |
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
764 (setq codings |
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
765 (or (delq 'raw-text |
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
766 (delq 'emacs-mule |
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
767 (delq 'no-conversion codings))) |
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
768 '(raw-text emacs-mule no-conversion))) |
b76187acee2b
(sort-coding-systems): Use \'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49598
diff
changeset
|
769 |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
770 (let ((window-configuration (current-window-configuration))) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
771 (save-excursion |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
772 ;; If some defaults are unsafe, make sure the offending |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
773 ;; buffer is displayed. |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
774 (when (and unsafe (not (stringp from))) |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
775 (pop-to-buffer bufname) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
776 (goto-char (apply 'min (mapcar #'(lambda (x) (car (cadr x))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
777 unsafe)))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
778 ;; Then ask users to select one from CODINGS while showing |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
779 ;; the reason why none of the defaults are not used. |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
780 (with-output-to-temp-buffer "*Warning*" |
46829
fb00e3e4754d
(select-safe-coding-system): Call pop-to-buffer inside
Kenichi Handa <handa@m17n.org>
parents:
46816
diff
changeset
|
781 (save-excursion |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
782 (set-buffer standard-output) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
783 (if (not default-coding-system) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
784 (insert "No default coding systems to try for " |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
785 (if (stringp from) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
786 (format "string \"%s\"." from) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
787 (format "buffer `%s'." bufname))) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
788 (insert |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
789 "These default coding systems were tried to encode" |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
790 (if (stringp from) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
791 (concat " \"" (if (> (length from) 10) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
792 (concat (substring from 0 10) "...\"") |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
793 (concat from "\""))) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
794 (format " text\nin the buffer `%s'" bufname)) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
795 ":\n") |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
796 (let ((pos (point)) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
797 (fill-prefix " ")) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
798 (mapc #'(lambda (x) (princ " ") (princ (car x))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
799 default-coding-system) |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
800 (insert "\n") |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
801 (fill-region-as-paragraph pos (point))) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
802 (when rejected |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
803 (insert "These safely encodes the target text, |
46674 | 804 but it is not recommended for encoding text in this context, |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
805 e.g., for sending an email message.\n ") |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
806 (mapc #'(lambda (x) (princ " ") (princ x)) rejected) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
807 (insert "\n")) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
808 (when unsafe |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49435
diff
changeset
|
809 (insert (if rejected "And the others" |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
810 "However, each of them") |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
811 " encountered these problematic characters:\n") |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
812 (mapc |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
813 #'(lambda (coding) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
814 (insert (format " %s:" (car coding))) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
815 (let ((i 0) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
816 (func1 |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
817 #'(lambda (bufname pos) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
818 (when (buffer-live-p (get-buffer bufname)) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
819 (pop-to-buffer bufname) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
820 (goto-char pos)))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
821 (func2 |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
822 #'(lambda (bufname pos coding) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
823 (when (buffer-live-p (get-buffer bufname)) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
824 (pop-to-buffer bufname) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
825 (if (< (point) pos) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
826 (goto-char pos) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
827 (forward-char 1) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
828 (search-unencodable-char coding) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
829 (forward-char -1)))))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
830 (dolist (elt (cdr coding)) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
831 (insert " ") |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
832 (if (stringp from) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
833 (insert (if (< i 10) (cdr elt) "...")) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
834 (if (< i 10) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
835 (insert-text-button |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
836 (cdr elt) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
837 :type 'help-xref |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
838 'help-echo |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
839 "mouse-2, RET: jump to this character" |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
840 'help-function func1 |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
841 'help-args (list bufname (car elt))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
842 (insert-text-button |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
843 "..." |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
844 :type 'help-xref |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
845 'help-echo |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
846 "mouse-2, RET: next unencodable character" |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
847 'help-function func2 |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
848 'help-args (list bufname (car elt) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
849 (car coding))))) |
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
850 (setq i (1+ i)))) |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
851 (insert "\n")) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
852 unsafe) |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
853 (insert "\ |
46674 | 854 The first problematic character is at point in the displayed buffer,\n" |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
855 (substitute-command-keys "\ |
46674 | 856 and \\[universal-argument] \\[what-cursor-position] will give information about it.\n")))) |
47607
e96f73cd543a
(select-safe-coding-system): Handle
Kenichi Handa <handa@m17n.org>
parents:
47580
diff
changeset
|
857 (insert (if safe |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
858 "\nSelect the above, or " |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
859 "\nSelect ") |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
860 "\ |
46674 | 861 one of the following safe coding systems, or edit the buffer:\n") |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
862 (let ((pos (point)) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
863 (fill-prefix " ")) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
864 (mapcar (function (lambda (x) (princ " ") (princ x))) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
865 codings) |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
866 (insert "\n") |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
867 (fill-region-as-paragraph pos (point))) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
868 (insert "Or specify any other coding system |
48971
6d60ff927211
(select-safe-coding-system): Fix typo.
Andreas Schwab <schwab@suse.de>
parents:
48896
diff
changeset
|
869 on your risk of losing the problematic characters.\n"))) |
22815
6af93eeeca10
(find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents:
22778
diff
changeset
|
870 |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
871 ;; Read a coding system. |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
872 (setq default-coding-system (or (car safe) (car codings))) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
873 (setq coding-system |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49435
diff
changeset
|
874 (read-coding-system |
48877
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
875 (format "Select coding system (default %s): " |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
876 default-coding-system) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
877 default-coding-system)) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
878 (setq last-coding-system-specified coding-system)) |
c7299043f7f4
(universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents:
48836
diff
changeset
|
879 |
46857
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
880 (kill-buffer "*Warning*") |
31feee29e69a
(search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents:
46829
diff
changeset
|
881 (set-window-configuration window-configuration))) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
882 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
883 (if (vectorp (coding-system-eol-type coding-system)) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
884 (let ((eol (coding-system-eol-type buffer-file-coding-system))) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
885 (if (numberp eol) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
886 (setq coding-system |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
887 (coding-system-change-eol-conversion coding-system eol))))) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
888 |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
889 (if (eq coding-system t) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
890 (setq coding-system buffer-file-coding-system)) |
45082
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
891 ;; Check we're not inconsistent with what `coding:' spec &c would |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
892 ;; give when file is re-read. |
46642
79837bb10069
(select-safe-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
46501
diff
changeset
|
893 ;; But don't do this if we explicitly ignored the cookie |
79837bb10069
(select-safe-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
46501
diff
changeset
|
894 ;; by using `find-file-literally'. |
79837bb10069
(select-safe-coding-system):
Richard M. Stallman <rms@gnu.org>
parents:
46501
diff
changeset
|
895 (unless (or (stringp from) find-file-literally) |
45631
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
896 (let ((auto-cs (save-excursion |
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
897 (save-restriction |
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
898 (widen) |
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
899 (narrow-to-region from to) |
45082
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
900 (goto-char (point-min)) |
45631
b01cd9b1ae08
(select-safe-coding-system): New arg FILE; use that for set-auto-coding.
Richard M. Stallman <rms@gnu.org>
parents:
45479
diff
changeset
|
901 (set-auto-coding (or file buffer-file-name "") |
45082
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
902 (buffer-size)))))) |
46816
5459421e4351
(select-safe-coding-system): Check for
Richard M. Stallman <rms@gnu.org>
parents:
46786
diff
changeset
|
903 (if (and auto-cs coding-system |
46674 | 904 ;; Don't barf if writing a compressed file, say. |
905 ;; This check perhaps isn't ideal, but is probably | |
906 ;; the best thing to do. | |
907 (not (auto-coding-alist-lookup (or file buffer-file-name ""))) | |
45082
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
908 (not (coding-system-equal (coding-system-base coding-system) |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
909 (coding-system-base auto-cs)))) |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
910 (unless (yes-or-no-p |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
911 (format "Selected encoding %s disagrees with \ |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
912 %s specified by file contents. Really save (else edit coding cookies \ |
5b1a8adeb602
(select-safe-coding-system): Don't offer coding systems that use locking shift.
Richard M. Stallman <rms@gnu.org>
parents:
44904
diff
changeset
|
913 and try again)? " coding-system auto-cs)) |
45086 | 914 (error "Save aborted"))))) |
915 coding-system)) | |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
916 |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
917 (setq select-safe-coding-system-function 'select-safe-coding-system) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
918 |
23087
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
919 (defun select-message-coding-system () |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
920 "Return a coding system to encode the outgoing message of the current buffer. |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
921 It at first tries the first coding system found in these variables |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
922 in this order: |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
923 (1) local value of `buffer-file-coding-system' |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
924 (2) value of `sendmail-coding-system' |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
925 (3) value of `default-sendmail-coding-system' |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
926 (4) value of `default-buffer-file-coding-system' |
23087
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
927 If the found coding system can't encode the current buffer, |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
928 or none of them are bound to a coding system, |
23583
e7dfcab35c8b
(select-message-coding-system): Doc
Andreas Schwab <schwab@suse.de>
parents:
23526
diff
changeset
|
929 it asks the user to select a proper coding system." |
23087
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
930 (let ((coding (or (and (local-variable-p 'buffer-file-coding-system) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
931 buffer-file-coding-system) |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
932 sendmail-coding-system |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
933 default-sendmail-coding-system |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
934 default-buffer-file-coding-system))) |
23087
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
935 (if (eq coding 'no-conversion) |
46674 | 936 ;; We should never use no-conversion for outgoing mail. |
23087
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
937 (setq coding nil)) |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
938 (if (fboundp select-safe-coding-system-function) |
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
939 (funcall select-safe-coding-system-function |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
940 (point-min) (point-max) coding |
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
941 (function (lambda (x) (coding-system-get x 'mime-charset)))) |
23087
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
942 coding))) |
17052 | 943 |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
944 ;;; Language support stuff. |
17052 | 945 |
946 (defvar language-info-alist nil | |
22153 | 947 "Alist of language environment definitions. |
17052 | 948 Each element looks like: |
949 (LANGUAGE-NAME . ((KEY . INFO) ...)) | |
22153 | 950 where LANGUAGE-NAME is a string, the name of the language environment, |
951 KEY is a symbol denoting the kind of information, and | |
952 INFO is the data associated with KEY. | |
953 Meaningful values for KEY include | |
17052 | 954 |
22153 | 955 documentation value is documentation of what this language environment |
956 is meant for, and how to use it. | |
957 charset value is a list of the character sets used by this | |
958 language environment. | |
46674 | 959 sample-text value is an expression which is evalled to generate |
960 a line of text written using characters appropriate | |
961 for this language environment. | |
22153 | 962 setup-function value is a function to call to switch to this |
963 language environment. | |
964 exit-function value is a function to call to leave this | |
965 language environment. | |
966 coding-system value is a list of coding systems that are good | |
967 for saving text written in this language environment. | |
968 This list serves as suggestions to the user; | |
969 in effect, as a kind of documentation. | |
970 coding-priority value is a list of coding systems for this language | |
971 environment, in order of decreasing priority. | |
972 This is used to set up the coding system priority | |
22887
e24b79da83d6
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
22854
diff
changeset
|
973 list when you switch to this language environment. |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
974 nonascii-translation |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
975 value is a translation table to be set in the |
22887
e24b79da83d6
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
22854
diff
changeset
|
976 variable `nonascii-translation-table' in this |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
977 language environment, or a character set from |
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
978 which `nonascii-insert-offset' is calculated. |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
979 input-method value is a default input method for this language |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
980 environment. |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
981 features value is a list of features requested in this |
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
982 language environment. |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
983 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
984 The following keys take effect only when multibyte characters are |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
985 globally disabled, i.e. the value of `default-enable-multibyte-characters' |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
986 is nil. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
987 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
988 unibyte-syntax value is a library name to load to set |
23196 | 989 unibyte 8-bit character syntaxes for this |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
990 language environment. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
991 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
992 unibyte-display value is a coding system to encode characters |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
993 for the terminal. Characters in the range |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
994 of 160 to 255 display not as octal escapes, |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
995 but as non-ASCII characters in this language |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
996 environment.") |
22153 | 997 |
998 (defun get-language-info (lang-env key) | |
999 "Return information listed under KEY for language environment LANG-ENV. | |
1000 KEY is a symbol denoting the kind of information. | |
1001 For a list of useful values for KEY and their meanings, | |
1002 see `language-info-alist'." | |
1003 (if (symbolp lang-env) | |
1004 (setq lang-env (symbol-name lang-env))) | |
1005 (let ((lang-slot (assoc-ignore-case lang-env language-info-alist))) | |
17052 | 1006 (if lang-slot |
1007 (cdr (assq key (cdr lang-slot)))))) | |
1008 | |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1009 (defun set-language-info (lang-env key info) |
22153 | 1010 "Modify part of the definition of language environment LANG-ENV. |
1011 Specifically, this stores the information INFO under KEY | |
1012 in the definition of this language environment. | |
17052 | 1013 KEY is a symbol denoting the kind of information. |
22153 | 1014 INFO is the value for that information. |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1015 |
22153 | 1016 For a list of useful values for KEY and their meanings, |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1017 see `language-info-alist'." |
22153 | 1018 (if (symbolp lang-env) |
1019 (setq lang-env (symbol-name lang-env))) | |
17052 | 1020 (let (lang-slot key-slot) |
22153 | 1021 (setq lang-slot (assoc lang-env language-info-alist)) |
17052 | 1022 (if (null lang-slot) ; If no slot for the language, add it. |
22153 | 1023 (setq lang-slot (list lang-env) |
17052 | 1024 language-info-alist (cons lang-slot language-info-alist))) |
1025 (setq key-slot (assq key lang-slot)) | |
1026 (if (null key-slot) ; If no slot for the key, add it. | |
1027 (progn | |
1028 (setq key-slot (list key)) | |
1029 (setcdr lang-slot (cons key-slot (cdr lang-slot))))) | |
48808
3928ea1dee22
(current-language-environment-custom-type): New fun.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48231
diff
changeset
|
1030 (setcdr key-slot (purecopy info)) |
48813
47c6ac3517f8
(set-language-info): Update custom-type of
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48812
diff
changeset
|
1031 ;; Update the custom-type of `current-language-environment'. |
48808
3928ea1dee22
(current-language-environment-custom-type): New fun.
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48231
diff
changeset
|
1032 (put 'current-language-environment 'custom-type |
48813
47c6ac3517f8
(set-language-info): Update custom-type of
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48812
diff
changeset
|
1033 (cons 'choice (mapcar |
47c6ac3517f8
(set-language-info): Update custom-type of
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48812
diff
changeset
|
1034 (lambda (lang) |
49435
f9953109e75c
(set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents:
49048
diff
changeset
|
1035 (list 'const lang)) |
f9953109e75c
(set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents:
49048
diff
changeset
|
1036 (sort (mapcar 'car language-info-alist) 'string<)))))) |
17052 | 1037 |
22153 | 1038 (defun set-language-info-alist (lang-env alist &optional parents) |
1039 "Store ALIST as the definition of language environment LANG-ENV. | |
1040 ALIST is an alist of KEY and INFO values. See the documentation of | |
29830
74886b751ce2
(set-language-info-alist): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
29507
diff
changeset
|
1041 `language-info-alist' for the meanings of KEY and INFO. |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1042 |
22153 | 1043 Optional arg PARENTS is a list of parent menu names; it specifies |
46674 | 1044 where to put this language environment in the |
22153 | 1045 Describe Language Environment and Set Language Environment menus. |
1046 For example, (\"European\") means to put this language environment | |
1047 in the European submenu in each of those two menus." | |
1048 (if (symbolp lang-env) | |
1049 (setq lang-env (symbol-name lang-env))) | |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1050 (let ((describe-map describe-language-environment-map) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1051 (setup-map setup-language-environment-map)) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1052 (if parents |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1053 (let ((l parents) |
28828
b8133d80ec1e
(set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents:
28774
diff
changeset
|
1054 map parent-symbol parent prompt) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1055 (while l |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1056 (if (symbolp (setq parent-symbol (car l))) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1057 (setq parent (symbol-name parent)) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1058 (setq parent parent-symbol parent-symbol (intern parent))) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1059 (setq map (lookup-key describe-map (vector parent-symbol))) |
28828
b8133d80ec1e
(set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents:
28774
diff
changeset
|
1060 ;; This prompt string is for define-prefix-command, so |
b8133d80ec1e
(set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents:
28774
diff
changeset
|
1061 ;; that the map it creates will be suitable for a menu. |
b8133d80ec1e
(set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents:
28774
diff
changeset
|
1062 (or map (setq prompt (format "%s Environment" parent))) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1063 (if (not map) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1064 (progn |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1065 (setq map (intern (format "describe-%s-environment-map" |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1066 (downcase parent)))) |
28828
b8133d80ec1e
(set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents:
28774
diff
changeset
|
1067 (define-prefix-command map nil prompt) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1068 (define-key-after describe-map (vector parent-symbol) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1069 (cons parent map) t))) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1070 (setq describe-map (symbol-value map)) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1071 (setq map (lookup-key setup-map (vector parent-symbol))) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1072 (if (not map) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1073 (progn |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1074 (setq map (intern (format "setup-%s-environment-map" |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1075 (downcase parent)))) |
28828
b8133d80ec1e
(set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents:
28774
diff
changeset
|
1076 (define-prefix-command map nil prompt) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1077 (define-key-after setup-map (vector parent-symbol) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1078 (cons parent map) t))) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1079 (setq setup-map (symbol-value map)) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1080 (setq l (cdr l))))) |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1081 |
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1082 ;; Set up menu items for this language env. |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
1083 (let ((doc (assq 'documentation alist))) |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1084 (when doc |
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1085 (define-key-after describe-map (vector (intern lang-env)) |
23031
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
1086 (cons lang-env 'describe-specified-language-support) t))) |
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
1087 (define-key-after setup-map (vector (intern lang-env)) |
5e2bc240edfc
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
23021
diff
changeset
|
1088 (cons lang-env 'setup-specified-language-environment) t) |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1089 |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1090 (while alist |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1091 (set-language-info lang-env (car (car alist)) (cdr (car alist))) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1092 (setq alist (cdr alist))))) |
17052 | 1093 |
19734
c4894d8a3310
(read-language-name): Use a default, not an initial input.
Richard M. Stallman <rms@gnu.org>
parents:
19725
diff
changeset
|
1094 (defun read-language-name (key prompt &optional default) |
22153 | 1095 "Read a language environment name which has information for KEY. |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1096 If KEY is nil, read any language environment. |
22153 | 1097 Prompt with PROMPT. DEFAULT is the default choice of language environment. |
1098 This returns a language environment name as a string." | |
17052 | 1099 (let* ((completion-ignore-case t) |
1100 (name (completing-read prompt | |
1101 language-info-alist | |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1102 (and key |
44904
3c8d8ff3a848
(read-language-name): Take of non-list values.
Pavel Janík <Pavel@Janik.cz>
parents:
44643
diff
changeset
|
1103 (function (lambda (elm) (and (listp elm) (assq key elm))))) |
19734
c4894d8a3310
(read-language-name): Use a default, not an initial input.
Richard M. Stallman <rms@gnu.org>
parents:
19725
diff
changeset
|
1104 t nil nil default))) |
17758
8c67c2e2cc29
(build-describe-language-support-function,
Kenichi Handa <handa@m17n.org>
parents:
17526
diff
changeset
|
1105 (if (and (> (length name) 0) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1106 (or (not key) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1107 (get-language-info name key))) |
17758
8c67c2e2cc29
(build-describe-language-support-function,
Kenichi Handa <handa@m17n.org>
parents:
17526
diff
changeset
|
1108 name))) |
17052 | 1109 |
1110 ;;; Multilingual input methods. | |
46674 | 1111 (defgroup leim nil |
31423
afa66a3f39dc
(help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents:
31245
diff
changeset
|
1112 "LEIM: Libraries of Emacs Input Methods." |
afa66a3f39dc
(help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents:
31245
diff
changeset
|
1113 :group 'mule) |
17052 | 1114 |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1115 (defconst leim-list-file-name "leim-list.el" |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1116 "Name of LEIM list file. |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1117 This file contains a list of libraries of Emacs input methods (LEIM) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1118 in the format of Lisp expression for registering each input method. |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1119 Emacs loads this file at startup time.") |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1120 |
26010
edea9722f14e
(select-safe-coding-system, leim-list-header): avoid the use of strings
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24864
diff
changeset
|
1121 (defvar leim-list-header (format |
46674 | 1122 ";;; %s -- list of LEIM (Library of Emacs Input Method) -*-coding: iso-2022-7bit;-*- |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1123 ;; |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1124 ;; This file contains a list of LEIM (Library of Emacs Input Method) |
36464 | 1125 ;; methods in the same directory as this file. Loading this file |
1126 ;; registers all the input methods in Emacs. | |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1127 ;; |
18969 | 1128 ;; Each entry has the form: |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1129 ;; (register-input-method |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1130 ;; INPUT-METHOD LANGUAGE-NAME ACTIVATE-FUNC |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1131 ;; TITLE DESCRIPTION |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1132 ;; ARG ...) |
36464 | 1133 ;; See the function `register-input-method' for the meanings of the arguments. |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1134 ;; |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1135 ;; If this directory is included in load-path, Emacs automatically |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1136 ;; loads this file at startup time. |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1137 |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1138 " |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1139 leim-list-file-name) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1140 "Header to be inserted in LEIM list file.") |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1141 |
18982
2297a2cb909d
(leim-list-entry-regexp): Make this match only at beginning of line.
Kenichi Handa <handa@m17n.org>
parents:
18978
diff
changeset
|
1142 (defvar leim-list-entry-regexp "^(register-input-method" |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1143 "Regexp matching head of each entry in LEIM list file. |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1144 See also the variable `leim-list-header'") |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1145 |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1146 (defvar update-leim-list-functions |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1147 '(quail-update-leim-list-file) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1148 "List of functions to call to update LEIM list file. |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1149 Each function is called with one arg, LEIM directory name.") |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1150 |
19615
4cdef838afb0
(update-leim-list-file): Make it handle multiple directories.
Richard M. Stallman <rms@gnu.org>
parents:
19614
diff
changeset
|
1151 (defun update-leim-list-file (&rest dirs) |
4cdef838afb0
(update-leim-list-file): Make it handle multiple directories.
Richard M. Stallman <rms@gnu.org>
parents:
19614
diff
changeset
|
1152 "Update LEIM list file in directories DIRS." |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1153 (let ((functions update-leim-list-functions)) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1154 (while functions |
19615
4cdef838afb0
(update-leim-list-file): Make it handle multiple directories.
Richard M. Stallman <rms@gnu.org>
parents:
19614
diff
changeset
|
1155 (apply (car functions) dirs) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1156 (setq functions (cdr functions))))) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1157 |
17052 | 1158 (defvar current-input-method nil |
1159 "The current input method for multilingual text. | |
19083
8fdb29b769ed
Doc fixes; fix error message text.
Richard M. Stallman <rms@gnu.org>
parents:
19036
diff
changeset
|
1160 If nil, that means no input method is activated now.") |
17052 | 1161 (make-variable-buffer-local 'current-input-method) |
1162 (put 'current-input-method 'permanent-local t) | |
1163 | |
1164 (defvar current-input-method-title nil | |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1165 "Title string of the current input method shown in mode line.") |
17052 | 1166 (make-variable-buffer-local 'current-input-method-title) |
1167 (put 'current-input-method-title 'permanent-local t) | |
1168 | |
18801
f60dbf4f7d7c
(mule-keymap): Bind l to set-language-environment.
Kenichi Handa <handa@m17n.org>
parents:
18712
diff
changeset
|
1169 (defcustom default-input-method nil |
21229
38b621cd9169
(set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21042
diff
changeset
|
1170 "*Default input method for multilingual text (a string). |
18801
f60dbf4f7d7c
(mule-keymap): Bind l to set-language-environment.
Kenichi Handa <handa@m17n.org>
parents:
18712
diff
changeset
|
1171 This is the input method activated automatically by the command |
19329
249631cebee0
(default-input-method):
Richard M. Stallman <rms@gnu.org>
parents:
19328
diff
changeset
|
1172 `toggle-input-method' (\\[toggle-input-method])." |
21229
38b621cd9169
(set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21042
diff
changeset
|
1173 :group 'mule |
26832
4a01a2762de5
(default-input-method): Specify
Gerd Moellmann <gerd@gnu.org>
parents:
26190
diff
changeset
|
1174 :type '(choice (const nil) string) |
4a01a2762de5
(default-input-method): Specify
Gerd Moellmann <gerd@gnu.org>
parents:
26190
diff
changeset
|
1175 :set-after '(current-language-environment)) |
18801
f60dbf4f7d7c
(mule-keymap): Bind l to set-language-environment.
Kenichi Handa <handa@m17n.org>
parents:
18712
diff
changeset
|
1176 |
24617
a9d05d95717d
(input-method-function): Add permanent-local property.
Karl Heuer <kwzh@gnu.org>
parents:
24551
diff
changeset
|
1177 (put 'input-method-function 'permanent-local t) |
a9d05d95717d
(input-method-function): Add permanent-local property.
Karl Heuer <kwzh@gnu.org>
parents:
24551
diff
changeset
|
1178 |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1179 (defvar input-method-history nil |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1180 "History list for some commands that read input methods.") |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1181 (make-variable-buffer-local 'input-method-history) |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1182 (put 'input-method-history 'permanent-local t) |
17052 | 1183 |
1184 (defvar inactivate-current-input-method-function nil | |
1185 "Function to call for inactivating the current input method. | |
1186 Every input method should set this to an appropriate value when activated. | |
19555
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1187 This function is called with no argument. |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1188 |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1189 This function should never change the value of `current-input-method'. |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1190 It is set to nil by the function `inactivate-input-method'.") |
17052 | 1191 (make-variable-buffer-local 'inactivate-current-input-method-function) |
1192 (put 'inactivate-current-input-method-function 'permanent-local t) | |
1193 | |
1194 (defvar describe-current-input-method-function nil | |
1195 "Function to call for describing the current input method. | |
1196 This function is called with no argument.") | |
1197 (make-variable-buffer-local 'describe-current-input-method-function) | |
1198 (put 'describe-current-input-method-function 'permanent-local t) | |
1199 | |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1200 (defvar input-method-alist nil |
22153 | 1201 "Alist of input method names vs how to use them. |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1202 Each element has the form: |
22153 | 1203 (INPUT-METHOD LANGUAGE-ENV ACTIVATE-FUNC TITLE DESCRIPTION ARGS...) |
1204 See the function `register-input-method' for the meanings of the elements.") | |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1205 |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1206 (defun register-input-method (input-method lang-env &rest args) |
36732
326d93c83808
(register-input-method): Doc fix.
Kenichi Handa <handa@m17n.org>
parents:
36528
diff
changeset
|
1207 "Register INPUT-METHOD as an input method for language environment LANG-ENV. |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1208 INPUT-METHOD and LANG-ENV are symbols or strings. |
22153 | 1209 |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1210 The remaining arguments are: |
22153 | 1211 ACTIVATE-FUNC, TITLE, DESCRIPTION, and ARGS... |
1212 ACTIVATE-FUNC is a function to call to activate this method. | |
1213 TITLE is a string to show in the mode line when this method is active. | |
1214 DESCRIPTION is a string describing this method and what it is good for. | |
1215 The ARGS, if any, are passed as arguments to ACTIVATE-FUNC. | |
23168
ff3750779f48
(register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23165
diff
changeset
|
1216 All told, the arguments to ACTIVATE-FUNC are INPUT-METHOD and the ARGS. |
ff3750779f48
(register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23165
diff
changeset
|
1217 |
36464 | 1218 This function is mainly used in the file \"leim-list.el\" which is |
1219 created at Emacs build time, registering all Quail input methods | |
36261 | 1220 contained in the Emacs distribution. |
23168
ff3750779f48
(register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23165
diff
changeset
|
1221 |
36261 | 1222 In case you want to register a new Quail input method by yourself, be |
23168
ff3750779f48
(register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23165
diff
changeset
|
1223 careful to use the same input method title as given in the third |
36261 | 1224 parameter of `quail-define-package'. (If the values are different, the |
1225 string specified in this function takes precedence.) | |
23168
ff3750779f48
(register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23165
diff
changeset
|
1226 |
ff3750779f48
(register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
23165
diff
changeset
|
1227 The commands `describe-input-method' and `list-input-methods' need |
36261 | 1228 these duplicated values to show some information about input methods |
1229 without loading the relevant Quail packages." | |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1230 (if (symbolp lang-env) |
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1231 (setq lang-env (symbol-name lang-env))) |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1232 (if (symbolp input-method) |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1233 (setq input-method (symbol-name input-method))) |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1234 (let ((info (cons lang-env args)) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1235 (slot (assoc input-method input-method-alist))) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1236 (if slot |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1237 (setcdr slot info) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1238 (setq slot (cons input-method info)) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1239 (setq input-method-alist (cons slot input-method-alist))))) |
17052 | 1240 |
19328
a616b45ffa31
(read-input-method-name): Replace INITIAL-INPUT arg with DEFAULT arg.
Richard M. Stallman <rms@gnu.org>
parents:
19267
diff
changeset
|
1241 (defun read-input-method-name (prompt &optional default inhibit-null) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1242 "Read a name of input method from a minibuffer prompting with PROMPT. |
19328
a616b45ffa31
(read-input-method-name): Replace INITIAL-INPUT arg with DEFAULT arg.
Richard M. Stallman <rms@gnu.org>
parents:
19267
diff
changeset
|
1243 If DEFAULT is non-nil, use that as the default, |
36261 | 1244 and substitute it into PROMPT at the first `%s'. |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1245 If INHIBIT-NULL is non-nil, null input signals an error. |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1246 |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1247 The return value is a string." |
19328
a616b45ffa31
(read-input-method-name): Replace INITIAL-INPUT arg with DEFAULT arg.
Richard M. Stallman <rms@gnu.org>
parents:
19267
diff
changeset
|
1248 (if default |
a616b45ffa31
(read-input-method-name): Replace INITIAL-INPUT arg with DEFAULT arg.
Richard M. Stallman <rms@gnu.org>
parents:
19267
diff
changeset
|
1249 (setq prompt (format prompt default))) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1250 (let* ((completion-ignore-case t) |
36863
247618d8fd9d
(read-input-method-name): Locally
Kenichi Handa <handa@m17n.org>
parents:
36836
diff
changeset
|
1251 ;; As it is quite normal to change input method in the |
247618d8fd9d
(read-input-method-name): Locally
Kenichi Handa <handa@m17n.org>
parents:
36836
diff
changeset
|
1252 ;; minibuffer, we must enable it even if |
247618d8fd9d
(read-input-method-name): Locally
Kenichi Handa <handa@m17n.org>
parents:
36836
diff
changeset
|
1253 ;; enable-recursive-minibuffers is currently nil. |
247618d8fd9d
(read-input-method-name): Locally
Kenichi Handa <handa@m17n.org>
parents:
36836
diff
changeset
|
1254 (enable-recursive-minibuffers t) |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1255 ;; This binding is necessary because input-method-history is |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1256 ;; buffer local. |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1257 (input-method (completing-read prompt input-method-alist |
19748
06cbad2e806a
(read-input-method-name): Specify the input history properly.
Richard M. Stallman <rms@gnu.org>
parents:
19746
diff
changeset
|
1258 nil t nil 'input-method-history |
06cbad2e806a
(read-input-method-name): Specify the input history properly.
Richard M. Stallman <rms@gnu.org>
parents:
19746
diff
changeset
|
1259 default))) |
26190
598f252b76f2
(read-input-method-name): Handle the
Kenichi Handa <handa@m17n.org>
parents:
26139
diff
changeset
|
1260 (if (and input-method (symbolp input-method)) |
598f252b76f2
(read-input-method-name): Handle the
Kenichi Handa <handa@m17n.org>
parents:
26139
diff
changeset
|
1261 (setq input-method (symbol-name input-method))) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1262 (if (> (length input-method) 0) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1263 input-method |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1264 (if inhibit-null |
18978
0f01c27a9756
(read-input-method-name): Show more appropriate error message.
Kenichi Handa <handa@m17n.org>
parents:
18969
diff
changeset
|
1265 (error "No valid input method is specified"))))) |
17052 | 1266 |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1267 (defun activate-input-method (input-method) |
22153 | 1268 "Switch to input method INPUT-METHOD for the current buffer. |
1269 If some other input method is already active, turn it off first. | |
1270 If INPUT-METHOD is nil, deactivate any current input method." | |
23049
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1271 (if (and input-method (symbolp input-method)) |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1272 (setq input-method (symbol-name input-method))) |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1273 (if (and current-input-method |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1274 (not (string= current-input-method input-method))) |
23049
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1275 (inactivate-input-method)) |
22153 | 1276 (unless (or current-input-method (null input-method)) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1277 (let ((slot (assoc input-method input-method-alist))) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1278 (if (null slot) |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1279 (error "Can't activate input method `%s'" input-method)) |
36528
355bbea5a6cd
(activate-input-method): If current-input-method-title is set by
Kenichi Handa <handa@m17n.org>
parents:
36464
diff
changeset
|
1280 (setq current-input-method-title nil) |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1281 (let ((func (nth 2 slot))) |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1282 (if (functionp func) |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1283 (apply (nth 2 slot) input-method (nthcdr 5 slot)) |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1284 (if (and (consp func) (symbolp (car func)) (symbolp (cdr func))) |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1285 (progn |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1286 (require (cdr func)) |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1287 (apply (car func) input-method (nthcdr 5 slot))) |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1288 (error "Can't activate input method `%s'" input-method)))) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1289 (setq current-input-method input-method) |
36528
355bbea5a6cd
(activate-input-method): If current-input-method-title is set by
Kenichi Handa <handa@m17n.org>
parents:
36464
diff
changeset
|
1290 (or (stringp current-input-method-title) |
355bbea5a6cd
(activate-input-method): If current-input-method-title is set by
Kenichi Handa <handa@m17n.org>
parents:
36464
diff
changeset
|
1291 (setq current-input-method-title (nth 3 slot))) |
22854
dd7dcda2d47b
(activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents:
22815
diff
changeset
|
1292 (unwind-protect |
dd7dcda2d47b
(activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents:
22815
diff
changeset
|
1293 (run-hooks 'input-method-activate-hook) |
dd7dcda2d47b
(activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents:
22815
diff
changeset
|
1294 (force-mode-line-update))))) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1295 |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1296 (defun inactivate-input-method () |
19555
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1297 "Turn off the current input method." |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1298 (when current-input-method |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1299 (if input-method-history |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1300 (unless (string= current-input-method (car input-method-history)) |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1301 (setq input-method-history |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1302 (cons current-input-method |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1303 (delete current-input-method input-method-history)))) |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1304 (setq input-method-history (list current-input-method))) |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1305 (unwind-protect |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1306 (funcall inactivate-current-input-method-function) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1307 (unwind-protect |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1308 (run-hooks 'input-method-inactivate-hook) |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1309 (setq current-input-method nil |
37953
c669723b80d5
(inactivate-input-method): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36910
diff
changeset
|
1310 input-method-function nil |
22854
dd7dcda2d47b
(activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents:
22815
diff
changeset
|
1311 current-input-method-title nil) |
dd7dcda2d47b
(activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents:
22815
diff
changeset
|
1312 (force-mode-line-update))))) |
17052 | 1313 |
20295
27ae44142cfd
(set-input-method): Renamed from select-input-method.
Karl Heuer <kwzh@gnu.org>
parents:
20231
diff
changeset
|
1314 (defun set-input-method (input-method) |
22153 | 1315 "Select and activate input method INPUT-METHOD for the current buffer. |
36051
781f426b26c5
(set-input-method): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
35556
diff
changeset
|
1316 This also sets the default input method to the one you specify. |
36074
89518bb0ddaa
(set-input-method): Another doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
36051
diff
changeset
|
1317 If INPUT-METHOD is nil, this function turns off the input method, and |
89518bb0ddaa
(set-input-method): Another doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
36051
diff
changeset
|
1318 also causes you to be prompted for a name of an input method the next |
89518bb0ddaa
(set-input-method): Another doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
36051
diff
changeset
|
1319 time you invoke \\[toggle-input-method]. |
89518bb0ddaa
(set-input-method): Another doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
36051
diff
changeset
|
1320 |
36051
781f426b26c5
(set-input-method): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
35556
diff
changeset
|
1321 To deactivate the input method interactively, use \\[toggle-input-method]. |
781f426b26c5
(set-input-method): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
35556
diff
changeset
|
1322 To deactivate it programmatically, use \\[inactivate-input-method]." |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1323 (interactive |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1324 (let* ((default (or (car input-method-history) default-input-method))) |
19402 | 1325 (list (read-input-method-name |
19748
06cbad2e806a
(read-input-method-name): Specify the input history properly.
Richard M. Stallman <rms@gnu.org>
parents:
19746
diff
changeset
|
1326 (if default "Select input method (default %s): " "Select input method: ") |
19402 | 1327 default t)))) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1328 (activate-input-method input-method) |
43252
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1329 (setq default-input-method input-method) |
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1330 (when (interactive-p) |
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1331 (customize-mark-as-set 'default-input-method)) |
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1332 default-input-method) |
17052 | 1333 |
1334 (defun toggle-input-method (&optional arg) | |
36083
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1335 "Enable or disable multilingual text input method for the current buffer. |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1336 Only one input method can be enabled at any time in a given buffer. |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1337 |
36083
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1338 The normal action is to enable an input method if none was |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1339 enabled, and disable the current one otherwise. Which input method |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1340 to enable can be determined in various ways--either the one most |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1341 recently used, or the one specified by `default-input-method', or |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1342 as a last resort by reading the name of an input method in the |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1343 minibuffer. |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1344 |
36083
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1345 With a prefix argument, read an input method name with the minibuffer |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1346 and enable that one. The default is the most recent input method specified |
e9191d28ed86
(toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
36074
diff
changeset
|
1347 \(not including the currently active input method, if any)." |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1348 |
17052 | 1349 (interactive "P") |
21983
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1350 (if (and current-input-method (not arg)) |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1351 (inactivate-input-method) |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1352 (let ((default (or (car input-method-history) default-input-method))) |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1353 (if (and arg default (equal current-input-method default) |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1354 (> (length input-method-history) 1)) |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1355 (setq default (nth 1 input-method-history))) |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1356 (activate-input-method |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1357 (if (or arg (not default)) |
21983
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1358 (progn |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1359 (read-input-method-name |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1360 (if default "Input method (default %s): " "Input method: " ) |
487cd71c058d
(toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents:
21882
diff
changeset
|
1361 default t)) |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1362 default)) |
43252
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1363 (unless default-input-method |
46674 | 1364 (prog1 |
43252
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1365 (setq default-input-method current-input-method) |
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1366 (when (interactive-p) |
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1367 (customize-mark-as-set 'default-input-method))))))) |
17052 | 1368 |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1369 (defun describe-input-method (input-method) |
22153 | 1370 "Describe input method INPUT-METHOD." |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1371 (interactive |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1372 (list (read-input-method-name |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1373 "Describe input method (default, current choice): "))) |
19653
431753f747ea
(describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents:
19649
diff
changeset
|
1374 (if (and input-method (symbolp input-method)) |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1375 (setq input-method (symbol-name input-method))) |
43310 | 1376 (help-setup-xref (list #'describe-input-method |
1377 (or input-method current-input-method)) | |
43078
61ad8f29fefa
(describe-input-method): Call help-setup-xref here.
Richard M. Stallman <rms@gnu.org>
parents:
42734
diff
changeset
|
1378 (interactive-p)) |
61ad8f29fefa
(describe-input-method): Call help-setup-xref here.
Richard M. Stallman <rms@gnu.org>
parents:
42734
diff
changeset
|
1379 |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1380 (if (null input-method) |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1381 (describe-current-input-method) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1382 (let ((current current-input-method)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1383 (condition-case nil |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1384 (progn |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1385 (save-excursion |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1386 (activate-input-method input-method) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1387 (describe-current-input-method)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1388 (activate-input-method current)) |
46674 | 1389 (error |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1390 (activate-input-method current) |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1391 (help-setup-xref (list #'describe-input-method input-method) |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1392 (interactive-p)) |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1393 (with-output-to-temp-buffer (help-buffer) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1394 (let ((elt (assoc input-method input-method-alist))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1395 (princ (format |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1396 "Input method: %s (`%s' in mode line) for %s\n %s\n" |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1397 input-method (nth 3 elt) (nth 1 elt) (nth 4 elt)))))))))) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1398 |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1399 (defun describe-current-input-method () |
43078
61ad8f29fefa
(describe-input-method): Call help-setup-xref here.
Richard M. Stallman <rms@gnu.org>
parents:
42734
diff
changeset
|
1400 "Describe the input method currently in use. |
61ad8f29fefa
(describe-input-method): Call help-setup-xref here.
Richard M. Stallman <rms@gnu.org>
parents:
42734
diff
changeset
|
1401 This is a subroutine for `describe-input-method'." |
17052 | 1402 (if current-input-method |
1403 (if (and (symbolp describe-current-input-method-function) | |
1404 (fboundp describe-current-input-method-function)) | |
1405 (funcall describe-current-input-method-function) | |
1406 (message "No way to describe the current input method `%s'" | |
24864
21f620ad347e
(describe-current-input-method):
Kenichi Handa <handa@m17n.org>
parents:
24781
diff
changeset
|
1407 current-input-method) |
17052 | 1408 (ding)) |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1409 (error "No input method is activated now"))) |
17052 | 1410 |
20116
8c1995cc7702
(read-multilingual-string): Use
Kenichi Handa <handa@m17n.org>
parents:
20091
diff
changeset
|
1411 (defun read-multilingual-string (prompt &optional initial-input input-method) |
17052 | 1412 "Read a multilingual string from minibuffer, prompting with string PROMPT. |
1413 The input method selected last time is activated in minibuffer. | |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1414 If optional second arg INITIAL-INPUT is non-nil, insert it in the minibuffer |
18301
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1415 initially. |
a4da36c7bb08
Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents:
18217
diff
changeset
|
1416 Optional 3rd argument INPUT-METHOD specifies the input method |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1417 to be activated instead of the one selected last time. It is a symbol |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1418 or a string." |
18712
7366898bee9e
(read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
18634
diff
changeset
|
1419 (setq input-method |
7366898bee9e
(read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
18634
diff
changeset
|
1420 (or input-method |
20116
8c1995cc7702
(read-multilingual-string): Use
Kenichi Handa <handa@m17n.org>
parents:
20091
diff
changeset
|
1421 current-input-method |
18712
7366898bee9e
(read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
18634
diff
changeset
|
1422 default-input-method |
7366898bee9e
(read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
18634
diff
changeset
|
1423 (read-input-method-name "Input method: " nil t))) |
19654
4c0174fcf26c
(read-multilingual-string): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
19653
diff
changeset
|
1424 (if (and input-method (symbolp input-method)) |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1425 (setq input-method (symbol-name input-method))) |
23049
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1426 (let ((prev-input-method current-input-method)) |
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1427 (unwind-protect |
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1428 (progn |
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1429 (activate-input-method input-method) |
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1430 (read-string prompt initial-input nil nil t)) |
82a27d5b4582
(activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents:
23044
diff
changeset
|
1431 (activate-input-method prev-input-method)))) |
17052 | 1432 |
1433 ;; Variables to control behavior of input methods. All input methods | |
1434 ;; should react to these variables. | |
1435 | |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1436 (defcustom input-method-verbose-flag 'default |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1437 "*A flag to control extra guidance given by input methods. |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1438 The value should be nil, t, `complex-only', or `default'. |
17052 | 1439 |
19917
834c629f9220
(select-input-method): No error if enable-multibyte-characters is nil.
Richard M. Stallman <rms@gnu.org>
parents:
19848
diff
changeset
|
1440 The extra guidance is done by showing list of available keys in echo |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1441 area. When you use the input method in the minibuffer, the guidance |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1442 is shown at the bottom short window (split from the existing window). |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1443 |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1444 If the value is t, extra guidance is always given, if the value is |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1445 nil, extra guidance is always suppressed. |
19848
68c5c0b3ed0d
(input-method-verbose-flag):
Kenichi Handa <handa@m17n.org>
parents:
19798
diff
changeset
|
1446 |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1447 If the value is `complex-only', only complex input methods such as |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1448 `chinese-py' and `japanese' give extra guidance. |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1449 |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1450 If the value is `default', complex input methods always give extra |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1451 guidance, but simple input methods give it only when you are not in |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1452 the minibuffer. |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1453 |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1454 See also the variable `input-method-highlight-flag'." |
46674 | 1455 :type '(choice (const :tag "Always" t) (const :tag "Never" nil) |
1456 (const complex-only) (const default)) | |
19402 | 1457 :group 'mule) |
1458 | |
1459 (defcustom input-method-highlight-flag t | |
1460 "*If this flag is non-nil, input methods highlight partially-entered text. | |
1461 For instance, while you are in the middle of a Quail input method sequence, | |
1462 the text inserted so far is temporarily underlined. | |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1463 The underlining goes away when you finish or abort the input method sequence. |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1464 See also the variable `input-method-verbose-flag'." |
19402 | 1465 :type 'boolean |
1466 :group 'mule) | |
17052 | 1467 |
1468 (defvar input-method-activate-hook nil | |
19555
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1469 "Normal hook run just after an input method is activated. |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1470 |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1471 The variable `current-input-method' keeps the input method name |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1472 just activated.") |
17052 | 1473 |
1474 (defvar input-method-inactivate-hook nil | |
19555
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1475 "Normal hook run just after an input method is inactivated. |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1476 |
df2996f7fdc3
(inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
19424
diff
changeset
|
1477 The variable `current-input-method' still keeps the input method name |
20467 | 1478 just inactivated.") |
17052 | 1479 |
1480 (defvar input-method-after-insert-chunk-hook nil | |
1481 "Normal hook run just after an input method insert some chunk of text.") | |
1482 | |
22918
776bc4293c87
(input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents:
22899
diff
changeset
|
1483 (defvar input-method-exit-on-first-char nil |
36261 | 1484 "This flag controls when an input method returns. |
22918
776bc4293c87
(input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents:
22899
diff
changeset
|
1485 Usually, the input method does not return while there's a possibility |
776bc4293c87
(input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents:
22899
diff
changeset
|
1486 that it may find a different translation if a user types another key. |
22948
e259bed9247e
(input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents:
22918
diff
changeset
|
1487 But, it this flag is non-nil, the input method returns as soon as |
e259bed9247e
(input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents:
22918
diff
changeset
|
1488 the current key sequence gets long enough to have some valid translation.") |
22918
776bc4293c87
(input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents:
22899
diff
changeset
|
1489 |
776bc4293c87
(input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents:
22899
diff
changeset
|
1490 (defvar input-method-use-echo-area nil |
776bc4293c87
(input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents:
22899
diff
changeset
|
1491 "This flag controls how an input method shows an intermediate key sequence. |
22948
e259bed9247e
(input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents:
22918
diff
changeset
|
1492 Usually, the input method inserts the intermediate key sequence, |
e259bed9247e
(input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents:
22918
diff
changeset
|
1493 or candidate translations corresponding to the sequence, |
e259bed9247e
(input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents:
22918
diff
changeset
|
1494 at point in the current buffer. |
e259bed9247e
(input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents:
22918
diff
changeset
|
1495 But, if this flag is non-nil, it displays them in echo area instead.") |
22918
776bc4293c87
(input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents:
22899
diff
changeset
|
1496 |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1497 (defvar input-method-exit-on-invalid-key nil |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1498 "This flag controls the behaviour of an input method on invalid key input. |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1499 Usually, when a user types a key which doesn't start any character |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1500 handled by the input method, the key is handled by turning off the |
23196 | 1501 input method temporarily. After that key, the input method is re-enabled. |
19405
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1502 But, if this flag is non-nil, the input method is never back on.") |
7ef4af7505f2
(previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents:
19402
diff
changeset
|
1503 |
17052 | 1504 |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1505 (defvar set-language-environment-hook nil |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1506 "Normal hook run after some language environment is set. |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1507 |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1508 When you set some hook function here, that effect usually should not |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1509 be inherited to another language environment. So, you had better set |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1510 another function in `exit-language-environment-hook' (which see) to |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1511 cancel the effect.") |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1512 |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1513 (defvar exit-language-environment-hook nil |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1514 "Normal hook run after exiting from some language environment. |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1515 When this hook is run, the variable `current-language-environment' |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1516 is still bound to the language environment being exited. |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1517 |
23196 | 1518 This hook is mainly used for canceling the effect of |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1519 `set-language-environment-hook' (which-see).") |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1520 |
23419
c251dd6b289e
(setup-specified-language-environment): Add apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents:
23261
diff
changeset
|
1521 (put 'setup-specified-language-environment 'apropos-inhibit t) |
c251dd6b289e
(setup-specified-language-environment): Add apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents:
23261
diff
changeset
|
1522 |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1523 (defun setup-specified-language-environment () |
22200
a0d60a6c87da
(register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22153
diff
changeset
|
1524 "Switch to a specified language environment." |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1525 (interactive) |
18634
8b309d07a95e
(set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents:
18633
diff
changeset
|
1526 (let (language-name) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1527 (if (and (symbolp last-command-event) |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1528 (or (not (eq last-command-event 'Default)) |
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1529 (setq last-command-event 'English)) |
18634
8b309d07a95e
(set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents:
18633
diff
changeset
|
1530 (setq language-name (symbol-name last-command-event))) |
43252
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1531 (prog1 |
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1532 (set-language-environment language-name) |
bccb026d40e4
2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43182
diff
changeset
|
1533 (customize-mark-as-set 'current-language-environment)) |
17991
65407fdc4a33
Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents:
17840
diff
changeset
|
1534 (error "Bogus calling sequence")))) |
17052 | 1535 |
21229
38b621cd9169
(set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21042
diff
changeset
|
1536 (defcustom current-language-environment "English" |
24204 | 1537 "The last language environment specified with `set-language-environment'. |
24551
c10fd4e02857
(current-language-environment): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24495
diff
changeset
|
1538 This variable should be set only with \\[customize], which is equivalent |
c10fd4e02857
(current-language-environment): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents:
24495
diff
changeset
|
1539 to using the function `set-language-environment'." |
24204 | 1540 :link '(custom-manual "(emacs)Language Environments") |
23165
0e28574df9af
(current-language-environment): Fix setter function.
Dave Love <fx@gnu.org>
parents:
23087
diff
changeset
|
1541 :set (lambda (symbol value) (set-language-environment value)) |
24204 | 1542 :get (lambda (x) |
1543 (or (car-safe (assoc-ignore-case | |
1544 (if (symbolp current-language-environment) | |
1545 (symbol-name current-language-environment) | |
1546 current-language-environment) | |
1547 language-info-alist)) | |
1548 "English")) | |
48836
81333325d8f7
(current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48813
diff
changeset
|
1549 ;; custom type will be updated with `set-language-info'. |
81333325d8f7
(current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48813
diff
changeset
|
1550 :type (if language-info-alist |
81333325d8f7
(current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48813
diff
changeset
|
1551 (cons 'choice (mapcar |
81333325d8f7
(current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48813
diff
changeset
|
1552 (lambda (lang) |
49435
f9953109e75c
(set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents:
49048
diff
changeset
|
1553 (list 'const lang)) |
f9953109e75c
(set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents:
49048
diff
changeset
|
1554 (sort (mapcar 'car language-info-alist) 'string<))) |
48836
81333325d8f7
(current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents:
48813
diff
changeset
|
1555 'string) |
21229
38b621cd9169
(set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21042
diff
changeset
|
1556 :initialize 'custom-initialize-default |
48231
7b77f5edeace
(current-language-environment): Fix
Dave Love <fx@gnu.org>
parents:
48073
diff
changeset
|
1557 :group 'mule) |
18634
8b309d07a95e
(set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents:
18633
diff
changeset
|
1558 |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1559 (defun reset-language-environment () |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1560 "Reset multilingual environment of Emacs to the default status. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1561 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1562 The default status is as follows: |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1563 |
46674 | 1564 The default value of `buffer-file-coding-system' is nil. |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1565 The default coding system for process I/O is nil. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1566 The default value for the command `set-terminal-coding-system' is nil. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1567 The default value for the command `set-keyboard-coding-system' is nil. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1568 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1569 The order of priorities of coding categories and the coding system |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1570 bound to each category are as follows |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1571 coding category coding system |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1572 -------------------------------------------------- |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1573 coding-category-iso-8-2 iso-latin-1 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1574 coding-category-iso-8-1 iso-latin-1 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1575 coding-category-iso-7-tight iso-2022-jp |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1576 coding-category-iso-7 iso-2022-7bit |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1577 coding-category-iso-7-else iso-2022-7bit-lock |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1578 coding-category-iso-8-else iso-2022-8bit-ss2 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1579 coding-category-emacs-mule emacs-mule |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1580 coding-category-raw-text raw-text |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1581 coding-category-sjis japanese-shift-jis |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1582 coding-category-big5 chinese-big5 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1583 coding-category-ccl nil |
23196 | 1584 coding-category-binary no-conversion |
35540
18667fa78087
(reset-language-environment): Make
Kenichi Handa <handa@m17n.org>
parents:
35504
diff
changeset
|
1585 coding-category-utf-16-be nil |
18667fa78087
(reset-language-environment): Make
Kenichi Handa <handa@m17n.org>
parents:
35504
diff
changeset
|
1586 coding-category-utf-16-le nil |
36464 | 1587 coding-category-utf-8 mule-utf-8" |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1588 (interactive) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1589 ;; This function formerly set default-enable-multibyte-characters to t, |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1590 ;; but that is incorrect. It should not alter the unibyte/multibyte choice. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1591 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1592 (setq coding-category-iso-7-tight 'iso-2022-jp |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1593 coding-category-iso-7 'iso-2022-7bit |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1594 coding-category-iso-8-1 'iso-latin-1 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1595 coding-category-iso-8-2 'iso-latin-1 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1596 coding-category-iso-7-else 'iso-2022-7bit-lock |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1597 coding-category-iso-8-else 'iso-2022-8bit-ss2 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1598 coding-category-emacs-mule 'emacs-mule |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1599 coding-category-raw-text 'raw-text |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1600 coding-category-sjis 'japanese-shift-jis |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1601 coding-category-big5 'chinese-big5 |
35556
8fcff22c51b7
(reset-language-environment): Reset coding-category-utf-8 to
Kenichi Handa <handa@m17n.org>
parents:
35540
diff
changeset
|
1602 coding-category-utf-16-be nil |
8fcff22c51b7
(reset-language-environment): Reset coding-category-utf-8 to
Kenichi Handa <handa@m17n.org>
parents:
35540
diff
changeset
|
1603 coding-category-utf-16-le nil |
35540
18667fa78087
(reset-language-environment): Make
Kenichi Handa <handa@m17n.org>
parents:
35504
diff
changeset
|
1604 coding-category-utf-8 'mule-utf-8 |
35556
8fcff22c51b7
(reset-language-environment): Reset coding-category-utf-8 to
Kenichi Handa <handa@m17n.org>
parents:
35540
diff
changeset
|
1605 coding-category-ccl nil |
8fcff22c51b7
(reset-language-environment): Reset coding-category-utf-8 to
Kenichi Handa <handa@m17n.org>
parents:
35540
diff
changeset
|
1606 coding-category-binary 'no-conversion) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1607 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1608 (set-coding-priority |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1609 '(coding-category-iso-8-1 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1610 coding-category-iso-8-2 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1611 coding-category-iso-7-tight |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1612 coding-category-iso-7 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1613 coding-category-iso-7-else |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1614 coding-category-iso-8-else |
46674 | 1615 coding-category-emacs-mule |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1616 coding-category-raw-text |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1617 coding-category-sjis |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1618 coding-category-big5 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1619 coding-category-ccl |
28019
75029c86627c
(reset-language-environment): Include
Kenichi Handa <handa@m17n.org>
parents:
27731
diff
changeset
|
1620 coding-category-binary |
75029c86627c
(reset-language-environment): Include
Kenichi Handa <handa@m17n.org>
parents:
27731
diff
changeset
|
1621 coding-category-utf-16-be |
35556
8fcff22c51b7
(reset-language-environment): Reset coding-category-utf-8 to
Kenichi Handa <handa@m17n.org>
parents:
35540
diff
changeset
|
1622 coding-category-utf-16-le |
8fcff22c51b7
(reset-language-environment): Reset coding-category-utf-8 to
Kenichi Handa <handa@m17n.org>
parents:
35540
diff
changeset
|
1623 coding-category-utf-8)) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1624 |
23261
9346958bb3d5
(reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents:
23196
diff
changeset
|
1625 (update-coding-systems-internal) |
9346958bb3d5
(reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents:
23196
diff
changeset
|
1626 |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1627 (set-default-coding-systems nil) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
1628 (setq default-sendmail-coding-system 'iso-latin-1) |
50116
f2c182eeeda2
(reset-language-environment): Set
Kenichi Handa <handa@m17n.org>
parents:
49796
diff
changeset
|
1629 (setq default-file-name-coding-system 'iso-latin-1) |
44425
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1630 ;; Preserve eol-type from existing default-process-coding-systems. |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1631 ;; On non-unix-like systems in particular, these may have been set |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1632 ;; carefully by the user, or by the startup code, to deal with the |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1633 ;; users shell appropriately, so should not be altered by changing |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1634 ;; language environment. |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1635 (let ((output-coding |
44440
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1636 ;; When bootstrapping, coding-systems are not defined yet, so |
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1637 ;; we need to catch the error from check-coding-system. |
46674 | 1638 (condition-case nil |
44440
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1639 (coding-system-change-text-conversion |
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1640 (car default-process-coding-system) 'undecided) |
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1641 (coding-system-error 'undecided))) |
44425
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1642 (input-coding |
44440
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1643 (condition-case nil |
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1644 (coding-system-change-text-conversion |
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1645 (cdr default-process-coding-system) 'iso-latin-1) |
db660532bd23
(reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents:
44425
diff
changeset
|
1646 (coding-system-error 'iso-latin-1)))) |
44425
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1647 (setq default-process-coding-system |
86eccd269d36
(set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents:
44321
diff
changeset
|
1648 (cons output-coding input-coding))) |
30492
822b51279bd3
(find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents:
30268
diff
changeset
|
1649 |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1650 ;; Don't alter the terminal and keyboard coding systems here. |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1651 ;; The terminal still supports the same coding system |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1652 ;; that it supported a minute ago. |
44321
abf6fc89e7d7
(standard-keyboard-coding-systems): Add koi8-u and koi8-r.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43310
diff
changeset
|
1653 ;; (set-terminal-coding-system-internal nil) |
abf6fc89e7d7
(standard-keyboard-coding-systems): Add koi8-u and koi8-r.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43310
diff
changeset
|
1654 ;; (set-keyboard-coding-system-internal nil) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1655 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1656 (setq nonascii-translation-table nil |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1657 nonascii-insert-offset 0)) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1658 |
31138
5dab940bf298
(reset-language-environment): Set default-process-coding-system to
Kenichi Handa <handa@m17n.org>
parents:
30566
diff
changeset
|
1659 (reset-language-environment) |
5dab940bf298
(reset-language-environment): Set default-process-coding-system to
Kenichi Handa <handa@m17n.org>
parents:
30566
diff
changeset
|
1660 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1661 (defun set-display-table-and-terminal-coding-system (language-name) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1662 "Set up the display table and terminal coding system for LANGUAGE-NAME." |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1663 (let ((coding (get-language-info language-name 'unibyte-display))) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1664 (if coding |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1665 (standard-display-european-internal) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1666 (standard-display-default (if (eq window-system 'pc) 128 160) 255) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1667 (aset standard-display-table 146 nil)) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1668 (or (eq window-system 'pc) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1669 (set-terminal-coding-system coding)))) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1670 |
18066
eecd891e2b63
(set-language-environment): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents:
17991
diff
changeset
|
1671 (defun set-language-environment (language-name) |
18068
317f57f07b14
Doc fix for previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18066
diff
changeset
|
1672 "Set up multi-lingual environment for using LANGUAGE-NAME. |
317f57f07b14
Doc fix for previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18066
diff
changeset
|
1673 This sets the coding system priority and the default input method |
21229
38b621cd9169
(set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21042
diff
changeset
|
1674 and sometimes other things. LANGUAGE-NAME should be a string |
38b621cd9169
(set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21042
diff
changeset
|
1675 which is the name of a language environment. For example, \"Latin-1\" |
38b621cd9169
(set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21042
diff
changeset
|
1676 specifies the character set for the major languages of Western Europe." |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1677 (interactive (list (read-language-name |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1678 nil |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1679 "Set language environment (default, English): "))) |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1680 (if language-name |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1681 (if (symbolp language-name) |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1682 (setq language-name (symbol-name language-name))) |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1683 (setq language-name "English")) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1684 (or (assoc-ignore-case language-name language-info-alist) |
18634
8b309d07a95e
(set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents:
18633
diff
changeset
|
1685 (error "Language environment not defined: %S" language-name)) |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1686 (if current-language-environment |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1687 (let ((func (get-language-info current-language-environment |
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1688 'exit-function))) |
20231
7f0ea4977b32
(set-language-environment): Run
Kenichi Handa <handa@m17n.org>
parents:
20165
diff
changeset
|
1689 (run-hooks 'exit-language-environment-hook) |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1690 (if (functionp func) (funcall func)))) |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1691 (let ((default-eol-type (coding-system-eol-type |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1692 default-buffer-file-coding-system))) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1693 (reset-language-environment) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1694 |
46501
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
1695 ;; The features might set up coding systems. |
42050
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
1696 (let ((required-features (get-language-info language-name 'features))) |
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
1697 (while required-features |
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
1698 (require (car required-features)) |
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
1699 (setq required-features (cdr required-features)))) |
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
1700 |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1701 (setq current-language-environment language-name) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1702 (set-language-environment-coding-systems language-name default-eol-type)) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1703 (let ((input-method (get-language-info language-name 'input-method))) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1704 (when input-method |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1705 (setq default-input-method input-method) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1706 (if input-method-history |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1707 (setq input-method-history |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1708 (cons input-method |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1709 (delete input-method input-method-history)))))) |
24491
45b77df0b5ac
(set-language-environment): Don't use
Eli Zaretskii <eliz@gnu.org>
parents:
24417
diff
changeset
|
1710 (let ((nonascii (get-language-info language-name 'nonascii-translation)) |
45b77df0b5ac
(set-language-environment): Don't use
Eli Zaretskii <eliz@gnu.org>
parents:
24417
diff
changeset
|
1711 (dos-table |
24495
14e1df6e60a8
(set-language-environment): Fix
Eli Zaretskii <eliz@gnu.org>
parents:
24491
diff
changeset
|
1712 (if (eq window-system 'pc) |
14e1df6e60a8
(set-language-environment): Fix
Eli Zaretskii <eliz@gnu.org>
parents:
24491
diff
changeset
|
1713 (intern |
28774
6594b6dedae9
(set-language-environment): Don't
Eli Zaretskii <eliz@gnu.org>
parents:
28711
diff
changeset
|
1714 (format "cp%d-nonascii-translation-table" dos-codepage))))) |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1715 (cond |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1716 ((char-table-p nonascii) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1717 (setq nonascii-translation-table nonascii)) |
24491
45b77df0b5ac
(set-language-environment): Don't use
Eli Zaretskii <eliz@gnu.org>
parents:
24417
diff
changeset
|
1718 ((and (eq window-system 'pc) (boundp dos-table)) |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1719 ;; DOS terminals' default is to use a special non-ASCII translation |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1720 ;; table as appropriate for the installed codepage. |
24491
45b77df0b5ac
(set-language-environment): Don't use
Eli Zaretskii <eliz@gnu.org>
parents:
24417
diff
changeset
|
1721 (setq nonascii-translation-table (symbol-value dos-table))) |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1722 ((charsetp nonascii) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1723 (setq nonascii-insert-offset (- (make-char nonascii) 128))))) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1724 |
23044
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1725 ;; Unibyte setups if necessary. |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1726 (unless default-enable-multibyte-characters |
23044
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1727 ;; Syntax and case table. |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1728 (let ((syntax (get-language-info language-name 'unibyte-syntax))) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1729 (if syntax |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1730 (let ((set-case-syntax-set-multibyte nil)) |
23044
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1731 (load syntax nil t)) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1732 ;; No information for syntax and case. Reset to the defaults. |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1733 (let ((syntax-table (standard-syntax-table)) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1734 (case-table (standard-case-table)) |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1735 (ch (if (eq window-system 'pc) 128 160))) |
23044
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1736 (while (< ch 256) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1737 (modify-syntax-entry ch " " syntax-table) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1738 (aset case-table ch ch) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1739 (setq ch (1+ ch))) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1740 (set-char-table-extra-slot case-table 0 nil) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1741 (set-char-table-extra-slot case-table 1 nil) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1742 (set-char-table-extra-slot case-table 2 nil)) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1743 (set-standard-case-table (standard-case-table)) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1744 (let ((list (buffer-list))) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1745 (while list |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1746 (with-current-buffer (car list) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1747 (set-case-table (standard-case-table))) |
6a8e5ce6cfc1
(set-language-environment): Reset
Kenichi Handa <handa@m17n.org>
parents:
23031
diff
changeset
|
1748 (setq list (cdr list)))))) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1749 (set-display-table-and-terminal-coding-system language-name)) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1750 |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1751 (let ((required-features (get-language-info language-name 'features))) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1752 (while required-features |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1753 (require (car required-features)) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1754 (setq required-features (cdr required-features)))) |
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1755 (let ((func (get-language-info language-name 'setup-function))) |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1756 (if (functionp func) |
22986
b5c383369b40
(language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents:
22948
diff
changeset
|
1757 (funcall func))) |
20165
2d0abf12009b
(set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents:
20116
diff
changeset
|
1758 (run-hooks 'set-language-environment-hook) |
18634
8b309d07a95e
(set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents:
18633
diff
changeset
|
1759 (force-mode-line-update t)) |
17052 | 1760 |
21856
68e39b75b862
(set-language-environment): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
21770
diff
changeset
|
1761 (defun standard-display-european-internal () |
68e39b75b862
(set-language-environment): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
21770
diff
changeset
|
1762 ;; Actually set up direct output of non-ASCII characters. |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1763 (standard-display-8bit (if (eq window-system 'pc) 128 160) 255) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1764 ;; Unibyte Emacs on MS-DOS wants to display all 8-bit characters with |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1765 ;; the native font, and codes 160 and 146 stand for something very |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1766 ;; different there. |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1767 (or (and (eq window-system 'pc) (not default-enable-multibyte-characters)) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1768 (progn |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1769 ;; Make non-line-break space display as a plain space. |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1770 ;; Most X fonts do the wrong thing for code 160. |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1771 (aset standard-display-table 160 [32]) |
35248
058fe91d9676
(standard-display-european-internal):
Dave Love <fx@gnu.org>
parents:
35168
diff
changeset
|
1772 ;; With luck, non-Latin-1 fonts are more recent and so don't |
058fe91d9676
(standard-display-european-internal):
Dave Love <fx@gnu.org>
parents:
35168
diff
changeset
|
1773 ;; have this bug. |
058fe91d9676
(standard-display-european-internal):
Dave Love <fx@gnu.org>
parents:
35168
diff
changeset
|
1774 (aset standard-display-table 2208 [32]) ; Latin-1 NBSP |
058fe91d9676
(standard-display-european-internal):
Dave Love <fx@gnu.org>
parents:
35168
diff
changeset
|
1775 ;; Most Windows programs send out apostrophes as \222. Most X fonts |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1776 ;; don't contain a character at that position. Map it to the ASCII |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1777 ;; apostrophe. [This is actually RIGHT SINGLE QUOTATION MARK, |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1778 ;; U+2019, normally from the windows-1252 character set. XFree 4 |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1779 ;; fonts probably have the appropriate glyph at this position, |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1780 ;; so they could use standard-display-8bit. It's better to use a |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1781 ;; proper windows-1252 coding system. --fx] |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1782 (aset standard-display-table 146 [39])))) |
21856
68e39b75b862
(set-language-environment): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
21770
diff
changeset
|
1783 |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1784 (defun set-language-environment-coding-systems (language-name |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1785 &optional eol-type) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1786 "Do various coding system setups for language environment LANGUAGE-NAME. |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1787 |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1788 The optional arg EOL-TYPE specifies the eol-type of the default value |
46674 | 1789 of `buffer-file-coding-system' set by this function." |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1790 (let* ((priority (get-language-info language-name 'coding-priority)) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1791 (default-coding (car priority))) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1792 (if priority |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1793 (let ((categories (mapcar 'coding-system-category priority))) |
23916
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1794 (set-default-coding-systems |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1795 (if (memq eol-type '(0 1 2 unix dos mac)) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1796 (coding-system-change-eol-conversion default-coding eol-type) |
ccc00be328a1
(set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents:
23889
diff
changeset
|
1797 default-coding)) |
23087
4ae12d3c8c30
(select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents:
23049
diff
changeset
|
1798 (setq default-sendmail-coding-system default-coding) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1799 (set-coding-priority categories) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1800 (while priority |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1801 (set (car categories) (car priority)) |
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1802 (setq priority (cdr priority) categories (cdr categories))) |
22887
e24b79da83d6
(language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
22854
diff
changeset
|
1803 (update-coding-systems-internal))))) |
20733
079907c59fb2
(set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents:
20485
diff
changeset
|
1804 |
17052 | 1805 (defsubst princ-list (&rest args) |
46674 | 1806 "Print all arguments with `princ', then print \"\n\"." |
17052 | 1807 (while args (princ (car args)) (setq args (cdr args))) |
1808 (princ "\n")) | |
1809 | |
23419
c251dd6b289e
(setup-specified-language-environment): Add apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents:
23261
diff
changeset
|
1810 (put 'describe-specified-language-support 'apropos-inhibit t) |
c251dd6b289e
(setup-specified-language-environment): Add apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents:
23261
diff
changeset
|
1811 |
17840
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1812 ;; Print a language specific information such as input methods, |
17758
8c67c2e2cc29
(build-describe-language-support-function,
Kenichi Handa <handa@m17n.org>
parents:
17526
diff
changeset
|
1813 ;; charsets, and coding systems. This function is intended to be |
17840
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1814 ;; called from the menu: |
18152
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1815 ;; [menu-bar mule describe-language-environment LANGUAGE] |
17840
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1816 ;; and should not run it by `M-x describe-current-input-method-function'. |
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1817 (defun describe-specified-language-support () |
19083
8fdb29b769ed
Doc fixes; fix error message text.
Richard M. Stallman <rms@gnu.org>
parents:
19036
diff
changeset
|
1818 "Describe how Emacs supports the specified language environment." |
17840
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1819 (interactive) |
18152
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1820 (let (language-name) |
17840
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1821 (if (not (and (symbolp last-command-event) |
28456 | 1822 (or (not (eq last-command-event 'Default)) |
1823 (setq last-command-event 'English)) | |
18152
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1824 (setq language-name (symbol-name last-command-event)))) |
17840
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1825 (error "Bogus calling sequence")) |
18152
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1826 (describe-language-environment language-name))) |
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1827 |
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1828 (defun describe-language-environment (language-name) |
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1829 "Describe how Emacs supports language environment LANGUAGE-NAME." |
19653
431753f747ea
(describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents:
19649
diff
changeset
|
1830 (interactive |
431753f747ea
(describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents:
19649
diff
changeset
|
1831 (list (read-language-name |
431753f747ea
(describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents:
19649
diff
changeset
|
1832 'documentation |
20091
aac4c6a58684
(describe-language-environment): Fix prompt.
Karl Heuer <kwzh@gnu.org>
parents:
19917
diff
changeset
|
1833 "Describe language environment (default, current choice): "))) |
18634
8b309d07a95e
(set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents:
18633
diff
changeset
|
1834 (if (null language-name) |
8b309d07a95e
(set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents:
18633
diff
changeset
|
1835 (setq language-name current-language-environment)) |
18152
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1836 (if (or (null language-name) |
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1837 (null (get-language-info language-name 'documentation))) |
e184e7061c9a
(describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents:
18068
diff
changeset
|
1838 (error "No documentation for the specified language")) |
19649
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1839 (if (symbolp language-name) |
b2bf3c43c86a
(get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents:
19615
diff
changeset
|
1840 (setq language-name (symbol-name language-name))) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1841 (let ((doc (get-language-info language-name 'documentation)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1842 pos) |
40666
84cd0f5441e2
(describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40592
diff
changeset
|
1843 (help-setup-xref (list #'describe-language-environment language-name) |
84cd0f5441e2
(describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40592
diff
changeset
|
1844 (interactive-p)) |
84cd0f5441e2
(describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40592
diff
changeset
|
1845 (with-output-to-temp-buffer (help-buffer) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1846 (save-excursion |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1847 (set-buffer standard-output) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1848 (insert language-name " language environment\n\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1849 (if (stringp doc) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1850 (insert doc "\n\n")) |
33226
d5f086989bfd
(describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents:
33047
diff
changeset
|
1851 (condition-case nil |
d5f086989bfd
(describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents:
33047
diff
changeset
|
1852 (let ((str (eval (get-language-info language-name 'sample-text)))) |
d5f086989bfd
(describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents:
33047
diff
changeset
|
1853 (if (stringp str) |
d5f086989bfd
(describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents:
33047
diff
changeset
|
1854 (insert "Sample text:\n " str "\n\n"))) |
d5f086989bfd
(describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents:
33047
diff
changeset
|
1855 (error nil)) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1856 (let ((input-method (get-language-info language-name 'input-method)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1857 (l (copy-sequence input-method-alist))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1858 (insert "Input methods") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1859 (when input-method |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1860 (insert " (default, " input-method ")") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1861 (setq input-method (assoc input-method input-method-alist)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1862 (setq l (cons input-method (delete input-method l)))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1863 (insert ":\n") |
17840
2517414676ed
(set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents:
17758
diff
changeset
|
1864 (while l |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1865 (when (string= language-name (nth 1 (car l))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1866 (insert " " (car (car l))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1867 (search-backward (car (car l))) |
42186
e77f859d031b
(describe-language-environment): Fix calls to help-xref-button.
Richard M. Stallman <rms@gnu.org>
parents:
42050
diff
changeset
|
1868 (help-xref-button 0 'help-input-method (car (car l))) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1869 (goto-char (point-max)) |
34317
0378b3d77144
(describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents:
33866
diff
changeset
|
1870 (insert " (\"" |
0378b3d77144
(describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents:
33866
diff
changeset
|
1871 (if (stringp (nth 3 (car l))) |
0378b3d77144
(describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents:
33866
diff
changeset
|
1872 (nth 3 (car l)) |
0378b3d77144
(describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents:
33866
diff
changeset
|
1873 (car (nth 3 (car l)))) |
0378b3d77144
(describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents:
33866
diff
changeset
|
1874 "\" in mode line)\n")) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1875 (setq l (cdr l))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1876 (insert "\n")) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1877 (insert "Character sets:\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1878 (let ((l (get-language-info language-name 'charset))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1879 (if (null l) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1880 (insert " nothing specific to " language-name "\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1881 (while l |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1882 (insert " " (symbol-name (car l))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1883 (search-backward (symbol-name (car l))) |
42186
e77f859d031b
(describe-language-environment): Fix calls to help-xref-button.
Richard M. Stallman <rms@gnu.org>
parents:
42050
diff
changeset
|
1884 (help-xref-button 0 'help-character-set (car l)) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1885 (goto-char (point-max)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1886 (insert ": " (charset-description (car l)) "\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1887 (setq l (cdr l))))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1888 (insert "\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1889 (insert "Coding systems:\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1890 (let ((l (get-language-info language-name 'coding-system))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1891 (if (null l) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1892 (insert " nothing specific to " language-name "\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1893 (while l |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1894 (insert " " (symbol-name (car l))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1895 (search-backward (symbol-name (car l))) |
42186
e77f859d031b
(describe-language-environment): Fix calls to help-xref-button.
Richard M. Stallman <rms@gnu.org>
parents:
42050
diff
changeset
|
1896 (help-xref-button 0 'help-coding-system (car l)) |
31245
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1897 (goto-char (point-max)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1898 (insert " (`" |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1899 (coding-system-mnemonic (car l)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1900 "' in mode line):\n\t" |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1901 (coding-system-doc-string (car l)) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1902 "\n") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1903 (let ((aliases (coding-system-get (car l) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1904 'alias-coding-systems))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1905 (when aliases |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1906 (insert "\t(alias:") |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1907 (while aliases |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1908 (insert " " (symbol-name (car aliases))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1909 (setq aliases (cdr aliases))) |
113d32f65989
(help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents:
31138
diff
changeset
|
1910 (insert ")\n"))) |
40666
84cd0f5441e2
(describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40592
diff
changeset
|
1911 (setq l (cdr l))))))))) |
17052 | 1912 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1913 ;;; Locales. |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1914 |
28711 | 1915 (defvar locale-translation-file-name nil |
1916 "File name for the system's file of locale-name aliases, or nil if none.") | |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1917 |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1918 ;; The following definitions might as well be marked as constants and |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1919 ;; purecopied, since they're normally used on startup, and probably |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1920 ;; should reflect the facilities of the base Emacs. |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1921 (defconst locale-language-names |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1922 (purecopy |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1923 '( |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1924 ;; Locale names of the form LANGUAGE[_TERRITORY][.CODESET][@MODIFIER] |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1925 ;; as specified in the Single Unix Spec, Version 2. |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1926 ;; LANGUAGE is a language code taken from ISO 639:1988 (E/F) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1927 ;; with additions from ISO 639/RA Newsletter No.1/1989; |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1928 ;; see Internet RFC 2165 (1997-06) and |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1929 ;; http://www.evertype.com/standards/iso639/iso639-en.html |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1930 ;; TERRITORY is a country code taken from ISO 3166 |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1931 ;; http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html. |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1932 ;; CODESET and MODIFIER are implementation-dependent. |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1933 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1934 ; aa Afar |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1935 ; ab Abkhazian |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
1936 ("af" . "Latin-1") ; Afrikaans |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1937 ("am" . "Ethiopic") ; Amharic |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1938 ; ar Arabic glibc uses 8859-6 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1939 ; as Assamese |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1940 ; ay Aymara |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1941 ; az Azerbaijani |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1942 ; ba Bashkir |
46501
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
1943 ("be" . "Belarusian") ; Belarusian [Byelorussian until early 1990s] |
42050
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
1944 ("bg" . "Bulgarian") ; Bulgarian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1945 ; bh Bihari |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1946 ; bi Bislama |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1947 ; bn Bengali, Bangla |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1948 ("bo" . "Tibetan") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1949 ("br" . "Latin-1") ; Breton |
46674 | 1950 ("bs" . "Latin-2") ; Bosnian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1951 ("ca" . "Latin-1") ; Catalan |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1952 ; co Corsican |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1953 ("cs" . "Czech") |
49796
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
1954 ("cy" . "Welsh") ; Welsh [glibc uses Latin-8. Did this change?] |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1955 ("da" . "Latin-1") ; Danish |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1956 ("de" . "German") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1957 ; dz Bhutani |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1958 ("el" . "Greek") |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
1959 ;; Users who specify "en" explicitly typically want Latin-1, not ASCII. |
48073 | 1960 ;; That's actually what the GNU locales define, modulo things like |
1961 ;; en_IN -- fx. | |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
1962 ("en" . "Latin-1") ; English |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1963 ("eo" . "Latin-3") ; Esperanto |
35168
7cbb1374e441
(locale-language-names): Map "es" to "Spanish" and "nl" to "Dutch".
Kenichi Handa <handa@m17n.org>
parents:
34774
diff
changeset
|
1964 ("es" . "Spanish") |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1965 ("et" . "Latin-4") ; Estonian |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1966 ("eu" . "Latin-1") ; Basque |
46674 | 1967 ; fa Persian glibc uses utf-8 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1968 ("fi" . "Latin-1") ; Finnish |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1969 ; fj Fiji |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1970 ("fo" . "Latin-1") ; Faroese |
41227
ac4afb558628
(locale-language-names): Use "French" for "fr".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41223
diff
changeset
|
1971 ("fr" . "French") ; French |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1972 ("fy" . "Latin-1") ; Frisian |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
1973 ("ga" . "Latin-1") ; Irish Gaelic (new orthography) |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
1974 ("gd" . "Latin-1") ; Scots Gaelic |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
1975 ("gl" . "Latin-1") ; Galician |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1976 ; gn Guarani |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1977 ; gu Gujarati |
46674 | 1978 ("gv" . "Latin-8") ; Manx Gaelic glibc uses 8859-1 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1979 ; ha Hausa |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1980 ("he" . "Hebrew") |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
1981 ("hi" . "Devanagari") ; Hindi glibc uses utf-8 |
49048 | 1982 ("hr" . "Croatian") ; Croatian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1983 ("hu" . "Latin-2") ; Hungarian |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1984 ; hy Armenian |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1985 ; ia Interlingua |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1986 ("id" . "Latin-1") ; Indonesian |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1987 ; ie Interlingue |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1988 ; ik Inupiak |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1989 ("is" . "Latin-1") ; Icelandic |
49796
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
1990 ("it" . "Italian") ; Italian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1991 ; iu Inuktitut |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1992 ("ja" . "Japanese") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1993 ; jw Javanese |
42050
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
1994 ("ka" . "Georgian") ; Georgian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1995 ; kk Kazakh |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
1996 ("kl" . "Latin-1") ; Greenlandic |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1997 ; km Cambodian |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1998 ; kn Kannada |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
1999 ("ko" . "Korean") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2000 ; ks Kashmiri |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2001 ; ku Kurdish |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2002 ("kw" . "Latin-1") ; Cornish |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2003 ; ky Kirghiz |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2004 ("la" . "Latin-1") ; Latin |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2005 ("lb" . "Latin-1") ; Luxemburgish |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2006 ; ln Lingala |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2007 ("lo" . "Lao") ; Laothian |
42050
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
2008 ("lt" . "Lithuanian") |
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
2009 ("lv" . "Latvian") ; Latvian, Lettish |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2010 ; mg Malagasy |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2011 ("mi" . "Latin-7") ; Maori |
46308
b634913b5b45
(locale-language-names): Change "mk" (Macedoninan), "ru" (Russian),
Kenichi Handa <handa@m17n.org>
parents:
45631
diff
changeset
|
2012 ("mk" . "Cyrillic-ISO") ; Macedonian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2013 ; ml Malayalam |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2014 ; mn Mongolian |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2015 ; mo Moldavian |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2016 ("mr" . "Devanagari") ; Marathi glibc uses utf-8 |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2017 ("ms" . "Latin-1") ; Malay |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2018 ("mt" . "Latin-3") ; Maltese |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2019 ; my Burmese |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2020 ; na Nauru |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2021 ("ne" . "Devanagari") ; Nepali |
35168
7cbb1374e441
(locale-language-names): Map "es" to "Spanish" and "nl" to "Dutch".
Kenichi Handa <handa@m17n.org>
parents:
34774
diff
changeset
|
2022 ("nl" . "Dutch") |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2023 ("no" . "Latin-1") ; Norwegian |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2024 ("oc" . "Latin-1") ; Occitan |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2025 ; om (Afan) Oromo |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2026 ; or Oriya |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2027 ; pa Punjabi |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2028 ("pl" . "Latin-2") ; Polish |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2029 ; ps Pashto, Pushto |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2030 ("pt" . "Latin-1") ; Portuguese |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2031 ; qu Quechua |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2032 ("rm" . "Latin-1") ; Rhaeto-Romanic |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2033 ; rn Kirundi |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2034 ("ro" . "Romanian") |
49796
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2035 ("ru.*[_.]koi8" . "Russian") |
46308
b634913b5b45
(locale-language-names): Change "mk" (Macedoninan), "ru" (Russian),
Kenichi Handa <handa@m17n.org>
parents:
45631
diff
changeset
|
2036 ("ru" . "Cyrillic-ISO") ; Russian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2037 ; rw Kinyarwanda |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2038 ("sa" . "Devanagari") ; Sanskrit |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2039 ; sd Sindhi |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2040 ; se Northern Sami |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2041 ; sg Sangho |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2042 ("sh" . "Latin-2") ; Serbo-Croatian |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2043 ; si Sinhalese |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2044 ("sk" . "Slovak") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2045 ("sl" . "Slovenian") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2046 ; sm Samoan |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2047 ; sn Shona |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2048 ; so Somali |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2049 ("sq" . "Latin-1") ; Albanian |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2050 ("sr" . "Latin-2") ; Serbian (Latin alphabet) |
46501
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
2051 ("sr_YU@cyrillic" . "Cyrillic-ISO") ; per glibc |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2052 ; ss Siswati |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2053 ; st Sesotho |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2054 ; su Sundanese |
49048 | 2055 ("sv" . "Swedish") ; Swedish |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2056 ("sw" . "Latin-1") ; Swahili |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2057 ; ta Tamil glibc uses utf-8 |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2058 ; te Telugu glibc uses utf-8 |
46501
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
2059 ("tg" . "Tajik") |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2060 ("th" . "Thai") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2061 ; ti Tigrinya |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2062 ; tk Turkmen |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2063 ("tl" . "Latin-1") ; Tagalog |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2064 ; tn Setswana |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2065 ; to Tonga |
49796
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2066 ("tr" . "Turkish") |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2067 ; ts Tsonga |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2068 ; tt Tatar |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2069 ; tw Twi |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2070 ; ug Uighur |
42050
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
2071 ("uk" . "Ukrainian") ; Ukrainian |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2072 ; ur Urdu glibc uses utf-8 |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2073 ("uz" . "Latin-1") ; Uzbek |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2074 ("vi" . "Vietnamese") ; glibc uses utf-8 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2075 ; vo Volapuk |
46674 | 2076 ("wa" . "Latin-1") ; Walloon |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2077 ; wo Wolof |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2078 ; xh Xhosa |
42050
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
2079 ("yi" . "Windows-1255") ; Yiddish |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2080 ; yo Yoruba |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2081 ; za Zhuang |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2082 |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2083 ; glibc: |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2084 ; zh_CN.GB18030/GB18030 \ |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2085 ; zh_CN.GBK/GBK \ |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2086 ; zh_HK/BIG5-HKSCS \ |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2087 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2088 ("zh.*[._]big5" . "Chinese-BIG5") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2089 ("zh.*[._]gbk" . nil) ; Solaris 2.7; has gbk-0 as well as GB 2312.1980-0 |
49796
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2090 ("zh_tw" . "Chinese-CNS") ; glibc uses big5 |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2091 ("zh_tw[._]euc-tw" . "Chinese-EUC-TW") |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2092 ("zh" . "Chinese-GB") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2093 ; zu Zulu |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2094 |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2095 ;; ISO standard locales |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2096 ("c$" . "ASCII") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2097 ("posix$" . "ASCII") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2098 |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2099 ;; The "IPA" Emacs language environment does not correspond |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2100 ;; to any ISO 639 code, so let it stand for itself. |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2101 ("ipa$" . "IPA") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2102 |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2103 ;; Nonstandard or obsolete language codes |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2104 ("cz" . "Czech") ; e.g. Solaris 2.6 |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2105 ("ee" . "Latin-4") ; Estonian, e.g. X11R6.4 |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2106 ("iw" . "Hebrew") ; e.g. X11R6.4 |
46308
b634913b5b45
(locale-language-names): Change "mk" (Macedoninan), "ru" (Russian),
Kenichi Handa <handa@m17n.org>
parents:
45631
diff
changeset
|
2107 ("sp" . "Cyrillic-ISO") ; Serbian (Cyrillic alphabet), e.g. X11R6.4 |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2108 ("su" . "Latin-1") ; Finnish, e.g. Solaris 2.6 |
33866
feb369d9ca07
(locale-language-names): Add jp as a non-standard alternative for Japanese.
Jason Rumney <jasonr@gnu.org>
parents:
33514
diff
changeset
|
2109 ("jp" . "Japanese") ; e.g. MS Windows |
40592
8149d14c23bf
(locale-language-names): Add chs and
Jason Rumney <jasonr@gnu.org>
parents:
38414
diff
changeset
|
2110 ("chs" . "Chinese-GB") ; MS Windows Chinese Simplified |
8149d14c23bf
(locale-language-names): Add chs and
Jason Rumney <jasonr@gnu.org>
parents:
38414
diff
changeset
|
2111 ("cht" . "Chinese-BIG5") ; MS Windows Chinese Traditional |
41136
76fbe1b154a2
Fix paren-typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41126
diff
changeset
|
2112 )) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2113 "List of pairs of locale regexps and language names. |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2114 The first element whose locale regexp matches the start of a downcased locale |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2115 specifies the language name corresponding to that locale. |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2116 If the language name is nil, there is no corresponding language environment.") |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2117 |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2118 (defconst locale-charset-language-names |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2119 (purecopy |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2120 '((".*8859[-_]?1\\>" . "Latin-1") |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2121 (".*8859[-_]?2\\>" . "Latin-2") |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2122 (".*8859[-_]?3\\>" . "Latin-3") |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2123 (".*8859[-_]?4\\>" . "Latin-4") |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2124 (".*8859[-_]?9\\>" . "Latin-5") |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2125 (".*8859[-_]?14\\>" . "Latin-8") |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2126 (".*8859[-_]?15\\>" . "Latin-9") |
46501
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
2127 (".*utf\\(-?8\\)\\>" . "UTF-8") |
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
2128 ;; utf-8@euro exists, so put this last. (@euro really specifies |
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
2129 ;; the currency, rather than the charset.) |
347694b9f9ff
(locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents:
46308
diff
changeset
|
2130 (".*@euro\\>" . "Latin-9"))) |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2131 "List of pairs of locale regexps and charset language names. |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2132 The first element whose locale regexp matches the start of a downcased locale |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2133 specifies the language name whose charsets corresponds to that locale. |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2134 This language name is used if its charsets disagree with the charsets of |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2135 the language name that would otherwise be used for this locale.") |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2136 |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2137 (defconst locale-preferred-coding-systems |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2138 (purecopy |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2139 '(("ja.*[._]euc" . japanese-iso-8bit) |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2140 ("ja.*[._]jis7" . iso-2022-jp) |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2141 ("ja.*[._]pck" . japanese-shift-jis) |
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2142 ("ja.*[._]sjis" . japanese-shift-jis) |
44643
10292933863d
(locale-preferred-coding-systems): Add "jpn".
Jason Rumney <jasonr@gnu.org>
parents:
44440
diff
changeset
|
2143 ("jpn" . japanese-shift-jis) ; MS-Windows uses this. |
42050
6c1b3df2bbd2
(locale-language-names): Add various
Dave Love <fx@gnu.org>
parents:
41227
diff
changeset
|
2144 (".*[._]utf" . utf-8))) |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2145 "List of pairs of locale regexps and preferred coding systems. |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2146 The first element whose locale regexp matches the start of a downcased locale |
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2147 specifies the coding system to prefer when using that locale.") |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2148 |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2149 (defun locale-name-match (key alist) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2150 "Search for KEY in ALIST, which should be a list of regexp-value pairs. |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2151 Return the value corresponding to the first regexp that matches the |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2152 start of KEY, or nil if there is no match." |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2153 (let (element) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2154 (while (and alist (not element)) |
41223
0ca8b0f41ebd
(locale-name-match): Use \` and \(?:.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41220
diff
changeset
|
2155 (if (string-match (concat "\\`\\(?:" (car (car alist)) "\\)") key) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2156 (setq element (car alist))) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2157 (setq alist (cdr alist))) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2158 (cdr element))) |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2159 |
40723
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2160 (defun set-locale-environment (&optional locale-name) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2161 "Set up multi-lingual environment for using LOCALE-NAME. |
40723
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2162 This sets the language environment, the coding system priority, |
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2163 the default input method and sometimes other things. |
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2164 |
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2165 LOCALE-NAME should be a string |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2166 which is the name of a locale supported by the system; |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2167 often it is of the form xx_XX.CODE, where xx is a language, |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2168 XX is a country, and CODE specifies a character set and coding system. |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2169 For example, the locale name \"ja_JP.EUC\" might name a locale |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2170 for Japanese in Japan using the `japanese-iso-8bit' coding-system. |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2171 |
40723
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2172 If LOCALE-NAME is nil, its value is taken from the environment |
46674 | 2173 variables LC_ALL, LC_CTYPE and LANG (the first one that is set). |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2174 |
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2175 The locale names supported by your system can typically be found in a |
31569
8b6e9e1a553b
(set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents:
31423
diff
changeset
|
2176 directory named `/usr/share/locale' or `/usr/lib/locale'. LOCALE-NAME |
40723
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2177 will be translated according to the table specified by |
31569
8b6e9e1a553b
(set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents:
31423
diff
changeset
|
2178 `locale-translation-file-name'. |
8b6e9e1a553b
(set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents:
31423
diff
changeset
|
2179 |
8b6e9e1a553b
(set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents:
31423
diff
changeset
|
2180 See also `locale-charset-language-names', `locale-language-names', |
8b6e9e1a553b
(set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents:
31423
diff
changeset
|
2181 `locale-preferred-coding-systems' and `locale-coding-system'." |
40723
20229bfaf7ce
(set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
40666
diff
changeset
|
2182 (interactive "sSet environment for locale: ") |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49435
diff
changeset
|
2183 |
28711 | 2184 ;; Do this at runtime for the sake of binaries possibly transported |
2185 ;; to a system without X. | |
2186 (setq locale-translation-file-name | |
2187 (let ((files | |
2188 '("/usr/lib/X11/locale/locale.alias" ; e.g. X11R6.4 | |
2189 "/usr/X11R6/lib/X11/locale/locale.alias" ; e.g. RedHat 4.2 | |
2190 "/usr/openwin/lib/locale/locale.alias" ; e.g. Solaris 2.6 | |
2191 ;; | |
2192 ;; The following name appears after the X-related names above, | |
2193 ;; since the X-related names are what X actually uses. | |
2194 "/usr/share/locale/locale.alias" ; GNU/Linux sans X | |
2195 ))) | |
2196 (while (and files (not (file-exists-p (car files)))) | |
2197 (setq files (cdr files))) | |
2198 (car files))) | |
2199 | |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2200 (let ((locale locale-name)) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2201 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2202 (unless locale |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2203 ;; Use the first of these three environment variables |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2204 ;; that has a nonempty value. |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2205 (let ((vars '("LC_ALL" "LC_CTYPE" "LANG"))) |
49042 | 2206 (while (and vars |
2207 (= 0 (length locale))) ; nil or empty string | |
2208 (setq locale (getenv (pop vars)))))) | |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2209 |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2210 (when locale |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2211 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2212 ;; Translate "swedish" into "sv_SE.ISO8859-1", and so on, |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2213 ;; using the translation file that many systems have. |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2214 (when locale-translation-file-name |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2215 (with-temp-buffer |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2216 (insert-file-contents locale-translation-file-name) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2217 (when (re-search-forward |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2218 (concat "^" (regexp-quote locale) ":?[ \t]+") nil t) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2219 (setq locale (buffer-substring (point) (line-end-position)))))) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2220 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2221 ;; Leave the system locales alone if the caller did not specify |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2222 ;; an explicit locale name, as their defaults are set from |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2223 ;; LC_MESSAGES and LC_TIME, not LC_CTYPE, and the user might not |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2224 ;; want to set them to the same value as LC_CTYPE. |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2225 (when locale-name |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2226 (setq system-messages-locale locale) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2227 (setq system-time-locale locale)) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2228 |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2229 (setq locale (downcase locale)) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2230 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2231 (let ((language-name |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2232 (locale-name-match locale locale-language-names)) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2233 (charset-language-name |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2234 (locale-name-match locale locale-charset-language-names)) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2235 (coding-system |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2236 (locale-name-match locale locale-preferred-coding-systems))) |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2237 |
41126
91e3a6470ffd
(describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
40723
diff
changeset
|
2238 ;; Give preference to charset-language-name over language-name. |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2239 (if (and charset-language-name |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2240 (not |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2241 (equal (get-language-info language-name 'charset) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2242 (get-language-info charset-language-name 'charset)))) |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2243 (setq language-name charset-language-name)) |
26139
ca31ffbed318
* (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents:
26085
diff
changeset
|
2244 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2245 (when language-name |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2246 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2247 ;; Set up for this character set. This is now the right way |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2248 ;; to do it for both unibyte and multibyte modes. |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2249 (set-language-environment language-name) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2250 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2251 ;; If default-enable-multibyte-characters is nil, |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2252 ;; we are using single-byte characters, |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2253 ;; so the display table and terminal coding system are irrelevant. |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2254 (when default-enable-multibyte-characters |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2255 (set-display-table-and-terminal-coding-system language-name)) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2256 |
48896
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2257 ;; Set the `keyboard-coding-system' if appropriate (tty |
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2258 ;; only). At least X and MS Windows can generate |
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2259 ;; multilingual input. |
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2260 (unless window-system |
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2261 (let ((kcs (or coding-system |
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2262 (car (get-language-info language-name |
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2263 'coding-system))))) |
41a95e836e30
(standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents:
48879
diff
changeset
|
2264 (if kcs (set-keyboard-coding-system kcs)))) |
41223
0ca8b0f41ebd
(locale-name-match): Use \` and \(?:.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
41220
diff
changeset
|
2265 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2266 (setq locale-coding-system |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2267 (car (get-language-info language-name 'coding-priority)))) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2268 |
36910
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2269 (when coding-system |
88d7b5c216a2
(set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents:
36863
diff
changeset
|
2270 (prefer-coding-system coding-system) |
49796
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2271 (setq locale-coding-system coding-system)))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2272 |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2273 ;; Default to A4 paper if we're not in a C, POSIX or US locale. |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2274 ;; (See comments in Flanginfo.) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2275 (let ((locale locale) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2276 (paper (langinfo 'paper))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2277 (if paper |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2278 ;; This will always be null at the time of writing. |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2279 (cond |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2280 ((equal paper '(216 279)) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2281 (setq ps-paper-type 'letter)) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2282 ((equal paper '(210 297)) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2283 (setq ps-paper-type 'a4))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2284 (let ((vars '("LC_ALL" "LC_PAPER" "LANG"))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2285 (while (and vars (= 0 (length locale))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2286 (setq locale (getenv (pop vars))))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2287 (when locale |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2288 ;; As of glibc 2.2.5, these are the only US Letter locales, |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2289 ;; and the rest are A4. |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2290 (setq ps-paper-type |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2291 (or (locale-name-match locale '(("c$" . letter) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2292 ("posix$" . letter) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2293 (".._us" . letter) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2294 (".._pr" . letter) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2295 (".._ca" . letter))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2296 'a4)))))) |
9444af9dba75
(locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents:
49779
diff
changeset
|
2297 nil) |
26085
2473e4ca59b3
* international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents:
26010
diff
changeset
|
2298 |
17052 | 2299 ;;; Charset property |
2300 | |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
2301 (defun get-charset-property (charset propname) |
17052 | 2302 "Return the value of CHARSET's PROPNAME property. |
2303 This is the last value stored with | |
19083
8fdb29b769ed
Doc fixes; fix error message text.
Richard M. Stallman <rms@gnu.org>
parents:
19036
diff
changeset
|
2304 (put-charset-property CHARSET PROPNAME VALUE)." |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
2305 (and (not (eq charset 'composition)) |
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
2306 (plist-get (charset-plist charset) propname))) |
17052 | 2307 |
23889
3b5045c64434
(find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents:
23583
diff
changeset
|
2308 (defun put-charset-property (charset propname value) |
17052 | 2309 "Store CHARSETS's PROPNAME property with value VALUE. |
2310 It can be retrieved with `(get-charset-property CHARSET PROPNAME)'." | |
23526
f47eb2d1375c
(get-charset-property): If CHARSET is
Kenichi Handa <handa@m17n.org>
parents:
23478
diff
changeset
|
2311 (or (eq charset 'composition) |
f47eb2d1375c
(get-charset-property): If CHARSET is
Kenichi Handa <handa@m17n.org>
parents:
23478
diff
changeset
|
2312 (set-charset-plist charset |
f47eb2d1375c
(get-charset-property): If CHARSET is
Kenichi Handa <handa@m17n.org>
parents:
23478
diff
changeset
|
2313 (plist-put (charset-plist charset) propname value)))) |
17052 | 2314 |
2315 ;;; Character code property | |
2316 (put 'char-code-property-table 'char-table-extra-slots 0) | |
2317 | |
2318 (defvar char-code-property-table | |
2319 (make-char-table 'char-code-property-table) | |
2320 "Char-table containing a property list of each character code. | |
2321 | |
2322 See also the documentation of `get-char-code-property' and | |
19083
8fdb29b769ed
Doc fixes; fix error message text.
Richard M. Stallman <rms@gnu.org>
parents:
19036
diff
changeset
|
2323 `put-char-code-property'.") |
17052 | 2324 |
2325 (defun get-char-code-property (char propname) | |
2326 "Return the value of CHAR's PROPNAME property in `char-code-property-table'." | |
2327 (let ((plist (aref char-code-property-table char))) | |
2328 (if (listp plist) | |
2329 (car (cdr (memq propname plist)))))) | |
2330 | |
2331 (defun put-char-code-property (char propname value) | |
2332 "Store CHAR's PROPNAME property with VALUE in `char-code-property-table'. | |
2333 It can be retrieved with `(get-char-code-property CHAR PROPNAME)'." | |
2334 (let ((plist (aref char-code-property-table char))) | |
2335 (if plist | |
2336 (let ((slot (memq propname plist))) | |
2337 (if slot | |
2338 (setcar (cdr slot) value) | |
2339 (nconc plist (list propname value)))) | |
2340 (aset char-code-property-table char (list propname value))))) | |
2341 | |
24399
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2342 |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2343 ;; Pretty description of encoded string |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2344 |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2345 ;; Alist of ISO 2022 control code vs the corresponding mnemonic string. |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2346 (defvar iso-2022-control-alist |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2347 '((?\x1b . "ESC") |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2348 (?\x0e . "SO") |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2349 (?\x0f . "SI") |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2350 (?\x8e . "SS2") |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2351 (?\x8f . "SS3") |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2352 (?\x9b . "CSI"))) |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2353 |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2354 (defun encoded-string-description (str coding-system) |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2355 "Return a pretty description of STR that is encoded by CODING-SYSTEM." |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2356 (setq str (string-as-unibyte str)) |
28475
5eb1da819180
(encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents:
28456
diff
changeset
|
2357 (mapconcat |
28897
f8602df501c6
(encode-coding-char): An ASCII character is always encodable.
Kenichi Handa <handa@m17n.org>
parents:
28828
diff
changeset
|
2358 (if (and coding-system (eq (coding-system-type coding-system) 2)) |
28475
5eb1da819180
(encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents:
28456
diff
changeset
|
2359 ;; Try to get a pretty description for ISO 2022 escape sequences. |
5eb1da819180
(encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents:
28456
diff
changeset
|
2360 (function (lambda (x) (or (cdr (assq x iso-2022-control-alist)) |
5eb1da819180
(encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents:
28456
diff
changeset
|
2361 (format "%02X" x)))) |
28477
cb1aa1596cca
(encoded-string-description): Use uppercase letters for hexadecimal
Kenichi Handa <handa@m17n.org>
parents:
28475
diff
changeset
|
2362 (function (lambda (x) (format "0x%02X" x)))) |
28475
5eb1da819180
(encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents:
28456
diff
changeset
|
2363 str " ")) |
24399
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2364 |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2365 (defun encode-coding-char (char coding-system) |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2366 "Encode CHAR by CODING-SYSTEM and return the resulting string. |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2367 If CODING-SYSTEM can't safely encode CHAR, return nil." |
29227
2068f55d4ffe
(encode-coding-char): Make strings
Kenichi Handa <handa@m17n.org>
parents:
29027
diff
changeset
|
2368 (let ((str1 (string-as-multibyte (char-to-string char))) |
2068f55d4ffe
(encode-coding-char): Make strings
Kenichi Handa <handa@m17n.org>
parents:
29027
diff
changeset
|
2369 (str2 (string-as-multibyte (make-string 2 char))) |
33047
5343896202ce
(encode-coding-char): Check property safe-chars instead of
Kenichi Handa <handa@m17n.org>
parents:
32439
diff
changeset
|
2370 (safe-chars (and coding-system |
5343896202ce
(encode-coding-char): Check property safe-chars instead of
Kenichi Handa <handa@m17n.org>
parents:
32439
diff
changeset
|
2371 (coding-system-get coding-system 'safe-chars))) |
28897
f8602df501c6
(encode-coding-char): An ASCII character is always encodable.
Kenichi Handa <handa@m17n.org>
parents:
28828
diff
changeset
|
2372 (charset (char-charset char)) |
24399
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2373 enc1 enc2 i1 i2) |
33047
5343896202ce
(encode-coding-char): Check property safe-chars instead of
Kenichi Handa <handa@m17n.org>
parents:
32439
diff
changeset
|
2374 (when (or (eq safe-chars t) |
28897
f8602df501c6
(encode-coding-char): An ASCII character is always encodable.
Kenichi Handa <handa@m17n.org>
parents:
28828
diff
changeset
|
2375 (eq charset 'ascii) |
33047
5343896202ce
(encode-coding-char): Check property safe-chars instead of
Kenichi Handa <handa@m17n.org>
parents:
32439
diff
changeset
|
2376 (and safe-chars (aref safe-chars char))) |
24399
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2377 ;; We must find the encoded string of CHAR. But, just encoding |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2378 ;; CHAR will put extra control sequences (usually to designate |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2379 ;; ASCII charaset) at the tail if type of CODING is ISO 2022. |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2380 ;; To exclude such tailing bytes, we at first encode one-char |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2381 ;; string and two-char string, then check how many bytes at the |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2382 ;; tail of both encoded strings are the same. |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2383 |
29227
2068f55d4ffe
(encode-coding-char): Make strings
Kenichi Handa <handa@m17n.org>
parents:
29027
diff
changeset
|
2384 (setq enc1 (encode-coding-string str1 coding-system) |
24399
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2385 i1 (length enc1) |
29227
2068f55d4ffe
(encode-coding-char): Make strings
Kenichi Handa <handa@m17n.org>
parents:
29027
diff
changeset
|
2386 enc2 (encode-coding-string str2 coding-system) |
24399
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2387 i2 (length enc2)) |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2388 (while (and (> i1 0) (= (aref enc1 (1- i1)) (aref enc2 (1- i2)))) |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2389 (setq i1 (1- i1) i2 (1- i2))) |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2390 |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2391 ;; Now (substring enc1 i1) and (substring enc2 i2) are the same, |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2392 ;; and they are the extra control sequences at the tail to |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2393 ;; exclude. |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2394 (substring enc2 0 i2)))) |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2395 |
eb23f0e62cd5
(iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents:
24300
diff
changeset
|
2396 |
17052 | 2397 ;;; mule-cmds.el ends here |