[emacs] don’t display *compilation* on successful builds
[~bandali/configs] / init.org
index 79dbbd2..d7af98c 100644 (file)
--- a/init.org
+++ b/init.org
@@ -65,7 +65,7 @@ make build
 ** First line
 
 #+begin_src emacs-lisp :comments none
-;;; init.el --- Amin Bandali's Emacs config -*- lexical-binding: t -*-
+;;; init.el --- Amin Bandali's Emacs config -*- lexical-binding: t; eval: (view-mode 1) -*-
 #+end_src
 
 Enable =view-mode=, which both makes the file read-only (as a reminder
@@ -124,13 +124,6 @@ The conventions below were inspired by [[https://github.com/hlissner/doom-emacs]
 :CUSTOM_ID: initial-setup
 :END:
 
-#+begin_src emacs-lisp :comments none
-;;; Code:
-
-\f
-;; * Initial setup
-#+end_src
-
 ** Emacs initialization
 
 I'd like to do a couple of measurements of Emacs' startup time. First,
@@ -498,11 +491,6 @@ Convenience macro for =setq='ing multiple variables to the same value:
 :CUSTOM_ID: core
 :END:
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Core
-#+end_src
-
 ** Defaults
 
 *** Time and battery in mode-line
@@ -662,18 +650,35 @@ Enable =winner-mode=.
 (winner-mode 1)
 #+end_src
 
-*** Close =*compilation*= on success
+*** Don’t display =*compilation*= on success
+
+From https://stackoverflow.com/a/17788551.
 
 #+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)))
+(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)
 #+end_src
 
 *** Search for non-ASCII characters
@@ -1056,11 +1061,6 @@ There's no way I could top that, so I won't attempt to.
 
 * Borg's =layer/essentials=
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Borg's `layer/essentials'
-#+end_src
-
 TODO: break this giant source block down into individual org sections.
 
 #+begin_src emacs-lisp
@@ -1139,24 +1139,10 @@ TODO: break this giant source block down into individual org sections.
   (add-to-list 'tramp-default-proxies-alist
                (list (regexp-quote (system-name)) nil nil)))
 
-(use-package undo-tree
-  :config
-  (global-undo-tree-mode -1))
-  ;; :bind (("C-?" . undo-tree-undo)
-  ;;        ("M-_" . undo-tree-redo))
-  ;; :config
-  ;; (global-undo-tree-mode)
-  ;; (setq undo-tree-mode-lighter ""
-  ;;       undo-tree-auto-save-history t))
 #+end_src
 
 * Editing
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Editing
-#+end_src
-
 ** Company
 
 #+begin_src emacs-lisp
@@ -1178,11 +1164,6 @@ TODO: break this giant source block down into individual org sections.
 
 * Syntax and spell checking
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Syntax and spell checking
-#+end_src
-
 #+begin_src emacs-lisp
 (use-package flycheck
   :defer 3
@@ -1226,11 +1207,6 @@ TODO: break this giant source block down into individual org sections.
 #+end_src
 * Programming modes
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Programming modes
-#+end_src
-
 ** [[http://alloytools.org][Alloy]] (with [[https://github.com/dwwmmn/alloy-mode][alloy-mode]])
 
 #+begin_src emacs-lisp
@@ -1591,11 +1567,6 @@ treemacs
 
 * Emacs Enhancements
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Emacs Enhancements
-#+end_src
-
 ** [[https://github.com/justbur/emacs-which-key][which-key]]
 
 #+begin_quote
@@ -2019,11 +1990,6 @@ Hopefully temporary.
 
 * Email
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Email
-#+end_src
-
 #+begin_src emacs-lisp
 (defvar amin-maildir (expand-file-name "~/mail/"))
 (after! recentf
@@ -2291,11 +2257,6 @@ I tried using =borg-elpa= instead of doing it like this, but it added
 
 * Blogging
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Blogging
-#+end_src
-
 ** [[https://ox-hugo.scripter.co][ox-hugo]]
 
 #+begin_src emacs-lisp
@@ -2311,11 +2272,6 @@ I tried using =borg-elpa= instead of doing it like this, but it added
 :CUSTOM_ID: post-initialization
 :END:
 
-#+begin_src emacs-lisp :comments none
-\f
-;; * Post initialization
-#+end_src
-
 Display how long it took to load the init file.
 
 #+begin_src emacs-lisp