(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.
This commit is contained in:
parent
7a35a067a3
commit
32d0121276
1 changed files with 22 additions and 10 deletions
|
@ -186,6 +186,13 @@ This mirrors the optional behavior of tcsh.")
|
|||
(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 @@ Customization: Entry to this mode runs the hooks on `comint-mode-hook' and
|
|||
`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 @@ default directory to track these commands.
|
|||
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 @@ Environment variables are expanded, see function `substitute-in-file-name'."
|
|||
(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"))))
|
||||
|
|
Loading…
Add table
Reference in a new issue