changeset 81999:c0fc8e3cb6b4

(compilation-start): Remember the original directory in a buffer-local compilation-directory. (compile): Set the global value of compilation-directory. (recompile): Use compilation-directory even if run from the compilation buffer.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 20 Jul 2007 18:54:57 +0000
parents 52950d8efd2b
children 066eaef90bfb
files lisp/ChangeLog lisp/progmodes/compile.el
diffstat 2 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Jul 20 17:32:04 2007 +0000
+++ b/lisp/ChangeLog	Fri Jul 20 18:54:57 2007 +0000
@@ -1,3 +1,10 @@
+2007-07-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/compile.el (compilation-start): Remember the original
+	directory in a buffer-local compilation-directory.
+	(compile): Set the global value of compilation-directory.
+	(recompile): Use compilation-directory even in the compilation buffer.
+
 2007-07-20  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* vc-hg.el (vc-hg-diff): Use vc-hg-command.
--- a/lisp/progmodes/compile.el	Fri Jul 20 17:32:04 2007 +0000
+++ b/lisp/progmodes/compile.el	Fri Jul 20 18:54:57 2007 +0000
@@ -934,7 +934,7 @@
   (unless (equal command (eval compile-command))
     (setq compile-command command))
   (save-some-buffers (not compilation-ask-about-save) nil)
-  (setq compilation-directory default-directory)
+  (setq-default compilation-directory default-directory)
   (compilation-start command comint))
 
 ;; run compile with the default command line
@@ -944,10 +944,7 @@
 original use.  Otherwise, recompile using `compile-command'."
   (interactive)
   (save-some-buffers (not compilation-ask-about-save) nil)
-  (let ((default-directory
-          (or (and (not (eq major-mode (nth 1 compilation-arguments)))
-                   compilation-directory)
-              default-directory)))
+  (let ((default-directory (or compilation-directory default-directory)))
     (apply 'compilation-start (or compilation-arguments
 				  `(,(eval compile-command))))))
 
@@ -1042,6 +1039,10 @@
       (buffer-disable-undo (current-buffer))
       ;; first transfer directory from where M-x compile was called
       (setq default-directory thisdir)
+      ;; Remember the original dir, so we can use it when we recompile.
+      ;; default-directory' can't be used reliably for that because it may be
+      ;; affected by the special handling of "cd ...;".
+      (set (make-local-variable 'compilation-directory) thisdir)
       ;; Make compilation buffer read-only.  The filter can still write it.
       ;; Clear out the compilation buffer.
       (let ((inhibit-read-only t)