diff options
-rw-r--r-- | init.org | 41 |
1 files changed, 12 insertions, 29 deletions
@@ -646,35 +646,18 @@ Enable =winner-mode=. (winner-mode 1) #+end_src -*** Don’t display =*compilation*= on success - -From https://stackoverflow.com/a/17788551. - -#+begin_src emacs-lisp -(defun amin--compilation-finish-function (buffer outstr) - (unless (string-match "finished" outstr) - (switch-to-buffer-other-window buffer)) - t) - -(setq compilation-finish-functions #'amin--compilation-finish-function) - -(require 'cl) - -(defadvice compilation-start - (around inhibit-display - (command &optional mode name-function highlight-regexp)) - (if (not (string-match "^\\(find\\|grep\\)" command)) - (flet ((display-buffer) - (set-window-point) - (goto-char)) - (fset 'display-buffer 'ignore) - (fset 'goto-char 'ignore) - (fset 'set-window-point 'ignore) - (save-window-excursion - ad-do-it)) - ad-do-it)) - -(ad-activate 'compilation-start) +*** Close =*compilation*= on success + +#+begin_src emacs-lisp +(setq compilation-exit-message-function + (lambda (status code msg) + "Close the compilation window if successful." + ;; if M-x compile exits with 0 + (when (and (eq status 'exit) (zerop code)) + (bury-buffer) + (delete-window (get-buffer-window (get-buffer "*compilation*")))) + ;; return the result of compilation-exit-message-function + (cons msg code))) #+end_src *** Search for non-ASCII characters |