diff options
author | Karl Heuer <kwzh@gnu.org> | 1995-06-19 22:54:58 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1995-06-19 22:54:58 +0000 |
commit | 5402169506a60e77d12259c5a68769c47d5d4e9c (patch) | |
tree | eeead1988ecd7c9537316ed0329fe96418b8ef70 | |
parent | 9478941d7bea114cc0c9ba4f955eb882ba568875 (diff) | |
download | emacs-5402169506a60e77d12259c5a68769c47d5d4e9c.tar.gz |
(shell-directory-tracker): Check for terminator after
cd, pushd, or popd, so that we don't try to do directory tracking
on things like "cdump".
Don't use \\s patterns inside brackets.
-rw-r--r-- | lisp/shell.el | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lisp/shell.el b/lisp/shell.el index 2f297cb588d..abb580b47ff 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -450,20 +450,26 @@ Environment variables are expanded, see function `substitute-in-file-name'." (if shell-dirtrackp ;; We fail gracefully if we think the command will fail in the shell. (condition-case chdir-failure - (let ((start (progn (string-match "^[;\\s ]*" str) ; skip whitespace + (let ((start (progn (string-match "^[; \t]*" str) ; skip whitespace (match-end 0))) end cmd arg1) (while (string-match shell-command-regexp str start) (setq end (match-end 0) cmd (comint-arguments (substring str start end) 0 0) arg1 (comint-arguments (substring str start end) 1 1)) - (cond ((eq (string-match shell-popd-regexp cmd) 0) + (cond ((string-match (concat "\\`\\(" shell-popd-regexp + "\\)\\($\\|[ \t]\\)") + cmd) (shell-process-popd (substitute-in-file-name arg1))) - ((eq (string-match shell-pushd-regexp cmd) 0) + ((string-match (concat "\\`\\(" shell-pushd-regexp + "\\)\\($\\|[ \t]\\)") + cmd) (shell-process-pushd (substitute-in-file-name arg1))) - ((eq (string-match shell-cd-regexp cmd) 0) + ((string-match (concat "\\`\\(" shell-cd-regexp + "\\)\\($\\|[ \t]\\)") + cmd) (shell-process-cd (substitute-in-file-name arg1)))) - (setq start (progn (string-match "[;\\s ]*" str end) ; skip again + (setq start (progn (string-match "[; \t]*" str end) ; skip again (match-end 0))))) (error "Couldn't cd")))) |