* lisp/shell.el: Require and use pcomplete.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 4 Jun 2011 12:31:34 +0000 (09:31 -0300)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 4 Jun 2011 12:31:34 +0000 (09:31 -0300)
(shell-dynamic-complete-functions): Add pcomplete-completions-at-point.
(shell-completion-vars): Set pcomplete-default-completion-function.

etc/NEWS
lisp/ChangeLog
lisp/shell.el

index 25fd259..d3758f8 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -85,6 +85,8 @@ client frame in parent X window ID, via XEmbed.  This works like the
 error, its exit status is 1.
 
 ** Completion
+*** shell-mode uses pcomplete rules, with the standard completion UI.
+
 *** Many packages have been changed to use completion-at-point rather than
 their own completion code.
 
index 81de3b4..2d42d38 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * shell.el: Require and use pcomplete.
+       (shell-dynamic-complete-functions): Add pcomplete-completions-at-point.
+       (shell-completion-vars): Set pcomplete-default-completion-function.
+
 2011-06-04  Deniz Dogan  <deniz@dogan.se>
 
        * iswitchb.el (iswitchb-window-buffer-p): Use `member' instead of
index e07f996..8a282e9 100644 (file)
@@ -98,6 +98,7 @@
 
 (eval-when-compile (require 'cl))
 (require 'comint)
+(require 'pcomplete)
 
 ;;; Customization and Buffer Variables
 
@@ -186,7 +187,9 @@ This is a fine thing to set in your `.emacs' file.")
     shell-environment-variable-completion
     shell-command-completion
     shell-c-a-p-replace-by-expanded-directory
+    pcomplete-completions-at-point
     shell-filename-completion
+    ;; Not sure when this one would still be useful.  --Stef
     comint-filename-completion)
   "List of functions called to perform completion.
 This variable is used to initialize `comint-dynamic-complete-functions' in the
@@ -380,7 +383,6 @@ to `dirtrack-mode'."
   :group 'shell
   :type '(choice (const nil) regexp))
 
-(defvar pcomplete-parse-arguments-function)
 
 (defun shell-completion-vars ()
   "Setup completion vars for `shell-mode' and `read-shell-command'."
@@ -396,6 +398,9 @@ to `dirtrack-mode'."
   (set (make-local-variable 'pcomplete-parse-arguments-function)
        ;; FIXME: This function should be moved to shell.el.
        #'pcomplete-parse-comint-arguments)
+  ;; Don't use pcomplete's defaulting mechanism, rely on
+  ;; shell-dynamic-complete-functions instead.
+  (set (make-local-variable 'pcomplete-default-completion-function) #'ignore)
   (setq comint-input-autoexpand shell-input-autoexpand)
   ;; Not needed in shell-mode because it's inherited from comint-mode, but
   ;; placed here for read-shell-command.