Hi I would like to use macros in files that I include in another file. The problem is that the macros don't expand in included files. Is there something I have missed or? Example main.org: = main.org START ======== #+TITLE: Mainpage #+MACRO: MacM @<strong>$1@</strong> {{{MacM(Main)}}} #+INCLUDE: "sub.org" = main.org END ======== = sub.org START ======== #+TITLE: Subpage #+MACRO: Mac @<strong>$1@</strong> {{{MacM(Sub)}}} {{{Mac(Sub)}}} * Subpage title content = sub.org END ======== I export to html e.g. via: org-export-as-html-to-buffer on main.org The result is {{{MacM(Main)}}} is expanded as expected but the {{{Mac*(Sub)}}} isn't expanded. Best regards Benny
Hi I would like to use macros in files that I include in another file. The problem is that the macros don't expand in included files. Is there something I have missed or? Example with two files, main.org and sub.org = main.org START ======== #+TITLE: Mainpage #+MACRO: MacM @<strong>$1@</strong> {{{MacM(Main)}}} #+INCLUDE: "sub.org" = main.org END ======== = sub.org START ======== #+TITLE: Subpage #+MACRO: Mac @<strong>$1@</strong> {{{MacM(Sub)}}} {{{Mac(Sub)}}} * Subpage title content = sub.org END ======== I export to html e.g. via: org-export-as-html-to-buffer on main.org The result is {{{MacM(Main)}}} is expanded as expected but the {{{Mac*(Sub)}}} isn't expanded. Best regards Benny
Hi Benny, Benny Simonsen wrote: > The result is {{{MacM(Main)}}} is expanded as expected but the > {{{Mac*(Sub)}}} isn't expanded. What's Mac*? In your example, you just have MacM and Mac... Best regards, Seb -- Sébastien Vauban -- Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
2011/3/3 Sébastien Vauban <wxhgmqzgwmuf@spammotel.com>: > Hi Benny, > > Benny Simonsen wrote: >> The result is {{{MacM(Main)}}} is expanded as expected but the >> {{{Mac*(Sub)}}} isn't expanded. > > What's Mac*? > > In your example, you just have MacM and Mac... MacM is the macro defined in main.org: #+MACRO: MacM @<strong>$1@</strong> and Mac is a similar macro in sub.org - just to see if it gives any difference in sub.org about the macro is defined in the same file or in another file. The content of the two files should be visible in my original post(s). If not let me hear. - sorry I posted twice, but I couldn't see the fist message that I have sent because of the filtering on gmail. Best regards, Benny -- Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
2011/3/2 Benny Simonsen <benny@slbs.dk>: > Hi > > I would like to use macros in files that I include in another file. > The problem is that the macros don't expand in included files. Is > there something I have missed or? > > Example with two files, main.org and sub.org > > = main.org START ======== > #+TITLE: Mainpage > #+MACRO: MacM @<strong>$1@</strong> > > {{{MacM(Main)}}} > > #+INCLUDE: "sub.org" > = main.org END ======== > > = sub.org START ======== > #+TITLE: Subpage > #+MACRO: Mac @<strong>$1@</strong> > > {{{MacM(Sub)}}} > > {{{Mac(Sub)}}} > > * Subpage title > content > = sub.org END ======== > > I export to html e.g. via: > org-export-as-html-to-buffer on main.org > > The result is > {{{MacM(Main)}}} is expanded as expected but the {{{Mac*(Sub)}}} isn't expanded. > > Best regards > Benny > I have a patch that will expand macros in included files. Inclusion is performed before macro expansion If somebody includes files via MACRO then this will not work. Instead it is required to perform macro expansion, then inclusion and macro expansion again. This can still fail if somebody tries to include a page via an macro on a included page. BUT I have an (theoretical) issue: macros defined in included files (In this case the macro Mac that is defined in sub.org don't work in sub.org. ... This is not the way I normally work, I have a file containing my macros (loaded via SETUPFILE). If wanted, I can applly the patch by myself - if I have permissions. Best regards Benny --- Patch -------------------- diff --git a/lisp/org-exp.el b/lisp/org-exp.el index 5f0ae5d..05e921a 100644 --- a/lisp/org-exp.el +++ b/lisp/org-exp.el @@ -1076,16 +1076,16 @@ on this string to produce the exported version." ;; Call the hook (run-hooks 'org-export-preprocess-hook) + ;; Handle include files, and call a hook + (org-export-handle-include-files-recurse) + (run-hooks 'org-export-preprocess-after-include-files-hook) + ;; Process the macros (org-export-preprocess-apply-macros) (run-hooks 'org-export-preprocess-after-macros-hook) (untabify (point-min) (point-max)) - ;; Handle include files, and call a hook - (org-export-handle-include-files-recurse) - (run-hooks 'org-export-preprocess-after-include-files-hook) - ;; Get rid of archived trees (org-export-remove-archived-trees archived-trees)
Hi Benny,
Benny Simonsen wrote:
> 2011/3/2 Benny Simonsen <benny-krXKKDdbxn8@public.gmane.org>:
>> I would like to use macros in files that I include in another file.
>> The problem is that the macros don't expand in included files. Is
>> there something I have missed or?
>>
>> Example with two files, main.org and sub.org
>>
>> = main.org START ========
>> #+TITLE: Mainpage
>> #+MACRO: MacM @<strong>$1@</strong>
>>
>> {{{MacM(Main)}}}
>>
>> #+INCLUDE: "sub.org"
>> = main.org END ========
>>
>> = sub.org START ========
>> #+TITLE: Subpage
>> #+MACRO: Mac @<strong>$1@</strong>
>>
>> {{{MacM(Sub)}}}
>>
>> {{{Mac(Sub)}}}
>>
>> * Subpage title
>> content
>> = sub.org END ========
>>
>> I export to html e.g. via:
>> org-export-as-html-to-buffer on main.org
>>
>> The result is
>> {{{MacM(Main)}}} is expanded as expected but the {{{Mac*(Sub)}}} isn't expanded.
Your example looks wrong to me: you say Mac* is not working, but only MacM and
Mac are defined. What about the trailing the star?
Best regards,
Seb
--
Sébastien Vauban
2011/3/5 Sébastien Vauban <wxhgmqzgwmuf@spammotel.com>:
> Hi Benny,
>
> Benny Simonsen wrote:
>> 2011/3/2 Benny Simonsen <benny@slbs.dk>:
>>> I would like to use macros in files that I include in another file.
>>> The problem is that the macros don't expand in included files. Is
>>> there something I have missed or?
>>>
>>> Example with two files, main.org and sub.org
>>>
>>> = main.org START ========
>>> #+TITLE: Mainpage
>>> #+MACRO: MacM @<strong>$1@</strong>
>>>
>>> {{{MacM(Main)}}}
>>>
>>> #+INCLUDE: "sub.org"
>>> = main.org END ========
>>>
>>> = sub.org START ========
>>> #+TITLE: Subpage
>>> #+MACRO: Mac @<strong>$1@</strong>
>>>
>>> {{{MacM(Sub)}}}
>>>
>>> {{{Mac(Sub)}}}
>>>
>>> * Subpage title
>>> content
>>> = sub.org END ========
>>>
>>> I export to html e.g. via:
>>> org-export-as-html-to-buffer on main.org
>>>
>>> The result is
>>> {{{MacM(Main)}}} is expanded as expected but the {{{Mac*(Sub)}}} isn't expanded.
>
> Your example looks wrong to me: you say Mac* is not working, but only MacM and
> Mac are defined. What about the trailing the star?
>
The * was just a wildcard so Mac* means MacM and Mac.
A brief summary
MacM is defined in main.org - and expands in this file.
Mac is defined in sub.org - but neither MacM or Mac works in sub.org.
With my patch MacM works in both files, but Mac don't work - not a
problem for me - but not nice.
Best regards
Benny
[-- Attachment #1: Type: text/plain, Size: 942 bytes --] Hi Some time ago I was posting about a problem with macros in included files - they will not expand. Example with two files top.org and sub.org: macro in the included file sub.org isn't expanded during export. See the content of the example files below. The patch fixes this so that the macro is expanded in both top.org and sub.org. Setup: org-mode: git master (head) export top.org with org-export-as-html I hope that the patch format is ok ("git diff" output) attached. Best regards Benny Simonsen ### top.org ############################################################ #+TITLE: Debug org file #+MACRO: testmacro Expanded {{{testmacro}}} #+INCLUDE: "sub.org" ######################################################################## ### sub.org ############################################################ #+TITLE: Included debug org file {{{testmacro}}} ######################################################################## [-- Attachment #2: macro-expansion-in-included-files.patch --] [-- Type: text/x-patch, Size: 565 bytes --] diff --git a/lisp/org-exp.el b/lisp/org-exp.el index 34f101d..d6b23a9 100644 --- a/lisp/org-exp.el +++ b/lisp/org-exp.el @@ -1083,6 +1083,10 @@ on this string to produce the exported version." ;; Call the hook (run-hooks 'org-export-preprocess-hook) + ;; Handle include files, and call a hook + (org-export-handle-include-files-recurse) + (run-hooks 'org-export-preprocess-after-include-files-hook) + ;; Process the macros (org-export-preprocess-apply-macros) (run-hooks 'org-export-preprocess-after-macros-hook)
Applied, thanks.
- Carsten
On Mar 14, 2011, at 11:01 PM, Benny Simonsen wrote:
> Hi
>
> Some time ago I was posting about a problem with macros in included
> files - they will not expand.
>
> Example with two files top.org and sub.org: macro in the included file
> sub.org isn't expanded during export.
> See the content of the example files below.
>
> The patch fixes this so that the macro is expanded in both top.org and sub.org.
>
> Setup:
> org-mode: git master (head)
> export top.org with org-export-as-html
>
> I hope that the patch format is ok ("git diff" output) attached.
>
> Best regards
> Benny Simonsen
>
> ### top.org ############################################################
> #+TITLE: Debug org file
> #+MACRO: testmacro Expanded
>
> {{{testmacro}}}
>
> #+INCLUDE: "sub.org"
> ########################################################################
>
> ### sub.org ############################################################
> #+TITLE: Included debug org file
>
> {{{testmacro}}}
> ########################################################################
> <macro-expansion-in-included-files.patch>
- Carsten
Hi Benny,
Benny Simonsen <benny@slbs.dk> writes:
> I have a patch that will expand macros in included files.
> Inclusion is performed before macro expansion
Thanks for this patch, it looks good to me.
Can someone test it and report any problems?
Thanks!
--
Bastien
[-- Attachment #1: Type: text/plain, Size: 814 bytes --] Hi Now I have updated to head - It works, but I was a bit confused that the Mac macro didn't expand ... forgot to read my old post :) > BUT I have an (theoretical) issue: macros defined in included files > (In this case the macro Mac that is defined in sub.org don't work in > sub.org. ... This is not the way I normally work, I have a file > containing my macros (loaded via SETUPFILE). Sorry for the late response. Bastian: Thank you for apllying the patch. Cheers, Benny 2011/6/30 Bastien <bzg@altern.org> > Hi Benny, > > Benny Simonsen <benny@slbs.dk> writes: > > > I have a patch that will expand macros in included files. > > Inclusion is performed before macro expansion > > Thanks for this patch, it looks good to me. > > Can someone test it and report any problems? > > Thanks! > > -- > Bastien > [-- Attachment #2: Type: text/html, Size: 1404 bytes --]