changeset 9743:6a97ed1cc733

(gud-common-init): If file arg has no directory, let the debugger search PATH, and don't set default-directory.
author Richard M. Stallman <rms@gnu.org>
date Sat, 29 Oct 1994 11:14:05 +0000
parents fe7653791d28
children ca139ac056a1
files lisp/gud.el
diffstat 1 files changed, 19 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gud.el	Sat Oct 29 09:47:12 1994 +0000
+++ b/lisp/gud.el	Sat Oct 29 11:14:05 1994 +0000
@@ -983,12 +983,29 @@
 		      (while (and w (= ?- (aref (car w) 0)))
 			(setq w (cdr w)))
 		      (car w)))
+	 (file-subst
+	  (and file-word (substitute-in-file-name file-word)))
 	 (args (delq file-word (cdr words)))
+	 ;; If a directory was specified, expand the file name.
+	 ;; Otherwise, don't expand it, so GDB can use the PATH.
+	 ;; A file name without directory is literally valid
+	 ;; only if the file exists in ., and in that case,
+	 ;; omitting the expansion here has no visible effect.
 	 (file (and file-word
-		    (expand-file-name (substitute-in-file-name file-word))))
+		    (if (file-name-directory file-subst)
+			(expand-file-name file-subst)
+		      file-subst)))
 	 (filepart (and file-word (file-name-nondirectory file))))
     (switch-to-buffer (concat "*gud-" filepart "*"))
-    (and file-word (setq default-directory (file-name-directory file)))
+    ;; Set default-directory to the file's directory.
+    (and file-word
+	 ;; Don't set default-directory if no directory was specified.
+	 ;; In that case, either the file is found in the current directory,
+	 ;; in which case this setq is a no-op,
+	 ;; or it is found by searching PATH,
+	 ;; in which case we don't know what directory it was found in.
+	 (file-name-directory file)
+	 (setq default-directory (file-name-directory file)))
     (or (bolp) (newline))
     (insert "Current directory is " default-directory "\n")
     (apply 'make-comint (concat "gud-" filepart) program nil