Преглед изворни кода

ob-tangle: fixed bug, org-babel-post-tangle-hook was using an undefined macro

* lisp/ob-tangle.el (org-babel-with-temp-filebuffer): a macro for
  quickly visiting files with cleanup

  (org-babel-tangle): now using the locally defined
  with-temp-filebuffer macro
Eric Schulte пре 14 година
родитељ
комит
a503e031fb
1 измењених фајлова са 15 додато и 2 уклоњено
  1. 15 2
      lisp/ob-tangle.el

+ 15 - 2
lisp/ob-tangle.el

@@ -34,7 +34,6 @@
 
 (declare-function org-link-escape "org" (text &optional table))
 (declare-function org-heading-components "org" ())
-(declare-function with-temp-filebuffer "org-interaction" (file &rest body))
 
 (defcustom org-babel-tangle-lang-exts
   '(("emacs-lisp" . "el"))
@@ -54,6 +53,20 @@ then the name of the language is used."
   :group 'org-babel
   :type 'hook)
 
+(defmacro org-babel-with-temp-filebuffer (file &rest body)
+  "Open FILE into a temporary buffer execute BODY there like
+`progn', then kill the FILE buffer returning the result of
+evaluating BODY."
+  (declare (indent 1))
+  (let ((temp-result (make-symbol "temp-result"))
+	(temp-file (make-symbol "temp-file")))
+    `(let (,temp-result ,temp-file)
+       (find-file ,file)
+       (setf ,temp-file (current-buffer))
+       (setf ,temp-result (progn ,@body))
+       (kill-buffer ,temp-file)
+       ,temp-result)))
+
 ;;;###autoload
 (defun org-babel-load-file (file)
   "Load Emacs Lisp source code blocks in the Org-mode FILE.
@@ -176,7 +189,7 @@ exported source code blocks by language."
       (when org-babel-post-tangle-hook
 	(mapc
 	 (lambda (file)
-	   (with-temp-filebuffer file
+	   (org-babel-with-temp-filebuffer file
 	     (run-hooks 'org-babel-post-tangle-hook)))
 	 path-collector))
       path-collector)))