comparison lisp/international/quail.el @ 23599:ab69e7987be0

(quail-start-translation): Handle switching of the frame in read-key-sequence. (quail-start-conversion): Likewise. (quail-show-guidance-buf): Detach quail-guidance-buf from any windows before setting an appropriate window for it. (quail-hide-guidance-buf): Use window-minibuffer-p. Set quail-guidance-win to nil. (quail-update-guidance): If quail-guidance-buf is not in the selected frame, call quail-show-guidance-buf again.
author Kenichi Handa <handa@m17n.org>
date Sat, 31 Oct 1998 05:12:07 +0000
parents a83ca83c8626
children ab6b58c72a04
comparison
equal deleted inserted replaced
23598:118a5f3c79de 23599:ab69e7987be0
939 (setq unread-command-events (cons key unread-command-events))) 939 (setq unread-command-events (cons key unread-command-events)))
940 (while quail-translating 940 (while quail-translating
941 (let* ((keyseq (read-key-sequence 941 (let* ((keyseq (read-key-sequence
942 (and input-method-use-echo-area 942 (and input-method-use-echo-area
943 (concat input-method-previous-message 943 (concat input-method-previous-message
944 quail-current-str)))) 944 quail-current-str))
945 nil nil t))
945 (cmd (lookup-key (quail-translation-keymap) keyseq))) 946 (cmd (lookup-key (quail-translation-keymap) keyseq)))
946 (if (if key 947 (if (if key
947 (and (commandp cmd) (not (eq cmd 'quail-other-command))) 948 (and (commandp cmd) (not (eq cmd 'quail-other-command)))
948 (eq cmd 'quail-self-insert-command)) 949 (eq cmd 'quail-self-insert-command))
949 (progn 950 (progn
1005 (quail-setup-overlays nil))) 1006 (quail-setup-overlays nil)))
1006 (let* ((keyseq (read-key-sequence 1007 (let* ((keyseq (read-key-sequence
1007 (and input-method-use-echo-area 1008 (and input-method-use-echo-area
1008 (concat input-method-previous-message 1009 (concat input-method-previous-message
1009 quail-conversion-str 1010 quail-conversion-str
1010 quail-current-str)))) 1011 quail-current-str))
1012 nil nil t))
1011 (cmd (lookup-key (quail-conversion-keymap) keyseq))) 1013 (cmd (lookup-key (quail-conversion-keymap) keyseq)))
1012 (if (if key (commandp cmd) (eq cmd 'quail-self-insert-command)) 1014 (if (if key (commandp cmd) (eq cmd 'quail-self-insert-command))
1013 (progn 1015 (progn
1014 (setq key t) 1016 (setq key t)
1015 (setq last-command-event (aref keyseq (1- (length keyseq))) 1017 (setq last-command-event (aref keyseq (1- (length keyseq)))
1476 (overlay-put quail-overlay 'face 'highlight))) 1478 (overlay-put quail-overlay 'face 'highlight)))
1477 (delete-overlay quail-overlay) 1479 (delete-overlay quail-overlay)
1478 (set-buffer-modified-p nil))) 1480 (set-buffer-modified-p nil)))
1479 (bury-buffer quail-guidance-buf) 1481 (bury-buffer quail-guidance-buf)
1480 1482
1483 ;; Assign the buffer " *Minibuf-N*" to all windows which are now
1484 ;; displaying quail-guidance-buf.
1485 (let ((win-list (get-buffer-window-list quail-guidance-buf t t)))
1486 (while win-list
1487 (set-window-buffer (car win-list)
1488 (format " *Minibuf-%d*" (minibuffer-depth)))
1489 (setq win-list (cdr win-list))))
1490
1481 ;; Then, display it in an appropriate window. 1491 ;; Then, display it in an appropriate window.
1482 (let ((win (minibuffer-window))) 1492 (let ((win (minibuffer-window)))
1483 (if (or (eq (selected-window) win) 1493 (if (or (eq (selected-window) win)
1484 input-method-use-echo-area) 1494 input-method-use-echo-area)
1485 ;; Since we are in minibuffer, we can't use it for guidance. 1495 ;; Since we are in minibuffer, we can't use it for guidance.
1513 (if (buffer-live-p quail-guidance-buf) 1523 (if (buffer-live-p quail-guidance-buf)
1514 (let ((win-list (get-buffer-window-list quail-guidance-buf t t)) 1524 (let ((win-list (get-buffer-window-list quail-guidance-buf t t))
1515 win) 1525 win)
1516 (while win-list 1526 (while win-list
1517 (setq win (car win-list) win-list (cdr win-list)) 1527 (setq win (car win-list) win-list (cdr win-list))
1518 (if (eq win (minibuffer-window)) 1528 (if (window-minibuffer-p win)
1519 ;; We are using echo area for the guidance buffer. 1529 ;; We are using echo area for the guidance buffer.
1520 ;; Vacate it to the deepest minibuffer. 1530 ;; Vacate it to the deepest minibuffer.
1521 (set-window-buffer win 1531 (set-window-buffer win
1522 (format " *Minibuf-%d*" (minibuffer-depth))) 1532 (format " *Minibuf-%d*" (minibuffer-depth)))
1523 (if (eq win (frame-root-window (window-frame win))) 1533 (if (eq win (frame-root-window (window-frame win)))
1524 (progn 1534 (progn
1525 ;; We are using a separate frame for guidance buffer. 1535 ;; We are using a separate frame for guidance buffer.
1526 ;;(set-window-dedicated-p win nil) 1536 ;;(set-window-dedicated-p win nil)
1527 (delete-frame (window-frame win))) 1537 (delete-frame (window-frame win)))
1528 ;;(set-window-dedicated-p win nil) 1538 ;;(set-window-dedicated-p win nil)
1529 (delete-window win))))))) 1539 (delete-window win))))
1540 (setq quail-guidance-win nil))))
1530 1541
1531 (defun quail-update-guidance () 1542 (defun quail-update-guidance ()
1532 "Update the Quail guidance buffer and completion buffer (if displayed now)." 1543 "Update the Quail guidance buffer and completion buffer (if displayed now)."
1533 ;; Update guidance buffer. 1544 ;; Update guidance buffer.
1534 (if (quail-require-guidance-buf) 1545 (if (quail-require-guidance-buf)
1535 (let ((guidance (quail-guidance))) 1546 (let ((guidance (quail-guidance)))
1547 (or (and (eq (selected-frame) (window-frame (minibuffer-window)))
1548 (eq (selected-frame) (window-frame quail-guidance-win)))
1549 (quail-show-guidance-buf))
1536 (cond ((or (eq guidance t) 1550 (cond ((or (eq guidance t)
1537 (consp guidance)) 1551 (consp guidance))
1538 ;; Show the current possible translations. 1552 ;; Show the current possible translations.
1539 (quail-show-translations)) 1553 (quail-show-translations))
1540 ((null guidance) 1554 ((null guidance)