浏览代码

ob-tangle: Ignore narrowing when tangling a file

* lisp/ob-tangle.el (org-babel-tangle-file): Ignore narrowing in
a buffer visiting the file being tangled.
Nicolas Goaziou 3 年之前
父节点
当前提交
aabcf9edf2
共有 1 个文件被更改,包括 6 次插入9 次删除
  1. 6 9
      lisp/ob-tangle.el

+ 6 - 9
lisp/ob-tangle.el

@@ -179,15 +179,12 @@ source code blocks by languages matching a regular expression.
 
 Return a list whose CAR is the tangled file name."
   (interactive "fFile to tangle: \nP")
-  (let ((visited-p (find-buffer-visiting (expand-file-name file)))
-	to-be-removed)
-    (prog1
-	(save-window-excursion
-	  (find-file file)
-	  (setq to-be-removed (current-buffer))
-	  (mapcar #'expand-file-name (org-babel-tangle nil target-file lang-re)))
-      (unless visited-p
-	(kill-buffer to-be-removed)))))
+  (let ((visited (find-buffer-visiting file))
+        (buffer (or visited (find-file-noselect file))))
+    (with-current-buffer buffer
+      (org-with-wide-buffer
+       (mapcar #'expand-file-name (org-babel-tangle nil target-file lang-re))))
+    (unless visited (kill-buffer buffer))))
 
 (defun org-babel-tangle-publish (_ filename pub-dir)
   "Tangle FILENAME and place the results in PUB-DIR."