summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/km-compile.el19
1 files changed, 13 insertions, 6 deletions
diff --git a/lisp/km-compile.el b/lisp/km-compile.el
index 2e179ca..f04c660 100644
--- a/lisp/km-compile.el
+++ b/lisp/km-compile.el
@@ -39,6 +39,15 @@
(string-prefix-p (concat "*" km/compilation-buffer-name-prefix)
(buffer-name)))))
+(defvar km/compilation-last-buffer nil
+ "Like `compilation-last-buffer' but don't set in derived modes.")
+
+(defun km/store-compilation-last-buffer (_proc)
+ (when (eq major-mode 'compilation-mode)
+ (setq km/compilation-last-buffer (current-buffer))))
+
+(add-hook 'compilation-start-hook #'km/store-compilation-last-buffer)
+
;;;###autoload
(defun km/compile-in-home-dir ()
(interactive)
@@ -48,16 +57,14 @@
;;;###autoload
(defun km/compilation-recompile (&optional arg)
"Recompile buffer.
-By default, use `compilation-last-buffer'. If ARG is 0, get
+By default, use `km/compilation-last-buffer'. If ARG is 0, get
buffer with name given by `km/compilation-name-by-directory'.
Otherwise, if ARG is non-nil, prompt with buffers from
`km/compilation-buffer-list'."
(interactive (list (and current-prefix-arg
(prefix-numeric-value current-prefix-arg))))
(with-current-buffer (km/compilation--get-buffer arg)
- (if (derived-mode-p 'occur-mode)
- (revert-buffer)
- (recompile))))
+ (recompile)))
(defun km/compilation-display-buffer (&optional arg)
"Display compilation buffer.
@@ -72,8 +79,8 @@ Otherwise, if ARG is non-nil, prompt with buffers from
(defun km/compilation--get-buffer (&optional arg)
(cond
((and (not arg)
- (buffer-live-p compilation-last-buffer)
- compilation-last-buffer))
+ (buffer-live-p km/compilation-last-buffer)
+ km/compilation-last-buffer))
((and (numberp arg)
(= arg 0))
(get-buffer (km/compilation-name-by-directory)))