annotate lisp/international/mule-cmds.el @ 85682:919974c09488

(struct frame): Move all bit fields after the first bit field to take advantage of the available space. Group all the chars together to reduce wasted space due to padding.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 26 Oct 2007 18:09:36 +0000
parents 5b644ae74c91
children 2cce56fd7361 bdb3fe0ba9fa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
1 ;;; mule-cmds.el --- commands for multilingual environment -*-coding: iso-2022-7bit -*-
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
2
74544
43cc94d955c2 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74523
diff changeset
3 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 75150
diff changeset
4 ;; 2006, 2007 Free Software Foundation, Inc.
74605
6ee41fdd69ff Update AIST copyright years.
Kenichi Handa <handa@m17n.org>
parents: 74544
diff changeset
5 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 75150
diff changeset
6 ;; 2005, 2006, 2007
62274
c36561fe0657 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 61993
diff changeset
7 ;; National Institute of Advanced Industrial Science and Technology (AIST)
c36561fe0657 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 61993
diff changeset
8 ;; Registration Number H14PRO021
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
9
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
10 ;; Keywords: mule, multilingual
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
78310
2daf9c28b3a4 Restore comma mistakenly removed in last change.
Glenn Morris <rgm@gnu.org>
parents: 78301
diff changeset
16 ;; the Free Software Foundation; either version 3, or (at your option)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
17 ;; any later version.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
22 ;; GNU General Public License for more details.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
23
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63269
diff changeset
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63269
diff changeset
27 ;; Boston, MA 02110-1301, USA.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37953
diff changeset
29 ;;; Commentary:
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37953
diff changeset
30
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
31 ;;; Code:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
32
61711
2db375ded325 Add autoload for widget-value in
Kenichi Handa <handa@m17n.org>
parents: 61557
diff changeset
33 (eval-when-compile
2db375ded325 Add autoload for widget-value in
Kenichi Handa <handa@m17n.org>
parents: 61557
diff changeset
34 (defvar dos-codepage)
2db375ded325 Add autoload for widget-value in
Kenichi Handa <handa@m17n.org>
parents: 61557
diff changeset
35 (autoload 'widget-value "wid-edit"))
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
36
65204
89dc9fa960e2 (mac-system-coding-system, mac-system-locale): Add defvars.
Juanma Barranquero <lekktu@gmail.com>
parents: 64672
diff changeset
37 (defvar mac-system-coding-system)
89dc9fa960e2 (mac-system-coding-system, mac-system-locale): Add defvars.
Juanma Barranquero <lekktu@gmail.com>
parents: 64672
diff changeset
38 (defvar mac-system-locale)
89dc9fa960e2 (mac-system-coding-system, mac-system-locale): Add defvars.
Juanma Barranquero <lekktu@gmail.com>
parents: 64672
diff changeset
39
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
40 ;;; MULE related key bindings and menus.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
41
19725
1b5169b9c5be (mule-menu-keymap):
Richard M. Stallman <rms@gnu.org>
parents: 19673
diff changeset
42 (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
43 "Keymap for Mule (Multilingual environment) specific commands.")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
44
17294
d7ae63db9e6e Prefix for Mule related commands is changed.
Kenichi Handa <handa@m17n.org>
parents: 17090
diff changeset
45 ;; Keep "C-x C-m ..." for mule specific commands.
19725
1b5169b9c5be (mule-menu-keymap):
Richard M. Stallman <rms@gnu.org>
parents: 19673
diff changeset
46 (define-key ctl-x-map "\C-m" mule-keymap)
17090
8085a8690c87 (mule-keymap): Re-arranged.
Kenichi Handa <handa@m17n.org>
parents: 17071
diff changeset
47
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
48 (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
49 (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
50 (define-key mule-keymap "F" 'set-file-name-coding-system)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51 (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
52 (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
53 (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
54 (define-key mule-keymap "x" 'set-selection-coding-system)
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
55 (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
56 (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
57 (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
58 (define-key mule-keymap "l" 'set-language-environment)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
59
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
60 (defvar mule-menu-keymap
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
61 (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
62 "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
63
23924
e3421077c412 Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents: 23916
diff changeset
64 (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
65 (make-sparse-keymap "Describe Language Environment"))
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
66
23924
e3421077c412 Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents: 23916
diff changeset
67 (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
68 (make-sparse-keymap "Set Language Environment"))
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
69
23924
e3421077c412 Use make-sparse-keymap instead of define-prefix-key when defining
Eli Zaretskii <eliz@gnu.org>
parents: 23916
diff changeset
70 (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
71 (make-sparse-keymap "Set Coding System"))
17991
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 (define-key-after mule-menu-keymap [set-language-environment]
70882
c5d2bd581ee7 * menu-bar.el, international/mule-cmds.el: Remove tooltips for
Chong Yidong <cyd@stupidchicken.com>
parents: 69918
diff changeset
74 (list 'menu-item "Set Language Environment" setup-language-environment-map))
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
75 (define-key-after mule-menu-keymap [separator-mule]
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
76 '("--")
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
77 t)
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
78 (define-key-after mule-menu-keymap [toggle-input-method]
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
79 '(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
80 t)
20295
27ae44142cfd (set-input-method): Renamed from select-input-method.
Karl Heuer <kwzh@gnu.org>
parents: 20231
diff changeset
81 (define-key-after mule-menu-keymap [set-input-method]
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
82 '(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
83 t)
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
84 (define-key-after mule-menu-keymap [describe-input-method]
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
85 '(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
86 (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
87 '("--")
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
88 t)
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
89 (define-key-after mule-menu-keymap [set-various-coding-system]
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
90 (list 'menu-item "Set Coding Systems" set-coding-system-map
51016
1a17ca15ca4b (mule-menu-keymap): Enable the menu set-various-coding-system when
Kenichi Handa <handa@m17n.org>
parents: 50720
diff changeset
91 :enable 'default-enable-multibyte-characters))
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
92 (define-key-after mule-menu-keymap [view-hello-file]
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
93 '(menu-item "Show Multi-lingual Text" view-hello-file
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
94 :enable (file-readable-p
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
95 (expand-file-name "HELLO" data-directory))
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
96 :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
97 t)
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
98 (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
99 '("--")
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
100 t)
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
101 (define-key-after mule-menu-keymap [describe-language-environment]
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
102 (list 'menu-item "Describe Language Environment"
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
103 describe-language-environment-map
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
104 :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
105 t)
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
106 (define-key-after mule-menu-keymap [describe-input-method]
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
107 '(menu-item "Describe Input Method..." describe-input-method
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
108 :help "Keyboard layout for a specific input method")
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
109 t)
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
110 (define-key-after mule-menu-keymap [describe-coding-system]
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
111 '(menu-item "Describe Coding System..." describe-coding-system)
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
112 t)
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
113 (define-key-after mule-menu-keymap [list-character-sets]
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
114 '(menu-item "List Character Sets" list-character-sets
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
115 :help "Show table of available character sets"))
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
116 (define-key-after mule-menu-keymap [mule-diag]
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
117 '(menu-item "Show All of Mule Status" mule-diag
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
118 :help "Display multilingual environment settings")
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
119 t)
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
120
19673
da7f50da6773 (set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 19654
diff changeset
121 (define-key-after set-coding-system-map [universal-coding-system-argument]
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
122 '(menu-item "For Next Command" universal-coding-system-argument
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
123 :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
124 t)
46786
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
125 (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
126 '("--")
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 [set-buffer-file-coding-system]
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
129 '(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
130 :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
131 t)
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
132 (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
133 '(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
134 :enable buffer-file-name
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
135 :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
136 t)
48879
153dc2e78966 (mule-keymap, set-coding-system-map):
Kenichi Handa <handa@m17n.org>
parents: 48877
diff changeset
137 (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
138 '(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
139 :help "How to decode/encode file names")
153dc2e78966 (mule-keymap, set-coding-system-map):
Kenichi Handa <handa@m17n.org>
parents: 48877
diff changeset
140 t)
46786
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 [separator-2]
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
142 '("--")
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
143 t)
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
144
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
145 (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
146 '(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
147 :help "How to decode keyboard input")
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
148 t)
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
149 (define-key-after set-coding-system-map [set-terminal-coding-system]
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
150 '(menu-item "For Terminal" set-terminal-coding-system
83277
886073e54ccb Fix some superflous deviations from CVS, plus apply some cosmetics.
Karoly Lorentey <lorentey@elte.hu>
parents: 83269
diff changeset
151 :enable (null (memq initial-window-system '(x w32 mac)))
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
152 :help "How to encode terminal output")
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
153 t)
46786
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
154 (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
155 '("--")
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
156 t)
23031
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
157 (define-key-after set-coding-system-map [set-selection-coding-system]
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
158 '(menu-item "For X Selections/Clipboard" set-selection-coding-system
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
159 :visible (display-selections-p)
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
160 :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
161 t)
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
162 (define-key-after set-coding-system-map [set-next-selection-coding-system]
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
163 '(menu-item "For Next X Selection" set-next-selection-coding-system
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
164 :visible (display-selections-p)
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
165 :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
166 t)
46786
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
167 (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
168 '(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
169 :visible (fboundp 'start-process)
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
170 :enable (get-buffer-process (current-buffer))
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
171 :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
172 t)
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
173
703592d3b794 (mule-keymap, set-coding-system-map):
Richard M. Stallman <rms@gnu.org>
parents: 46674
diff changeset
174
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
175 (define-key setup-language-environment-map
27731
ec58e052b961 (mule-menu-keymap)
Eli Zaretskii <eliz@gnu.org>
parents: 26888
diff changeset
176 [Default] '(menu-item "Default" setup-specified-language-environment))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
177
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
178 (define-key describe-language-environment-map
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
179 [Default] '(menu-item "Default" describe-specified-language-support))
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
180
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
181 ;; This should be a single character key binding because users use it
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
182 ;; very frequently while editing multilingual text. Now we can use
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
183 ;; only two such keys: "\C-\\" and "\C-^", but the latter is not
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
184 ;; convenient because it requires shifting on most keyboards. An
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
185 ;; alternative is "\C-\]" which is now bound to `abort-recursive-edit'
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
186 ;; but it won't be used that frequently.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
187 (define-key global-map "\C-\\" 'toggle-input-method)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
188
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
189 ;; 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
190 ;; meaning to type SPC. -- rms.
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
191 ;; ;; 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
192 ;; (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
193
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
194 ;;; Mule related hyperlinks.
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
195 (defconst help-xref-mule-regexp-template
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
196 (purecopy (concat "\\(\\<\\("
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
197 "\\(coding system\\)\\|"
31423
afa66a3f39dc (help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents: 31245
diff changeset
198 "\\(input method\\)\\|"
afa66a3f39dc (help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents: 31245
diff changeset
199 "\\(character set\\)\\|"
afa66a3f39dc (help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents: 31245
diff changeset
200 "\\(charset\\)"
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
201 "\\)\\s-+\\)?"
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
202 ;; Note starting with word-syntax character:
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
203 "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'")))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
204
24007
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
205 (defun coding-system-change-eol-conversion (coding-system eol-type)
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
206 "Return a coding system which differs from CODING-SYSTEM in EOL conversion.
24007
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
207 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
208 but text as the same way as CODING-SYSTEM.
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
209 EOL-TYPE should be `unix', `dos', `mac', or nil.
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
210 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
211 how end-of-line is formatted automatically while decoding.
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
212
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
213 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
214 They means `unix', `dos', and `mac' respectively."
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
215 (if (symbolp eol-type)
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
216 (setq eol-type (cond ((eq eol-type 'unix) 0)
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
217 ((eq eol-type 'dos) 1)
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
218 ((eq eol-type 'mac) 2)
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
219 (t eol-type))))
73249
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
220 ;; We call `coding-system-base' before `coding-system-eol-type',
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
221 ;; because the coding-system may not be initialized until then.
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
222 (let* ((base (coding-system-base coding-system))
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
223 (orig-eol-type (coding-system-eol-type coding-system)))
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
224 (cond ((vectorp orig-eol-type)
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
225 (if (not eol-type)
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
226 coding-system
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
227 (aref orig-eol-type eol-type)))
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
228 ((not eol-type)
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
229 base)
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
230 ((= eol-type orig-eol-type)
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
231 coding-system)
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
232 ((progn (setq orig-eol-type (coding-system-eol-type base))
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
233 (vectorp orig-eol-type))
f5aa4451cada * international/mule-cmds.el (coding-system-change-eol-conversion):
Chong Yidong <cyd@stupidchicken.com>
parents: 72032
diff changeset
234 (aref orig-eol-type eol-type)))))
24007
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
235
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
236 (defun coding-system-change-text-conversion (coding-system coding)
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
237 "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
238 The returned coding system converts text by CODING
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
239 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
240 If CODING is nil, the returned coding system detects
0e0b1cdfbfe3 (coding-system-change-eol-conversion,
Eli Zaretskii <eliz@gnu.org>
parents: 23966
diff changeset
241 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
242 (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
243 (coding-system-change-eol-conversion
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
244 (if coding coding 'undecided)
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
245 (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
246
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
247 (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
248 "Change whether this buffer uses multibyte characters.
141c2d41d39c (toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20467
diff changeset
249 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
250
141c2d41d39c (toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20467
diff changeset
251 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
252 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
253 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
254 characters that the current buffer contains.
141c2d41d39c (toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20467
diff changeset
255
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
256 We suggest you avoid using this command unless you know what you are
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
257 doing. If you use it by mistake, and the buffer is now displayed
20483
141c2d41d39c (toggle-enable-multibyte-characters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20467
diff changeset
258 wrong, use this command again to toggle back to the right mode."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
259 (interactive "P")
20830
237a0f70c61d (toggle-enable-multibyte-characters): Use set-buffer-multibyte.
Richard M. Stallman <rms@gnu.org>
parents: 20733
diff changeset
260 (let ((new-flag
237a0f70c61d (toggle-enable-multibyte-characters): Use set-buffer-multibyte.
Richard M. Stallman <rms@gnu.org>
parents: 20733
diff changeset
261 (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
262 (> (prefix-numeric-value arg) 0))))
237a0f70c61d (toggle-enable-multibyte-characters): Use set-buffer-multibyte.
Richard M. Stallman <rms@gnu.org>
parents: 20733
diff changeset
263 (set-buffer-multibyte new-flag))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
264 (force-mode-line-update))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
265
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
266 (defun view-hello-file ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
267 "Display the HELLO file which list up many languages and characters."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
268 (interactive)
17294
d7ae63db9e6e Prefix for Mule related commands is changed.
Kenichi Handa <handa@m17n.org>
parents: 17090
diff changeset
269 ;; 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
270 (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
271 (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
272 (view-file (expand-file-name "HELLO" data-directory))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273
47450
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
274 (defun universal-coding-system-argument (coding-system)
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
275 "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
276 (interactive
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
277 (let ((default (and buffer-file-coding-system
21882
4fb3860a1f26 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 21856
diff changeset
278 (not (eq (coding-system-type buffer-file-coding-system)
4fb3860a1f26 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 21856
diff changeset
279 t))
47450
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
280 buffer-file-coding-system)))
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
281 (list (read-coding-system
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
282 (if default
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65652
diff changeset
283 (format "Coding system for following command (default %s): " default)
47450
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
284 "Coding system for following command: ")
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
285 default))))
6bd30e077257 (universal-coding-system-argument):
Richard M. Stallman <rms@gnu.org>
parents: 46857
diff changeset
286 (let* ((keyseq (read-key-sequence
19798
054497f70932 (universal-coding-system-argument): Improve prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 19784
diff changeset
287 (format "Command to execute with %s:" coding-system)))
35504
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
288 (cmd (key-binding keyseq))
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
289 prefix)
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
290
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
291 (when (eq cmd 'universal-argument)
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
292 (call-interactively cmd)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49435
diff changeset
293
35504
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
294 ;; Process keys bound in `universal-argument-map'.
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
295 (while (progn
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
296 (setq keyseq (read-key-sequence nil t)
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
297 cmd (key-binding keyseq t))
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
298 (not (eq cmd 'universal-argument-other-key)))
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
299 (let ((current-prefix-arg prefix-arg)
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
300 ;; Have to bind `last-command-char' here so that
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
301 ;; `digit-argument', for instance, can compute the
35504
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
302 ;; prefix arg.
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
303 (last-command-char (aref keyseq 0)))
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
304 (call-interactively cmd)))
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
305
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
306 ;; This is the final call to `universal-argument-other-key', which
35504
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
307 ;; set's the final `prefix-arg.
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
308 (let ((current-prefix-arg prefix-arg))
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
309 (call-interactively cmd))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49435
diff changeset
310
35504
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
311 ;; Read the command to execute with the given prefix arg.
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
312 (setq prefix prefix-arg
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
313 keyseq (read-key-sequence nil t)
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
314 cmd (key-binding keyseq)))
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
315
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
316 (let ((coding-system-for-read coding-system)
35504
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
317 (coding-system-for-write coding-system)
48877
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
318 (coding-system-require-warning t)
35504
9545aa93e735 (universal-coding-system-argument):
Gerd Moellmann <gerd@gnu.org>
parents: 35254
diff changeset
319 (current-prefix-arg prefix))
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
320 (message "")
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
321 (call-interactively cmd))))
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
322
19141
9e0468e59b5f (set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents: 19083
diff changeset
323 (defun set-default-coding-systems (coding-system)
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
324 "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
325 This sets the following coding systems:
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
326 o coding system of a newly created buffer
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
327 o default coding system for subprocess I/O
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
328 This also sets the following values:
64124
8ee5c917c069 (set-default-coding-systems): Don't
Kenichi Handa <handa@m17n.org>
parents: 64085
diff changeset
329 o default value used as `file-name-coding-system' for converting file names
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
330 if CODING-SYSTEM is ASCII-compatible
23916
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
331 o default value for the command `set-terminal-coding-system' (not on MSDOS)
64124
8ee5c917c069 (set-default-coding-systems): Don't
Kenichi Handa <handa@m17n.org>
parents: 64085
diff changeset
332 o default value for the command `set-keyboard-coding-system'
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
333 if CODING-SYSTEM is ASCII-compatible"
19141
9e0468e59b5f (set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents: 19083
diff changeset
334 (check-coding-system coding-system)
9e0468e59b5f (set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents: 19083
diff changeset
335 (setq-default buffer-file-coding-system coding-system)
53262
b18fd10266de (set-default-coding-systems): Call
Kenichi Handa <handa@m17n.org>
parents: 53168
diff changeset
336 (if (fboundp 'ucs-set-table-for-input)
b18fd10266de (set-default-coding-systems): Call
Kenichi Handa <handa@m17n.org>
parents: 53168
diff changeset
337 (dolist (buffer (buffer-list))
b18fd10266de (set-default-coding-systems): Call
Kenichi Handa <handa@m17n.org>
parents: 53168
diff changeset
338 (or (local-variable-p 'buffer-file-coding-system buffer)
b18fd10266de (set-default-coding-systems): Call
Kenichi Handa <handa@m17n.org>
parents: 53168
diff changeset
339 (ucs-set-table-for-input buffer))))
b18fd10266de (set-default-coding-systems): Call
Kenichi Handa <handa@m17n.org>
parents: 53168
diff changeset
340
73819
5b1056dbe2ba (set-default-coding-systems): Always
Kenichi Handa <handa@m17n.org>
parents: 73249
diff changeset
341 (if (eq system-type 'darwin)
59906
9c28fead9bf2 (set-locale-environment): Set file-name coding system to utf-8 on Darwin.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 59743
diff changeset
342 ;; The file-name coding system on Darwin systems is always utf-8.
73819
5b1056dbe2ba (set-default-coding-systems): Always
Kenichi Handa <handa@m17n.org>
parents: 73249
diff changeset
343 (setq default-file-name-coding-system 'utf-8)
5b1056dbe2ba (set-default-coding-systems): Always
Kenichi Handa <handa@m17n.org>
parents: 73249
diff changeset
344 (if (and default-enable-multibyte-characters
5b1056dbe2ba (set-default-coding-systems): Always
Kenichi Handa <handa@m17n.org>
parents: 73249
diff changeset
345 (or (not coding-system)
5b1056dbe2ba (set-default-coding-systems): Always
Kenichi Handa <handa@m17n.org>
parents: 73249
diff changeset
346 (not (coding-system-get coding-system 'ascii-incompatible))))
5b1056dbe2ba (set-default-coding-systems): Always
Kenichi Handa <handa@m17n.org>
parents: 73249
diff changeset
347 (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
348 ;; 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
349 ;; that they could reset the terminal coding system.
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
350 (unless (and (eq window-system 'pc) coding-system)
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
351 (setq default-terminal-coding-system coding-system))
64124
8ee5c917c069 (set-default-coding-systems): Don't
Kenichi Handa <handa@m17n.org>
parents: 64085
diff changeset
352 (if (or (not coding-system)
8ee5c917c069 (set-default-coding-systems): Don't
Kenichi Handa <handa@m17n.org>
parents: 64085
diff changeset
353 (not (coding-system-get coding-system 'ascii-incompatible)))
8ee5c917c069 (set-default-coding-systems): Don't
Kenichi Handa <handa@m17n.org>
parents: 64085
diff changeset
354 (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
355 ;; 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
356 ;; 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
357 ;; 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
358 ;; 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
359 ;; language environment.
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
360 (let ((output-coding
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
361 (coding-system-change-text-conversion
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
362 (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
363 (input-coding
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
364 (coding-system-change-text-conversion
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
365 (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
366 (setq default-process-coding-system
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
367 (cons output-coding input-coding))))
19141
9e0468e59b5f (set-default-coding-systems): New function.
Kenichi Handa <handa@m17n.org>
parents: 19083
diff changeset
368
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
369 (defun prefer-coding-system (coding-system)
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
370 "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
371 This also sets the following coding systems:
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
372 o coding system of a newly created buffer
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
373 o default coding system for subprocess I/O
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
374 This also sets the following values:
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
375 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
376 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
377 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
378
23960
37905ac69d9c (prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents: 23924
diff changeset
379 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
380 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
381
23916
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
382 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
383 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
384 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
385 startup.
54d36c772e7b (prefer-coding-system): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents: 35248
diff changeset
386
36464
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
387 A coding system that requires automatic detection of text
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
388 encoding (e.g. undecided, unix) can't be preferred.
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
389
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
390 See also `coding-category-list' and `coding-system-category'."
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
391 (interactive "zPrefer coding system: ")
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
392 (if (not (and coding-system (coding-system-p coding-system)))
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
393 (error "Invalid coding system `%s'" coding-system))
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
394 (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
395 (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
396 (eol-type (coding-system-eol-type coding-system)))
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
397 (if (not coding-category)
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
398 ;; CODING-SYSTEM is no-conversion or undecided.
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
399 (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
400 (set coding-category (or base coding-system))
61064
a0bf3de65b02 Add comments before all calls of update-coding-systems-internal.
Kenichi Handa <handa@m17n.org>
parents: 60934
diff changeset
401 ;; Changing the binding of a coding category requires this call.
22887
e24b79da83d6 (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 22854
diff changeset
402 (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
403 (or (eq coding-category (car coding-category-list))
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
404 ;; 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
405 (set-coding-priority (list coding-category)))
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
406 (if (and base (interactive-p))
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
407 (message "Highest priority is set to %s (base of %s)"
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
408 base coding-system))
23960
37905ac69d9c (prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents: 23924
diff changeset
409 ;; 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
410 (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
411 (setq coding-system
37905ac69d9c (prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents: 23924
diff changeset
412 (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
413 (setq coding-system base))
37905ac69d9c (prefer-coding-system): If the argument requires specific EOL conversion
Eli Zaretskii <eliz@gnu.org>
parents: 23924
diff changeset
414 (set-default-coding-systems coding-system)))
19267
6e152439176f (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 19141
diff changeset
415
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
416 (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
417 "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
418
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
419 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
420 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
421
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
422 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
423
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
424 (defun sort-coding-systems (codings)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
425 "Sort coding system list CODINGS by a priority of each coding system.
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
426 Return the sorted list. CODINGS is modified by side effects.
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
427
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
428 If a coding system is most preferred, it has the highest priority.
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
429 Otherwise, coding systems that correspond to MIME charsets have
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
430 higher priorities. Among them, a coding system included in the
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
431 `coding-system' key of the current language environment has higher
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
432 priority. See also the documentation of `language-info-alist'.
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
433
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
434 If the variable `sort-coding-systems-predicate' (which see) is
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
435 non-nil, it is used to sort CODINGS instead."
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
436 (if sort-coding-systems-predicate
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
437 (sort codings sort-coding-systems-predicate)
50537
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
438 (let* ((from-categories (mapcar #'(lambda (x) (symbol-value x))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
439 coding-category-list))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
440 (most-preferred (car from-categories))
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
441 (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
442 'coding-system))
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
443 (func (function
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
444 (lambda (x)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
445 (let ((base (coding-system-base x)))
50537
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
446 ;; We calculate the priority number 0..255 by
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
447 ;; using the 8 bits PMMLCEII as this:
78484
edc666d07b2c Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78310
diff changeset
448 ;; P: 1 if most preferred.
edc666d07b2c Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78310
diff changeset
449 ;; MM: greater than 0 if mime-charset.
edc666d07b2c Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78310
diff changeset
450 ;; L: 1 if one of the current lang. env.'s codings.
edc666d07b2c Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78310
diff changeset
451 ;; C: 1 if one of codings listed in the category list.
edc666d07b2c Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78310
diff changeset
452 ;; E: 1 if not XXX-with-esc
50537
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
453 ;; II: if iso-2022 based, 0..3, else 1.
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
454 (logior
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
455 (lsh (if (eq base most-preferred) 1 0) 7)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
456 (lsh
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
457 (let ((mime (coding-system-get base 'mime-charset)))
49029
835ac7993b8d (sort-coding-systems): Adjust
Dave Love <fx@gnu.org>
parents: 48971
diff changeset
458 ;; Prefer coding systems corresponding to a
835ac7993b8d (sort-coding-systems): Adjust
Dave Love <fx@gnu.org>
parents: 48971
diff changeset
459 ;; MIME charset.
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
460 (if mime
49029
835ac7993b8d (sort-coding-systems): Adjust
Dave Love <fx@gnu.org>
parents: 48971
diff changeset
461 ;; Lower utf-16 priority so that we
835ac7993b8d (sort-coding-systems): Adjust
Dave Love <fx@gnu.org>
parents: 48971
diff changeset
462 ;; normally prefer utf-8 to it, and put
835ac7993b8d (sort-coding-systems): Adjust
Dave Love <fx@gnu.org>
parents: 48971
diff changeset
463 ;; x-ctext below that.
50535
32b881425e3d (sort-coding-systems): Lower the
Kenichi Handa <handa@m17n.org>
parents: 50183
diff changeset
464 (cond ((string-match "utf-16"
32b881425e3d (sort-coding-systems): Lower the
Kenichi Handa <handa@m17n.org>
parents: 50183
diff changeset
465 (symbol-name mime))
50537
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
466 2)
49029
835ac7993b8d (sort-coding-systems): Adjust
Dave Love <fx@gnu.org>
parents: 48971
diff changeset
467 ((string-match "^x-" (symbol-name mime))
50537
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
468 1)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
469 (t 3))
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
470 0))
50537
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
471 5)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
472 (lsh (if (memq base lang-preferred) 1 0) 4)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
473 (lsh (if (memq base from-categories) 1 0) 3)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
474 (lsh (if (string-match "-with-esc\\'"
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
475 (symbol-name base))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
476 0 1) 2)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
477 (if (eq (coding-system-type base) 2)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
478 ;; For ISO based coding systems, prefer
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
479 ;; one that doesn't use escape sequences.
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
480 (let ((flags (coding-system-flags base)))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
481 (if (or (consp (aref flags 0))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
482 (consp (aref flags 1))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
483 (consp (aref flags 2))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
484 (consp (aref flags 3)))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
485 (if (or (aref flags 8) (aref flags 9))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
486 0
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
487 1)
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
488 2))
4eb84208a499 (sort-coding-systems): Set higher priority to a coding system listed
Kenichi Handa <handa@m17n.org>
parents: 50535
diff changeset
489 1)))))))
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
490 (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
491 (> (funcall func x) (funcall func y))))))))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
492
21377
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
493 (defun find-coding-systems-region (from to)
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
494 "Return a list of proper coding systems to encode a text between FROM and TO.
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
495 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
496 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
497 in the text.
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
498
23196
30beacf88b75 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 23168
diff changeset
499 If the text contains no multibyte characters, return a list of a single
21377
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
500 element `undecided'."
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
501 (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
502 (if (eq codings t)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
503 ;; 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
504 ;; systems are safe.
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
505 '(undecided)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
506 ;; 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
507 (sort-coding-systems (copy-sequence codings)))))
21377
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
508
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
509 (defun find-coding-systems-string (string)
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
510 "Return a list of proper coding systems to encode STRING.
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
511 All coding systems in the list can safely encode any multibyte characters
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
512 in STRING.
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
513
23196
30beacf88b75 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 23168
diff changeset
514 If STRING contains no multibyte characters, return a list of a single
21377
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
515 element `undecided'."
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
516 (find-coding-systems-region string nil))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
517
21377
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
518 (defun find-coding-systems-for-charsets (charsets)
bc409dfad8e7 (subset-p): Renamed from
Kenichi Handa <handa@m17n.org>
parents: 21229
diff changeset
519 "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
520 CHARSETS is a list of character sets.
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
521 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
522 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
523 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
524 (cond ((or (null charsets)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
525 (and (= (length charsets) 1)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
526 (eq 'ascii (car charsets))))
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
527 '(undecided))
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
528 ((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
529 (memq 'eight-bit-graphic charsets))
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
530 '(raw-text emacs-mule))
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
531 (t
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
532 (let ((codings t)
50183
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
533 charset l str)
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
534 (while (and codings charsets)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
535 (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
536 (unless (eq charset 'ascii)
50183
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
537 (setq str (make-string 96 32))
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
538 (if (= (charset-dimension charset) 1)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
539 (if (= (charset-chars charset) 96)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
540 (dotimes (i 96)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
541 (aset str i (make-char charset (+ i 32))))
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
542 (dotimes (i 94)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
543 (aset str i (make-char charset (+ i 33)))))
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
544 (if (= (charset-chars charset) 96)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
545 (dotimes (i 96)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
546 (aset str i (make-char charset 32 (+ i 32))))
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
547 (dotimes (i 94)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
548 (aset str i (make-char charset 33 (+ i 33))))))
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
549 (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
550 (if (eq codings t)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
551 (setq codings l)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
552 (let ((ll nil))
50183
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
553 (dolist (elt codings)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
554 (if (memq elt l)
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
555 (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
556 (setq codings ll)))))
50183
42387e68072a (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 50116
diff changeset
557 codings))))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
558
22815
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
559 (defun find-multibyte-characters (from to &optional maxcount excludes)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
560 "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
561 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
562 The return value is an alist of the following format:
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
563 ((CHARSET COUNT CHAR ...) ...)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
564 where
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
565 CHARSET is a character set,
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
566 COUNT is a number of characters,
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
567 CHARs are the characters found from the character set.
22815
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
568 Optional 3rd arg MAXCOUNT limits how many CHARs are put in the above list.
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
569 Optional 4th arg EXCLUDES is a list of character sets to be ignored.
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
570
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
571 For invalid characters, CHARs are actually strings."
22815
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
572 (let ((chars nil)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
573 charset char)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
574 (if (stringp from)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
575 (let ((idx 0))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
576 (while (setq idx (string-match "[^\000-\177]" from idx))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
577 (setq char (aref from idx)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
578 charset (char-charset char))
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
579 (if (eq charset 'unknown)
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
580 (setq char (match-string 0)))
29027
03d05a02d1ba (find-multibyte-characters): Never
Kenichi Handa <handa@m17n.org>
parents: 28897
diff changeset
581 (if (or (memq charset '(unknown
03d05a02d1ba (find-multibyte-characters): Never
Kenichi Handa <handa@m17n.org>
parents: 28897
diff changeset
582 eight-bit-control eight-bit-graphic))
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
583 (not (or (eq excludes t) (memq charset excludes))))
22815
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
584 (let ((slot (assq charset chars)))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
585 (if slot
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
586 (if (not (memq char (nthcdr 2 slot)))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
587 (let ((count (nth 1 slot)))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
588 (setcar (cdr slot) (1+ count))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
589 (if (or (not maxcount) (< count maxcount))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
590 (nconc slot (list char)))))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
591 (setq chars (cons (list charset 1 char) chars)))))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
592 (setq idx (1+ idx))))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
593 (save-excursion
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
594 (goto-char from)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
595 (while (re-search-forward "[^\000-\177]" to t)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
596 (setq char (preceding-char)
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
597 charset (char-charset char))
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
598 (if (eq charset 'unknown)
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
599 (setq char (match-string 0)))
29027
03d05a02d1ba (find-multibyte-characters): Never
Kenichi Handa <handa@m17n.org>
parents: 28897
diff changeset
600 (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
601 (not (or (eq excludes t) (memq charset excludes))))
22815
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
602 (let ((slot (assq charset chars)))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
603 (if slot
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
604 (if (not (member char (nthcdr 2 slot)))
22815
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
605 (let ((count (nth 1 slot)))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
606 (setcar (cdr slot) (1+ count))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
607 (if (or (not maxcount) (< count maxcount))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
608 (nconc slot (list char)))))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
609 (setq chars (cons (list charset 1 char) chars))))))))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
610 (nreverse chars)))
6af93eeeca10 (find-multibyte-characters): New
Kenichi Handa <handa@m17n.org>
parents: 22778
diff changeset
611
46857
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
612
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
613 (defun search-unencodable-char (coding-system)
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
614 "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
615 It asks which coding system to check.
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
616 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
617 Otherwise, don't move point.
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
618
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
619 When called from a program, the value is the position of the unencodable
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
620 character found, or nil if all characters are encodable."
46857
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
621 (interactive
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
622 (list (let ((default (or buffer-file-coding-system 'us-ascii)))
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
623 (read-coding-system
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65652
diff changeset
624 (format "Coding-system (default %s): " default)
46857
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
625 default))))
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
626 (let ((pos (unencodable-char-position (point) (point-max) coding-system)))
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
627 (if pos
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
628 (goto-char (1+ pos))
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
629 (message "All following characters are encodable by %s" coding-system))
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
630 pos))
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
631
31feee29e69a (search-unencodable-char): New
Kenichi Handa <handa@m17n.org>
parents: 46829
diff changeset
632
22025
369ac7fae774 (last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents: 21983
diff changeset
633 (defvar last-coding-system-specified nil
369ac7fae774 (last-coding-system-specified): New var.
Richard M. Stallman <rms@gnu.org>
parents: 21983
diff changeset
634 "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
635 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
636 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
637 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
638 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
639
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
640 (defvar select-safe-coding-system-accept-default-p nil
63269
f5860b9ada9c (select-safe-coding-system-accept-default-p, input-method-exit-on-invalid-key):
Juanma Barranquero <lekktu@gmail.com>
parents: 62274
diff changeset
641 "If non-nil, a function to control the behavior of coding system selection.
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
642 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
643 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
644 overrides that argument.")
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
645
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
646 (defun select-safe-coding-system-interactively (from to codings unsafe
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
647 &optional rejected default)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
648 "Select interactively a coding system for the region FROM ... TO.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
649 FROM can be a string, as in `write-region'.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
650 CODINGS is the list of base coding systems known to be safe for this region,
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
651 typically obtained with `find-coding-systems-region'.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
652 UNSAFE is a list of coding systems known to be unsafe for this region.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
653 REJECTED is a list of coding systems which were safe but for some reason
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
654 were not recommended in the particular context.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
655 DEFAULT is the coding system to use by default in the query."
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
656 ;; At first, if some defaults are unsafe, record at most 11
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
657 ;; problematic characters and their positions for them by turning
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
658 ;; (CODING ...)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
659 ;; into
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
660 ;; ((CODING (POS . CHAR) (POS . CHAR) ...) ...)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
661 (if unsafe
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
662 (setq unsafe
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
663 (mapcar #'(lambda (coding)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
664 (cons coding
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
665 (if (stringp from)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
666 (mapcar #'(lambda (pos)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
667 (cons pos (aref from pos)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
668 (unencodable-char-position
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
669 0 (length from) coding
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
670 11 from))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
671 (mapcar #'(lambda (pos)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
672 (cons pos (char-after pos)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
673 (unencodable-char-position
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
674 from to coding 11)))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
675 unsafe)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
676
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
677 ;; Change each safe coding system to the corresponding
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
678 ;; mime-charset name if it is also a coding system. Such a name
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
679 ;; is more friendly to users.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
680 (let ((l codings)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
681 mime-charset)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
682 (while l
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
683 (setq mime-charset (coding-system-get (car l) 'mime-charset))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
684 (if (and mime-charset (coding-system-p mime-charset))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
685 (setcar l mime-charset))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
686 (setq l (cdr l))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
687
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
688 ;; Don't offer variations with locking shift, which you
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
689 ;; basically never want.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
690 (let (l)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
691 (dolist (elt codings (setq codings (nreverse l)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
692 (unless (or (eq 'coding-category-iso-7-else
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
693 (coding-system-category elt))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
694 (eq 'coding-category-iso-8-else
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
695 (coding-system-category elt)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
696 (push elt l))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
697
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
698 ;; Remove raw-text, emacs-mule and no-conversion unless nothing
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
699 ;; else is available.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
700 (setq codings
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
701 (or (delq 'raw-text
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
702 (delq 'emacs-mule
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
703 (delq 'no-conversion codings)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
704 '(raw-text emacs-mule no-conversion)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
705
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
706 (let ((window-configuration (current-window-configuration))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
707 (bufname (buffer-name))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
708 coding-system)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
709 (save-excursion
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
710 ;; If some defaults are unsafe, make sure the offending
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
711 ;; buffer is displayed.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
712 (when (and unsafe (not (stringp from)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
713 (pop-to-buffer bufname)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
714 (goto-char (apply 'min (mapcar #'(lambda (x) (car (cadr x)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
715 unsafe))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
716 ;; Then ask users to select one from CODINGS while showing
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
717 ;; the reason why none of the defaults are not used.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
718 (with-output-to-temp-buffer "*Warning*"
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
719 (with-current-buffer standard-output
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
720 (if (and (null rejected) (null unsafe))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
721 (insert "No default coding systems to try for "
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
722 (if (stringp from)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
723 (format "string \"%s\"." from)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
724 (format "buffer `%s'." bufname)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
725 (insert
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
726 "These default coding systems were tried to encode"
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
727 (if (stringp from)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
728 (concat " \"" (if (> (length from) 10)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
729 (concat (substring from 0 10) "...\"")
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
730 (concat from "\"")))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
731 (format " text\nin the buffer `%s'" bufname))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
732 ":\n")
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
733 (let ((pos (point))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
734 (fill-prefix " "))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
735 (dolist (x (append rejected unsafe))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
736 (princ " ") (princ (car x)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
737 (insert "\n")
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
738 (fill-region-as-paragraph pos (point)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
739 (when rejected
74934
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
740 (insert "These safely encode the text in the buffer,
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
741 but are not recommended for encoding text in this context,
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
742 e.g., for sending an email message.\n ")
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
743 (dolist (x rejected)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
744 (princ " ") (princ x))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
745 (insert "\n"))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
746 (when unsafe
74934
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
747 (insert (if rejected "The other coding systems"
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
748 "However, each of them")
74934
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
749 " encountered characters it couldn't encode:\n")
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
750 (dolist (coding unsafe)
74934
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
751 (insert (format " %s cannot encode these:" (car coding)))
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
752 (let ((i 0)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
753 (func1
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
754 #'(lambda (bufname pos)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
755 (when (buffer-live-p (get-buffer bufname))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
756 (pop-to-buffer bufname)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
757 (goto-char pos))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
758 (func2
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
759 #'(lambda (bufname pos coding)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
760 (when (buffer-live-p (get-buffer bufname))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
761 (pop-to-buffer bufname)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
762 (if (< (point) pos)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
763 (goto-char pos)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
764 (forward-char 1)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
765 (search-unencodable-char coding)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
766 (forward-char -1))))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
767 (dolist (elt (cdr coding))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
768 (insert " ")
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
769 (if (stringp from)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
770 (insert (if (< i 10) (cdr elt) "..."))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
771 (if (< i 10)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
772 (insert-text-button
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
773 (cdr elt)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
774 :type 'help-xref
74931
94fc36e46118 (select-safe-coding-system-interactively):
Kenichi Handa <handa@m17n.org>
parents: 74927
diff changeset
775 'face 'link
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
776 'help-echo
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
777 "mouse-2, RET: jump to this character"
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
778 'help-function func1
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
779 'help-args (list bufname (car elt)))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
780 (insert-text-button
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
781 "..."
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
782 :type 'help-xref
74931
94fc36e46118 (select-safe-coding-system-interactively):
Kenichi Handa <handa@m17n.org>
parents: 74927
diff changeset
783 'face 'link
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
784 'help-echo
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
785 "mouse-2, RET: next unencodable character"
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
786 'help-function func2
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
787 'help-args (list bufname (car elt)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
788 (car coding)))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
789 (setq i (1+ i))))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
790 (insert "\n"))
75150
920fbb042c18 (select-safe-coding-system-interactively): Fix message.
Kenichi Handa <handa@m17n.org>
parents: 74978
diff changeset
791 (insert (substitute-command-keys "\
74927
a53153ed1c2b (select-safe-coding-system-interactively):
Kenichi Handa <handa@m17n.org>
parents: 74607
diff changeset
792
75150
920fbb042c18 (select-safe-coding-system-interactively): Fix message.
Kenichi Handa <handa@m17n.org>
parents: 74978
diff changeset
793 Click on a character (or switch to this window by `\\[other-window]'\n\
920fbb042c18 (select-safe-coding-system-interactively): Fix message.
Kenichi Handa <handa@m17n.org>
parents: 74978
diff changeset
794 and select the characters by RET) to jump to the place it appears,\n\
74934
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
795 where `\\[universal-argument] \\[what-cursor-position]' will give information about it.\n"))))
74927
a53153ed1c2b (select-safe-coding-system-interactively):
Kenichi Handa <handa@m17n.org>
parents: 74607
diff changeset
796 (insert (substitute-command-keys "\nSelect \
74934
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
797 one of the safe coding systems listed below,\n\
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
798 or cancel the writing with \\[keyboard-quit] and edit the buffer\n\
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
799 to remove or modify the problematic characters,\n\
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
800 or specify any other coding system (and risk losing\n\
b9d3d3b69df9 (select-safe-coding-system-interactively): Improve the message in the
Eli Zaretskii <eliz@gnu.org>
parents: 74931
diff changeset
801 the problematic characters).\n\n"))
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
802 (let ((pos (point))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
803 (fill-prefix " "))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
804 (dolist (x codings)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
805 (princ " ") (princ x))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
806 (insert "\n")
74927
a53153ed1c2b (select-safe-coding-system-interactively):
Kenichi Handa <handa@m17n.org>
parents: 74607
diff changeset
807 (fill-region-as-paragraph pos (point)))))
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
808
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
809 ;; Read a coding system.
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
810 (setq coding-system
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
811 (read-coding-system
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
812 (format "Select coding system (default %s): " default)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
813 default))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
814 (setq last-coding-system-specified coding-system))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
815
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
816 (kill-buffer "*Warning*")
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
817 (set-window-configuration window-configuration)
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
818 coding-system))
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
819
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
820 (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
821 accept-default-p file)
20842
428831a6f4d1 (find-safe-coding-system): Return
Kenichi Handa <handa@m17n.org>
parents: 20830
diff changeset
822 "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
823 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
824 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
825 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
826
51134
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
827 The list of `buffer-file-coding-system' of the current buffer,
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
828 the `default-buffer-file-coding-system', and the
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
829 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
830 treated as the default coding system list. Among them, the first one
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
831 that safely encodes the text is normally selected silently and
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
832 returned without any user interaction. See also the command
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
833 `prefer-coding-system'.
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
834
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
835 However, the user is queried if the chosen coding system is
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
836 inconsistent with what would be selected by `find-auto-coding' from
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
837 coding cookies &c. if the contents of the region were read from a
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
838 file. (That could lead to data corruption in a file subsequently
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
839 re-visited and edited.)
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
840
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
841 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
842 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
843 list. However, if DEFAULT-CODING-SYSTEM is a list and the first
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
844 element is t, the cdr part is used as the default coding system list,
51134
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
845 i.e. `buffer-file-coding-system', `default-buffer-file-coding-system',
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
846 and the most preferred coding system are not used.
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
847
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
848 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
849 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
850 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
851 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
852
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
853 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
854 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
855 \(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
856
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
857 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
858 non-nil, overrides ACCEPT-DEFAULT-P.
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
859
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
860 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
861 and TO is ignored."
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
862 (if (and default-coding-system
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
863 (not (listp default-coding-system)))
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
864 (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
865
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
866 (let ((no-other-defaults nil)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
867 auto-cs)
74523
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
868 (unless (or (stringp from) find-file-literally)
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
869 ;; Find an auto-coding that is specified for the the current
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
870 ;; buffer and file from the region FROM and TO.
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
871 (save-excursion
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
872 (save-restriction
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
873 (widen)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
874 (goto-char from)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
875 (setq auto-cs (find-auto-coding (or file buffer-file-name "")
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
876 (- to from)))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
877 (if auto-cs
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
878 (if (coding-system-p (car auto-cs))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
879 (setq auto-cs (car auto-cs))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
880 (display-warning
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
881 :warning
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
882 (format "\
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
883 Invalid coding system `%s' is specified
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
884 for the current buffer/file by the %s.
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
885 It is highly recommended to fix it before writing to a file."
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
886 (car auto-cs)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
887 (if (eq (cdr auto-cs) :coding) ":coding tag"
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
888 (format "variable `%s'" (cdr auto-cs)))))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
889 (or (yes-or-no-p "Really proceed with writing? ")
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
890 (error "Save aborted"))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
891 (setq auto-cs nil))))))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
892
48877
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
893 (if (eq (car default-coding-system) t)
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
894 (setq no-other-defaults t
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
895 default-coding-system (cdr default-coding-system)))
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
896
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
897 ;; Change elements of the list to (coding . base-coding).
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
898 (setq default-coding-system
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
899 (mapcar (function (lambda (x) (cons x (coding-system-base x))))
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
900 default-coding-system))
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
901
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
902 (if (and auto-cs (not no-other-defaults))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
903 ;; If the file has a coding cookie, try to use it before anything
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
904 ;; else (i.e. before default-coding-system which will typically come
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
905 ;; from file-coding-system-alist).
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
906 (let ((base (coding-system-base auto-cs)))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
907 (or (memq base '(nil undecided))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
908 (rassq base default-coding-system)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
909 (push (cons auto-cs base) default-coding-system))))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
910
48877
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
911 (unless no-other-defaults
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
912 ;; 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
913 ;; to the defaults.
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
914 (if buffer-file-coding-system
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
915 (let ((base (coding-system-base buffer-file-coding-system)))
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
916 (or (eq base 'undecided)
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
917 (rassq base default-coding-system)
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
918 (setq default-coding-system
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
919 (append default-coding-system
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
920 (list (cons buffer-file-coding-system base)))))))
51134
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
921
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
922 ;; If default-buffer-file-coding-system is not nil nor undecided,
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
923 ;; append it to the defaults.
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
924 (if default-buffer-file-coding-system
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
925 (let ((base (coding-system-base default-buffer-file-coding-system)))
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
926 (or (eq base 'undecided)
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
927 (rassq base default-coding-system)
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
928 (setq default-coding-system
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
929 (append default-coding-system
74523
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
930 (list (cons default-buffer-file-coding-system
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
931 base)))))))
29507
fff3dfd5b04d (select-safe-coding-system): If
Dave Love <fx@gnu.org>
parents: 29354
diff changeset
932
48877
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
933 ;; 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
934 ;; append it to the defaults.
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
935 (let ((tail coding-category-list)
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
936 preferred base)
51134
d59b2e15c4c7 (select-safe-coding-system): Try
Kenichi Handa <handa@m17n.org>
parents: 51016
diff changeset
937 (while (and tail (not (setq preferred (symbol-value (car tail)))))
48877
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
938 (setq tail (cdr tail)))
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
939 (and (coding-system-p preferred)
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
940 (setq base (coding-system-base preferred))
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
941 (coding-system-get preferred 'mime-charset)
c7299043f7f4 (universal-coding-system-argument):
Kenichi Handa <handa@m17n.org>
parents: 48836
diff changeset
942 (not (rassq base default-coding-system))
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
943 (setq default-coding-system
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
944 (append default-coding-system
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
945 (list (cons preferred base)))))))
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
946
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
947 (if select-safe-coding-system-accept-default-p
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
948 (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
949
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
950 ;; Decide the eol-type from the top of the default codings,
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
951 ;; buffer-file-coding-system, or
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
952 ;; default-buffer-file-coding-system.
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
953 (if default-coding-system
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
954 (let ((default-eol-type (coding-system-eol-type
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
955 (caar default-coding-system))))
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
956 (if (and (vectorp default-eol-type) buffer-file-coding-system)
74523
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
957 (setq default-eol-type (coding-system-eol-type
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
958 buffer-file-coding-system)))
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
959 (if (and (vectorp default-eol-type) default-buffer-file-coding-system)
74523
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
960 (setq default-eol-type (coding-system-eol-type
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
961 default-buffer-file-coding-system)))
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
962 (if (and default-eol-type (not (vectorp default-eol-type)))
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
963 (dolist (elt default-coding-system)
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
964 (setcar elt (coding-system-change-eol-conversion
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
965 (car elt) default-eol-type))))))
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
966
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
967 (let ((codings (find-coding-systems-region from to))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
968 (coding-system nil)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
969 safe rejected unsafe)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
970 (if (eq (car codings) 'undecided)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
971 ;; Any coding system is ok.
72032
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
972 (setq coding-system (caar default-coding-system))
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
973 ;; Reverse the list so that elements are accumulated in safe,
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
974 ;; rejected, and unsafe in the correct order.
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
975 (setq default-coding-system (nreverse default-coding-system))
352a45abb3cc (select-safe-coding-system): Fix the
Kenichi Handa <handa@m17n.org>
parents: 71606
diff changeset
976
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
977 ;; Classify the defaults into safe, rejected, and unsafe.
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
978 (dolist (elt default-coding-system)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
979 (if (memq (cdr elt) codings)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
980 (if (and (functionp accept-default-p)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
981 (not (funcall accept-default-p (cdr elt))))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
982 (push (car elt) rejected)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
983 (push (car elt) safe))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
984 (push (car elt) unsafe)))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
985 (if safe
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
986 (setq coding-system (car safe))))
30492
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
987
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
988 ;; If all the defaults failed, ask a user.
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
989 (when (not coding-system)
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
990 (setq coding-system (select-safe-coding-system-interactively
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
991 from to codings unsafe rejected (car codings))))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
992
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
993 ;; Check we're not inconsistent with what `coding:' spec &c would
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
994 ;; give when file is re-read.
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
995 ;; But don't do this if we explicitly ignored the cookie
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
996 ;; by using `find-file-literally'.
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
997 (when (and auto-cs
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
998 (not (and
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
999 coding-system
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
1000 (memq (coding-system-type coding-system) '(0 5)))))
54507
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1001 ;; Merge coding-system and auto-cs as far as possible.
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1002 (if (not coding-system)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1003 (setq coding-system auto-cs)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1004 (if (not auto-cs)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1005 (setq auto-cs coding-system)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1006 (let ((eol-type-1 (coding-system-eol-type coding-system))
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1007 (eol-type-2 (coding-system-eol-type auto-cs)))
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1008 (if (eq (coding-system-base coding-system) 'undecided)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1009 (setq coding-system (coding-system-change-text-conversion
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1010 coding-system auto-cs))
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1011 (if (eq (coding-system-base auto-cs) 'undecided)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1012 (setq auto-cs (coding-system-change-text-conversion
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1013 auto-cs coding-system))))
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1014 (if (vectorp eol-type-1)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1015 (or (vectorp eol-type-2)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1016 (setq coding-system (coding-system-change-eol-conversion
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1017 coding-system eol-type-2)))
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1018 (if (vectorp eol-type-2)
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1019 (setq auto-cs (coding-system-change-eol-conversion
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1020 auto-cs eol-type-1)))))))
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1021
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1022 (if (and auto-cs
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1023 ;; Don't barf if writing a compressed file, say.
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1024 ;; This check perhaps isn't ideal, but is probably
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1025 ;; the best thing to do.
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1026 (not (auto-coding-alist-lookup (or file buffer-file-name "")))
54507
96c240b674ee (select-safe-coding-system): Merge
Kenichi Handa <handa@m17n.org>
parents: 53358
diff changeset
1027 (not (coding-system-equal coding-system auto-cs)))
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
1028 (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
1029 (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
1030 %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
1031 and try again)? " coding-system auto-cs))
64481
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
1032 (error "Save aborted"))))
0626bdaeea77 (select-safe-coding-system): Try to
Kenichi Handa <handa@m17n.org>
parents: 64124
diff changeset
1033 coding-system)))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1034
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1035 (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
1036
23087
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1037 (defun select-message-coding-system ()
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1038 "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
1039 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
1040 in this order:
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1041 (1) local value of `buffer-file-coding-system'
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1042 (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
1043 (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
1044 (4) value of `default-buffer-file-coding-system'
23087
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1045 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
1046 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
1047 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
1048 (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
1049 buffer-file-coding-system)
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
1050 sendmail-coding-system
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
1051 default-sendmail-coding-system
822b51279bd3 (find-coding-systems-region-subset-p): This function deleted.
Kenichi Handa <handa@m17n.org>
parents: 30268
diff changeset
1052 default-buffer-file-coding-system)))
23087
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1053 (if (eq coding 'no-conversion)
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1054 ;; 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
1055 (setq coding nil))
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1056 (if (fboundp select-safe-coding-system-function)
64672
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1057 (setq coding
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1058 (funcall select-safe-coding-system-function
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1059 (point-min) (point-max) coding
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1060 (function (lambda (x)
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1061 (coding-system-get x 'mime-charset))))))
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1062 (if coding
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1063 ;; Be sure to use LF for end-of-line.
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1064 (setq coding (coding-system-change-eol-conversion coding 'unix))
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1065 ;; No coding system is decided. Usually this is the case that
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1066 ;; the current buffer contains only ASCII. So, we hope
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1067 ;; iso-8859-1 works.
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1068 (setq coding 'iso-8859-1-unix))
85e3f1fbc585 (select-message-coding-system): Be
Kenichi Handa <handa@m17n.org>
parents: 64481
diff changeset
1069 coding))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1070
23916
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
1071 ;;; Language support stuff.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1072
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1073 (defvar language-info-alist nil
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1074 "Alist of language environment definitions.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1075 Each element looks like:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1076 (LANGUAGE-NAME . ((KEY . INFO) ...))
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1077 where LANGUAGE-NAME is a string, the name of the language environment,
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1078 KEY is a symbol denoting the kind of information, and
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1079 INFO is the data associated with KEY.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1080 Meaningful values for KEY include
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1081
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1082 documentation value is documentation of what this language environment
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1083 is meant for, and how to use it.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1084 charset value is a list of the character sets used by this
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1085 language environment.
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1086 sample-text value is an expression which is evalled to generate
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1087 a line of text written using characters appropriate
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1088 for this language environment.
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1089 setup-function value is a function to call to switch to this
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1090 language environment.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1091 exit-function value is a function to call to leave this
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1092 language environment.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1093 coding-system value is a list of coding systems that are good
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1094 for saving text written in this language environment.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1095 This list serves as suggestions to the user;
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1096 in effect, as a kind of documentation.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1097 coding-priority value is a list of coding systems for this language
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1098 environment, in order of decreasing priority.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1099 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
1100 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
1101 nonascii-translation
23031
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
1102 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
1103 variable `nonascii-translation-table' in this
23031
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
1104 language environment, or a character set from
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
1105 which `nonascii-insert-offset' is calculated.
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1106 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
1107 environment.
23031
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
1108 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
1109 language environment.
53355
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1110 ctext-non-standard-encodings
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1111 value is a list of non-standard encoding
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1112 names used in extended segments of CTEXT.
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1113 See the variable
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1114 `ctext-non-standard-encodings' for more
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1115 detail.
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1116
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1117 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
1118 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
1119 is nil.
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1120
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1121 unibyte-syntax value is a library name to load to set
23196
30beacf88b75 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 23168
diff changeset
1122 unibyte 8-bit character syntaxes for this
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1123 language environment.
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1124
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1125 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
1126 for the terminal. Characters in the range
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1127 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
1128 but as non-ASCII characters in this language
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1129 environment.")
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1130
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1131 (defun get-language-info (lang-env key)
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1132 "Return information listed under KEY for language environment LANG-ENV.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1133 KEY is a symbol denoting the kind of information.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1134 For a list of useful values for KEY and their meanings,
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1135 see `language-info-alist'."
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1136 (if (symbolp lang-env)
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1137 (setq lang-env (symbol-name lang-env)))
55047
428f891f9e31 Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents: 54507
diff changeset
1138 (let ((lang-slot (assoc-string lang-env language-info-alist t)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1139 (if lang-slot
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1140 (cdr (assq key (cdr lang-slot))))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1141
22200
a0d60a6c87da (register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 22153
diff changeset
1142 (defun set-language-info (lang-env key info)
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1143 "Modify part of the definition of language environment LANG-ENV.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1144 Specifically, this stores the information INFO under KEY
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1145 in the definition of this language environment.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1146 KEY is a symbol denoting the kind of information.
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1147 INFO is the value for that information.
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1148
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1149 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
1150 see `language-info-alist'."
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1151 (if (symbolp lang-env)
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1152 (setq lang-env (symbol-name lang-env)))
67320
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1153 (set-language-info-internal lang-env key info)
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1154 (if (equal lang-env current-language-environment)
71606
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1155 (cond ((eq key 'coding-priority)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1156 (set-language-environment-coding-systems lang-env))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1157 ((eq key 'input-method)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1158 (set-language-environment-input-method lang-env))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1159 ((eq key 'nonascii-translation)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1160 (set-language-environment-nonascii-translation lang-env))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1161 ((eq key 'charset)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1162 (set-language-environment-charset lang-env))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1163 ((eq key 'overriding-fontspec)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1164 (set-language-environment-fontset lang-env))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1165 ((and (not default-enable-multibyte-characters)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1166 (or (eq key 'unibyte-syntax) (eq key 'unibyte-display)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1167 (set-language-environment-unibyte lang-env)))))
67320
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1168
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1169 (defun set-language-info-internal (lang-env key info)
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1170 "Internal use only.
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1171 Arguments are the same as `set-language-info'."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1172 (let (lang-slot key-slot)
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1173 (setq lang-slot (assoc lang-env language-info-alist))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1174 (if (null lang-slot) ; If no slot for the language, add it.
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1175 (setq lang-slot (list lang-env)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1176 language-info-alist (cons lang-slot language-info-alist)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1177 (setq key-slot (assq key lang-slot))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1178 (if (null key-slot) ; If no slot for the key, add it.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1179 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1180 (setq key-slot (list key))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1181 (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
1182 (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
1183 ;; 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
1184 (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
1185 (cons 'choice (mapcar
47c6ac3517f8 (set-language-info): Update custom-type of
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48812
diff changeset
1186 (lambda (lang)
49435
f9953109e75c (set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49048
diff changeset
1187 (list 'const lang))
f9953109e75c (set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49048
diff changeset
1188 (sort (mapcar 'car language-info-alist) 'string<))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1189
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1190 (defun set-language-info-alist (lang-env alist &optional parents)
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1191 "Store ALIST as the definition of language environment LANG-ENV.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1192 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
1193 `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
1194
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1195 Optional arg PARENTS is a list of parent menu names; it specifies
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1196 where to put this language environment in the
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1197 Describe Language Environment and Set Language Environment menus.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1198 For example, (\"European\") means to put this language environment
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1199 in the European submenu in each of those two menus."
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1200 (if (symbolp lang-env)
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1201 (setq lang-env (symbol-name lang-env)))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1202 (let ((describe-map describe-language-environment-map)
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1203 (setup-map setup-language-environment-map))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1204 (if parents
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1205 (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
1206 map parent-symbol parent prompt)
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1207 (while l
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1208 (if (symbolp (setq parent-symbol (car l)))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1209 (setq parent (symbol-name parent))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1210 (setq parent parent-symbol parent-symbol (intern parent)))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1211 (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
1212 ;; 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
1213 ;; 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
1214 (or map (setq prompt (format "%s Environment" parent)))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1215 (if (not map)
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1216 (progn
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1217 (setq map (intern (format "describe-%s-environment-map"
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1218 (downcase parent))))
28828
b8133d80ec1e (set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents: 28774
diff changeset
1219 (define-prefix-command map nil prompt)
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1220 (define-key-after describe-map (vector parent-symbol)
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1221 (cons parent map) t)))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1222 (setq describe-map (symbol-value map))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1223 (setq map (lookup-key setup-map (vector parent-symbol)))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1224 (if (not map)
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1225 (progn
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1226 (setq map (intern (format "setup-%s-environment-map"
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1227 (downcase parent))))
28828
b8133d80ec1e (set-language-info-alist): Call define-prefix-command with 3 arguments,
Eli Zaretskii <eliz@gnu.org>
parents: 28774
diff changeset
1228 (define-prefix-command map nil prompt)
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1229 (define-key-after setup-map (vector parent-symbol)
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1230 (cons parent map) t)))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1231 (setq setup-map (symbol-value map))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1232 (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
1233
a0d60a6c87da (register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 22153
diff changeset
1234 ;; Set up menu items for this language env.
23031
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
1235 (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
1236 (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
1237 (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
1238 (cons lang-env 'describe-specified-language-support) t)))
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
1239 (define-key-after setup-map (vector (intern lang-env))
5e2bc240edfc (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 23021
diff changeset
1240 (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
1241
67320
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1242 (dolist (elt alist)
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1243 (set-language-info-internal lang-env (car elt) (cdr elt)))
74523
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
1244
67320
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1245 (if (equal lang-env current-language-environment)
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
1246 (set-language-environment lang-env))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1247
19734
c4894d8a3310 (read-language-name): Use a default, not an initial input.
Richard M. Stallman <rms@gnu.org>
parents: 19725
diff changeset
1248 (defun read-language-name (key prompt &optional default)
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1249 "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
1250 If KEY is nil, read any language environment.
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1251 Prompt with PROMPT. DEFAULT is the default choice of language environment.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1252 This returns a language environment name as a string."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1253 (let* ((completion-ignore-case t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1254 (name (completing-read prompt
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1255 language-info-alist
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1256 (and key
44904
3c8d8ff3a848 (read-language-name): Take of non-list values.
Pavel Janík <Pavel@Janik.cz>
parents: 44643
diff changeset
1257 (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
1258 t nil nil default)))
17758
8c67c2e2cc29 (build-describe-language-support-function,
Kenichi Handa <handa@m17n.org>
parents: 17526
diff changeset
1259 (if (and (> (length name) 0)
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1260 (or (not key)
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1261 (get-language-info name key)))
17758
8c67c2e2cc29 (build-describe-language-support-function,
Kenichi Handa <handa@m17n.org>
parents: 17526
diff changeset
1262 name)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1263
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1264 ;;; Multilingual input methods.
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1265 (defgroup leim nil
31423
afa66a3f39dc (help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents: 31245
diff changeset
1266 "LEIM: Libraries of Emacs Input Methods."
afa66a3f39dc (help-xref-mule-regexp-template):
Kenichi Handa <handa@m17n.org>
parents: 31245
diff changeset
1267 :group 'mule)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1268
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1269 (defconst leim-list-file-name "leim-list.el"
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1270 "Name of LEIM list file.
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1271 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
1272 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
1273 Emacs loads this file at startup time.")
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1274
26010
edea9722f14e (select-safe-coding-system, leim-list-header): avoid the use of strings
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 24864
diff changeset
1275 (defvar leim-list-header (format
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1276 ";;; %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
1277 ;;
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1278 ;; This file contains a list of LEIM (Library of Emacs Input Method)
36464
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
1279 ;; methods in the same directory as this file. Loading this file
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
1280 ;; registers all the input methods in Emacs.
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1281 ;;
18969
c33e6f7947ed Typo in comment fixed.
Kenichi Handa <handa@m17n.org>
parents: 18933
diff changeset
1282 ;; Each entry has the form:
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1283 ;; (register-input-method
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1284 ;; INPUT-METHOD LANGUAGE-NAME ACTIVATE-FUNC
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1285 ;; TITLE DESCRIPTION
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1286 ;; ARG ...)
36464
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
1287 ;; 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
1288 ;;
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1289 ;; 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
1290 ;; loads this file at startup time.
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1291
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1292 "
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1293 leim-list-file-name)
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1294 "Header to be inserted in LEIM list file.")
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1295
18982
2297a2cb909d (leim-list-entry-regexp): Make this match only at beginning of line.
Kenichi Handa <handa@m17n.org>
parents: 18978
diff changeset
1296 (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
1297 "Regexp matching head of each entry in LEIM list file.
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
1298 See also the variable `leim-list-header'.")
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1299
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1300 (defvar update-leim-list-functions
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1301 '(quail-update-leim-list-file)
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1302 "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
1303 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
1304
19615
4cdef838afb0 (update-leim-list-file): Make it handle multiple directories.
Richard M. Stallman <rms@gnu.org>
parents: 19614
diff changeset
1305 (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
1306 "Update LEIM list file in directories DIRS."
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1307 (let ((functions update-leim-list-functions))
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1308 (while functions
19615
4cdef838afb0 (update-leim-list-file): Make it handle multiple directories.
Richard M. Stallman <rms@gnu.org>
parents: 19614
diff changeset
1309 (apply (car functions) dirs)
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1310 (setq functions (cdr functions)))))
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1311
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1312 (defvar current-input-method nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1313 "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
1314 If nil, that means no input method is activated now.")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1315 (make-variable-buffer-local 'current-input-method)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1316 (put 'current-input-method 'permanent-local t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1317
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1318 (defvar current-input-method-title nil
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1319 "Title string of the current input method shown in mode line.")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1320 (make-variable-buffer-local 'current-input-method-title)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1321 (put 'current-input-method-title 'permanent-local t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1322
18801
f60dbf4f7d7c (mule-keymap): Bind l to set-language-environment.
Kenichi Handa <handa@m17n.org>
parents: 18712
diff changeset
1323 (defcustom default-input-method nil
21229
38b621cd9169 (set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21042
diff changeset
1324 "*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
1325 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
1326 `toggle-input-method' (\\[toggle-input-method])."
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
1327 :link '(custom-manual "(emacs)Input Methods")
21229
38b621cd9169 (set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21042
diff changeset
1328 :group 'mule
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
1329 :type '(choice (const nil) (string
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
1330 :completion-ignore-case t
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
1331 :complete-function widget-string-complete
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
1332 :completion-alist input-method-alist
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
1333 :prompt-history input-method-history))
26832
4a01a2762de5 (default-input-method): Specify
Gerd Moellmann <gerd@gnu.org>
parents: 26190
diff changeset
1334 :set-after '(current-language-environment))
18801
f60dbf4f7d7c (mule-keymap): Bind l to set-language-environment.
Kenichi Handa <handa@m17n.org>
parents: 18712
diff changeset
1335
24617
a9d05d95717d (input-method-function): Add permanent-local property.
Karl Heuer <kwzh@gnu.org>
parents: 24551
diff changeset
1336 (put 'input-method-function 'permanent-local t)
a9d05d95717d (input-method-function): Add permanent-local property.
Karl Heuer <kwzh@gnu.org>
parents: 24551
diff changeset
1337
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1338 (defvar input-method-history nil
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1339 "History list for some commands that read input methods.")
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1340 (make-variable-buffer-local 'input-method-history)
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1341 (put 'input-method-history 'permanent-local t)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1342
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1343 (defvar inactivate-current-input-method-function nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1344 "Function to call for inactivating the current input method.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1345 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
1346 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
1347
df2996f7fdc3 (inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 19424
diff changeset
1348 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
1349 It is set to nil by the function `inactivate-input-method'.")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1350 (make-variable-buffer-local 'inactivate-current-input-method-function)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1351 (put 'inactivate-current-input-method-function 'permanent-local t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1352
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1353 (defvar describe-current-input-method-function nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1354 "Function to call for describing the current input method.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1355 This function is called with no argument.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1356 (make-variable-buffer-local 'describe-current-input-method-function)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1357 (put 'describe-current-input-method-function 'permanent-local t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1358
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1359 (defvar input-method-alist nil
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1360 "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
1361 Each element has the form:
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1362 (INPUT-METHOD LANGUAGE-ENV ACTIVATE-FUNC TITLE DESCRIPTION ARGS...)
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1363 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
1364
22200
a0d60a6c87da (register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 22153
diff changeset
1365 (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
1366 "Register INPUT-METHOD as an input method for language environment LANG-ENV.
74523
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
1367
22200
a0d60a6c87da (register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 22153
diff changeset
1368 INPUT-METHOD and LANG-ENV are symbols or strings.
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1369 ACTIVATE-FUNC is a function to call to activate this method.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1370 TITLE is a string to show in the mode line when this method is active.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1371 DESCRIPTION is a string describing this method and what it is good for.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1372 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
1373 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
1374
36464
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
1375 This function is mainly used in the file \"leim-list.el\" which is
0305b09cafda Doc fixes.
Dave Love <fx@gnu.org>
parents: 36261
diff changeset
1376 created at Emacs build time, registering all Quail input methods
36261
8c25ace4e1e1 Doc fixes.
Dave Love <fx@gnu.org>
parents: 36083
diff changeset
1377 contained in the Emacs distribution.
23168
ff3750779f48 (register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 23165
diff changeset
1378
36261
8c25ace4e1e1 Doc fixes.
Dave Love <fx@gnu.org>
parents: 36083
diff changeset
1379 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
1380 careful to use the same input method title as given in the third
36261
8c25ace4e1e1 Doc fixes.
Dave Love <fx@gnu.org>
parents: 36083
diff changeset
1381 parameter of `quail-define-package'. (If the values are different, the
8c25ace4e1e1 Doc fixes.
Dave Love <fx@gnu.org>
parents: 36083
diff changeset
1382 string specified in this function takes precedence.)
23168
ff3750779f48 (register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 23165
diff changeset
1383
ff3750779f48 (register-input-method): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 23165
diff changeset
1384 The commands `describe-input-method' and `list-input-methods' need
36261
8c25ace4e1e1 Doc fixes.
Dave Love <fx@gnu.org>
parents: 36083
diff changeset
1385 these duplicated values to show some information about input methods
74523
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
1386 without loading the relevant Quail packages.
d3e5cb1aa5b6 (register-input-method): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 73819
diff changeset
1387 \n(fn INPUT-METHOD LANG-ENV ACTIVATE-FUNC TITLE DESCRIPTION &rest ARGS)"
22200
a0d60a6c87da (register-input-method): Rename arg ENV to LANG-ENV. Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 22153
diff changeset
1388 (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
1389 (setq lang-env (symbol-name lang-env)))
19649
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1390 (if (symbolp input-method)
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1391 (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
1392 (let ((info (cons lang-env args))
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1393 (slot (assoc input-method input-method-alist)))
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1394 (if slot
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1395 (setcdr slot info)
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1396 (setq slot (cons input-method info))
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1397 (setq input-method-alist (cons slot input-method-alist)))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1398
19328
a616b45ffa31 (read-input-method-name): Replace INITIAL-INPUT arg with DEFAULT arg.
Richard M. Stallman <rms@gnu.org>
parents: 19267
diff changeset
1399 (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
1400 "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
1401 If DEFAULT is non-nil, use that as the default,
36261
8c25ace4e1e1 Doc fixes.
Dave Love <fx@gnu.org>
parents: 36083
diff changeset
1402 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
1403 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
1404
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1405 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
1406 (if default
a616b45ffa31 (read-input-method-name): Replace INITIAL-INPUT arg with DEFAULT arg.
Richard M. Stallman <rms@gnu.org>
parents: 19267
diff changeset
1407 (setq prompt (format prompt default)))
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1408 (let* ((completion-ignore-case t)
36863
247618d8fd9d (read-input-method-name): Locally
Kenichi Handa <handa@m17n.org>
parents: 36836
diff changeset
1409 ;; 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
1410 ;; minibuffer, we must enable it even if
247618d8fd9d (read-input-method-name): Locally
Kenichi Handa <handa@m17n.org>
parents: 36836
diff changeset
1411 ;; enable-recursive-minibuffers is currently nil.
247618d8fd9d (read-input-method-name): Locally
Kenichi Handa <handa@m17n.org>
parents: 36836
diff changeset
1412 (enable-recursive-minibuffers t)
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1413 ;; This binding is necessary because input-method-history is
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1414 ;; buffer local.
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1415 (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
1416 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
1417 default)))
26190
598f252b76f2 (read-input-method-name): Handle the
Kenichi Handa <handa@m17n.org>
parents: 26139
diff changeset
1418 (if (and input-method (symbolp input-method))
598f252b76f2 (read-input-method-name): Handle the
Kenichi Handa <handa@m17n.org>
parents: 26139
diff changeset
1419 (setq input-method (symbol-name input-method)))
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1420 (if (> (length input-method) 0)
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1421 input-method
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1422 (if inhibit-null
18978
0f01c27a9756 (read-input-method-name): Show more appropriate error message.
Kenichi Handa <handa@m17n.org>
parents: 18969
diff changeset
1423 (error "No valid input method is specified")))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1424
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1425 (defun activate-input-method (input-method)
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1426 "Switch to input method INPUT-METHOD for the current buffer.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1427 If some other input method is already active, turn it off first.
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1428 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
1429 (if (and input-method (symbolp input-method))
19649
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1430 (setq input-method (symbol-name input-method)))
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1431 (if (and current-input-method
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1432 (not (string= current-input-method input-method)))
23049
82a27d5b4582 (activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents: 23044
diff changeset
1433 (inactivate-input-method))
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1434 (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
1435 (let ((slot (assoc input-method input-method-alist)))
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1436 (if (null slot)
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1437 (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
1438 (setq current-input-method-title nil)
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1439 (let ((func (nth 2 slot)))
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1440 (if (functionp func)
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1441 (apply (nth 2 slot) input-method (nthcdr 5 slot))
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1442 (if (and (consp func) (symbolp (car func)) (symbolp (cdr func)))
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1443 (progn
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1444 (require (cdr func))
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1445 (apply (car func) input-method (nthcdr 5 slot)))
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1446 (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
1447 (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
1448 (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
1449 (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
1450 (unwind-protect
dd7dcda2d47b (activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents: 22815
diff changeset
1451 (run-hooks 'input-method-activate-hook)
dd7dcda2d47b (activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents: 22815
diff changeset
1452 (force-mode-line-update)))))
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1453
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1454 (defun inactivate-input-method ()
19555
df2996f7fdc3 (inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 19424
diff changeset
1455 "Turn off the current input method."
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1456 (when current-input-method
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1457 (if input-method-history
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1458 (unless (string= current-input-method (car input-method-history))
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1459 (setq input-method-history
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1460 (cons current-input-method
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1461 (delete current-input-method input-method-history))))
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1462 (setq input-method-history (list current-input-method)))
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1463 (unwind-protect
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1464 (funcall inactivate-current-input-method-function)
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1465 (unwind-protect
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1466 (run-hooks 'input-method-inactivate-hook)
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1467 (setq current-input-method nil
37953
c669723b80d5 (inactivate-input-method): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36910
diff changeset
1468 input-method-function nil
22854
dd7dcda2d47b (activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents: 22815
diff changeset
1469 current-input-method-title nil)
dd7dcda2d47b (activate-input-method): Update mode line.
Kenichi Handa <handa@m17n.org>
parents: 22815
diff changeset
1470 (force-mode-line-update)))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1471
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1472 (defun set-input-method (input-method &optional interactive)
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1473 "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
1474 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
1475 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
1476 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
1477 time you invoke \\[toggle-input-method].
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1478 When called interactively, the optional arg INTERACTIVE is non-nil,
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1479 which marks the variable `default-input-method' as set for Custom buffers.
36074
89518bb0ddaa (set-input-method): Another doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 36051
diff changeset
1480
36051
781f426b26c5 (set-input-method): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35556
diff changeset
1481 To deactivate the input method interactively, use \\[toggle-input-method].
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
1482 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
1483 (interactive
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1484 (let* ((default (or (car input-method-history) default-input-method)))
19402
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1485 (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
1486 (if default "Select input method (default %s): " "Select input method: ")
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1487 default t)
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1488 t)))
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1489 (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
1490 (setq default-input-method input-method)
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1491 (when interactive
43252
bccb026d40e4 2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43182
diff changeset
1492 (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
1493 default-input-method)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1494
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1495 (defun toggle-input-method (&optional arg interactive)
36083
e9191d28ed86 (toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 36074
diff changeset
1496 "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
1497 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
1498
36083
e9191d28ed86 (toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 36074
diff changeset
1499 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
1500 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
1501 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
1502 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
1503 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
1504 minibuffer.
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1505
36083
e9191d28ed86 (toggle-input-method): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 36074
diff changeset
1506 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
1507 and enable that one. The default is the most recent input method specified
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1508 \(not including the currently active input method, if any).
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1509
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1510 When called interactively, the optional arg INTERACTIVE is non-nil,
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1511 which marks the variable `default-input-method' as set for Custom buffers."
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1512
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1513 (interactive "P\np")
21983
487cd71c058d (toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents: 21882
diff changeset
1514 (if (and current-input-method (not arg))
487cd71c058d (toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents: 21882
diff changeset
1515 (inactivate-input-method)
487cd71c058d (toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents: 21882
diff changeset
1516 (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
1517 (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
1518 (> (length input-method-history) 1))
487cd71c058d (toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents: 21882
diff changeset
1519 (setq default (nth 1 input-method-history)))
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1520 (activate-input-method
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1521 (if (or arg (not default))
21983
487cd71c058d (toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents: 21882
diff changeset
1522 (progn
487cd71c058d (toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents: 21882
diff changeset
1523 (read-input-method-name
487cd71c058d (toggle-input-method): Use a more
Richard M. Stallman <rms@gnu.org>
parents: 21882
diff changeset
1524 (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
1525 default t))
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1526 default))
43252
bccb026d40e4 2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43182
diff changeset
1527 (unless default-input-method
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1528 (prog1
43252
bccb026d40e4 2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43182
diff changeset
1529 (setq default-input-method current-input-method)
57932
93792c00945b (set-input-method, toggle-input-method):
Richard M. Stallman <rms@gnu.org>
parents: 56040
diff changeset
1530 (when interactive
43252
bccb026d40e4 2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43182
diff changeset
1531 (customize-mark-as-set 'default-input-method)))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1532
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1533 (defun describe-input-method (input-method)
22153
a63d4ba6813a Several doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22025
diff changeset
1534 "Describe input method INPUT-METHOD."
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1535 (interactive
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1536 (list (read-input-method-name
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65652
diff changeset
1537 "Describe input method (default current choice): ")))
19653
431753f747ea (describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents: 19649
diff changeset
1538 (if (and input-method (symbolp input-method))
19649
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1539 (setq input-method (symbol-name input-method)))
43310
93653d31963e Whitespace change.
Richard M. Stallman <rms@gnu.org>
parents: 43252
diff changeset
1540 (help-setup-xref (list #'describe-input-method
93653d31963e Whitespace change.
Richard M. Stallman <rms@gnu.org>
parents: 43252
diff changeset
1541 (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
1542 (interactive-p))
61ad8f29fefa (describe-input-method): Call help-setup-xref here.
Richard M. Stallman <rms@gnu.org>
parents: 42734
diff changeset
1543
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1544 (if (null input-method)
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1545 (describe-current-input-method)
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1546 (let ((current current-input-method))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1547 (condition-case nil
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1548 (progn
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1549 (save-excursion
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1550 (activate-input-method input-method)
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1551 (describe-current-input-method))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1552 (activate-input-method current))
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1553 (error
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1554 (activate-input-method current)
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
1555 (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
1556 (interactive-p))
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
1557 (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
1558 (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
1559 (princ (format
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
1560 "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
1561 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
1562
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1563 (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
1564 "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
1565 This is a subroutine for `describe-input-method'."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1566 (if current-input-method
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1567 (if (and (symbolp describe-current-input-method-function)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1568 (fboundp describe-current-input-method-function))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1569 (funcall describe-current-input-method-function)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1570 (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
1571 current-input-method)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1572 (ding))
18301
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1573 (error "No input method is activated now")))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1574
20116
8c1995cc7702 (read-multilingual-string): Use
Kenichi Handa <handa@m17n.org>
parents: 20091
diff changeset
1575 (defun read-multilingual-string (prompt &optional initial-input input-method)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1576 "Read a multilingual string from minibuffer, prompting with string PROMPT.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1577 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
1578 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
1579 initially.
a4da36c7bb08 Define describe-coding-system instead of
Kenichi Handa <handa@m17n.org>
parents: 18217
diff changeset
1580 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
1581 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
1582 or a string."
18712
7366898bee9e (read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents: 18634
diff changeset
1583 (setq input-method
7366898bee9e (read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents: 18634
diff changeset
1584 (or input-method
20116
8c1995cc7702 (read-multilingual-string): Use
Kenichi Handa <handa@m17n.org>
parents: 20091
diff changeset
1585 current-input-method
18712
7366898bee9e (read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents: 18634
diff changeset
1586 default-input-method
7366898bee9e (read-multilingual-string): Adjusted
Kenichi Handa <handa@m17n.org>
parents: 18634
diff changeset
1587 (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
1588 (if (and input-method (symbolp input-method))
19649
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1589 (setq input-method (symbol-name input-method)))
23049
82a27d5b4582 (activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents: 23044
diff changeset
1590 (let ((prev-input-method current-input-method))
82a27d5b4582 (activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents: 23044
diff changeset
1591 (unwind-protect
82a27d5b4582 (activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents: 23044
diff changeset
1592 (progn
82a27d5b4582 (activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents: 23044
diff changeset
1593 (activate-input-method input-method)
82a27d5b4582 (activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents: 23044
diff changeset
1594 (read-string prompt initial-input nil nil t))
82a27d5b4582 (activate-input-method): Handle the
Kenichi Handa <handa@m17n.org>
parents: 23044
diff changeset
1595 (activate-input-method prev-input-method))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1596
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1597 ;; Variables to control behavior of input methods. All input methods
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1598 ;; should react to these variables.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1599
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1600 (defcustom input-method-verbose-flag 'default
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1601 "*A flag to control extra guidance given by input methods.
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1602 The value should be nil, t, `complex-only', or `default'.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1603
19917
834c629f9220 (select-input-method): No error if enable-multibyte-characters is nil.
Richard M. Stallman <rms@gnu.org>
parents: 19848
diff changeset
1604 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
1605 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
1606 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
1607
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1608 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
1609 nil, extra guidance is always suppressed.
19848
68c5c0b3ed0d (input-method-verbose-flag):
Kenichi Handa <handa@m17n.org>
parents: 19798
diff changeset
1610
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1611 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
1612 `chinese-py' and `japanese' give extra guidance.
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1613
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1614 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
1615 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
1616 the minibuffer.
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1617
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1618 See also the variable `input-method-highlight-flag'."
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1619 :type '(choice (const :tag "Always" t) (const :tag "Never" nil)
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1620 (const complex-only) (const default))
19402
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1621 :group 'mule)
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1622
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1623 (defcustom input-method-highlight-flag t
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1624 "*If this flag is non-nil, input methods highlight partially-entered text.
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1625 For instance, while you are in the middle of a Quail input method sequence,
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1626 the text inserted so far is temporarily underlined.
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1627 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
1628 See also the variable `input-method-verbose-flag'."
19402
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1629 :type 'boolean
b904f6547598 (toggle-input-method)
Richard M. Stallman <rms@gnu.org>
parents: 19329
diff changeset
1630 :group 'mule)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1631
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1632 (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
1633 "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
1634
df2996f7fdc3 (inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 19424
diff changeset
1635 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
1636 just activated.")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1637
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1638 (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
1639 "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
1640
df2996f7fdc3 (inactivate-current-input-method-function): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 19424
diff changeset
1641 The variable `current-input-method' still keeps the input method name
20467
813cabaafefb (set-language-info): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 20295
diff changeset
1642 just inactivated.")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1643
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1644 (defvar input-method-after-insert-chunk-hook nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1645 "Normal hook run just after an input method insert some chunk of text.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1646
22918
776bc4293c87 (input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents: 22899
diff changeset
1647 (defvar input-method-exit-on-first-char nil
36261
8c25ace4e1e1 Doc fixes.
Dave Love <fx@gnu.org>
parents: 36083
diff changeset
1648 "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
1649 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
1650 that it may find a different translation if a user types another key.
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
1651 But, if this flag is non-nil, the input method returns as soon as
22948
e259bed9247e (input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents: 22918
diff changeset
1652 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
1653
776bc4293c87 (input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents: 22899
diff changeset
1654 (defvar input-method-use-echo-area nil
776bc4293c87 (input-method-exit-on-first-char):
Kenichi Handa <handa@m17n.org>
parents: 22899
diff changeset
1655 "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
1656 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
1657 or candidate translations corresponding to the sequence,
e259bed9247e (input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents: 22918
diff changeset
1658 at point in the current buffer.
e259bed9247e (input-method-exit-on-first-char)
Richard M. Stallman <rms@gnu.org>
parents: 22918
diff changeset
1659 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
1660
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1661 (defvar input-method-exit-on-invalid-key nil
63269
f5860b9ada9c (select-safe-coding-system-accept-default-p, input-method-exit-on-invalid-key):
Juanma Barranquero <lekktu@gmail.com>
parents: 62274
diff changeset
1662 "This flag controls the behavior of an input method on invalid key input.
19405
7ef4af7505f2 (previous-input-method): This
Kenichi Handa <handa@m17n.org>
parents: 19402
diff changeset
1663 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
1664 handled by the input method, the key is handled by turning off the
23196
30beacf88b75 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 23168
diff changeset
1665 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
1666 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
1667
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1668
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1669 (defvar set-language-environment-hook nil
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1670 "Normal hook run after some language environment is set.
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1671
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1672 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
1673 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
1674 another function in `exit-language-environment-hook' (which see) to
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1675 cancel the effect.")
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1676
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1677 (defvar exit-language-environment-hook nil
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1678 "Normal hook run after exiting from some language environment.
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1679 When this hook is run, the variable `current-language-environment'
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1680 is still bound to the language environment being exited.
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1681
23196
30beacf88b75 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 23168
diff changeset
1682 This hook is mainly used for canceling the effect of
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
1683 `set-language-environment-hook' (which see).")
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1684
23419
c251dd6b289e (setup-specified-language-environment): Add apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents: 23261
diff changeset
1685 (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
1686
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1687 (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
1688 "Switch to a specified language environment."
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1689 (interactive)
18634
8b309d07a95e (set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents: 18633
diff changeset
1690 (let (language-name)
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1691 (if (and (symbolp last-command-event)
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1692 (or (not (eq last-command-event 'Default))
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1693 (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
1694 (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
1695 (prog1
bccb026d40e4 2002-02-12 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 43182
diff changeset
1696 (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
1697 (customize-mark-as-set 'current-language-environment))
17991
65407fdc4a33 Delete defining "i" in mule-keymap.
Kenichi Handa <handa@m17n.org>
parents: 17840
diff changeset
1698 (error "Bogus calling sequence"))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1699
21229
38b621cd9169 (set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21042
diff changeset
1700 (defcustom current-language-environment "English"
24204
a61e1da49f92 (current-language-environment):
Dave Love <fx@gnu.org>
parents: 24117
diff changeset
1701 "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
1702 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
1703 to using the function `set-language-environment'."
24204
a61e1da49f92 (current-language-environment):
Dave Love <fx@gnu.org>
parents: 24117
diff changeset
1704 :link '(custom-manual "(emacs)Language Environments")
23165
0e28574df9af (current-language-environment): Fix setter function.
Dave Love <fx@gnu.org>
parents: 23087
diff changeset
1705 :set (lambda (symbol value) (set-language-environment value))
24204
a61e1da49f92 (current-language-environment):
Dave Love <fx@gnu.org>
parents: 24117
diff changeset
1706 :get (lambda (x)
55047
428f891f9e31 Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents: 54507
diff changeset
1707 (or (car-safe (assoc-string
24204
a61e1da49f92 (current-language-environment):
Dave Love <fx@gnu.org>
parents: 24117
diff changeset
1708 (if (symbolp current-language-environment)
a61e1da49f92 (current-language-environment):
Dave Love <fx@gnu.org>
parents: 24117
diff changeset
1709 (symbol-name current-language-environment)
a61e1da49f92 (current-language-environment):
Dave Love <fx@gnu.org>
parents: 24117
diff changeset
1710 current-language-environment)
55047
428f891f9e31 Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents: 54507
diff changeset
1711 language-info-alist t))
24204
a61e1da49f92 (current-language-environment):
Dave Love <fx@gnu.org>
parents: 24117
diff changeset
1712 "English"))
48836
81333325d8f7 (current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48813
diff changeset
1713 ;; 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
1714 :type (if language-info-alist
81333325d8f7 (current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48813
diff changeset
1715 (cons 'choice (mapcar
81333325d8f7 (current-language-environment): Set type according to
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48813
diff changeset
1716 (lambda (lang)
49435
f9953109e75c (set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49048
diff changeset
1717 (list 'const lang))
f9953109e75c (set-language-info, current-language-environment):
Markus Rost <rost@math.uni-bielefeld.de>
parents: 49048
diff changeset
1718 (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
1719 'string)
21229
38b621cd9169 (set-language-environment): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21042
diff changeset
1720 :initialize 'custom-initialize-default
48231
7b77f5edeace (current-language-environment): Fix
Dave Love <fx@gnu.org>
parents: 48073
diff changeset
1721 :group 'mule)
18634
8b309d07a95e (set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents: 18633
diff changeset
1722
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1723 (defun reset-language-environment ()
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1724 "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
1725
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1726 The default status is as follows:
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1727
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1728 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
1729 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
1730 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
1731 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
1732
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1733 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
1734 bound to each category are as follows
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1735 coding category coding system
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1736 --------------------------------------------------
50720
9e0c5cef06ef (reset-language-environment): Raise the priority of mule-utf-8,
Kenichi Handa <handa@m17n.org>
parents: 50614
diff changeset
1737 coding-category-iso-8-1 iso-latin-1
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1738 coding-category-iso-8-2 iso-latin-1
50720
9e0c5cef06ef (reset-language-environment): Raise the priority of mule-utf-8,
Kenichi Handa <handa@m17n.org>
parents: 50614
diff changeset
1739 coding-category-utf-8 mule-utf-8
51632
ecc1259fadfc (reset-language-environment): Adjusted for the name change:
Kenichi Handa <handa@m17n.org>
parents: 51622
diff changeset
1740 coding-category-utf-16-be mule-utf-16be-with-signature
ecc1259fadfc (reset-language-environment): Adjusted for the name change:
Kenichi Handa <handa@m17n.org>
parents: 51622
diff changeset
1741 coding-category-utf-16-le mule-utf-16le-with-signature
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1742 coding-category-iso-7-tight iso-2022-jp
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1743 coding-category-iso-7 iso-2022-7bit
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1744 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
1745 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
1746 coding-category-emacs-mule emacs-mule
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1747 coding-category-raw-text raw-text
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1748 coding-category-sjis japanese-shift-jis
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1749 coding-category-big5 chinese-big5
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1750 coding-category-ccl nil
50720
9e0c5cef06ef (reset-language-environment): Raise the priority of mule-utf-8,
Kenichi Handa <handa@m17n.org>
parents: 50614
diff changeset
1751 coding-category-binary no-conversion"
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1752 (interactive)
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1753 ;; 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
1754 ;; 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
1755
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1756 (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
1757 coding-category-iso-7 'iso-2022-7bit
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1758 coding-category-iso-8-1 'iso-latin-1
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1759 coding-category-iso-8-2 'iso-latin-1
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1760 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
1761 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
1762 coding-category-emacs-mule 'emacs-mule
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1763 coding-category-raw-text 'raw-text
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1764 coding-category-sjis 'japanese-shift-jis
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1765 coding-category-big5 'chinese-big5
51632
ecc1259fadfc (reset-language-environment): Adjusted for the name change:
Kenichi Handa <handa@m17n.org>
parents: 51622
diff changeset
1766 coding-category-utf-16-be 'mule-utf-16be-with-signature
ecc1259fadfc (reset-language-environment): Adjusted for the name change:
Kenichi Handa <handa@m17n.org>
parents: 51622
diff changeset
1767 coding-category-utf-16-le 'mule-utf-16le-with-signature
35540
18667fa78087 (reset-language-environment): Make
Kenichi Handa <handa@m17n.org>
parents: 35504
diff changeset
1768 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
1769 coding-category-ccl nil
8fcff22c51b7 (reset-language-environment): Reset coding-category-utf-8 to
Kenichi Handa <handa@m17n.org>
parents: 35540
diff changeset
1770 coding-category-binary 'no-conversion)
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1771
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1772 (set-coding-priority
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1773 '(coding-category-iso-8-1
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1774 coding-category-iso-8-2
50720
9e0c5cef06ef (reset-language-environment): Raise the priority of mule-utf-8,
Kenichi Handa <handa@m17n.org>
parents: 50614
diff changeset
1775 coding-category-utf-8
9e0c5cef06ef (reset-language-environment): Raise the priority of mule-utf-8,
Kenichi Handa <handa@m17n.org>
parents: 50614
diff changeset
1776 coding-category-utf-16-be
9e0c5cef06ef (reset-language-environment): Raise the priority of mule-utf-8,
Kenichi Handa <handa@m17n.org>
parents: 50614
diff changeset
1777 coding-category-utf-16-le
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1778 coding-category-iso-7-tight
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1779 coding-category-iso-7
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1780 coding-category-iso-7-else
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1781 coding-category-iso-8-else
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1782 coding-category-emacs-mule
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1783 coding-category-raw-text
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1784 coding-category-sjis
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1785 coding-category-big5
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1786 coding-category-ccl
50720
9e0c5cef06ef (reset-language-environment): Raise the priority of mule-utf-8,
Kenichi Handa <handa@m17n.org>
parents: 50614
diff changeset
1787 coding-category-binary))
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1788
61064
a0bf3de65b02 Add comments before all calls of update-coding-systems-internal.
Kenichi Handa <handa@m17n.org>
parents: 60934
diff changeset
1789 ;; Changing the binding of a coding category requires this call.
23261
9346958bb3d5 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 23196
diff changeset
1790 (update-coding-systems-internal)
9346958bb3d5 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 23196
diff changeset
1791
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1792 (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
1793 (setq default-sendmail-coding-system 'iso-latin-1)
59906
9c28fead9bf2 (set-locale-environment): Set file-name coding system to utf-8 on Darwin.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 59743
diff changeset
1794 ;; On Darwin systems, this should be utf-8, but when this file is loaded
9c28fead9bf2 (set-locale-environment): Set file-name coding system to utf-8 on Darwin.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 59743
diff changeset
1795 ;; utf-8 is not yet defined, so we set it in set-locale-environment instead.
50116
f2c182eeeda2 (reset-language-environment): Set
Kenichi Handa <handa@m17n.org>
parents: 49796
diff changeset
1796 (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
1797 ;; 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
1798 ;; 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
1799 ;; 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
1800 ;; 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
1801 ;; language environment.
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
1802 (let ((output-coding
44440
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1803 ;; When bootstrapping, coding-systems are not defined yet, so
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1804 ;; we need to catch the error from check-coding-system.
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
1805 (condition-case nil
44440
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1806 (coding-system-change-text-conversion
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1807 (car default-process-coding-system) 'undecided)
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1808 (coding-system-error 'undecided)))
44425
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
1809 (input-coding
44440
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1810 (condition-case nil
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1811 (coding-system-change-text-conversion
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1812 (cdr default-process-coding-system) 'iso-latin-1)
db660532bd23 (reset-language-environment): Handle
Jason Rumney <jasonr@gnu.org>
parents: 44425
diff changeset
1813 (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
1814 (setq default-process-coding-system
86eccd269d36 (set-default-coding-systems, reset-language-environment): Preserve
Jason Rumney <jasonr@gnu.org>
parents: 44321
diff changeset
1815 (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
1816
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1817 ;; 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
1818 ;; The terminal still supports the same coding system
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1819 ;; 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
1820 ;; (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
1821 ;; (set-keyboard-coding-system-internal nil)
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1822
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1823 (setq nonascii-translation-table nil
53355
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1824 nonascii-insert-offset 0)
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1825
53358
ff43a451f269 (reset-language-environment, set-language-environment): Don't invoke
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53355
diff changeset
1826 ;; Don't invoke fontset-related functions if fontsets aren't
ff43a451f269 (reset-language-environment, set-language-environment): Don't invoke
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53355
diff changeset
1827 ;; supported in this build of Emacs.
ff43a451f269 (reset-language-environment, set-language-environment): Don't invoke
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53355
diff changeset
1828 (and (fboundp 'fontset-list)
ff43a451f269 (reset-language-environment, set-language-environment): Don't invoke
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53355
diff changeset
1829 (set-overriding-fontspec-internal nil)))
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1830
31138
5dab940bf298 (reset-language-environment): Set default-process-coding-system to
Kenichi Handa <handa@m17n.org>
parents: 30566
diff changeset
1831 (reset-language-environment)
5dab940bf298 (reset-language-environment): Set default-process-coding-system to
Kenichi Handa <handa@m17n.org>
parents: 30566
diff changeset
1832
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
1833 (defun set-display-table-and-terminal-coding-system (language-name &optional coding-system display)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
1834 "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
1835 (let ((coding (get-language-info language-name 'unibyte-display)))
67358
9fa16adb2f52 (set-display-table-and-terminal-coding-system): If the coding
Kenichi Handa <handa@m17n.org>
parents: 67320
diff changeset
1836 (if (and coding
9fa16adb2f52 (set-display-table-and-terminal-coding-system): If the coding
Kenichi Handa <handa@m17n.org>
parents: 67320
diff changeset
1837 (or (not coding-system)
9fa16adb2f52 (set-display-table-and-terminal-coding-system): If the coding
Kenichi Handa <handa@m17n.org>
parents: 67320
diff changeset
1838 (coding-system-equal coding coding-system)))
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
1839 (standard-display-european-internal)
51622
c85b00553f5e Add a comment in set-display-table-and-terminal-coding-system
Eli Zaretskii <eliz@gnu.org>
parents: 51134
diff changeset
1840 ;; The following 2 lines undo the 8-bit display that we set up
c85b00553f5e Add a comment in set-display-table-and-terminal-coding-system
Eli Zaretskii <eliz@gnu.org>
parents: 51134
diff changeset
1841 ;; in standard-display-european-internal, which see. This is in
c85b00553f5e Add a comment in set-display-table-and-terminal-coding-system
Eli Zaretskii <eliz@gnu.org>
parents: 51134
diff changeset
1842 ;; case the user has used standard-display-european earlier in
c85b00553f5e Add a comment in set-display-table-and-terminal-coding-system
Eli Zaretskii <eliz@gnu.org>
parents: 51134
diff changeset
1843 ;; this session. (The MS-DOS port doesn't use that setup, so it
c85b00553f5e Add a comment in set-display-table-and-terminal-coding-system
Eli Zaretskii <eliz@gnu.org>
parents: 51134
diff changeset
1844 ;; doesn't need to undo it.)
51815
81538ceba107 2003-07-08 Kim F. Storm <storm@cua.dk>
John Paul Wallington <jpw@pobox.com>
parents: 51800
diff changeset
1845 (when standard-display-table
81538ceba107 2003-07-08 Kim F. Storm <storm@cua.dk>
John Paul Wallington <jpw@pobox.com>
parents: 51800
diff changeset
1846 (dotimes (i 128)
51849
48ac694d29fa (set-display-table-and-terminal-coding-system):
Richard M. Stallman <rms@gnu.org>
parents: 51815
diff changeset
1847 (aset standard-display-table (+ i 128) nil))))
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
1848 (or (eq window-system 'pc)
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
1849 (set-terminal-coding-system (or coding-system coding) display))))
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
1850
18066
eecd891e2b63 (set-language-environment): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 17991
diff changeset
1851 (defun set-language-environment (language-name)
18068
317f57f07b14 Doc fix for previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18066
diff changeset
1852 "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
1853 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
1854 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
1855 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
1856 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
1857 (interactive (list (read-language-name
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1858 nil
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65652
diff changeset
1859 "Set language environment (default English): ")))
19649
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1860 (if language-name
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1861 (if (symbolp language-name)
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1862 (setq language-name (symbol-name language-name)))
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
1863 (setq language-name "English"))
55047
428f891f9e31 Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents: 54507
diff changeset
1864 (let ((slot (assoc-string language-name language-info-alist t)))
51865
4510b8eaa84a (set-language-environment): Set
Kenichi Handa <handa@m17n.org>
parents: 51849
diff changeset
1865 (unless slot
18634
8b309d07a95e (set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents: 18633
diff changeset
1866 (error "Language environment not defined: %S" language-name))
51865
4510b8eaa84a (set-language-environment): Set
Kenichi Handa <handa@m17n.org>
parents: 51849
diff changeset
1867 (setq language-name (car slot)))
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1868 (if current-language-environment
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1869 (let ((func (get-language-info current-language-environment
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1870 'exit-function)))
20231
7f0ea4977b32 (set-language-environment): Run
Kenichi Handa <handa@m17n.org>
parents: 20165
diff changeset
1871 (run-hooks 'exit-language-environment-hook)
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
1872 (if (functionp func) (funcall func))))
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1873
71606
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1874 (reset-language-environment)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1875 ;; The features might set up coding systems.
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1876 (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
1877 (while required-features
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1878 (require (car required-features))
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1879 (setq required-features (cdr required-features))))
53355
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1880
71606
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1881 (setq current-language-environment language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1882
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1883 (set-language-environment-coding-systems language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1884 (set-language-environment-input-method language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1885 (set-language-environment-nonascii-translation language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1886 (set-language-environment-charset language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1887 (set-language-environment-fontset language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1888 ;; Unibyte setups if necessary.
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1889 (unless default-enable-multibyte-characters
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1890 (set-language-environment-unibyte language-name))
53355
fea694690fc7 (reset-language-environment): Call
Kenichi Handa <handa@m17n.org>
parents: 53262
diff changeset
1891
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1892 (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
1893 (if (functionp func)
22986
b5c383369b40 (language-info-alist): Doc-string modified.
Kenichi Handa <handa@m17n.org>
parents: 22948
diff changeset
1894 (funcall func)))
71606
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1895
20165
2d0abf12009b (set-default-coding-systems):
Kenichi Handa <handa@m17n.org>
parents: 20116
diff changeset
1896 (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
1897 (force-mode-line-update t))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1898
21856
68e39b75b862 (set-language-environment): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 21770
diff changeset
1899 (defun standard-display-european-internal ()
68e39b75b862 (set-language-environment): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 21770
diff changeset
1900 ;; 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
1901 (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
1902 ;; 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
1903 ;; 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
1904 ;; different there.
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
1905 (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
1906 (progn
59743
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1907 ;; Most X fonts used to do the wrong thing for latin-1 code 160.
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1908 (unless (and (eq window-system 'x)
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1909 ;; XFree86 4 has fixed the fonts.
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1910 (string= "The XFree86 Project, Inc" (x-server-vendor))
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1911 (> (aref (number-to-string (nth 2 (x-server-version))) 0)
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1912 ?3))
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1913 ;; Make non-line-break space display as a plain space.
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1914 (aset standard-display-table 160 [32]))
35248
058fe91d9676 (standard-display-european-internal):
Dave Love <fx@gnu.org>
parents: 35168
diff changeset
1915 ;; 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
1916 ;; 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
1917 ;; apostrophe. [This is actually RIGHT SINGLE QUOTATION MARK,
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
1918 ;; 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
1919 ;; 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
1920 ;; 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
1921 ;; proper windows-1252 coding system. --fx]
59743
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
1922 (aset standard-display-table 146 [39]))))
21856
68e39b75b862 (set-language-environment): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 21770
diff changeset
1923
71606
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1924 (defun set-language-environment-coding-systems (language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1925 "Do various coding system setups for language environment LANGUAGE-NAME."
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1926 (let* ((priority (get-language-info language-name 'coding-priority))
71606
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1927 (default-coding (car priority))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1928 (eol-type (coding-system-eol-type default-buffer-file-coding-system)))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1929 (if priority
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1930 (let ((categories (mapcar 'coding-system-category priority)))
23916
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
1931 (set-default-coding-systems
ccc00be328a1 (set-language-environment): On MS-DOS
Eli Zaretskii <eliz@gnu.org>
parents: 23889
diff changeset
1932 (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
1933 (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
1934 default-coding))
23087
4ae12d3c8c30 (select-message-coding-system): New
Kenichi Handa <handa@m17n.org>
parents: 23049
diff changeset
1935 (setq default-sendmail-coding-system default-coding)
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1936 (set-coding-priority categories)
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1937 (while priority
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1938 (set (car categories) (car priority))
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1939 (setq priority (cdr priority) categories (cdr categories)))
61064
a0bf3de65b02 Add comments before all calls of update-coding-systems-internal.
Kenichi Handa <handa@m17n.org>
parents: 60934
diff changeset
1940 ;; Changing the binding of a coding category requires this call.
22887
e24b79da83d6 (language-info-alist): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 22854
diff changeset
1941 (update-coding-systems-internal)))))
20733
079907c59fb2 (set-language-info): Doc-string
Kenichi Handa <handa@m17n.org>
parents: 20485
diff changeset
1942
71606
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1943 (defun set-language-environment-input-method (language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1944 "Do various input method setups for language environment LANGUAGE-NAME."
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1945 (let ((input-method (get-language-info language-name 'input-method)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1946 (when input-method
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1947 (setq default-input-method input-method)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1948 (if input-method-history
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1949 (setq input-method-history
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1950 (cons input-method
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1951 (delete input-method input-method-history)))))))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1952
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1953 (defun set-language-environment-nonascii-translation (language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1954 "Do unibyte/multibyte translation setup for language environment LANGUAGE-NAME."
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1955 (let ((nonascii (get-language-info language-name 'nonascii-translation))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1956 (dos-table
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1957 (if (eq window-system 'pc)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1958 (intern
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1959 (format "cp%d-nonascii-translation-table" dos-codepage)))))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1960 (cond
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1961 ((char-table-p nonascii)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1962 (setq nonascii-translation-table nonascii))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1963 ((and (eq window-system 'pc) (boundp dos-table))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1964 ;; DOS terminals' default is to use a special non-ASCII translation
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1965 ;; table as appropriate for the installed codepage.
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1966 (setq nonascii-translation-table (symbol-value dos-table)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1967 ((charsetp nonascii)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1968 (setq nonascii-insert-offset (- (make-char nonascii) 128))))))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1969
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1970 (defun set-language-environment-charset (language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1971 "Do various charset setups for language environment LANGUAGE-NAME."
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1972 (if (and utf-translate-cjk-mode
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1973 (not (eq utf-translate-cjk-lang-env language-name))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1974 (catch 'tag
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1975 (dolist (charset (get-language-info language-name 'charset))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1976 (if (memq charset utf-translate-cjk-charsets)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1977 (throw 'tag t)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1978 nil))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1979 (utf-translate-cjk-load-tables)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1980
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1981 (defun set-language-environment-fontset (language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1982 "Do various fontset setups for language environment LANGUAGE-NAME."
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1983 ;; Don't invoke fontset-related functions if fontsets aren't
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1984 ;; supported in this build of Emacs.
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1985 (if (fboundp 'fontset-list)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1986 (set-overriding-fontspec-internal
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1987 (get-language-info language-name 'overriding-fontspec))))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1988
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1989 (defun set-language-environment-unibyte (language-name)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1990 "Do various unibyte-mode setups for language environment LANGUAGE-NAME."
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1991 ;; Syntax and case table.
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1992 (let ((syntax (get-language-info language-name 'unibyte-syntax)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1993 (if syntax
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1994 (let ((set-case-syntax-set-multibyte nil))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1995 (load syntax nil t))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1996 ;; No information for syntax and case. Reset to the defaults.
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1997 (let ((syntax-table (standard-syntax-table))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1998 (standard-table (standard-case-table))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
1999 (case-table (make-char-table 'case-table))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2000 (ch (if (eq window-system 'pc) 128 160)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2001 (while (< ch 256)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2002 (modify-syntax-entry ch " " syntax-table)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2003 (setq ch (1+ ch)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2004 (dotimes (i 128)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2005 (aset case-table i (aref standard-table i)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2006 (set-char-table-extra-slot case-table 0 nil)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2007 (set-char-table-extra-slot case-table 1 nil)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2008 (set-char-table-extra-slot case-table 2 nil)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2009 (set-standard-case-table case-table))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2010 (let ((list (buffer-list)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2011 (while list
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2012 (with-current-buffer (car list)
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2013 (set-case-table (standard-case-table)))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2014 (setq list (cdr list))))))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2015 (set-display-table-and-terminal-coding-system language-name))
5aa535ebb24a (set-language-info): If LANG-ENV is
Kenichi Handa <handa@m17n.org>
parents: 70882
diff changeset
2016
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2017 (defsubst princ-list (&rest args)
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
2018 "Print all arguments with `princ', then print \"\\n\"."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2019 (while args (princ (car args)) (setq args (cdr args)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2020 (princ "\n"))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2021
23419
c251dd6b289e (setup-specified-language-environment): Add apropos-inhibit property.
Richard M. Stallman <rms@gnu.org>
parents: 23261
diff changeset
2022 (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
2023
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2024 ;; Print language-specific information such as input methods,
17758
8c67c2e2cc29 (build-describe-language-support-function,
Kenichi Handa <handa@m17n.org>
parents: 17526
diff changeset
2025 ;; 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
2026 ;; called from the menu:
18152
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2027 ;; [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
2028 ;; 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
2029 (defun describe-specified-language-support ()
19083
8fdb29b769ed Doc fixes; fix error message text.
Richard M. Stallman <rms@gnu.org>
parents: 19036
diff changeset
2030 "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
2031 (interactive)
18152
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2032 (let (language-name)
17840
2517414676ed (set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents: 17758
diff changeset
2033 (if (not (and (symbolp last-command-event)
28456
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
2034 (or (not (eq last-command-event 'Default))
7d3fed0367e6 Various menu changes.
Dave Love <fx@gnu.org>
parents: 28019
diff changeset
2035 (setq last-command-event 'English))
18152
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2036 (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
2037 (error "Bogus calling sequence"))
18152
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2038 (describe-language-environment language-name)))
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2039
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2040 (defun describe-language-environment (language-name)
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2041 "Describe how Emacs supports language environment LANGUAGE-NAME."
19653
431753f747ea (describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents: 19649
diff changeset
2042 (interactive
431753f747ea (describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents: 19649
diff changeset
2043 (list (read-language-name
431753f747ea (describe-input-method): Fix previous
Kenichi Handa <handa@m17n.org>
parents: 19649
diff changeset
2044 'documentation
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65652
diff changeset
2045 "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
2046 (if (null language-name)
8b309d07a95e (set-language-environment): Do the real work here.
Richard M. Stallman <rms@gnu.org>
parents: 18633
diff changeset
2047 (setq language-name current-language-environment))
18152
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2048 (if (or (null language-name)
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2049 (null (get-language-info language-name 'documentation)))
e184e7061c9a (describe-language-environment):
Richard M. Stallman <rms@gnu.org>
parents: 18068
diff changeset
2050 (error "No documentation for the specified language"))
19649
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
2051 (if (symbolp language-name)
b2bf3c43c86a (get-language-info): Accept a symbol
Kenichi Handa <handa@m17n.org>
parents: 19615
diff changeset
2052 (setq language-name (symbol-name language-name)))
50614
849192639a83 (describe-language-environment): At
Kenichi Handa <handa@m17n.org>
parents: 50537
diff changeset
2053 (dolist (feature (get-language-info language-name 'features))
849192639a83 (describe-language-environment): At
Kenichi Handa <handa@m17n.org>
parents: 50537
diff changeset
2054 (require feature))
59743
baaed9bd0e12 (standard-display-european-internal): Don't fiddle with latin-1 non-break space
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58148
diff changeset
2055 (let ((doc (get-language-info language-name 'documentation)))
40666
84cd0f5441e2 (describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40592
diff changeset
2056 (help-setup-xref (list #'describe-language-environment language-name)
84cd0f5441e2 (describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40592
diff changeset
2057 (interactive-p))
84cd0f5441e2 (describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40592
diff changeset
2058 (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
2059 (save-excursion
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2060 (set-buffer standard-output)
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2061 (insert language-name " language environment\n\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2062 (if (stringp doc)
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2063 (insert doc "\n\n"))
33226
d5f086989bfd (describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents: 33047
diff changeset
2064 (condition-case nil
d5f086989bfd (describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents: 33047
diff changeset
2065 (let ((str (eval (get-language-info language-name 'sample-text))))
d5f086989bfd (describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents: 33047
diff changeset
2066 (if (stringp str)
d5f086989bfd (describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents: 33047
diff changeset
2067 (insert "Sample text:\n " str "\n\n")))
d5f086989bfd (describe-language-environment): Eval
Kenichi Handa <handa@m17n.org>
parents: 33047
diff changeset
2068 (error nil))
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2069 (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
2070 (l (copy-sequence input-method-alist)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2071 (insert "Input methods")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2072 (when input-method
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65652
diff changeset
2073 (insert " (default " input-method ")")
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2074 (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
2075 (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
2076 (insert ":\n")
17840
2517414676ed (set-language-info): Change the special treatment
Kenichi Handa <handa@m17n.org>
parents: 17758
diff changeset
2077 (while l
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2078 (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
2079 (insert " " (car (car l)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2080 (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
2081 (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
2082 (goto-char (point-max))
34317
0378b3d77144 (describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents: 33866
diff changeset
2083 (insert " (\""
0378b3d77144 (describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents: 33866
diff changeset
2084 (if (stringp (nth 3 (car l)))
0378b3d77144 (describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents: 33866
diff changeset
2085 (nth 3 (car l))
0378b3d77144 (describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents: 33866
diff changeset
2086 (car (nth 3 (car l))))
0378b3d77144 (describe-language-environment): Fix
Kenichi Handa <handa@m17n.org>
parents: 33866
diff changeset
2087 "\" in mode line)\n"))
31245
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2088 (setq l (cdr l)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2089 (insert "\n"))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2090 (insert "Character sets:\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2091 (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
2092 (if (null l)
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2093 (insert " nothing specific to " language-name "\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2094 (while l
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2095 (insert " " (symbol-name (car l)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2096 (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
2097 (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
2098 (goto-char (point-max))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2099 (insert ": " (charset-description (car l)) "\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2100 (setq l (cdr l)))))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2101 (insert "\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2102 (insert "Coding systems:\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2103 (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
2104 (if (null l)
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2105 (insert " nothing specific to " language-name "\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2106 (while l
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2107 (insert " " (symbol-name (car l)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2108 (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
2109 (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
2110 (goto-char (point-max))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2111 (insert " (`"
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2112 (coding-system-mnemonic (car l))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2113 "' in mode line):\n\t"
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2114 (coding-system-doc-string (car l))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2115 "\n")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2116 (let ((aliases (coding-system-get (car l)
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2117 'alias-coding-systems)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2118 (when aliases
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2119 (insert "\t(alias:")
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2120 (while aliases
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2121 (insert " " (symbol-name (car aliases)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2122 (setq aliases (cdr aliases)))
113d32f65989 (help-xref-mule-regexp-template): New variable.
Kenichi Handa <handa@m17n.org>
parents: 31138
diff changeset
2123 (insert ")\n")))
40666
84cd0f5441e2 (describe-language-environment):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40592
diff changeset
2124 (setq l (cdr l)))))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2125
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2126 ;;; Locales.
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2127
28711
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2128 (defvar locale-translation-file-name nil
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2129 "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
2130
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2131 ;; 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
2132 ;; 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
2133 ;; should reflect the facilities of the base Emacs.
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2134 (defconst locale-language-names
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2135 (purecopy
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2136 '(
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2137 ;; 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
2138 ;; 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
2139 ;; 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
2140 ;; 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
2141 ;; see Internet RFC 2165 (1997-06) and
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2142 ;; 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
2143 ;; 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
2144 ;; 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
2145 ;; CODESET and MODIFIER are implementation-dependent.
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2146
52926
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2147 ;; jasonr comments: MS Windows uses three letter codes for
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2148 ;; languages instead of the two letter ISO codes that POSIX
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2149 ;; uses. In most cases the first two letters are the same, so
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2150 ;; most of the regexps in locale-language-names work. Japanese
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2151 ;; and Chinese are exceptions, which are listed in the
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2152 ;; non-standard section at the bottom of locale-language-names.
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2153
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2154 ("aa_DJ" . "Latin-1") ; Afar
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2155 ("aa" . "UTF-8")
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2156 ;; ab Abkhazian
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2157 ("af" . "Latin-1") ; Afrikaans
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2158 ("am" "Ethiopic" utf-8) ; Amharic
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2159 ("an" . "Latin-9") ; Aragonese
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2160 ; ar Arabic glibc uses 8859-6
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2161 ; as Assamese
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2162 ; ay Aymara
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2163 ("az" . "UTF-8") ; Azerbaijani
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2164 ; ba Bashkir
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2165 ("be" "Belarusian" cp1251) ; Belarusian [Byelorussian until early 1990s]
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2166 ("bg" "Bulgarian" cp1251) ; Bulgarian
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2167 ; bh Bihari
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2168 ; bi Bislama
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2169 ("bn" . "UTF-8") ; Bengali, Bangla
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2170 ("bo" . "Tibetan")
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2171 ("br" . "Latin-1") ; Breton
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
2172 ("bs" . "Latin-2") ; Bosnian
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2173 ("byn" . "UTF-8") ; Bilin; Blin
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2174 ("ca" . "Latin-1") ; Catalan
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2175 ; co Corsican
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2176 ("cs" "Czech" iso-8859-2)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2177 ("cy" "Welsh" iso-8859-14)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2178 ("da" . "Latin-1") ; Danish
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2179 ("de" "German" iso-8859-1)
69856
d6c2324400c7 (locale-language-names): Add a few MS Windows language codes.
Eli Zaretskii <eliz@gnu.org>
parents: 69854
diff changeset
2180 ; dv Divehi
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2181 ; dz Bhutani
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2182 ("el" "Greek" iso-8859-7)
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2183 ;; Users who specify "en" explicitly typically want Latin-1, not ASCII.
48073
1b334a808f0f Comment.
Dave Love <fx@gnu.org>
parents: 48017
diff changeset
2184 ;; That's actually what the GNU locales define, modulo things like
1b334a808f0f Comment.
Dave Love <fx@gnu.org>
parents: 48017
diff changeset
2185 ;; en_IN -- fx.
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2186 ("en_IN" "English" utf-8) ; glibc uses utf-8 for English in India
67320
08bc4f887f34 (set-language-info-internal): New
Kenichi Handa <handa@m17n.org>
parents: 67036
diff changeset
2187 ("en" "English" iso-8859-1) ; English
76003
8734f45b6613 (locale-language-names): Map "eo" to "Esperanto".
Kenichi Handa <handa@m17n.org>
parents: 75347
diff changeset
2188 ("eo" . "Esperanto") ; Esperanto
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2189 ("es" "Spanish" iso-8859-1)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2190 ("et" . "Latin-1") ; Estonian
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2191 ("eu" . "Latin-1") ; Basque
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2192 ("fa" . "UTF-8") ; Persian
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2193 ("fi" . "Latin-1") ; Finnish
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2194 ("fj" . "Latin-1") ; Fiji
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2195 ("fo" . "Latin-1") ; Faroese
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2196 ("fr" "French" iso-8859-1) ; French
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2197 ("fy" . "Latin-1") ; Frisian
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2198 ("ga" . "Latin-1") ; Irish Gaelic (new orthography)
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2199 ("gd" . "Latin-9") ; Scots Gaelic
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2200 ("gez" "Ethiopic" utf-8) ; Geez
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2201 ("gl" . "Latin-1") ; Gallegan; Galician
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2202 ; gn Guarani
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2203 ("gu" . "UTF-8") ; Gujarati
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2204 ("gv" . "Latin-1") ; Manx Gaelic
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2205 ; ha Hausa
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2206 ("he" "Hebrew" iso-8859-8)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2207 ("hi" "Devanagari" utf-8) ; Hindi
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2208 ("hr" "Croatian" iso-8859-2) ; Croatian
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2209 ("hu" . "Latin-2") ; Hungarian
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2210 ; hy Armenian
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2211 ; ia Interlingua
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2212 ("id" . "Latin-1") ; Indonesian
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2213 ; ie Interlingue
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2214 ; ik Inupiak
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2215 ("is" . "Latin-1") ; Icelandic
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2216 ("it" "Italian" iso-8859-1) ; Italian
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2217 ; iu Inuktitut
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2218 ("iw" "Hebrew" iso-8859-8)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2219 ("ja" "Japanese" euc-jp)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2220 ; jw Javanese
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2221 ("ka" "Georgian" georgian-ps) ; Georgian
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2222 ; kk Kazakh
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2223 ("kl" . "Latin-1") ; Greenlandic
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2224 ; km Cambodian
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2225 ("kn" "Kannada" utf-8)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2226 ("ko" "Korean" euc-kr)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2227 ; ks Kashmiri
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2228 ; ku Kurdish
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2229 ("kw" . "Latin-1") ; Cornish
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2230 ; ky Kirghiz
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2231 ("la" . "Latin-1") ; Latin
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2232 ("lb" . "Latin-1") ; Luxemburgish
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2233 ("lg" . "Laint-6") ; Ganda
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2234 ; ln Lingala
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2235 ("lo" "Lao" utf-8) ; Laothian
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2236 ("lt" "Lithuanian" iso-8859-13)
42050
6c1b3df2bbd2 (locale-language-names): Add various
Dave Love <fx@gnu.org>
parents: 41227
diff changeset
2237 ("lv" . "Latvian") ; Latvian, Lettish
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2238 ; mg Malagasy
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2239 ("mi" . "Latin-7") ; Maori
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2240 ("mk" "Cyrillic-ISO" iso-8859-5) ; Macedonian
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2241 ("ml" "Malayalam" utf-8)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2242 ("mn" . "UTF-8") ; Mongolian
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2243 ; mo Moldavian
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2244 ("mr" "Devanagari" utf-8) ; Marathi
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2245 ("ms" . "Latin-1") ; Malay
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2246 ("mt" . "Latin-3") ; Maltese
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2247 ; my Burmese
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2248 ; na Nauru
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2249 ("nb" . "Latin-1") ; Norwegian
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2250 ("ne" "Devanagari" utf-8) ; Nepali
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2251 ("nl" "Dutch" iso-8859-1)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2252 ("no" . "Latin-1") ; Norwegian
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2253 ("oc" . "Latin-1") ; Occitan
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2254 ("om_ET" . "UTF-8") ; (Afan) Oromo
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2255 ("om" . "Latin-1") ; (Afan) Oromo
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2256 ; or Oriya
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2257 ("pa" . "UTF-8") ; Punjabi
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2258 ("pl" . "Latin-2") ; Polish
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2259 ; ps Pashto, Pushto
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2260 ("pt" . "Latin-1") ; Portuguese
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2261 ; qu Quechua
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2262 ("rm" . "Latin-1") ; Rhaeto-Romanic
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2263 ; rn Kirundi
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2264 ("ro" "Romanian" iso-8859-2)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2265 ("ru_RU" "Russian" iso-8859-5)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2266 ("ru_UA" "Russian" koi8-u)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2267 ; rw Kinyarwanda
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2268 ("sa" . "Devanagari") ; Sanskrit
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2269 ; sd Sindhi
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2270 ("se" . "UTF-8") ; Northern Sami
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2271 ; sg Sangho
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2272 ("sh" . "Latin-2") ; Serbo-Croatian
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2273 ; si Sinhalese
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2274 ("sid" . "UTF-8") ; Sidamo
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2275 ("sk" "Slovak" iso-8859-2)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2276 ("sl" "Slovenian" iso-8859-2)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2277 ; sm Samoan
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2278 ; sn Shona
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2279 ("so_ET" "UTF-8") ; Somali
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2280 ("so" "Latin-1") ; Somali
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2281 ("sq" . "Latin-1") ; Albanian
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2282 ("sr_YU@cyrillic" . "Cyrillic-ISO") ; Serbian (Cyrillic alphabet)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2283 ("sr" . "Latin-2") ; Serbian (Latin alphabet)
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2284 ; ss Siswati
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2285 ("st" . "Latin-1") ; Sesotho
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2286 ; su Sundanese
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2287 ("sv" "Swedish" iso-8859-1) ; Swedish
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2288 ("sw" . "Latin-1") ; Swahili
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2289 ("ta" "Tamil" utf-8)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2290 ("te" . "UTF-8") ; Telugu
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2291 ("tg" "Tajik" koi8-t)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2292 ("th" "Thai" tis-620)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2293 ("ti" "Ethiopic" utf-8) ; Tigrinya
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2294 ("tig_ER" . "UTF-8") ; Tigre
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2295 ; tk Turkmen
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2296 ("tl" . "Latin-1") ; Tagalog
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2297 ; tn Setswana
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2298 ; to Tonga
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2299 ("tr" "Turkish" iso-8859-9)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2300 ; ts Tsonga
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2301 ("tt" . "UTF-8") ; Tatar
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2302 ; tw Twi
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2303 ; ug Uighur
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2304 ("uk" "Ukrainian" koi8-u)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2305 ("ur" . "UTF-8") ; Urdu
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2306 ("uz_UZ@cyrillic" . "UTF-8"); Uzbek
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2307 ("uz" . "Latin-1") ; Uzbek
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2308 ("vi" "Vietnamese" utf-8)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2309 ; vo Volapuk
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
2310 ("wa" . "Latin-1") ; Walloon
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2311 ; wo Wolof
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2312 ("xh" . "Latin-1") ; Xhosa
42050
6c1b3df2bbd2 (locale-language-names): Add various
Dave Love <fx@gnu.org>
parents: 41227
diff changeset
2313 ("yi" . "Windows-1255") ; Yiddish
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2314 ; yo Yoruba
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2315 ; za Zhuang
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2316 ("zh_HK" . "Chinese-Big5")
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2317 ("zh_TW" . "Chinese-Big5")
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2318 ("zh_CN" . "Chinese-GB")
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2319 ("zh" . "Chinese-GB")
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2320 ; zh_CN.GB18030/GB18030 \
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2321 ; zh_CN.GBK/GBK \
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2322 ; zh_HK/BIG5-HKSCS \
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2323 ("zu" . "Latin-1") ; Zulu
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2324
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2325 ;; ISO standard locales
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2326 ("c$" . "ASCII")
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2327 ("posix$" . "ASCII")
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2328
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2329 ;; The "IPA" Emacs language environment does not correspond
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2330 ;; 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
2331 ("ipa$" . "IPA")
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2332
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2333 ;; Nonstandard or obsolete language codes
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2334 ("cz" . "Czech") ; e.g. Solaris 2.6
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2335 ("ee" . "Latin-4") ; Estonian, e.g. X11R6.4
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2336 ("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
2337 ("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
2338 ("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
2339 ("jp" . "Japanese") ; e.g. MS Windows
40592
8149d14c23bf (locale-language-names): Add chs and
Jason Rumney <jasonr@gnu.org>
parents: 38414
diff changeset
2340 ("chs" . "Chinese-GB") ; MS Windows Chinese Simplified
8149d14c23bf (locale-language-names): Add chs and
Jason Rumney <jasonr@gnu.org>
parents: 38414
diff changeset
2341 ("cht" . "Chinese-BIG5") ; MS Windows Chinese Traditional
69856
d6c2324400c7 (locale-language-names): Add a few MS Windows language codes.
Eli Zaretskii <eliz@gnu.org>
parents: 69854
diff changeset
2342 ("gbz" . "UTF-8") ; MS Windows Dari Persian
d6c2324400c7 (locale-language-names): Add a few MS Windows language codes.
Eli Zaretskii <eliz@gnu.org>
parents: 69854
diff changeset
2343 ("div" . "UTF-8") ; MS Windows Divehi (Maldives)
d6c2324400c7 (locale-language-names): Add a few MS Windows language codes.
Eli Zaretskii <eliz@gnu.org>
parents: 69854
diff changeset
2344 ("wee" . "Latin-2") ; MS Windows Lower Sorbian
d6c2324400c7 (locale-language-names): Add a few MS Windows language codes.
Eli Zaretskii <eliz@gnu.org>
parents: 69854
diff changeset
2345 ("wen" . "Latin-2") ; MS Windows Upper Sorbian
41136
76fbe1b154a2 Fix paren-typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41126
diff changeset
2346 ))
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2347 "Alist of locale regexps vs the corresponding languages and coding systems.
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
2348 Each element has this form:
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2349 \(LOCALE-REGEXP LANG-ENV CODING-SYSTEM)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2350 The first element whose LOCALE-REGEXP matches the start of a
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
2351 downcased locale specifies the LANG-ENV \(language environment)
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2352 and CODING-SYSTEM corresponding to that locale. If there is no
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2353 appropriate language environment, the element may have this form:
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2354 \(LOCALE-REGEXP . LANG-ENV)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2355 In this case, LANG-ENV is one of generic language environments for an
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2356 specific encoding such as \"Latin-1\" and \"UTF-8\".")
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2357
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2358 (defconst locale-charset-language-names
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2359 (purecopy
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2360 '((".*8859[-_]?1\\>" . "Latin-1")
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2361 (".*8859[-_]?2\\>" . "Latin-2")
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2362 (".*8859[-_]?3\\>" . "Latin-3")
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2363 (".*8859[-_]?4\\>" . "Latin-4")
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2364 (".*8859[-_]?9\\>" . "Latin-5")
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2365 (".*8859[-_]?14\\>" . "Latin-8")
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2366 (".*8859[-_]?15\\>" . "Latin-9")
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2367 (".*utf\\(?:-?8\\)?\\>" . "UTF-8")
46501
347694b9f9ff (locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents: 46308
diff changeset
2368 ;; 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
2369 ;; the currency, rather than the charset.)
347694b9f9ff (locale-language-names): Fix be, add
Dave Love <fx@gnu.org>
parents: 46308
diff changeset
2370 (".*@euro\\>" . "Latin-9")))
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2371 "List of pairs of locale regexps and charset language names.
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2372 The first element whose locale regexp matches the start of a downcased locale
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2373 specifies the language name whose charset corresponds to that locale.
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2374 This language name is used if the locale is not listed in
77918
80ba9b48c547 (toggle-enable-multibyte-characters, sort-coding-systems,
Juanma Barranquero <lekktu@gmail.com>
parents: 76003
diff changeset
2375 `locale-language-names'.")
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2376
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2377 (defconst locale-preferred-coding-systems
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2378 (purecopy
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2379 '((".*8859[-_]?1\\>" . iso-8859-1)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2380 (".*8859[-_]?2\\>" . iso-8859-2)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2381 (".*8859[-_]?3\\>" . iso-8859-3)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2382 (".*8859[-_]?4\\>" . iso-8859-4)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2383 (".*8859[-_]?9\\>" . iso-8859-9)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2384 (".*8859[-_]?14\\>" . iso-8859-14)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2385 (".*8859[-_]?15\\>" . iso-8859-15)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2386 (".*utf\\(?:-?8\\)?" . utf-8)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2387 ;; utf-8@euro exists, so put this after utf-8. (@euro really
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2388 ;; specifies the currency, rather than the charset.)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2389 (".*@euro" . iso-8859-15)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2390 ("koi8-?r" . koi8-r)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2391 ("koi8-?u" . koi8-u)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2392 ("tcvn" . tcvn)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2393 ("big5" . big5)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2394 ("euc-?tw" . euc-tw)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2395 ;; We don't support GBK, but as it is upper compatible with
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2396 ;; GB-2312, we setup the default coding system to gb2312.
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2397 ("gbk" . gb2312)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2398 ;; We don't support BIG5-HKSCS, but as it is upper compatible with
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2399 ;; BIG5, we setup the default coding system to big5.
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2400 ("big5hkscs" . big5)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2401 ("ja.*[._]euc" . japanese-iso-8bit)
41126
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2402 ("ja.*[._]jis7" . iso-2022-jp)
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2403 ("ja.*[._]pck" . japanese-shift-jis)
91e3a6470ffd (describe-input-method): Setup xref.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40723
diff changeset
2404 ("ja.*[._]sjis" . japanese-shift-jis)
44643
10292933863d (locale-preferred-coding-systems): Add "jpn".
Jason Rumney <jasonr@gnu.org>
parents: 44440
diff changeset
2405 ("jpn" . japanese-shift-jis) ; MS-Windows uses this.
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2406 ))
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2407 "List of pairs of locale regexps and preferred coding systems.
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2408 The first element whose locale regexp matches the start of a downcased locale
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2409 specifies the coding system to prefer when using that locale.
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2410 This coding system is used if the locale specifies a specific charset.")
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2411
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2412 (defun locale-name-match (key alist)
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2413 "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
2414 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
2415 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
2416 (let (element)
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2417 (while (and alist (not element))
41223
0ca8b0f41ebd (locale-name-match): Use \` and \(?:.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41220
diff changeset
2418 (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
2419 (setq element (car alist)))
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2420 (setq alist (cdr alist)))
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2421 (cdr element)))
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2422
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2423 (defun locale-charset-match-p (charset1 charset2)
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2424 "Whether charset names (strings) CHARSET1 and CHARSET2 are equivalent.
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2425 Matching is done ignoring case and any hyphens and underscores in the
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2426 names. E.g. `ISO_8859-1' and `iso88591' both match `iso-8859-1'."
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2427 (setq charset1 (replace-regexp-in-string "[-_]" "" charset1))
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2428 (setq charset2 (replace-regexp-in-string "[-_]" "" charset2))
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2429 (eq t (compare-strings charset1 nil nil charset2 nil nil t)))
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2430
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2431 (defvar locale-charset-alist nil
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2432 "Coding system alist keyed on locale-style charset name.
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2433 Used by `locale-charset-to-coding-system'.")
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2434
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2435 (defun locale-charset-to-coding-system (charset)
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2436 "Find coding system corresponding to CHARSET.
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2437 CHARSET is any sort of non-Emacs charset name, such as might be used
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2438 in a locale codeset, or elsewhere. It is matched to a coding system
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2439 first by case-insensitive lookup in `locale-charset-alist'. Then
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2440 matches are looked for in the coding system list, treating case and
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2441 the characters `-' and `_' as insignificant. The coding system base
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2442 is returned. Thus, for instance, if charset \"ISO8859-2\",
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2443 `iso-latin-2' is returned."
55047
428f891f9e31 Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents: 54507
diff changeset
2444 (or (car (assoc-string charset locale-charset-alist t))
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2445 (let ((cs coding-system-alist)
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2446 c)
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2447 (while (and (not c) cs)
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2448 (if (locale-charset-match-p charset (caar cs))
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2449 (setq c (intern (caar cs)))
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2450 (pop cs)))
52926
e165768a25a7 (locale-charset-to-coding-system):
Dave Love <fx@gnu.org>
parents: 52856
diff changeset
2451 (if c (coding-system-base c)))))
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2452
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2453 ;; Fixme: This ought to deal with the territory part of the locale
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2454 ;; too, for setting things such as calendar holidays, ps-print paper
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2455 ;; size, spelling dictionary.
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2456
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2457 (defun set-locale-environment (&optional locale-name frame)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2458 "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
2459 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
2460 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
2461
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2462 LOCALE-NAME should be a string which is the name of a locale supported
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2463 by the system. Often it is of the form xx_XX.CODE, where xx is a
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2464 language, XX is a country, and CODE specifies a character set and
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2465 coding system. For example, the locale name \"ja_JP.EUC\" might name
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2466 a locale for Japanese in Japan using the `japanese-iso-8bit'
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2467 coding-system. The name may also have a modifier suffix, e.g. `@euro'
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2468 or `@cyrillic'.
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2469
40723
20229bfaf7ce (set-locale-environment): Make it interactive; make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 40666
diff changeset
2470 If LOCALE-NAME is nil, its value is taken from the environment
46674
b67e860b0783 Doc fixes.
Dave Love <fx@gnu.org>
parents: 46642
diff changeset
2471 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
2472
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2473 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
2474 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
2475 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
2476 `locale-translation-file-name'.
8b6e9e1a553b (set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents: 31423
diff changeset
2477
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2478 If FRAME is non-nil, only set the keyboard coding system and the
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2479 terminal coding system for the terminal of that frame, and don't
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2480 touch session-global parameters like the language environment.
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2481
31569
8b6e9e1a553b (set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents: 31423
diff changeset
2482 See also `locale-charset-language-names', `locale-language-names',
8b6e9e1a553b (set-locale-environment): Doc fix.
Dave Love <fx@gnu.org>
parents: 31423
diff changeset
2483 `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
2484 (interactive "sSet environment for locale: ")
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49435
diff changeset
2485
28711
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2486 ;; Do this at runtime for the sake of binaries possibly transported
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2487 ;; to a system without X.
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2488 (setq locale-translation-file-name
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2489 (let ((files
68590
227c1c287c2f (set-locale-environment): Add "/usr/share/X11/locale/locale.alias" to
Kenichi Handa <handa@m17n.org>
parents: 67358
diff changeset
2490 '("/usr/share/X11/locale/locale.alias" ; e.g. X11R7
227c1c287c2f (set-locale-environment): Add "/usr/share/X11/locale/locale.alias" to
Kenichi Handa <handa@m17n.org>
parents: 67358
diff changeset
2491 "/usr/lib/X11/locale/locale.alias" ; e.g. X11R6.4
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2492 "/usr/X11R6/lib/X11/locale/locale.alias" ; XFree86, e.g. RedHat 4.2
28711
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2493 "/usr/openwin/lib/locale/locale.alias" ; e.g. Solaris 2.6
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2494 ;;
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2495 ;; The following name appears after the X-related names above,
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2496 ;; since the X-related names are what X actually uses.
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2497 "/usr/share/locale/locale.alias" ; GNU/Linux sans X
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2498 )))
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2499 (while (and files (not (file-exists-p (car files))))
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2500 (setq files (cdr files)))
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2501 (car files)))
039f763895c3 (locale-translation-file-name):
Dave Love <fx@gnu.org>
parents: 28477
diff changeset
2502
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2503 (let ((locale locale-name))
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2504
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2505 (unless locale
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2506 ;; Use the first of these three environment variables
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2507 ;; that has a nonempty value.
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2508 (let ((vars '("LC_ALL" "LC_CTYPE" "LANG")))
49042
01956f552316 (set-locale-environment): Ignore
Dave Love <fx@gnu.org>
parents: 49029
diff changeset
2509 (while (and vars
01956f552316 (set-locale-environment): Ignore
Dave Love <fx@gnu.org>
parents: 49029
diff changeset
2510 (= 0 (length locale))) ; nil or empty string
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2511 (setq locale (getenv (pop vars) frame)))))
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2512
65311
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2513 (unless locale
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2514 ;; The two tests are kept separate so the byte-compiler sees
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2515 ;; that mac-get-preference is only called after checking its existence.
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2516 (when (fboundp 'mac-get-preference)
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2517 (setq locale (mac-get-preference "AppleLocale"))
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2518 (unless locale
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2519 (let ((languages (mac-get-preference "AppleLanguages")))
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2520 (unless (= (length languages) 0) ; nil or empty vector
bea70b37d446 (set-locale-environment): Soothe compiler.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65204
diff changeset
2521 (setq locale (aref languages 0)))))))
61557
44bd70f63148 (set-locale-environment): On Mac OS, use preferences AppleLocale and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61064
diff changeset
2522 (unless (or locale (not (boundp 'mac-system-locale)))
44bd70f63148 (set-locale-environment): On Mac OS, use preferences AppleLocale and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61064
diff changeset
2523 (setq locale mac-system-locale))
44bd70f63148 (set-locale-environment): On Mac OS, use preferences AppleLocale and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61064
diff changeset
2524
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2525 (when locale
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2526
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2527 ;; Translate "swedish" into "sv_SE.ISO8859-1", and so on,
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2528 ;; using the translation file that many systems have.
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2529 (when locale-translation-file-name
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2530 (with-temp-buffer
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2531 (insert-file-contents locale-translation-file-name)
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2532 (when (re-search-forward
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2533 (concat "^" (regexp-quote locale) ":?[ \t]+") nil t)
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2534 (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
2535
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2536 ;; 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
2537 ;; an explicit locale name, as their defaults are set from
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2538 ;; 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
2539 ;; 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
2540 (when locale-name
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2541 (setq system-messages-locale locale)
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2542 (setq system-time-locale locale))
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2543
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2544 (setq locale (downcase locale))
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2545
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2546 (let ((language-name
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2547 (locale-name-match locale locale-language-names))
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2548 (charset-language-name
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2549 (locale-name-match locale locale-charset-language-names))
69854
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2550 (default-eol-type (coding-system-eol-type
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2551 default-buffer-file-coding-system))
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2552 (coding-system
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2553 (or (locale-name-match locale locale-preferred-coding-systems)
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2554 (when locale
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2555 (if (string-match "\\.\\([^@]+\\)" locale)
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2556 (locale-charset-to-coding-system
61557
44bd70f63148 (set-locale-environment): On Mac OS, use preferences AppleLocale and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61064
diff changeset
2557 (match-string 1 locale))))
44bd70f63148 (set-locale-environment): On Mac OS, use preferences AppleLocale and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 61064
diff changeset
2558 (and (eq system-type 'macos) mac-system-coding-system))))
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2559
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2560 (if (consp language-name)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2561 ;; locale-language-names specify both lang-env and coding.
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2562 ;; But, what specified in locale-preferred-coding-systems
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2563 ;; has higher priority.
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2564 (setq coding-system (or coding-system
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2565 (nth 1 language-name))
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2566 language-name (car language-name))
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2567 ;; Otherwise, if locale is not listed in locale-language-names,
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2568 ;; use what listed in locale-charset-language-names.
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2569 (if (not language-name)
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2570 (setq language-name charset-language-name)))
26139
ca31ffbed318 * (locale-language-names):
Paul Eggert <eggert@twinsun.com>
parents: 26085
diff changeset
2571
69854
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2572 ;; If a specific EOL conversion was specified in the default
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2573 ;; buffer-file-coding-system, preserve it in the coding system
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2574 ;; we will be using from now on.
69918
96ba55a8591b (set-locale-environment): Fix last change for when the locale's preferences
Eli Zaretskii <eliz@gnu.org>
parents: 69856
diff changeset
2575 (if (and (memq default-eol-type '(0 1 2 unix dos mac))
96ba55a8591b (set-locale-environment): Fix last change for when the locale's preferences
Eli Zaretskii <eliz@gnu.org>
parents: 69856
diff changeset
2576 coding-system
96ba55a8591b (set-locale-environment): Fix last change for when the locale's preferences
Eli Zaretskii <eliz@gnu.org>
parents: 69856
diff changeset
2577 (coding-system-p coding-system))
69854
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2578 (setq coding-system (coding-system-change-eol-conversion
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2579 coding-system default-eol-type)))
1b196049b994 (set-locale-environment): Make sure the coding-system preferred by the
Eli Zaretskii <eliz@gnu.org>
parents: 69638
diff changeset
2580
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2581 (when language-name
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2582
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2583 ;; 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
2584 ;; to do it for both unibyte and multibyte modes.
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2585 (unless frame
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2586 (set-language-environment language-name))
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2587
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2588 ;; If default-enable-multibyte-characters is nil,
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2589 ;; we are using single-byte characters,
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2590 ;; so the display table and terminal coding system are irrelevant.
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2591 (when default-enable-multibyte-characters
60934
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2592 (set-display-table-and-terminal-coding-system
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2593 language-name coding-system frame))
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2594
48896
41a95e836e30 (standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents: 48879
diff changeset
2595 ;; Set the `keyboard-coding-system' if appropriate (tty
41a95e836e30 (standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents: 48879
diff changeset
2596 ;; only). At least X and MS Windows can generate
41a95e836e30 (standard-keyboard-coding-systems):
Dave Love <fx@gnu.org>
parents: 48879
diff changeset
2597 ;; multilingual input.
83298
ed09a89e2b25 Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents: 83295
diff changeset
2598 ;; XXX This was disabled unless `window-system', but that
ed09a89e2b25 Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents: 83295
diff changeset
2599 ;; leads to buggy behaviour when a tty frame is opened
ed09a89e2b25 Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents: 83295
diff changeset
2600 ;; later. Setting the keyboard coding system has no adverse
ed09a89e2b25 Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents: 83295
diff changeset
2601 ;; effect on X, so let's do it anyway. -- Lorentey
ed09a89e2b25 Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents: 83295
diff changeset
2602 (let ((kcs (or coding-system
ed09a89e2b25 Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents: 83295
diff changeset
2603 (car (get-language-info language-name
ed09a89e2b25 Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support.
Karoly Lorentey <lorentey@elte.hu>
parents: 83295
diff changeset
2604 'coding-system)))))
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2605 (if kcs (set-keyboard-coding-system kcs frame)))
41223
0ca8b0f41ebd (locale-name-match): Use \` and \(?:.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41220
diff changeset
2606
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2607 (unless frame
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2608 (setq locale-coding-system
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2609 (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
2610
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2611 (when (and (not frame)
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2612 coding-system
60603
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2613 (not (coding-system-equal coding-system
10307e6c7baa (locale-language-names): Modify the
Kenichi Handa <handa@m17n.org>
parents: 60092
diff changeset
2614 locale-coding-system)))
36910
88d7b5c216a2 (set-locale-environment): Set
Gerd Moellmann <gerd@gnu.org>
parents: 36863
diff changeset
2615 (prefer-coding-system coding-system)
74607
2408d46ef69e (set-locale-environment): Set
Kenichi Handa <handa@m17n.org>
parents: 74605
diff changeset
2616 ;; Fixme: perhaps prefer-coding-system should set this too.
2408d46ef69e (set-locale-environment): Set
Kenichi Handa <handa@m17n.org>
parents: 74605
diff changeset
2617 ;; But it's not the time to do such a fundamental change.
2408d46ef69e (set-locale-environment): Set
Kenichi Handa <handa@m17n.org>
parents: 74605
diff changeset
2618 (setq default-sendmail-coding-system coding-system)
49796
9444af9dba75 (locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents: 49779
diff changeset
2619 (setq locale-coding-system coding-system))))
9444af9dba75 (locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents: 49779
diff changeset
2620
60092
04686828d0da 2004-11-08 Benjamin Riefenstahl <Benjamin.Riefenstahl@epost.de>
Jason Rumney <jasonr@gnu.org>
parents: 59906
diff changeset
2621 ;; On Windows, override locale-coding-system,
04686828d0da 2004-11-08 Benjamin Riefenstahl <Benjamin.Riefenstahl@epost.de>
Jason Rumney <jasonr@gnu.org>
parents: 59906
diff changeset
2622 ;; keyboard-coding-system with system codepage. Note:
04686828d0da 2004-11-08 Benjamin Riefenstahl <Benjamin.Riefenstahl@epost.de>
Jason Rumney <jasonr@gnu.org>
parents: 59906
diff changeset
2623 ;; selection-coding-system is already set in w32select.c.
55469
df6db683f4f1 Fix last change.
Jason Rumney <jasonr@gnu.org>
parents: 55465
diff changeset
2624 (when (boundp 'w32-ansi-code-page)
55465
9629ef26c137 (set-locale-environment): On MS-Windows use ansi code-page for default
Jason Rumney <jasonr@gnu.org>
parents: 55047
diff changeset
2625 (let ((code-page-coding (intern (format "cp%d" w32-ansi-code-page))))
9629ef26c137 (set-locale-environment): On MS-Windows use ansi code-page for default
Jason Rumney <jasonr@gnu.org>
parents: 55047
diff changeset
2626 (when (coding-system-p code-page-coding)
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2627 (unless frame (setq locale-coding-system code-page-coding))
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2628 (set-keyboard-coding-system code-page-coding frame)
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2629 (set-terminal-coding-system code-page-coding frame))))
55465
9629ef26c137 (set-locale-environment): On MS-Windows use ansi code-page for default
Jason Rumney <jasonr@gnu.org>
parents: 55047
diff changeset
2630
59906
9c28fead9bf2 (set-locale-environment): Set file-name coding system to utf-8 on Darwin.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 59743
diff changeset
2631 (when (eq system-type 'darwin)
60934
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2632 ;; On Darwin, file names are always encoded in utf-8, no matter
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2633 ;; the locale.
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2634 (setq default-file-name-coding-system 'utf-8)
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2635 ;; Mac OS X's Terminal.app by default uses utf-8 regardless of
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2636 ;; the locale.
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2637 (when (and (null window-system)
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2638 (equal (getenv "TERM_PROGRAM" frame) "Apple_Terminal"))
60934
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2639 (set-terminal-coding-system 'utf-8)
439d4fa30f21 (set-locale-environment): For Mac OS X's Terminal.app, use utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60603
diff changeset
2640 (set-keyboard-coding-system 'utf-8)))
59906
9c28fead9bf2 (set-locale-environment): Set file-name coding system to utf-8 on Darwin.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 59743
diff changeset
2641
49796
9444af9dba75 (locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents: 49779
diff changeset
2642 ;; Default to A4 paper if we're not in a C, POSIX or US locale.
51979
c10df4bc9f06 (set-locale-environment): langinfo renamed to locale-info.
Richard M. Stallman <rms@gnu.org>
parents: 51865
diff changeset
2643 ;; (See comments in Flocale_info.)
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2644 (unless frame
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2645 (let ((locale locale)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2646 (paper (locale-info 'paper)))
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2647 (if paper
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2648 ;; This will always be null at the time of writing.
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2649 (cond
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2650 ((equal paper '(216 279))
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2651 (setq ps-paper-type 'letter))
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2652 ((equal paper '(210 297))
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2653 (setq ps-paper-type 'a4)))
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2654 (let ((vars '("LC_ALL" "LC_PAPER" "LANG")))
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2655 (while (and vars (= 0 (length locale)))
83594
2716535391b7 Rudimentary fix for environment variable handling.
Miles Bader <miles@gnu.org>
parents: 83556
diff changeset
2656 (setq locale (getenv (pop vars) frame))))
83300
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2657 (when locale
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2658 ;; As of glibc 2.2.5, these are the only US Letter locales,
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2659 ;; and the rest are A4.
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2660 (setq ps-paper-type
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2661 (or (locale-name-match locale '(("c$" . letter)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2662 ("posix$" . letter)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2663 (".._us" . letter)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2664 (".._pr" . letter)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2665 (".._ca" . letter)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2666 ("enu$" . letter) ; Windows
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2667 ("esu$" . letter)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2668 ("enc$" . letter)
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2669 ("frc$" . letter)))
6deb860255f3 Support for ttys with different character locale settings.
Karoly Lorentey <lorentey@elte.hu>
parents: 83298
diff changeset
2670 'a4)))))))
49796
9444af9dba75 (locale-language-names): Use Italian,
Dave Love <fx@gnu.org>
parents: 49779
diff changeset
2671 nil)
26085
2473e4ca59b3 * international/mule-cmds.el (global-map):
Paul Eggert <eggert@twinsun.com>
parents: 26010
diff changeset
2672
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2673 ;;; Charset property
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2674
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
2675 (defun get-charset-property (charset propname)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2676 "Return the value of CHARSET's PROPNAME property.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2677 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
2678 (put-charset-property CHARSET PROPNAME VALUE)."
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
2679 (and (not (eq charset 'composition))
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
2680 (plist-get (charset-plist charset) propname)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2681
23889
3b5045c64434 (find-coding-systems-for-charsets):
Kenichi Handa <handa@m17n.org>
parents: 23583
diff changeset
2682 (defun put-charset-property (charset propname value)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2683 "Store CHARSETS's PROPNAME property with value VALUE.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2684 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
2685 (or (eq charset 'composition)
f47eb2d1375c (get-charset-property): If CHARSET is
Kenichi Handa <handa@m17n.org>
parents: 23478
diff changeset
2686 (set-charset-plist charset
f47eb2d1375c (get-charset-property): If CHARSET is
Kenichi Handa <handa@m17n.org>
parents: 23478
diff changeset
2687 (plist-put (charset-plist charset) propname value))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2688
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2689 ;;; Character code property
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2690 (put 'char-code-property-table 'char-table-extra-slots 0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2691
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2692 (defvar char-code-property-table
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2693 (make-char-table 'char-code-property-table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2694 "Char-table containing a property list of each character code.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2695
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2696 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
2697 `put-char-code-property'.")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2698
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2699 (defun get-char-code-property (char propname)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2700 "Return the value of CHAR's PROPNAME property in `char-code-property-table'."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2701 (let ((plist (aref char-code-property-table char)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2702 (if (listp plist)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2703 (car (cdr (memq propname plist))))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2704
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2705 (defun put-char-code-property (char propname value)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2706 "Store CHAR's PROPNAME property with VALUE in `char-code-property-table'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2707 It can be retrieved with `(get-char-code-property CHAR PROPNAME)'."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2708 (let ((plist (aref char-code-property-table char)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2709 (if plist
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2710 (let ((slot (memq propname plist)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2711 (if slot
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2712 (setcar (cdr slot) value)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2713 (nconc plist (list propname value))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2714 (aset char-code-property-table char (list propname value)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2715
24399
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2716
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2717 ;; Pretty description of encoded string
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2718
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2719 ;; 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
2720 (defvar iso-2022-control-alist
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2721 '((?\x1b . "ESC")
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2722 (?\x0e . "SO")
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2723 (?\x0f . "SI")
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2724 (?\x8e . "SS2")
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2725 (?\x8f . "SS3")
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2726 (?\x9b . "CSI")))
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2727
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2728 (defun encoded-string-description (str coding-system)
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2729 "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
2730 (setq str (string-as-unibyte str))
28475
5eb1da819180 (encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents: 28456
diff changeset
2731 (mapconcat
28897
f8602df501c6 (encode-coding-char): An ASCII character is always encodable.
Kenichi Handa <handa@m17n.org>
parents: 28828
diff changeset
2732 (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
2733 ;; Try to get a pretty description for ISO 2022 escape sequences.
5eb1da819180 (encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents: 28456
diff changeset
2734 (function (lambda (x) (or (cdr (assq x iso-2022-control-alist))
67036
d7b4fada70f0 (encoded-string-description): Use Lisp-readable syntax for hex.
Juri Linkov <juri@jurta.org>
parents: 67025
diff changeset
2735 (format "#x%02X" x))))
d7b4fada70f0 (encoded-string-description): Use Lisp-readable syntax for hex.
Juri Linkov <juri@jurta.org>
parents: 67025
diff changeset
2736 (function (lambda (x) (format "#x%02X" x))))
28475
5eb1da819180 (encoded-string-description):
Kenichi Handa <handa@m17n.org>
parents: 28456
diff changeset
2737 str " "))
24399
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2738
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2739 (defun encode-coding-char (char coding-system)
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2740 "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
2741 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
2742 (let ((str1 (string-as-multibyte (char-to-string char)))
2068f55d4ffe (encode-coding-char): Make strings
Kenichi Handa <handa@m17n.org>
parents: 29027
diff changeset
2743 (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
2744 (safe-chars (and coding-system
5343896202ce (encode-coding-char): Check property safe-chars instead of
Kenichi Handa <handa@m17n.org>
parents: 32439
diff changeset
2745 (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
2746 (charset (char-charset char))
24399
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2747 enc1 enc2 i1 i2)
33047
5343896202ce (encode-coding-char): Check property safe-chars instead of
Kenichi Handa <handa@m17n.org>
parents: 32439
diff changeset
2748 (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
2749 (eq charset 'ascii)
33047
5343896202ce (encode-coding-char): Check property safe-chars instead of
Kenichi Handa <handa@m17n.org>
parents: 32439
diff changeset
2750 (and safe-chars (aref safe-chars char)))
24399
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2751 ;; 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
2752 ;; CHAR will put extra control sequences (usually to designate
52856
05c3a0a53ad9 (find-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents: 52823
diff changeset
2753 ;; ASCII charset) at the tail if type of CODING is ISO 2022.
24399
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2754 ;; 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
2755 ;; 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
2756 ;; tail of both encoded strings are the same.
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2757
29227
2068f55d4ffe (encode-coding-char): Make strings
Kenichi Handa <handa@m17n.org>
parents: 29027
diff changeset
2758 (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
2759 i1 (length enc1)
29227
2068f55d4ffe (encode-coding-char): Make strings
Kenichi Handa <handa@m17n.org>
parents: 29027
diff changeset
2760 enc2 (encode-coding-string str2 coding-system)
24399
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2761 i2 (length enc2))
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2762 (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
2763 (setq i1 (1- i1) i2 (1- i2)))
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2764
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2765 ;; 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
2766 ;; 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
2767 ;; exclude.
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2768 (substring enc2 0 i2))))
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2769
eb23f0e62cd5 (iso-2022-control-alist): New variable.
Kenichi Handa <handa@m17n.org>
parents: 24300
diff changeset
2770
58055
005c3ebdd545 (select-safe-coding-system-interactively):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57932
diff changeset
2771 ;; arch-tag: b382c432-4b36-460e-bf4c-05efd0bb18dc
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2772 ;;; mule-cmds.el ends here