[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Open compilation window only on errors?
From: |
François Fleuret |
Subject: |
Re: Open compilation window only on errors? |
Date: |
29 Sep 2003 16:45:15 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 |
Matthew Calhoun wrote on 27 Sep 2003 19:57:18 MET:
> When I compile using M-x compile, Emacs opens a new window for the
> compilation buffer when it's finished. This is great when there are
> warnings or errors, but when there aren't I would like to prevent
> Emacs from opening the new window, and instead maybe just put a
> message in the minibuffer indicating that compilation was
> successful. Is there a variable I can set for this, or does anyone
> have elisp code that does something similar?
This is my own recipe (sort of dirty, but has been working for months
here), maybe it can help:
;; <f1> runs the compilation according to the compile-command (and
;; thus does not ask any confirmation), shows the compilation buffer
;; during compilation AND removes it if the compilation ends with no
;; error (i.e. it restores the window configuration as it was before
;; <f1> was pressed)
;; <shift-f1> asks for a compilation command and runs the compilation
;; but does not restore the window configuration (i.e. the compilation
;; buffer's window will still be visible, as usual)
;; <f2> goes to the next compilation error (as C-x ` does on the
;; standard configuration)
(defun restore-windows-if-no-error (buffer msg)
"Restores the window configuration according to
`window-configuration-before-compilation'
if msg matches \"^finished\".
This function can be used by adding in your .emacs
\(setq compilation-finish-function \'restore-windows-if-no-error\)."
(if (string-match "^finished" msg)
(when (boundp 'window-configuration-before-compilation)
(progn
(set-window-configuration window-configuration-before-compilation)
(message (concat "Compilation '" compile-command "' finished with no
error (compilation window removed)"))
)))
(makunbound 'window-configuration-before-compilation)
)
(setq compilation-finish-function 'restore-windows-if-no-error)
(defun fast-compile () "Compiles without asking anything" (interactive)
(let ((compilation-read-command nil))
(setq window-configuration-before-compilation
(current-window-configuration))
(compile compile-command)))
(define-key global-map [f1] 'fast-compile)
(define-key global-map [(shift f1)] 'compile)
(define-key global-map [f2] 'next-error)
--
François Fleuret
IMEDIA Research Group Tel +33 1 39 63 55 83
INRIA, France Fax +33 1 39 63 59 95