From 238a4f774e61f9fabd917c7b6930cb7bcc1ceb03 Mon Sep 17 00:00:00 2001 From: "Collin J. Doering" Date: Sat, 20 Apr 2024 09:57:29 -0400 Subject: [PATCH] emacs-configuration: Adjust init.el to handle symlinks differently * user-config/emacs/.emacs.d/init.el: Prior to moving emacs configuration to the guix store, this issue didn't occur; however, after doing so, ~/.emacs.d/config.el is a symlink to a store file. Because org-babel-load-file resolved symlinks before comparing their timestamps, and config.org is now a symlink to a store file with an unchanging timestamp, config.org changes never get tangled. To resolve this, instead we compare the symlink age of config.org to the tangled file. --- user-config/emacs/.emacs.d/init.el | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/user-config/emacs/.emacs.d/init.el b/user-config/emacs/.emacs.d/init.el index 6e846b9..602136f 100644 --- a/user-config/emacs/.emacs.d/init.el +++ b/user-config/emacs/.emacs.d/init.el @@ -30,4 +30,18 @@ ; executable (new in org 9.6) (org-confirm-babel-evaluate nil)) (when (file-exists-p config) - (org-babel-load-file config t))) + (when (or (not (file-exists-p el)) + (time-less-p + (file-attribute-modification-time (file-attributes el)) + (file-attribute-modification-time (file-attributes config)))) + (org-babel-tangle-file config el) + ;; Make sure that tangled file modification time is + ;; updated even when `org-babel-tangle-file' does not make changes. + ;; This avoids re-tangling changed FILE where the changes did + ;; not affect the tangled code. + (when (file-exists-p el) + (set-file-times el)) + + (byte-compile-file el) + (load-file (byte-compile-dest-file el)) + (message "Compiled and loaded %s" el))))