aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa1997-02-26 12:50:36 +0000
committerKenichi Handa1997-02-26 12:50:36 +0000
commitef8a8c8cba75436ee7e6cb1fe0c0b42f5c605a9f (patch)
tree8a8f600936b93d2d7fac54fc7213246963b7c2d1
parentf35c859ceaa36ad5c585652b0c17a03326e9381c (diff)
downloademacs-ef8a8c8cba75436ee7e6cb1fe0c0b42f5c605a9f.tar.gz
emacs-ef8a8c8cba75436ee7e6cb1fe0c0b42f5c605a9f.zip
(mule-keymap): Re-arranged.
(set-language-info): Typo fixed in docstring. (read-language-name): Use assoc-ignore-case to allow lose matching. (read-language-and-input-method-name): Likewise.
-rw-r--r--lisp/international/mule-cmds.el76
1 files changed, 49 insertions, 27 deletions
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index bd95eeb7458..6b7eb2add8f 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -42,6 +42,11 @@
42(fset 'mule-describe-language-support-prefix 42(fset 'mule-describe-language-support-prefix
43 mule-describe-language-support-map) 43 mule-describe-language-support-map)
44 44
45(defvar mule-set-language-environment-map
46 (make-sparse-keymap "Set Language Environment"))
47(fset 'mule-set-language-environment-prefix
48 mule-set-language-environment-map)
49
45(define-key mule-keymap "m" 'toggle-enable-multibyte-characters) 50(define-key mule-keymap "m" 'toggle-enable-multibyte-characters)
46(define-key mule-keymap "f" 'set-buffer-file-coding-system) 51(define-key mule-keymap "f" 'set-buffer-file-coding-system)
47(define-key mule-keymap "t" 'set-terminal-coding-system) 52(define-key mule-keymap "t" 'set-terminal-coding-system)
@@ -54,30 +59,38 @@
54(define-key help-map "C" 'describe-current-coding-system) 59(define-key help-map "C" 'describe-current-coding-system)
55(define-key help-map "h" 'view-hello-file) 60(define-key help-map "h" 'view-hello-file)
56 61
62(define-key mule-keymap [view-hello-file]
63 '("Show many languages" . view-hello-file))
64(define-key mule-keymap [mule-diag]
65 '("Show diagnosis for MULE" . mule-diag))
66(define-key mule-keymap [separator-coding-system]
67 '("--"))
57(define-key mule-keymap [set-process-coding-system] 68(define-key mule-keymap [set-process-coding-system]
58 '(" ... of process" . set-current-process-coding-system)) 69 '("Set coding system of process" . set-current-process-coding-system))
59(define-key mule-keymap [set-keyboard-coding-system] 70(define-key mule-keymap [set-keyboard-coding-system]
60 '(" ... of keyboard" . set-keyboard-coding-system)) 71 '("Set coding system of keyboard" . set-keyboard-coding-system))
61(define-key mule-keymap [set-terminal-coding-system] 72(define-key mule-keymap [set-terminal-coding-system]
62 '(" ... of terminal" . set-terminal-coding-system)) 73 '("Set coding system of terminal" . set-terminal-coding-system))
63(define-key mule-keymap [set-buffer-file-coding-system] 74(define-key mule-keymap [set-buffer-file-coding-system]
64 '(" ... of visiting file" . set-buffer-file-coding-system)) 75 '("Set coding system of buffer file" . set-buffer-file-coding-system))
65(define-key mule-keymap [separator-mule]
66 '("Setting coding systems"))
67(define-key mule-keymap [describe-current-coding-system] 76(define-key mule-keymap [describe-current-coding-system]
68 '("Describe current coding systems" . describe-current-coding-system)) 77 '("Describe current coding systems" . describe-current-coding-system))
69(define-key mule-keymap [describe-language-support] 78(define-key mule-keymap [separator-input-method]
70 '("Describe language support" . mule-describe-language-support-prefix)) 79 '("--"))
71(define-key mule-keymap [view-hello-file]
72 '("Show many languages" . view-hello-file))
73(define-key mule-keymap [describe-input-method] 80(define-key mule-keymap [describe-input-method]
74 '("Describe input method" . describe-input-method)) 81 '("Describe input method" . describe-input-method))
75(define-key mule-keymap [select-input-method] 82(define-key mule-keymap [select-input-method]
76 '("Select input method" . select-input-method)) 83 '("Select input method" . select-input-method))
77(define-key mule-keymap [toggle-input-method] 84(define-key mule-keymap [toggle-input-method]
78 '("Toggle input method" . toggle-input-method)) 85 '("Toggle input method" . toggle-input-method))
86(define-key mule-keymap [separator-mule]
87 '("--"))
88(define-key mule-keymap [set-language-environment]
89 '("Set language environment" . mule-set-language-environment-prefix))
90(define-key mule-keymap [describe-language-support]
91 '("Describe language support" . mule-describe-language-support-prefix))
79(define-key mule-keymap [toggle-mule] 92(define-key mule-keymap [toggle-mule]
80 '("Toggle MULE" . toggle-enable-multibyte-characters)) 93 '("Disable/enable multibyte character" . toggle-enable-multibyte-characters))
81 94
82;; These are meaningless when running under X. 95;; These are meaningless when running under X.
83(put 'set-keyboard-coding-system 'menu-enable 96(put 'set-keyboard-coding-system 'menu-enable
@@ -139,6 +152,13 @@ KEY is a symbol denoting the kind of required information."
139 (interactive) 152 (interactive)
140 (describe-language-support ,lang))) 153 (describe-language-support ,lang)))
141 154
155;; Return a lambda form which calls `set-language-environment' with
156;; argument LANG.
157(defun build-set-language-environment-function (lang)
158 `(lambda ()
159 (interactive)
160 (set-language-environment ,lang)))
161
142(defun set-language-info (language-name key info) 162(defun set-language-info (language-name key info)
143 "Set for LANGUAGE-NAME the information INFO under KEY. 163 "Set for LANGUAGE-NAME the information INFO under KEY.
144LANGUAGE-NAME is a string 164LANGUAGE-NAME is a string
@@ -148,7 +168,7 @@ INFO is any Lisp object which contains the actual information.
148Currently, the following KEYs are used by Emacs: 168Currently, the following KEYs are used by Emacs:
149charset: list of symbols whose values are charsets specific to the language. 169charset: list of symbols whose values are charsets specific to the language.
150coding-system: list of coding systems specific to the langauge. 170coding-system: list of coding systems specific to the langauge.
151setup-function: see the documentation of `set-language-envrionment'. 171setup-function: see the documentation of `set-language-environment'.
152tutorial: a tutorial file name written in the language. 172tutorial: a tutorial file name written in the language.
153sample-text: one line short text containing characters of the language. 173sample-text: one line short text containing characters of the language.
154documentation: a docstring describing how the language is supported, 174documentation: a docstring describing how the language is supported,
@@ -172,11 +192,16 @@ should use prefix \"user-\" in the name of KEY."
172 (setcdr lang-slot (cons key-slot (cdr lang-slot))))) 192 (setcdr lang-slot (cons key-slot (cdr lang-slot)))))
173 (setcdr key-slot info) 193 (setcdr key-slot info)
174 ;; Setup menu. 194 ;; Setup menu.
175 (if (eq key 'documentation) 195 (cond ((eq key 'documentation)
176 (define-key mule-describe-language-support-map 196 (define-key mule-describe-language-support-map
177 (vector (intern language-name)) 197 (vector (intern language-name))
178 (cons language-name 198 (cons language-name
179 (build-describe-language-support-function language-name)))) 199 (build-describe-language-support-function language-name))))
200 ((eq key 'setup-function)
201 (define-key mule-set-language-environment-map
202 (vector (intern language-name))
203 (cons language-name
204 (build-set-language-environment-function language-name)))))
180 )) 205 ))
181 206
182(defun set-language-info-alist (language-name alist) 207(defun set-language-info-alist (language-name alist)
@@ -195,9 +220,8 @@ ALIST is an alist of KEY and INFO. See the documentation of
195 (function (lambda (elm) (assq key elm))) 220 (function (lambda (elm) (assq key elm)))
196 t 221 t
197 initial-input))) 222 initial-input)))
198 ;; In spite of the documentation, completing-read returns null 223 (and (> (length name) 0)
199 ;; string instead of nil if input is null. 224 (car (assoc-ignore-case (downcase name) language-info-alist)))))
200 (and (> (length name) 0) name)))
201 225
202;;; Multilingual input methods. 226;;; Multilingual input methods.
203 227
@@ -270,20 +294,18 @@ Return a cons of those names."
270 (if (null language-name) 294 (if (null language-name)
271 (error "No input method for the specified language")) 295 (error "No input method for the specified language"))
272 (let* ((completion-ignore-case t) 296 (let* ((completion-ignore-case t)
273 (key-slot 297 (key-slot (cdr (assq 'input-method
274 (assq 'input-method 298 (assoc language-name language-info-alist))))
275 (cdr (assoc language-name language-info-alist))))
276 (method-name 299 (method-name
277 (completing-read "Input method: " (cdr key-slot) nil t 300 (completing-read "Input method: " key-slot nil t
278 (if (and previous-input-method 301 (if (and previous-input-method
279 (string= language-name 302 (string= language-name
280 (car previous-input-method))) 303 (car previous-input-method)))
281 (cons (cdr previous-input-method) 0))))) 304 (cons (cdr previous-input-method) 0)))))
282 ;; In spite of the documentation, completing-read returns
283 ;; null string instead of nil if input is null.
284 (if (= (length method-name) 0) 305 (if (= (length method-name) 0)
285 (error "No input method specified")) 306 (error "No input method specified"))
286 (list language-name method-name)))) 307 (list language-name
308 (car (assoc-ignore-case (downcase method-name) key-slot))))))
287 309
288(defun set-default-input-method (language-name method-name) 310(defun set-default-input-method (language-name method-name)
289 "Set the default input method to METHOD-NAME for inputting LANGUAGE-NAME. 311 "Set the default input method to METHOD-NAME for inputting LANGUAGE-NAME.