summaryrefslogtreecommitdiffstats
path: root/emacs.d/lisp/self-compile-mode.el
blob: 637f3f1b849cc78751005ec3e0dea48e10e16046 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
;;; self-compile-mode.el --- A simple minor mode for byte compiling files.

;; Copyright (C) 2012 Alexander Sulfrian

;; Author: Alexander Sulfrian <alexander@sulfrian.net>
;; Created: 2012-03-14
;; Keywords: minor-mode compile lisp

;; 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 2, 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, write to the Free Software
;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

;;; Commentary:

;; Simply activate this minor mode and the file in the buffer should
;; get byte-compiled after you safe it.
;;
;; Tip: Enable this mode wiht local file variables in the header or
;; footer of an elisp file, to byte compile it every time. You could
;; try for example the following code in the header of the file:
;; ;; -*- self-compile-mode: t -*-

;;; Code:

(provide 'self-compile-mode)

(defun autocompile nil
  "compile itself if ~/.emacs"
  (interactive)
  (require 'bytecomp)
  (if self-compile-mode
      (byte-compile-file (buffer-file-name))))

(define-minor-mode self-compile-mode
  "Toggle Self Compile mode.
With no argument, this command toggles the mode.
Non-null prefix argument turns on the mode.
Null prefix argument turns off the mode.

When Self Compile mode is enabled, the file gets
byte compiled after saving."
      :init-value nil
      :lighter " Compile")
(add-hook 'after-save-hook 'autocompile)

;; Local variables:
;; self-compile-mode: t
;; end:

;;; self-compile-mode.el ends here