diff --git a/.githooks/post-merge b/.githooks/post-merge index 9e41132..3160cd7 100755 --- a/.githooks/post-merge +++ b/.githooks/post-merge @@ -5,10 +5,29 @@ job="$(git diff-tree -r --name-only --no-commit-id HEAD^ HEAD -- README.org)" if [ -n "$job" ]; then - emacs --batch \ - --eval "(add-to-list 'safe-local-eval-forms '(apply 'my-org-eval-blocks-named '(\"emacs-lisp-setup\")))" \ - --eval "(require 'org)" \ - --eval "(org-babel-tangle-file \"$job\")" + emacs -Q --batch --eval " +(progn + (require 'org) + (defun my-org-eval-blocks-named (name) + (when (eq major-mode 'org-mode) + (let ((blocks + (org-element-map + (org-element-parse-buffer 'greater-element nil) 'src-block + (lambda (block) + (when (string= name (org-element-property :name block)) + block))))) + (dolist (block blocks) + (goto-char (org-element-property :begin block)) + (org-babel-execute-src-block))))) + + (add-to-list 'safe-local-eval-forms + '(apply 'my-org-eval-blocks-named '(\"emacs-lisp-setup\"))) + + (setq org-confirm-babel-evaluate nil) + (setq python-indent-guess-indent-offset nil) + + (org-babel-tangle-file \"$job\")) +" fi # Local Variables: diff --git a/Makefile b/Makefile index a060de3..230359e 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,4 @@ # https://emacs.stackexchange.com/questions/27126/is-it-possible-to-org-bable-tangle-an-org-file-from-the-command-line init: git config core.hooksPath .githooks - emacs --batch \ - --eval "(add-to-list 'safe-local-eval-forms '(apply 'my-org-eval-blocks-named '(\"emacs-lisp-setup\")))" \ - --eval "(require 'org)" --eval '(org-babel-tangle-file "README.org")' + sh org-babel-tangle-file README.org diff --git a/org-babel-tangle-file b/org-babel-tangle-file new file mode 100755 index 0000000..2b2e5ba --- /dev/null +++ b/org-babel-tangle-file @@ -0,0 +1,31 @@ +#!/usr/bin/env sh + +emacs -Q --batch --eval " +(progn + (require 'org) + (defun my-org-eval-blocks-named (name) + (when (eq major-mode 'org-mode) + (let ((blocks + (org-element-map + (org-element-parse-buffer 'greater-element nil) 'src-block + (lambda (block) + (when (string= name (org-element-property :name block)) + block))))) + (dolist (block blocks) + (goto-char (org-element-property :begin block)) + (org-babel-execute-src-block))))) + + (add-to-list 'safe-local-eval-forms + '(apply 'my-org-eval-blocks-named '(\"emacs-lisp-setup\"))) + + (setq org-confirm-babel-evaluate nil) + (setq python-indent-guess-indent-offset nil) + + (org-babel-tangle-file \"$1\")) +" + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# sh-basic-offset: 2 +# End: