# HG changeset patch # User Richard M. Stallman # Date 757594013 0 # Node ID 51eecae04837bf54f245111b7d9e72edbd11db0a # Parent 8213b45445a6ca85dbb144a96a1c832c7248f76f (comint-last-output-start): Add defvar. (comint-dynamic-list-completions): Use read-key-sequence. Special handling for mouse-choose-completion. diff -r 8213b45445a6 -r 51eecae04837 lisp/comint.el --- 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 ;;; ===========================================================================