summaryrefslogtreecommitdiff
path: root/lisp/shell.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2011-05-12 09:55:10 -0300
committerStefan Monnier <monnier@iro.umontreal.ca>2011-05-12 09:55:10 -0300
commit914a0ae1bab4f6f76c0b2654e0ca78fdb07f294a (patch)
tree8e185992974b0d3fd7ee592300f14444c53d2ef1 /lisp/shell.el
parent98dc3df322a2706803625ddfce0038ce94eec5d8 (diff)
downloademacs-914a0ae1bab4f6f76c0b2654e0ca78fdb07f294a.tar.gz
* lisp/shell.el (shell-completion-vars): New function.
(shell-mode): * lisp/simple.el (read-shell-command): Use it. (blink-matching-open): No need for " [...]" in minibuffer-message.
Diffstat (limited to 'lisp/shell.el')
-rw-r--r--lisp/shell.el39
1 files changed, 24 insertions, 15 deletions
diff --git a/lisp/shell.el b/lisp/shell.el
index d6bc685618c..a05fefa9c11 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -380,6 +380,25 @@ to `dirtrack-mode'."
:group 'shell
:type '(choice (const nil) regexp))
+(defun shell-completion-vars ()
+ "Setup completion vars for `shell-mode' and `read-shell-command'."
+ (set (make-local-variable 'comint-completion-fignore)
+ shell-completion-fignore)
+ (set (make-local-variable 'comint-delimiter-argument-list)
+ shell-delimiter-argument-list)
+ (set (make-local-variable 'comint-file-name-chars) shell-file-name-chars)
+ (set (make-local-variable 'comint-file-name-quote-list)
+ shell-file-name-quote-list)
+ (set (make-local-variable 'comint-dynamic-complete-functions)
+ shell-dynamic-complete-functions)
+ (set (make-local-variable 'pcomplete-parse-arguments-function)
+ ;; FIXME: This function should be moved to shell.el.
+ #'pcomplete-parse-comint-arguments)
+ (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.
+ (add-hook 'completion-at-point-functions 'comint-completion-at-point nil t))
+
(put 'shell-mode 'mode-class 'special)
(define-derived-mode shell-mode comint-mode "Shell"
@@ -437,22 +456,12 @@ Variables `comint-output-filter-functions', a hook, and
control whether input and output cause the window to scroll to the end of the
buffer."
(setq comint-prompt-regexp shell-prompt-pattern)
- (setq comint-completion-fignore shell-completion-fignore)
- (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)
- (set (make-local-variable 'comint-dynamic-complete-functions)
- shell-dynamic-complete-functions)
+ (shell-completion-vars)
(set (make-local-variable 'paragraph-separate) "\\'")
- (make-local-variable 'paragraph-start)
- (setq paragraph-start comint-prompt-regexp)
- (make-local-variable 'font-lock-defaults)
- (setq font-lock-defaults '(shell-font-lock-keywords t))
- (make-local-variable 'shell-dirstack)
- (setq shell-dirstack nil)
- (make-local-variable 'shell-last-dir)
- (setq shell-last-dir nil)
- (setq comint-input-autoexpand shell-input-autoexpand)
+ (set (make-local-variable 'paragraph-start) comint-prompt-regexp)
+ (set (make-local-variable 'font-lock-defaults) '(shell-font-lock-keywords t))
+ (set (make-local-variable 'shell-dirstack) nil)
+ (set (make-local-variable 'shell-last-dir) nil)
(shell-dirtrack-mode 1)
;; This is not really correct, since the shell buffer does not really
;; edit this directory. But it is useful in the buffer list and menus.