diff options
Diffstat (limited to 'emacs/.emacs.d/init')
-rw-r--r-- | emacs/.emacs.d/init/oni-compilation-init.el | 72 | ||||
-rw-r--r-- | emacs/.emacs.d/init/oni-compilation-init.org | 41 |
2 files changed, 72 insertions, 41 deletions
diff --git a/emacs/.emacs.d/init/oni-compilation-init.el b/emacs/.emacs.d/init/oni-compilation-init.el new file mode 100644 index 0000000..44b45e7 --- /dev/null +++ b/emacs/.emacs.d/init/oni-compilation-init.el @@ -0,0 +1,72 @@ +;;; oni-compilation-init.el --- Compilation mode configuration -*- lexical-binding: t; -*- + +;; Copyright (C) 2018 Tom Willemse + +;; Author: Tom Willemse <tom@ryuslash.org> +;; Keywords: local + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; My configuration for compilation mode. + +;;; Code: + +(require 'compile) +(require 'shackle) +(require 'subr-x) + +(setq compilation-scroll-output t) + +(defun oni-compilation-init--maybe-dont-show-window (buffer-or-name alist plist) + "Don't show BUFFER-OR-NAME unless it absolutely must. + +ALIST and PLIST contain extra information about the buffer." + (if (alist-get 'allow-no-window alist) + buffer-or-name + (funcall (plist-get plist :fallback) buffer-or-name alist + (plist-put (copy-sequence plist) :custom nil)))) + +(defun oni-compilation-init--maybe-display-compilation-window (buffer status) + "Display BUFFER if STATUS is not finished." + (unless (string= (string-trim status) "finished") + (display-buffer buffer))) + +(defun oni-compilation-init--ansi-color-for-compilation-filter () + "Apply ANSI terminal escape codes to compilation output." + (ansi-color-apply-on-region compilation-filter-start (point))) + +(defun oni-compilation-init--compilation-finish-notify-function (buffer status) + "Show an alert of the status of the compliation. + +BUFFER is the `compilation-mode' buffer and STATUS is the exit +status of the process." + (when (string= (buffer-name buffer) "*compilation*") + (if (string= (string-trim status) "finished") + (alert "Compilation finished succesfully") + (alert "Compilation finished with an error")))) + +(add-to-list 'shackle-rules + '(compilation-mode :custom oni-compilation-init--maybe-dont-show-window + :fallback shackle-display-buffer + :other t :select t)) + +(add-hook 'compilation-filter-hook #'oni-compilation-init--ansi-color-for-compilation-filter) +(add-hook 'compilation-finish-functions #'oni-compilation-init--maybe-display-compilation-window) +(add-hook 'compilation-finish-functions #'oni-compilation-init--compilation-finish-notify-function) + + +(provide 'oni-compilation-init) +;;; oni-compilation-init.el ends here diff --git a/emacs/.emacs.d/init/oni-compilation-init.org b/emacs/.emacs.d/init/oni-compilation-init.org deleted file mode 100644 index 162f7d2..0000000 --- a/emacs/.emacs.d/init/oni-compilation-init.org +++ /dev/null @@ -1,41 +0,0 @@ -#+TITLE: Compilation mode configuration - -#+BEGIN_SRC emacs-lisp - (require 'compile) - (require 'shackle) - (require 'subr-x) -#+END_SRC - -Scroll output in compilation mode. - -#+BEGIN_SRC emacs-lisp - (setq compilation-scroll-output t) -#+END_SRC - -Don't show the compilation window when compilation starts. - -#+BEGIN_SRC emacs-lisp - (defun oni:maybe-dont-show-window (buffer-or-name alist plist) - "Don't show BUFFER-OR-NAME unless it absolutely must." - (if (alist-get 'allow-no-window alist) - buffer-or-name - (funcall (plist-get plist :fallback) buffer-or-name alist - (plist-put (copy-sequence plist) :custom nil)))) - - (add-to-list 'shackle-rules - '(compilation-mode :custom oni:maybe-dont-show-window - :fallback shackle-display-buffer - :other t :select t)) -#+END_SRC - -Show the compilation window when compilation has finished with a -non-zero exit status. - -#+BEGIN_SRC emacs-lisp - (defun oni:maybe-display-compilation-window (buffer status) - "Display BUFFER if STATUS is not finished." - (unless (string= (string-trim status) "finished") - (display-buffer buffer))) - - (add-hook 'compilation-finish-functions #'oni:maybe-display-compilation-window) -#+END_SRC |