1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 04:10:54 -08:00

(shell-command-separator-regexp): New variable.

(shell-directory-tracker): Make regexp used for skipping to next command
correspond to one used for command itself.
This commit is contained in:
Juanma Barranquero 2003-06-12 22:20:49 +00:00
parent b80263be1b
commit 6ed020c838

View file

@ -202,6 +202,12 @@ This is used for directory tracking and does not do a perfect job."
:type 'regexp
:group 'shell)
(defcustom shell-command-separator-regexp "[;&|\n \t]*"
"*Regexp to match a single command within a pipeline.
This is used for directory tracking and does not do a perfect job."
:type 'regexp
:group 'shell)
(defcustom shell-completion-execonly t
"*If non-nil, use executable files only for completion candidates.
This mirrors the optional behavior of tcsh.
@ -608,7 +614,9 @@ 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 "^[; \t]*" str) ; skip whitespace
(let ((start (progn (string-match
(concat "^" shell-command-separator-regexp)
str) ; skip whitespace
(match-end 0)))
end cmd arg1)
(while (string-match shell-command-regexp str start)
@ -634,7 +642,9 @@ Environment variables are expanded, see function `substitute-in-file-name'."
"\\)\\($\\|[ \t]\\)")
cmd))
(shell-process-cd (comint-substitute-in-file-name cmd))))
(setq start (progn (string-match "[; \t]*" str end) ; skip again
(setq start (progn (string-match shell-command-separator-regexp
str end)
;; skip again
(match-end 0)))))
(error "Couldn't cd"))))