changeset 5424:51eecae04837

(comint-last-output-start): Add defvar. (comint-dynamic-list-completions): Use read-key-sequence. Special handling for mouse-choose-completion.
author Richard M. Stallman <rms@gnu.org>
date Mon, 03 Jan 1994 10:46:53 +0000
parents 8213b45445a6
children 3dd5ff54e1cd
files lisp/comint.el
diffstat 1 files changed, 22 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/comint.el	Mon Jan 03 10:43:37 1994 +0000
+++ b/lisp/comint.el	Mon Jan 03 10:46:53 1994 +0000
@@ -302,6 +302,7 @@
 (defvar comint-input-ring nil)
 (defvar comint-last-input-start)
 (defvar comint-last-input-end)
+(defvar comint-last-output-start)
 (defvar comint-input-ring-index nil
   "Index of last matched history element.")
 (defvar comint-matching-input-from-input-string ""
@@ -1838,6 +1839,8 @@
 dependent on the value of `comint-completion-autolist'."
   (interactive)
   (let* ((completion-ignore-case nil)
+	 ;; For shell completion, treat all files as equally interesting.
+	 (completion-ignored-extensions nil)
 	 (filename (comint-match-partial-filename))
          (pathdir (file-name-directory filename))
          (pathnondir (file-name-nondirectory filename))
@@ -1990,6 +1993,8 @@
   "List in help buffer possible completions of the filename at point."
   (interactive)
   (let* ((completion-ignore-case nil)
+	 ;; For shell completion, treat all files as equally interesting.
+	 (completion-ignored-extensions nil)
 	 (filename (comint-match-partial-filename))
 	 (pathdir (file-name-directory filename))
 	 (pathnondir (file-name-nondirectory filename))
@@ -2007,12 +2012,24 @@
   (let ((conf (current-window-configuration)))
     (with-output-to-temp-buffer " *Completions*"
       (display-completion-list (sort completions 'string-lessp)))
-    (sit-for 0)
     (message "Hit space to flush")
-    (let ((ch (read-event)))
-      (if (eq ch ?\ )
-	  (set-window-configuration conf)
-	(setq unread-command-events (list ch))))))
+    (let (key first)
+      (if (save-excursion
+	    (set-buffer (get-buffer " *Completions*"))
+	    (setq key (read-key-sequence nil)
+		  first (aref key 0))
+	    (and (consp first)
+		 (eq (window-buffer (posn-window (event-start first)))
+		     (get-buffer " *Completions*"))
+		 (eq (key-binding key) 'mouse-choose-completion)))
+	  ;; If the user does mouse-choose-completion with the mouse,
+	  ;; execute the command, then delete the completion window.
+	  (progn
+	    (mouse-choose-completion first)
+	    (set-window-configuration conf))
+	(if (eq first ?\ )
+	    (set-window-configuration conf)
+	  (setq unread-command-events (append key nil)))))))
 
 ;;; Converting process modes to use comint mode
 ;;; ===========================================================================