--- shell.el.~1.105.~ Mon Dec 3 12:24:41 2001 +++ shell.el Sat Feb 16 19:31:54 2002 @@ -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,22 @@ (progn (goto-char (match-beginning 1)) (skip-chars-forward ";&|"))))) +(defvar shell-pcomplete-setup-p nil) +(defun shell-pcomplete () + "Invoke `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)) + (call-interactively #'pcomplete)) + +(defun shell-pcomplete-reverse () + "Invoke `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)) + (call-interactively #'pcomplete-reverse)) (defun shell-dynamic-complete-command () "Dynamically complete the command at point.