summaryrefslogtreecommitdiff
path: root/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'init.el')
-rw-r--r--init.el25
1 files changed, 24 insertions, 1 deletions
diff --git a/init.el b/init.el
index f12efca..0e00c6b 100644
--- a/init.el
+++ b/init.el
@@ -1 +1,24 @@
-(org-babel-load-file (expand-file-name "config.org" user-emacs-directory))
+;; Set up benchmark-init of initialization early inside init.el to correctly benchmark load time
+(when (package-installed-p 'benchmark-init)
+ (require 'benchmark-init)
+ (add-hook 'after-init-hook 'benchmark-init/deactivate))
+
+(setq checksum-path (expand-file-name ".config-checksum" user-emacs-directory))
+(setq config-path (expand-file-name "config.org" user-emacs-directory))
+(setq config-untangled-path (expand-file-name "config.el" user-emacs-directory))
+
+;; Since config is residing inside one file, I can calculate its checksum and tangle config.org only
+;; when it was changed. This way loading is significantly faster.
+(setq new-checksum (car (split-string (shell-command-to-string (concat "md5sum --zero " config-path)))))
+(setq saved-checksum "")
+(when (file-exists-p checksum-path)
+ (setq saved-checksum (with-temp-buffer
+ (insert-file-contents checksum-path)
+ (buffer-string))))
+(if (string-equal new-checksum saved-checksum)
+ (load-file config-untangled-path)
+ (progn
+ (write-region new-checksum nil checksum-path)
+ (setq org-modules '(org-id ol-info org-protocol))
+ (org-babel-load-file config-path)))
+