# HG changeset patch # User Richard M. Stallman # Date 854828761 0 # Node ID 8c56da3f7f7f79454ed26a02d13ed5fd61fdd01e # Parent d04999ad25b9ed54521277f1896bc1b13c5f4286 (dirtrack-debug-message): Put output at end of buffer. (dirtrack): Check that directory exists before trying to cd to it. Go to point-max (not comint-last-output-start) before looking for the prompt. diff -r d04999ad25b9 -r 8c56da3f7f7f lisp/dirtrack.el --- a/lisp/dirtrack.el Sat Feb 01 20:02:16 1997 +0000 +++ b/lisp/dirtrack.el Sat Feb 01 20:26:01 1997 +0000 @@ -5,7 +5,7 @@ ;; Author: Peter Breton ;; Created: Sun Nov 17 1996 ;; Keywords: processes -;; Time-stamp: <96/12/26 09:23:01 peter> +;; Time-stamp: <97/02/01 20:35:06 peter> ;; This file is part of GNU Emacs. @@ -170,6 +170,7 @@ (debug-buf (get-buffer-create dirtrack-debug-buffer)) ) (set-buffer debug-buf) + (goto-char (point-max)) (insert (concat string "\n")) (set-buffer buf) )) @@ -181,7 +182,7 @@ (let ((prompt-path) (current-dir default-directory) (matched) - (dirtrack-regexp (nth 0 dirtrack-list)) + (dirtrack-regexp (nth 0 dirtrack-list)) (match-num (nth 1 dirtrack-list)) (multi-line (nth 2 dirtrack-list)) ) @@ -189,16 +190,14 @@ (if (eq (point) (point-min)) nil (save-excursion - (goto-char comint-last-output-start) + (goto-char (point-max)) ;; Look for the prompt (if multi-line - (and - (goto-char (point-max)) - (setq matched - (re-search-backward - dirtrack-regexp - comint-last-output-start - t))) + (setq matched + (re-search-backward + dirtrack-regexp + comint-last-output-start + t)) (beginning-of-line) (setq matched (looking-at dirtrack-regexp))) ;; No match @@ -232,11 +231,15 @@ (and dirtrack-debug (dirtrack-debug-message (format "Not changing directory"))) - ;; Change directory - (shell-process-cd prompt-path) - (and dirtrack-debug - (dirtrack-debug-message - (format "Changing directory to %s" prompt-path)))) + ;; 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) + dirtrack-debug + (dirtrack-debug-message + (format "Changing directory to %s" prompt-path))) + (error "Directory %s does not exist" prompt-path))) ))))))) (provide 'dirtrack)