diff options
| author | Kenichi Handa | 1997-02-26 12:50:36 +0000 |
|---|---|---|
| committer | Kenichi Handa | 1997-02-26 12:50:36 +0000 |
| commit | ef8a8c8cba75436ee7e6cb1fe0c0b42f5c605a9f (patch) | |
| tree | 8a8f600936b93d2d7fac54fc7213246963b7c2d1 | |
| parent | f35c859ceaa36ad5c585652b0c17a03326e9381c (diff) | |
| download | emacs-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.el | 76 |
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. |
| 144 | LANGUAGE-NAME is a string | 164 | LANGUAGE-NAME is a string |
| @@ -148,7 +168,7 @@ INFO is any Lisp object which contains the actual information. | |||
| 148 | Currently, the following KEYs are used by Emacs: | 168 | Currently, the following KEYs are used by Emacs: |
| 149 | charset: list of symbols whose values are charsets specific to the language. | 169 | charset: list of symbols whose values are charsets specific to the language. |
| 150 | coding-system: list of coding systems specific to the langauge. | 170 | coding-system: list of coding systems specific to the langauge. |
| 151 | setup-function: see the documentation of `set-language-envrionment'. | 171 | setup-function: see the documentation of `set-language-environment'. |
| 152 | tutorial: a tutorial file name written in the language. | 172 | tutorial: a tutorial file name written in the language. |
| 153 | sample-text: one line short text containing characters of the language. | 173 | sample-text: one line short text containing characters of the language. |
| 154 | documentation: a docstring describing how the language is supported, | 174 | documentation: 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. |