org-export: Expand include keywords before macros

* contrib/lisp/org-export.el (org-export-as): Expand include keywords
  before macros.  This allows to specify macro templates in the
  included file.
* testing/examples/macro-templates.org: New file for testing purposes.
* testing/lisp/test-org-export.el: Add test.
This commit is contained in:
Nicolas Goaziou 2012-10-10 13:52:54 +02:00
parent bbdd81ad37
commit 89d6a26f8d
3 changed files with 19 additions and 3 deletions

View File

@ -2552,8 +2552,8 @@ Return code as a string."
(current-buffer))))
(org-export-with-current-buffer-copy
(unless noexpand
(org-export-expand-macro info)
(org-export-expand-include-keyword)
(org-export-expand-macro info)
;; TODO: Setting `org-current-export-file' is
;; required by Org Babel to properly resolve
;; noweb references. Once "org-exp.el" is
@ -2724,6 +2724,9 @@ Point is at buffer's beginning when BODY is applied."
(defun org-export-expand-macro (info)
"Expand every macro in buffer.
INFO is a plist containing export options and buffer properties."
;; First update macro templates since #+INCLUDE keywords might have
;; added some new ones.
(org-macro-initialize-templates)
(org-macro-replace-all
;; Before expanding macros, install {{{author}}}, {{{date}}},
;; {{{email}}} and {{{title}}} templates.

View File

@ -0,0 +1,3 @@
# Time-stamp: <2012-10-10 13:51:10 nicolas>
#+TITLE: Macro templates
#+MACRO: included-macro success

View File

@ -436,7 +436,6 @@ body\n")))
(equal "#+MACRO: macro1 value\nvalue"
(org-test-with-temp-text "#+MACRO: macro1 value\n{{{macro1}}}"
(let (info)
(org-macro-initialize-templates)
(org-export-expand-macro info) (buffer-string)))))
;; Export specific macros.
(should
@ -449,7 +448,18 @@ body\n")))
#+EMAIL: me@here
{{{author}}} {{{date}}} {{{email}}} {{{title}}}"
(let ((info (org-export-get-environment)))
(org-macro-initialize-templates)
(org-export-expand-macro info)
(goto-char (point-max))
(buffer-substring (line-beginning-position)
(line-end-position))))))
;; Expand macros with templates in included files.
(should
(equal "success"
(org-test-with-temp-text
(format "#+INCLUDE: \"%s/examples/macro-templates.org\"
{{{included-macro}}}" org-test-dir)
(let (info)
(org-export-expand-include-keyword)
(org-export-expand-macro info)
(goto-char (point-max))
(buffer-substring (line-beginning-position)