ob-tangle: Respect buffer local variables

* lisp/ob-tangle.el (org-babel-tangle): Make sure buffer local
  variables from Org document are taken into consideration in tangled
  document.

Reported-by: David Dynerman <emperordali@block-party.net>
<http://permalink.gmane.org/gmane.emacs.orgmode/110577>
This commit is contained in:
Nicolas Goaziou 2016-12-03 23:55:28 +01:00
parent e72485336f
commit 026fb75ddb

View file

@ -271,7 +271,20 @@ used to limit the exported source code blocks by language."
(and (file-exists-p file-name)
(not (member file-name (mapcar #'car path-collector)))
(delete-file file-name))
;; drop source-block to file
;; Drop source-block to file. Preserve local
;; file variables set in original Org buffer so
;; that `org-babel-spec-to-string' doesn't
;; ignore them.
(let ((org-babel-tangle-use-relative-file-links
org-babel-tangle-use-relative-file-links)
(org-babel-tangle-uncomment-comments
org-babel-tangle-uncomment-comments)
(org-babel-tangle-comment-format-beg
org-babel-tangle-comment-format-beg)
(org-src-preserve-indentation
org-src-preserve-indentation)
(org-babel-tangle-comment-format-end
org-babel-tangle-comment-format-end))
(with-temp-buffer
(when (fboundp lang-f) (ignore-errors (funcall lang-f)))
(when (and she-bang (not (member file-name she-banged)))
@ -289,7 +302,7 @@ used to limit the exported source code blocks by language."
(= (point) (point-min)))
(insert "\n"))
(insert content)
(write-region nil nil file-name))))
(write-region nil nil file-name)))))
;; if files contain she-bangs, then make the executable
(when she-bang
(unless tangle-mode (setq tangle-mode #o755)))