summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfpi2020-07-23 10:38:59 +0200
committerfpi2020-07-23 12:04:45 +0200
commitce3fac717205457c35eb486501754cc681127c9e (patch)
treec07cd34d6a919c64b2e53438d5fdc13be3a6f89c
parentAdd git annex support (diff)
[WIP] Add basic version of async tangling
-rw-r--r--.dir-locals.el7
-rw-r--r--emacs-init.org15
2 files changed, 21 insertions, 1 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 0000000..05bfae2
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,7 @@
+;;; Directory Local Variables
+;;; For more information see (info "(emacs) Directory Variables")
+
+((org-mode . ((eval . (add-hook 'before-save-hook
+ (lambda nil
+ (fpi/tangle-async))
+ nil t)))))
diff --git a/emacs-init.org b/emacs-init.org
index 660e3be..abff790 100644
--- a/emacs-init.org
+++ b/emacs-init.org
@@ -47,8 +47,21 @@ they are tangled upon save I use this function.
(expand-file-name "git/projects/dotfiles/" (getenv "HOME")))
(org-babel-tangle)
(message "%s tangled" buffer-file-name)))
+(defmacro fpi/tangle-async (&optional file)
+ "Tangle FILE with a separate emacs instance.
-(add-hook 'org-mode-hook (lambda () (add-hook 'before-save-hook #'fpi/tangle-dotfiles nil t)) t)
+Note that this does not respect any customization of the tangle
+process in your init file as it is not loaded. This uses the
+emacs-async library."
+ (interactive)
+ (let ((file (or file (buffer-file-name))))
+ (and file
+ (not (file-remote-p file))
+ `(async-start
+ (lambda ()
+ (require 'org)
+ (org-babel-tangle-file ,file)
+ 'ignore)))))
#+END_SRC
As I use =org-crypt= all =.org= files need to be decrypted before
tangling, saved without encrypting and encrypted after tangling and