Mercurial > emacs
changeset 15370:b75fc8f3b376
(shell-directory-tracker): Use comint-substitute-in-file-name to
handle system-specific syntax.
(shell-chdrive-regexp): New variable.
(shell-mode): Update doc string.
(shell-directory-tracker): Detect drive changes.
Update doc string.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 09 Jun 1996 20:31:51 +0000 |
parents | 0c818ae83d43 |
children | 3ae004565765 |
files | lisp/shell.el |
diffstat | 1 files changed, 22 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/shell.el Sun Jun 09 20:31:04 1996 +0000 +++ b/lisp/shell.el Sun Jun 09 20:31:51 1996 +0000 @@ -186,6 +186,13 @@ (defvar shell-cd-regexp "cd" "*Regexp to match subshell commands equivalent to cd.") +(defvar shell-chdrive-regexp + (if (memq system-type '(ms-dos windows-nt)) + ; NetWare allows the five chars between upper and lower alphabetics. + "[]a-zA-Z^_`\\[\\\\]:" + nil) + "*If non-nil, is regexp used to track drive changes.") + (defvar explicit-shell-file-name nil "*If non-nil, is file name to use for explicitly requested inferior shell.") @@ -287,10 +294,10 @@ `comint-input-filter-functions' are run. After each shell output, the hooks on `comint-output-filter-functions' are run. -Variables `shell-cd-regexp', `shell-pushd-regexp' and `shell-popd-regexp' -are used to match their respective commands, while `shell-pushd-tohome', -`shell-pushd-dextract' and `shell-pushd-dunique' control the behavior of the -relevant command. +Variables `shell-cd-regexp', `shell-chdrive-regexp', `shell-pushd-regexp' +and `shell-popd-regexp' are used to match their respective commands, +while `shell-pushd-tohome', `shell-pushd-dextract' and `shell-pushd-dunique' +control the behavior of the relevant command. Variables `comint-completion-autolist', `comint-completion-addsuffix', `comint-completion-recexact' and `comint-completion-fignore' control the @@ -441,9 +448,9 @@ You may toggle this tracking on and off with M-x dirtrack-toggle. If emacs gets confused, you can resync with the shell with M-x dirs. -See variables `shell-cd-regexp', `shell-pushd-regexp', and `shell-popd-regexp', -while `shell-pushd-tohome', `shell-pushd-dextract' and `shell-pushd-dunique' -control the behavior of the relevant command. +See variables `shell-cd-regexp', `shell-chdrive-regexp', `shell-pushd-regexp', +and `shell-popd-regexp', while `shell-pushd-tohome', `shell-pushd-dextract', +and `shell-pushd-dunique' control the behavior of the relevant command. Environment variables are expanded, see function `substitute-in-file-name'." (if shell-dirtrackp @@ -459,15 +466,20 @@ (cond ((string-match (concat "\\`\\(" shell-popd-regexp "\\)\\($\\|[ \t]\\)") cmd) - (shell-process-popd (substitute-in-file-name arg1))) + (shell-process-popd (comint-substitute-in-file-name arg1))) ((string-match (concat "\\`\\(" shell-pushd-regexp "\\)\\($\\|[ \t]\\)") cmd) - (shell-process-pushd (substitute-in-file-name arg1))) + (shell-process-pushd (comint-substitute-in-file-name arg1))) ((string-match (concat "\\`\\(" shell-cd-regexp "\\)\\($\\|[ \t]\\)") cmd) - (shell-process-cd (substitute-in-file-name arg1)))) + (shell-process-cd (comint-substitute-in-file-name arg1))) + ((and shell-chdrive-regexp + (string-match (concat "\\`\\(" shell-chdrive-regexp + "\\)\\($\\|[ \t]\\)") + cmd)) + (shell-process-cd (comint-substitute-in-file-name cmd)))) (setq start (progn (string-match "[; \t]*" str end) ; skip again (match-end 0))))) (error "Couldn't cd"))))