summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2011-07-25 15:32:52 +0200
committerBastien Guerry <bzg@altern.org>2011-07-25 15:44:22 +0200
commitbbb2ef510ae8fbf28296c8968b99a24408c7c3ce (patch)
treeb4dd5f1b4157e34c2dc59e0927daf055d4bf0fee
parent642c6667666f1f86f8a461e7bbbc8a2e7510b4b9 (diff)
downloadorg-mode-bbb2ef510ae8fbf28296c8968b99a24408c7c3ce.tar.gz
org-exp: Handle recursively included setup files correctly.
* org-exp.el (org-infile-export-plist): Handle recursively included setup files. The value of the last included file always takes precedence over previous values. Thanks to Stefan Vollmar for signaling this bug.
-rw-r--r--lisp/org-exp.el15
1 files changed, 9 insertions, 6 deletions
diff --git a/lisp/org-exp.el b/lisp/org-exp.el
index 3e7e54b..f5dba50 100644
--- a/lisp/org-exp.el
+++ b/lisp/org-exp.el
@@ -746,7 +746,7 @@ modified) list.")
(case-fold-search t)
p key val text options mathjax a pr style
latex-header latex-class macros letbind
- ext-setup-or-nil setup-contents (start 0))
+ ext-setup-or-nil setup-file setup-dir setup-contents (start 0))
(while (or (and ext-setup-or-nil
(string-match re ext-setup-or-nil start)
(setq start (match-end 0)))
@@ -793,11 +793,14 @@ modified) list.")
((string-equal key "MACRO")
(push val macros))
((equal key "SETUPFILE")
- (setq setup-contents (org-file-contents
- (expand-file-name
- (org-remove-double-quotes
- (org-trim val)))
- 'noerror))
+ (setq setup-file (org-remove-double-quotes (org-trim val))
+ ;; take care of recursive inclusion of setupfiles
+ setup-file (if (or (file-name-absolute-p val) (not setup-dir))
+ (expand-file-name setup-file)
+ (let ((default-directory setup-dir))
+ (expand-file-name setup-file))))
+ (setq setup-dir (file-name-directory setup-file))
+ (setq setup-contents (org-file-contents setup-file 'noerror))
(if (not ext-setup-or-nil)
(setq ext-setup-or-nil setup-contents start 0)
(setq ext-setup-or-nil