Browse Source

ox-publish: Fix unwanted buffer pop-up

* lisp/ox-publish.el (org-publish-cache-file-needs-publishing): Use
  `find-file-noselect' instead of `find-file'.
Nicolas Goaziou 8 years ago
parent
commit
c61ee8b82a
1 changed files with 27 additions and 25 deletions
  1. 27 25
      lisp/ox-publish.el

+ 27 - 25
lisp/ox-publish.el

@@ -1204,32 +1204,34 @@ the file including them will be republished as well."
 	 (pstamp (org-publish-cache-get key))
 	 (org-inhibit-startup t)
 	 (visiting (find-buffer-visiting filename))
-	 included-files-ctime buf)
+	 (buf (find-file-noselect (expand-file-name filename)))
+	 included-files-ctime)
     (when (equal (file-name-extension filename) "org")
-      (setq buf (find-file (expand-file-name filename)))
-      (with-current-buffer buf
-	(goto-char (point-min))
-	(while (re-search-forward "^[ \t]*#\\+INCLUDE:" nil t)
-	  (let* ((element (org-element-at-point))
-		 (included-file
-                  (and (eq (org-element-type element) 'keyword)
-                       (let ((value (org-element-property :value element)))
-                         (and value
-                              (string-match
-			       "\\`\\(\".+?\"\\|\\S-+\\)\\(?:\\s-+\\|$\\)"
-			       value)
-                              (let ((m (match-string 1 value)))
-                                (org-unbracket-string
-				 "\"" "\""
-				 ;; Ignore search suffix.
-                                 (if (string-match "\\(::\\(.*?\\)\\)\"?\\'" m)
-                                     (substring m 0 (match-beginning 0))
-                                   m))))))))
-	    (when included-file
-	      (push (org-publish-cache-ctime-of-src
-		     (expand-file-name included-file))
-		    included-files-ctime)))))
-      (unless visiting (kill-buffer buf)))
+      (unwind-protect
+	  (with-current-buffer buf
+	    (goto-char (point-min))
+	    (while (re-search-forward "^[ \t]*#\\+INCLUDE:" nil t)
+	      (let* ((element (org-element-at-point))
+		     (included-file
+		      (and (eq (org-element-type element) 'keyword)
+			   (let ((value (org-element-property :value element)))
+			     (and value
+				  (string-match
+				   "\\`\\(\".+?\"\\|\\S-+\\)\\(?:\\s-+\\|$\\)"
+				   value)
+				  (let ((m (match-string 1 value)))
+				    (org-unbracket-string
+				     "\"" "\""
+				     ;; Ignore search suffix.
+				     (if (string-match "\\(::\\(.*?\\)\\)\"?\\'"
+						       m)
+					 (substring m 0 (match-beginning 0))
+				       m))))))))
+		(when included-file
+		  (push (org-publish-cache-ctime-of-src
+			 (expand-file-name included-file))
+			included-files-ctime)))))
+	(unless visiting (kill-buffer buf))))
     (or (null pstamp)
 	(let ((ctime (org-publish-cache-ctime-of-src filename)))
 	  (or (< pstamp ctime)