define jj-color-style. byte-compile all init files when needed.
authorJoerg Jaspert <joerg@debian.org>
Fri, 3 May 2013 08:14:25 +0000 (10:14 +0200)
committerJoerg Jaspert <joerg@debian.org>
Fri, 3 May 2013 08:14:25 +0000 (10:14 +0200)
.emacs.d/init.el

index 0717253..f038db5 100644 (file)
@@ -17,7 +17,7 @@
 
 ;; I like to see how long it takes to "boot" emacs (usually one or two
 ;; seconds), so save the start time
-(setq emacs-load-start-time (current-time))
+(defvar emacs-load-start-time (current-time))
 
 ;; We will need a set of directories for stuff
 ;; Lets define some variables for them
@@ -79,6 +79,7 @@ Usually ~/.emacs.d/")
                               (number-to-string emacs-major-version) ".org")
                       jj-config-dir)
   "Ganneffs emacs version specific configuration file.")
+(defvar jj-color-style 'dark "Which color scheme of solarized to select. Dark or Light")
 
 ;; Ensure that the cache directory hierarchy exists
 (if (not (file-exists-p jj-cache-dir))
@@ -101,8 +102,17 @@ Usually ~/.emacs.d/")
 (require 'org-install)
 (require 'ob-tangle)
 
-;; Now read my config
-;; Note that those files *can* include further files.
+(defvar jj-init-files '() "Temporary list of files that need a byte-compile")
+(defun jj-byte-compile-init ()
+  "Byte compile a list of files"
+  (let (filename)
+    (dolist (filename jj-init-files)
+      (when (file-exists-p filename)
+        (message "Byte-compiling %s, standby" filename)
+        (byte-compile-file filename))))
+  (makunbound 'jj-init-files)
+  (makunbound 'jj-byte-compile-init)
+  )
 (defun jj-compile-and-load (&optional arg)
   "Use org-tangle to get the emacs-lisp parts from .org emacs
 config files into .el ones, byte-compile those and then load
@@ -110,24 +120,25 @@ them."
   (let ((el-file (concat (file-name-sans-extension arg) ".el")))
     (cond
      ((file-newer-than-file-p arg el-file)
-      (message "File %s newer than %s, recompiling, please wait" arg el-file)
       (org-babel-tangle-file arg el-file "emacs-lisp")
-      (byte-compile-file el-file)
-      ))
+      (add-hook 'after-init-hook 'jj-byte-compile-init)
+      (add-to-list 'jj-init-files (symbol-value 'el-file))))
     (load-file el-file)
     ))
 
+;; Now read my config
+;; Note that those files *can* include further files.
 ;; The basic config is always loaded, no matter where we start emacs.
 (jj-compile-and-load jj-emacs-config)
-;(org-babel-load-file jj-emacs-config)
 
 ;; All the others are optional. We try the order of os, system, user
 ;; specific files and load them, should they be there
-(if (file-exists-p jj-os-config) (org-babel-load-file jj-os-config ))
-;(if (file-exists-p jj-sys-config) (org-babel-load-file jj-sys-config))
-(if (file-exists-p jj-sys-config) (jj-compile-and-load jj-sys-config))
-(if (file-exists-p jj-user-config) (org-babel-load-file jj-user-config))
-(if (file-exists-p jj-ev-config) (org-babel-load-file jj-emacs-version-config))
+(if (file-exists-p jj-os-config)   (jj-compile-and-load jj-os-config))
+(if (file-exists-p jj-sys-config)  (jj-compile-and-load jj-sys-config))
+(if (file-exists-p jj-user-config) (jj-compile-and-load jj-user-config))
+(if (file-exists-p jj-ev-config)   (jj-compile-and-load jj-ev-config))
+
+(makunbound 'jj-compile-and-load)
 
 ;; Lets get a message about startup time out
 (when (require 'time-date nil t)