aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1997-09-11 23:15:08 +0000
committerRichard M. Stallman1997-09-11 23:15:08 +0000
commite3799a725391c70e3931b4070db34aa20e3357ec (patch)
treebdf76002800e6f0e3343db3af1667af5f2c8cb0f
parentce1364815efc5fc861b659cbfb98c7a2b2038ad0 (diff)
downloademacs-e3799a725391c70e3931b4070db34aa20e3357ec.tar.gz
emacs-e3799a725391c70e3931b4070db34aa20e3357ec.zip
(quail-update-translation): Fix previous change.
(quail-simple-translation-keymap, quail-conversion-keymap): Make the default binding with define-key. Handle meta-prefix-char the way isearch does. (quail-translation-keymap): Likewise. (quail-execute-non-quail-command): Handle the key sequence as the same way as universal-argument-other-key. (quail-make-guidance-frame): Don't dedicate the guidance buffer window. (quail-show-guidance-buf): Likewise. (quail-hide-guidance-buf): Delete code to turn off window dedication.
-rw-r--r--lisp/international/quail.el54
1 files changed, 38 insertions, 16 deletions
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 50d85676fdc..48a07a71d2f 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -271,10 +271,7 @@ LEIM is available from the same ftp directory as Emacs."))
271 271
272(defvar quail-translation-keymap 272(defvar quail-translation-keymap
273 (let ((map (make-keymap)) 273 (let ((map (make-keymap))
274 (i 0)) 274 (i 32))
275 (while (< i ?\ )
276 (define-key map (char-to-string i) 'quail-execute-non-quail-command)
277 (setq i (1+ i)))
278 (while (< i 127) 275 (while (< i 127)
279 (define-key map (char-to-string i) 'quail-self-insert-command) 276 (define-key map (char-to-string i) 'quail-self-insert-command)
280 (setq i (1+ i))) 277 (setq i (1+ i)))
@@ -296,8 +293,14 @@ LEIM is available from the same ftp directory as Emacs."))
296 (define-key map [tab] 'quail-completion) 293 (define-key map [tab] 'quail-completion)
297 (define-key map [delete] 'quail-delete-last-char) 294 (define-key map [delete] 'quail-delete-last-char)
298 (define-key map [backspace] 'quail-delete-last-char) 295 (define-key map [backspace] 'quail-delete-last-char)
296 (let ((meta-map (make-sparse-keymap)))
297 (define-key map (char-to-string meta-prefix-char) meta-map)
298 (define-key map [escape] meta-map))
299 (define-key map (vector meta-prefix-char t)
300 'quail-execute-non-quail-command)
299 ;; At last, define default key binding. 301 ;; At last, define default key binding.
300 (append map '((t . quail-execute-non-quail-command)))) 302 (define-key map [t] 'quail-execute-non-quail-command)
303 map)
301 "Keymap used processing translation in complex Quail modes. 304 "Keymap used processing translation in complex Quail modes.
302Only a few especially complex input methods use this map; 305Only a few especially complex input methods use this map;
303most use `quail-simple-translation-keymap' instead. 306most use `quail-simple-translation-keymap' instead.
@@ -315,8 +318,15 @@ This map is activated while translation region is active.")
315 (define-key map "\177" 'quail-delete-last-char) 318 (define-key map "\177" 'quail-delete-last-char)
316;;; This interferes with handling of escape sequences on non-X terminals. 319;;; This interferes with handling of escape sequences on non-X terminals.
317;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command))) 320;;; (define-key map "\e" '(keymap (t . quail-execute-non-quail-command)))
321 (let ((meta-map (make-sparse-keymap)))
322 (define-key map (char-to-string meta-prefix-char) meta-map)
323 (define-key map [escape] meta-map))
324 (define-key map (vector meta-prefix-char t)
325 'quail-execute-non-quail-command)
318 ;; At last, define default key binding. 326 ;; At last, define default key binding.
319 (append map '((t . quail-execute-non-quail-command)))) 327 (define-key map (vector meta-prefix-char t)
328 'quail-execute-non-quail-command)
329 map)
320 "Keymap used while processing translation in simple Quail modes. 330 "Keymap used while processing translation in simple Quail modes.
321A few especially complex input methods use `quail--translation-keymap' instead. 331A few especially complex input methods use `quail--translation-keymap' instead.
322This map is activated while translation region is active.") 332This map is activated while translation region is active.")
@@ -346,8 +356,14 @@ This map is activated while translation region is active.")
346 (define-key map "\177" 'quail-conversion-backward-delete-char) 356 (define-key map "\177" 'quail-conversion-backward-delete-char)
347 (define-key map [delete] 'quail-conversion-backward-delete-char) 357 (define-key map [delete] 'quail-conversion-backward-delete-char)
348 (define-key map [backspace] 'quail-conversion-backward-delete-char) 358 (define-key map [backspace] 'quail-conversion-backward-delete-char)
359 (let ((meta-map (make-sparse-keymap)))
360 (define-key map (char-to-string meta-prefix-char) meta-map)
361 (define-key map [escape] meta-map))
362 (define-key map (vector meta-prefix-char t)
363 'quail-execute-non-quail-command)
349 ;; At last, define default key binding. 364 ;; At last, define default key binding.
350 (append map '((t . quail-execute-non-quail-command)))) 365 (define-key map [t] 'quail-execute-non-quail-command)
366 map)
351 "Keymap used for processing conversion in Quail mode. 367 "Keymap used for processing conversion in Quail mode.
352This map is activated while convesion region is active but translation 368This map is activated while convesion region is active but translation
353region is not active.") 369region is not active.")
@@ -597,7 +613,10 @@ The command \\[describe-input-method] describes the current Quail package."
597 "Execute one non-Quail command out of Quail mode. 613 "Execute one non-Quail command out of Quail mode.
598The current translation and conversion are terminated." 614The current translation and conversion are terminated."
599 (interactive) 615 (interactive)
600 (setq unread-command-events (cons last-input-event unread-command-events)) 616 (let* ((key (this-command-keys))
617 (keylist (listify-key-sequence key)))
618 (setq unread-command-events (append keylist unread-command-events)))
619 (reset-this-command-lengths)
601 (quail-terminate-translation) 620 (quail-terminate-translation)
602 (quail-delete-overlays) 621 (quail-delete-overlays)
603 (setq overriding-terminal-local-map nil) 622 (setq overriding-terminal-local-map nil)
@@ -1079,12 +1098,13 @@ The returned value is a Quail map specific to KEY."
1079 ;; Otherwise, in case the user is using a single-byte 1098 ;; Otherwise, in case the user is using a single-byte
1080 ;; extended-ASCII character set, 1099 ;; extended-ASCII character set,
1081 ;; try inserting the translated character. 1100 ;; try inserting the translated character.
1082 (let ((char (sref (or quail-current-str 1101 (let ((char (or quail-current-str
1083 (substring quail-current-key 0 len)) 1102 (substring quail-current-key 0 len))))
1084 0))) 1103 (if (stringp char)
1104 (setq char (sref char 0)))
1085 (if (= (length (split-char char)) 2) 1105 (if (= (length (split-char char)) 2)
1086 (insert-char (logand char 127)) 1106 (insert-char (logand char 255) 1)
1087 (error "Cannot insert three-byte character in single-byte mode"))))) 1107 (error "Three-byte characters require enabling multibyte characters")))))
1088 (insert (or quail-current-str quail-current-key))))) 1108 (insert (or quail-current-str quail-current-key)))))
1089 (quail-update-guidance) 1109 (quail-update-guidance)
1090 (if control-flag 1110 (if control-flag
@@ -1384,7 +1404,8 @@ Remaining args are for FUNC."
1384 (cons (cons 'top newtop) fparam)))) 1404 (cons (cons 'top newtop) fparam))))
1385 (win (frame-first-window frame))) 1405 (win (frame-first-window frame)))
1386 (set-window-buffer win buf) 1406 (set-window-buffer win buf)
1387 (set-window-dedicated-p win t)))) 1407 ;;(set-window-dedicated-p win t)
1408 )))
1388 1409
1389;; Setup Quail completion buffer. 1410;; Setup Quail completion buffer.
1390(defun quail-setup-completion-buf () 1411(defun quail-setup-completion-buf ()
@@ -1448,7 +1469,8 @@ or in a newly created frame (if the selected frame has no other windows)."
1448 ;; which is what we wanted. 1469 ;; which is what we wanted.
1449 (setq win (split-window win (- height 2))))) 1470 (setq win (split-window win (- height 2)))))
1450 (set-window-buffer win quail-guidance-buf) 1471 (set-window-buffer win quail-guidance-buf)
1451 (set-window-dedicated-p win t))) 1472 ;;(set-window-dedicated-p win t)
1473 ))
1452 (set-window-buffer win quail-guidance-buf)) 1474 (set-window-buffer win quail-guidance-buf))
1453 (setq quail-guidance-win win))) 1475 (setq quail-guidance-win win)))
1454 1476
@@ -1473,7 +1495,7 @@ or in a newly created frame (if the selected frame has no other windows)."
1473 ;; We are using a separate frame for guidance buffer. 1495 ;; We are using a separate frame for guidance buffer.
1474 ;;(set-window-dedicated-p win nil) 1496 ;;(set-window-dedicated-p win nil)
1475 (delete-frame (window-frame win))) 1497 (delete-frame (window-frame win)))
1476 (set-window-dedicated-p win nil) 1498 ;;(set-window-dedicated-p win nil)
1477 (delete-window win))))))) 1499 (delete-window win)))))))
1478 1500
1479(defun quail-update-guidance () 1501(defun quail-update-guidance ()