diff options
Diffstat (limited to 'lisp/ox-publish.el')
-rw-r--r-- | lisp/ox-publish.el | 20 |
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 |