emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Problem with noweb-ref property


From: Andreas Leha
Subject: Re: [O] Problem with noweb-ref property
Date: Mon, 02 Jan 2012 13:32:09 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux)

Tomas Grigera <address@hidden> writes:
> Hi Eric,
>
> Thanks a lot for your quick reply and fix. Getting the git repo
> version scares me a bit, but I guess I'll just have to take the
> plunge! Here we go :)
>
> Thanks again,
>
> Tomas
>
> On Thu, Dec 29, 2011 at 16:51, Eric Schulte <address@hidden> wrote:
>> Tomas Grigera <address@hidden> writes:
>>
>>> Hi list,
>>>
>>> This is my first post, so just let me say first that I have been using
>>> org-mode for 10 months or so and I love it. It's an exceptional
>>> package, and before I ask my question I would just like to thank
>>> Carsten, Bastien, and the community for the great work and for
>>> sharing.
>>>
>>> Now my question: I am trying to extract code from a .org file by
>>> tangling with noweb-style references. As I understand from the manual,
>>> if I write <<foo>> in a code block, the line will be expanded with the
>>> code block named foo. This name I can set with #+NAME:  or with the
>>> :noweb-ref header argument. Both ways work for me, except that I
>>> cannont set the :noweb-ref argument through a property.
>>>
>>> The following example is almost verbatim from the manual:
>>>
>>> #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
>>> <<fullest-disk>>
>>> #+END_SRC
>>>
>>> * the mount point of the fullest disk
>>>
>>> ** query all mounted disks
>>>
>>> #+HEADER: :noweb-ref fullest-disk
>>> #+BEGIN_SRC sh
>>>         df \
>>> #+END_SRC
>>>
>>>
>>> ** strip the header row
>>>   :PROPERTIES:
>>>   :noweb-ref: fullest-disk
>>>   :END:
>>> #+BEGIN_SRC sh :noweb yes
>>>         |sed '1d' \
>>> #+END_SRC
>>>
>>>
>>> If I understand correctly, tangling should produce a file which is a
>>> concatenation of the two code blocks. However, when I do
>>> org-babel-tangle, only the first block   is inserted. Am I doing
>>> something wrong?
>>>
>>> I'm with emacs 23.2.1 and org-mode 7.8.02
>>>
>>> Thanks in advance,
>>>
>>> Tomas
>>>
>>
>> Hi Tomas,
>>
>> You are correct the behavior described above is a bug introduced by a
>> fairly recent commit of mine which switched to using regular expressions
>> when resolving noweb references in an attempt to decrease the time
>> required to tangle code blocks (which can be significant in large code
>> blocks).
>>
>> However correct performance is more important than fast performance.
>> I've just pushed up a patch which fixes the bug you've described, and
>> hopefully doesn't slow down the tangling process too significantly.
>>
>> Cheers,
>>
>> --
>> Eric Schulte
>> http://cs.unm.edu/~eschulte/

Hi Eric,

unfortunately, for me it does result in a considerably slow down.
(Well, I did not bisect this time but still suspect the commit you
mention in this thread.)

As a test case you can still use
http://pastebin.com/c42jS1Be
from my last post on this matter and expand the first source block.

Sorry to ask again:  Would it be possible to speed things up again or to
make the :noweb-ref feature optional?

Regards,
Andreas






reply via email to

[Prev in Thread] Current Thread [Next in Thread]