changeset 22124:10b3c1cd7f18

(quail-completion): Consecutive call of this command scrolls the Quail completion buffer.
author Kenichi Handa <handa@m17n.org>
date Mon, 18 May 1998 01:01:00 +0000
parents 42a41d39c4fb
children 8e8f1bc7f743
files lisp/international/quail.el
diffstat 1 files changed, 23 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/quail.el	Mon May 18 00:59:38 1998 +0000
+++ b/lisp/international/quail.el	Mon May 18 01:01:00 1998 +0000
@@ -1637,16 +1637,31 @@
  are shown."
   (interactive)
   (quail-setup-completion-buf)
-  (let ((key quail-current-key)
-	(map (quail-lookup-key quail-current-key)))
+  (let ((win (get-buffer-window quail-completion-buf 'visible))
+	(key quail-current-key)
+	(map (quail-lookup-key quail-current-key))
+	(require-update nil))
     (save-excursion
       (set-buffer quail-completion-buf)
-      (erase-buffer)
-      (insert "Possible completion and corresponding translations are:\n")
-      (quail-completion-1 key map 1)
-      (goto-char (point-min))
-      (display-buffer (current-buffer)))
-      (quail-update-guidance)))
+      (if (and win
+	       (equal key quail-current-key)
+	       (eq last-command 'quail-completion))
+	  ;; The window for Quail completion buffer has already been
+	  ;; shown.  We just scroll it appropriately.
+	  (if (pos-visible-in-window-p (point-max) win)
+	      (set-window-start win (point-min))
+	    (let ((other-window-scroll-buffer quail-completion-buf))
+	      (scroll-other-window)))
+	(setq quail-current-key key)
+	(erase-buffer)
+	(insert "Possible completion and corresponding translations are:\n")
+	(quail-completion-1 key map 1)
+	(goto-char (point-min))
+	(display-buffer (current-buffer))
+	(setq require-update t)))
+    (if require-update
+	(quail-update-guidance)))
+  (setq this-command 'quail-completion))
 
 ;; List all completions of KEY in MAP with indentation INDENT.
 (defun quail-completion-1 (key map indent)