changeset 43491:8d50d4fa8c4b

(shell-pcomplete, shell-pcomplete-reverse): New functions. (toplevel): Bind them. (shell-mode): Don't set `comint-dynamic-complete-functions'; it is not necessary now that we use pcomplete.
author Colin Walters <walters@gnu.org>
date Sat, 23 Feb 2002 21:34:11 +0000
parents a08f4763cba4
children 6afed71ef190
files lisp/shell.el
diffstat 1 files changed, 25 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/shell.el	Sat Feb 23 21:33:49 2002 +0000
+++ b/lisp/shell.el	Sat Feb 23 21:34:11 2002 +0000
@@ -310,7 +310,8 @@
        (setq shell-mode-map (nconc (make-sparse-keymap) comint-mode-map))
        (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
        (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
-       (define-key shell-mode-map "\t" 'comint-dynamic-complete)
+       (define-key shell-mode-map "\t" 'shell-pcomplete)
+       (define-key shell-mode-map "\M-\t" 'shell-pcomplete-reverse)
        (define-key shell-mode-map "\M-?"
 	 'comint-dynamic-list-filename-completions)
        (define-key shell-mode-map [menu-bar completion]
@@ -396,7 +397,6 @@
   (setq comint-delimiter-argument-list shell-delimiter-argument-list)
   (setq comint-file-name-chars shell-file-name-chars)
   (setq comint-file-name-quote-list shell-file-name-quote-list)
-  (setq comint-dynamic-complete-functions shell-dynamic-complete-functions)
   (make-local-variable 'paragraph-start)
   (setq paragraph-start comint-prompt-regexp)
   (make-local-variable 'font-lock-defaults)
@@ -857,6 +857,29 @@
 	(progn (goto-char (match-beginning 1))
 	       (skip-chars-forward ";&|")))))
 
+(defun shell-pcomplete ()
+  "Cycle forwards through completions at point, using `pcomplete'.
+This function merely invokes `pcomplete', after ensuring this buffer
+is set up for it."
+  (interactive)
+  (unless (prog1 shell-pcomplete-setup-p
+           (setq shell-pcomplete-setup-p t))
+    (pcomplete-comint-setup 'shell-dynamic-complete-functions))
+  ;; Convince pcomplete we are calling it directly
+  (setq this-command 'pcomplete)
+  (call-interactively #'pcomplete))
+
+(defun shell-pcomplete-reverse ()
+  "Cycle backwards through completions at point, using `pcomplete'.
+This function merely invokes `pcomplete-reverse', after ensuring this
+buffer is set up for it."
+  (interactive)
+  (unless (prog1 shell-pcomplete-setup-p
+	    (setq shell-pcomplete-setup-p t))
+    (pcomplete-comint-setup 'shell-dynamic-complete-functions))
+  ;; Convince pcomplete we are calling it directly
+  (setq this-command 'pcomplete-reverse)
+  (call-interactively #'pcomplete-reverse))  
 
 (defun shell-dynamic-complete-command ()
   "Dynamically complete the command at point.