1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

* dirtrack.el (dirtrack): Support shell buffers with path

prefixes, e.g. tramp-based remote shells.  (Bug#9647)
This commit is contained in:
Ryan Barrett 2011-10-17 21:48:28 +02:00 committed by Michael Albinus
parent f2ff9e8894
commit 87e478b3c1
2 changed files with 12 additions and 5 deletions

View file

@ -227,7 +227,7 @@ If directory tracking does not seem to be working, you can use the
function `dirtrack-debug-mode' to turn on debugging output."
(unless (or (null dirtrack-mode)
(eq (point) (point-min))) ; no output?
(let (prompt-path
(let (prompt-path orig-prompt-path
(current-dir default-directory)
(dirtrack-regexp (nth 0 dirtrack-list))
(match-num (nth 1 dirtrack-list)))
@ -243,8 +243,9 @@ function `dirtrack-debug-mode' to turn on debugging output."
(if (not (> (length prompt-path) 0))
(dirtrack-debug-message "Match is empty string")
;; Transform prompts into canonical forms
(setq prompt-path (funcall dirtrack-directory-function
prompt-path)
(setq orig-prompt-path (funcall dirtrack-directory-function
prompt-path)
prompt-path (shell-prefixed-directory-name orig-prompt-path)
current-dir (funcall dirtrack-canonicalize-function
current-dir))
(dirtrack-debug-message
@ -257,8 +258,9 @@ function `dirtrack-debug-mode' to turn on debugging output."
;; It's possible that Emacs will think the directory
;; won't exist (eg, rlogin buffers)
(if (file-accessible-directory-p prompt-path)
;; Change directory
(and (shell-process-cd prompt-path)
;; Change directory. shell-process-cd adds the prefix, so we
;; need to give it the original (un-prefixed) path.
(and (shell-process-cd orig-prompt-path)
(run-hooks 'dirtrack-directory-change-hook)
(dirtrack-debug-message
(format "Changing directory to %s" prompt-path)))