+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.
(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
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))))))
(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)