summaryrefslogtreecommitdiff
path: root/lisp/ox-publish.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/ox-publish.el')
-rw-r--r--lisp/ox-publish.el20
1 files changed, 13 insertions, 7 deletions
diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el
index 20cacf9..2ec4137 100644
--- a/lisp/ox-publish.el
+++ b/lisp/ox-publish.el
@@ -1229,7 +1229,7 @@ If FREE-CACHE, empty the cache."
(setq org-publish-cache nil))
(defun org-publish-cache-file-needs-publishing
- (filename &optional pub-dir pub-func base-dir)
+ (filename &optional pub-dir pub-func base-dir)
"Check the timestamp of the last publishing of FILENAME.
Return non-nil if the file needs publishing. Also check if
any included files have been more recently published, so that
@@ -1250,12 +1250,18 @@ the file including them will be republished as well."
(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-+\\)" value)
- (org-remove-double-quotes
- (match-string 1 value)))))))
+ (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-remove-double-quotes
+ ;; Ignore search suffix.
+ (if (string-match "\\(::\\(.*?\\)\\)\"?\\'" m)
+ (substring m 0 (match-beginning 0))
+ m))))))))
(when included-file
(add-to-list 'included-files-ctime
(org-publish-cache-ctime-of-src