changeset 16960:8c56da3f7f7f

(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.
author Richard M. Stallman <rms@gnu.org>
date Sat, 01 Feb 1997 20:26:01 +0000
parents d04999ad25b9
children 6e1ae1c00446
files lisp/dirtrack.el
diffstat 1 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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)