emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Can you automatically noweb include?
@ 2020-08-05 21:21 George Mauer
  2020-08-05 22:03 ` Ken Mankoff
  2020-08-08  4:18 ` Tom Gillespie
  0 siblings, 2 replies; 14+ messages in thread
From: George Mauer @ 2020-08-05 21:21 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 646 bytes --]

Use case:

I'm using ob-racket <https://github.com/togakangaroo/ob-racket> but this
would apply just as well to a few other workflows I have with python or js.

I would like to write a helper function in a src block and then
automatically have access to it in other src blocks further down the
document. I don't really want a stateful session (nor does ob-racket
support sessions) so I essentially want the equivalent of automatically
including it everywhere so I don't have to type it out all the time (and
have it screw up syntax coloring/indentation).

Is this currently possible? Does anyone have any ideas for how to extend
things so it is?

[-- Attachment #2: Type: text/html, Size: 765 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-05 21:21 Can you automatically noweb include? George Mauer
@ 2020-08-05 22:03 ` Ken Mankoff
  2020-08-06 18:12   ` Ken Mankoff
  2020-08-08  4:18 ` Tom Gillespie
  1 sibling, 1 reply; 14+ messages in thread
From: Ken Mankoff @ 2020-08-05 22:03 UTC (permalink / raw)
  To: gmauer; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 914 bytes --]

What about using :pre or :prologue and setting it at the header or document
level?

Please excuse brevity. Sent from tiny pocket computer with
non-haptic-feedback keyboard.

On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> wrote:

> Use case:
>
> I'm using ob-racket <https://github.com/togakangaroo/ob-racket> but this
> would apply just as well to a few other workflows I have with python or js.
>
> I would like to write a helper function in a src block and then
> automatically have access to it in other src blocks further down the
> document. I don't really want a stateful session (nor does ob-racket
> support sessions) so I essentially want the equivalent of automatically
> including it everywhere so I don't have to type it out all the time (and
> have it screw up syntax coloring/indentation).
>
> Is this currently possible? Does anyone have any ideas for how to extend
> things so it is?
>

[-- Attachment #2: Type: text/html, Size: 1348 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-05 22:03 ` Ken Mankoff
@ 2020-08-06 18:12   ` Ken Mankoff
  2020-08-07 15:39     ` William McCoy
  0 siblings, 1 reply; 14+ messages in thread
From: Ken Mankoff @ 2020-08-06 18:12 UTC (permalink / raw)
  To: gmauer; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1225 bytes --]

Actual example:


* Prologue test
:PROPERTIES:
:header-args:python+: :prologue "import numpy as np; import os"
:END:

#+BEGIN_SRC python :results output
print(np.__version__)
#+END_SRC

#+RESULTS:
: 1.18.4




On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff <mankoff@gmail.com> wrote:

> What about using :pre or :prologue and setting it at the header or
> document level?
>
> Please excuse brevity. Sent from tiny pocket computer with
> non-haptic-feedback keyboard.
>
> On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> wrote:
>
>> Use case:
>>
>> I'm using ob-racket <https://github.com/togakangaroo/ob-racket> but this
>> would apply just as well to a few other workflows I have with python or js.
>>
>> I would like to write a helper function in a src block and then
>> automatically have access to it in other src blocks further down the
>> document. I don't really want a stateful session (nor does ob-racket
>> support sessions) so I essentially want the equivalent of automatically
>> including it everywhere so I don't have to type it out all the time (and
>> have it screw up syntax coloring/indentation).
>>
>> Is this currently possible? Does anyone have any ideas for how to extend
>> things so it is?
>>
>

[-- Attachment #2: Type: text/html, Size: 2021 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-06 18:12   ` Ken Mankoff
@ 2020-08-07 15:39     ` William McCoy
  2020-08-07 16:51       ` Berry, Charles via General discussions about Org-mode.
  0 siblings, 1 reply; 14+ messages in thread
From: William McCoy @ 2020-08-07 15:39 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1888 bytes --]

This use of :prologue appeared to me to be very useful.  But for some 
reason when I try it out it does not work for me.  I just get a message 
that the code block produced no output and that 'np' is not defined.  
Just to check, when I put the import statements directly within my code 
block it works fine.

I am running:  Org mode version 9.3.7 (9.3.7-16-g521d7f-elpa

Any idea what I'm doing wrong?


On 8/6/20 2:12 PM, Ken Mankoff wrote:
> Actual example:
>
>
> * Prologue test
> :PROPERTIES:
> :header-args:python+: :prologue "import numpy as np; import os"
> :END:
>
> #+BEGIN_SRC python :results output
> print(np.__version__)
> #+END_SRC
>
> #+RESULTS:
> : 1.18.4
>
>
>
>
> On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff <mankoff@gmail.com 
> <mailto:mankoff@gmail.com>> wrote:
>
>     What about using :pre or :prologue and setting it at the header or
>     document level?
>
>     Please excuse brevity. Sent from tiny pocket computer with
>     non-haptic-feedback keyboard.
>
>     On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com
>     <mailto:gmauer@gmail.com>> wrote:
>
>         Use case:
>
>         I'm using ob-racket
>         <https://github.com/togakangaroo/ob-racket> but this would
>         apply just as well to a few other workflows I have with python
>         or js.
>
>         I would like to write a helper function in a src block and
>         then automatically have access to it in other src blocks
>         further down the document. I don't really want a stateful
>         session (nor does ob-racket support sessions) so I essentially
>         want the equivalent of automatically including it everywhere
>         so I don't have to type it out all the time (and have it screw
>         up syntax coloring/indentation).
>
>         Is this currently possible? Does anyone have any ideas for how
>         to extend things so it is?
>


[-- Attachment #2: Type: text/html, Size: 3938 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-07 15:39     ` William McCoy
@ 2020-08-07 16:51       ` Berry, Charles via General discussions about Org-mode.
  2020-08-07 18:24         ` William McCoy
  0 siblings, 1 reply; 14+ messages in thread
From: Berry, Charles via General discussions about Org-mode. @ 2020-08-07 16:51 UTC (permalink / raw)
  To: William McCoy; +Cc: org-mode mailing list



> On Aug 7, 2020, at 8:39 AM, William McCoy <wdm8588@gmail.com> wrote:
> 
> This use of :prologue appeared to me to be very useful.  But for some reason when I try it out it does not work for me.  I just get a message that the code block produced no output and that 'np' is not defined.  Just to check, when I put the import statements directly within my code block it works fine.
> 
> I am running:  Org mode version 9.3.7 (9.3.7-16-g521d7f-elpa
> 
> Any idea what I'm doing wrong?
> 
> 

It is sometimes useful to use C-c C-v C-i to see what header args org has detected for a source block. Misspelled words sometimes wreak havoc and invisible characters can cause real pain.


Also, it helps to use C-c C-v C-v to to see the expanded code block. When I do this with Kens' ECM, I get

import numpy as np; import os
print(np.__version__)

in the preview buffer.

HTH,

Chuck


> On 8/6/20 2:12 PM, Ken Mankoff wrote:
>> Actual example:
>> 
>> 
>> * Prologue test
>> :PROPERTIES:
>> :header-args:python+: :prologue "import numpy as np; import os"
>> :END:
>> 
>> #+BEGIN_SRC python :results output
>> print(np.__version__)
>> #+END_SRC
>> 
>> #+RESULTS:
>> : 1.18.4
>> 
>> 
>> 
>> 
>> On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff <mankoff@gmail.com> wrote:
>> What about using :pre or :prologue and setting it at the header or document level?
>> 
>> Please excuse brevity. Sent from tiny pocket computer with non-haptic-feedback keyboard.
>> 
>> On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> wrote:
>> Use case:
>> 
>> I'm using ob-racket but this would apply just as well to a few other workflows I have with python or js.
>> 
>> I would like to write a helper function in a src block and then automatically have access to it in other src blocks further down the document. I don't really want a stateful session (nor does ob-racket support sessions) so I essentially want the equivalent of automatically including it everywhere so I don't have to type it out all the time (and have it screw up syntax coloring/indentation).
>> 
>> Is this currently possible? Does anyone have any ideas for how to extend things so it is?
> 




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-07 16:51       ` Berry, Charles via General discussions about Org-mode.
@ 2020-08-07 18:24         ` William McCoy
  2020-08-07 21:18           ` Thomas S. Dye
  0 siblings, 1 reply; 14+ messages in thread
From: William McCoy @ 2020-08-07 18:24 UTC (permalink / raw)
  To: Berry, Charles; +Cc: org-mode mailing list

Chuck,

Thanks very much for your response.  I didn't know about those options.  
When I use C-c C-v C-i, I get the following:

Lang: python
Properties:
     :header-args    nil
     :header-args:python     nil
Header Arguments:
     :cache          no
     :exports        code
     :hlines         no
     :noweb          no
     :results        output replace
     :session        none
     :tangle         no

And C-c C-v C-v, shows that the import statements in the header do not 
get expanded into the code block.

So I am obviously doing something wrong.  There appear to be no typos or 
misspellings and the org file containing the coded is exactly this:

* Test of prologue header

:PROPERTIES:
:header-args:python+: :prologue "import numpy as np; import os"
:END:

#+BEGIN_SRC python :results output
print(np.__version__)
#+END_SRC

#+RESULTS:


My init file has no org babel header arguments defined.

I am using C-c C-v C-b or C-c C-v C-s to evaluate and I get

"Code block produced no output." in the mini-buffer.


If I use C-c C-c directly on the code block itself I get:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
NameError: name 'np' is not defined

Is there something else I need to do to get babel to recognize the 
header-args?

Thanks


On 8/7/20 12:51 PM, Berry, Charles wrote:
>
>> On Aug 7, 2020, at 8:39 AM, William McCoy <wdm8588@gmail.com> wrote:
>>
>> This use of :prologue appeared to me to be very useful.  But for some reason when I try it out it does not work for me.  I just get a message that the code block produced no output and that 'np' is not defined.  Just to check, when I put the import statements directly within my code block it works fine.
>>
>> I am running:  Org mode version 9.3.7 (9.3.7-16-g521d7f-elpa
>>
>> Any idea what I'm doing wrong?
>>
>>
> It is sometimes useful to use C-c C-v C-i to see what header args org has detected for a source block. Misspelled words sometimes wreak havoc and invisible characters can cause real pain.
>
>
> Also, it helps to use C-c C-v C-v to to see the expanded code block. When I do this with Kens' ECM, I get
>
> import numpy as np; import os
> print(np.__version__)
>
> in the preview buffer.
>
> HTH,
>
> Chuck
>
>
>> On 8/6/20 2:12 PM, Ken Mankoff wrote:
>>> Actual example:
>>>
>>>
>>> * Prologue test
>>> :PROPERTIES:
>>> :header-args:python+: :prologue "import numpy as np; import os"
>>> :END:
>>>
>>> #+BEGIN_SRC python :results output
>>> print(np.__version__)
>>> #+END_SRC
>>>
>>> #+RESULTS:
>>> : 1.18.4
>>>
>>>
>>>
>>>
>>> On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff <mankoff@gmail.com> wrote:
>>> What about using :pre or :prologue and setting it at the header or document level?
>>>
>>> Please excuse brevity. Sent from tiny pocket computer with non-haptic-feedback keyboard.
>>>
>>> On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> wrote:
>>> Use case:
>>>
>>> I'm using ob-racket but this would apply just as well to a few other workflows I have with python or js.
>>>
>>> I would like to write a helper function in a src block and then automatically have access to it in other src blocks further down the document. I don't really want a stateful session (nor does ob-racket support sessions) so I essentially want the equivalent of automatically including it everywhere so I don't have to type it out all the time (and have it screw up syntax coloring/indentation).
>>>
>>> Is this currently possible? Does anyone have any ideas for how to extend things so it is?
>



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-07 18:24         ` William McCoy
@ 2020-08-07 21:18           ` Thomas S. Dye
  2020-08-07 21:25             ` Berry, Charles via General discussions about Org-mode.
  0 siblings, 1 reply; 14+ messages in thread
From: Thomas S. Dye @ 2020-08-07 21:18 UTC (permalink / raw)
  To: emacs-orgmode; +Cc: Berry, Charles

It works here if you remove the blank line between the headline 
and the PROPERTIES block.

William McCoy writes:

> Chuck,
>
> Thanks very much for your response.  I didn't know about those 
> options.  When I
> use C-c C-v C-i, I get the following:
>
> Lang: python
> Properties:
>     :header-args    nil
>     :header-args:python     nil
> Header Arguments:
>     :cache          no
>     :exports        code
>     :hlines         no
>     :noweb          no
>     :results        output replace
>     :session        none
>     :tangle         no
>
> And C-c C-v C-v, shows that the import statements in the header 
> do not get
> expanded into the code block.
>
> So I am obviously doing something wrong.  There appear to be no 
> typos or
> misspellings and the org file containing the coded is exactly 
> this:
>
> * Test of prologue header
>
> :PROPERTIES:
> :header-args:python+: :prologue "import numpy as np; import os"
> :END:
>
> #+BEGIN_SRC python :results output
> print(np.__version__)
> #+END_SRC
>
> #+RESULTS:
>
>
> My init file has no org babel header arguments defined.
>
> I am using C-c C-v C-b or C-c C-v C-s to evaluate and I get
>
> "Code block produced no output." in the mini-buffer.
>
>
> If I use C-c C-c directly on the code block itself I get:
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> NameError: name 'np' is not defined
>
> Is there something else I need to do to get babel to recognize 
> the header-args?
>
> Thanks
>
>
> On 8/7/20 12:51 PM, Berry, Charles wrote:
>>
>>> On Aug 7, 2020, at 8:39 AM, William McCoy <wdm8588@gmail.com> 
>>> wrote:
>>>
>>> This use of :prologue appeared to me to be very useful.  But 
>>> for some reason when I try it out it does not work for me.  I 
>>> just get a message that the code block produced no output and 
>>> that 'np' is not defined.  Just to check, when I put the 
>>> import statements directly within my code block it works fine.
>>>
>>> I am running:  Org mode version 9.3.7 (9.3.7-16-g521d7f-elpa
>>>
>>> Any idea what I'm doing wrong?
>>>
>>>
>> It is sometimes useful to use C-c C-v C-i to see what header 
>> args org has detected for a source block. Misspelled words 
>> sometimes wreak havoc and invisible characters can cause real 
>> pain.
>>
>>
>> Also, it helps to use C-c C-v C-v to to see the expanded code 
>> block. When I do this with Kens' ECM, I get
>>
>> import numpy as np; import os
>> print(np.__version__)
>>
>> in the preview buffer.
>>
>> HTH,
>>
>> Chuck
>>
>>
>>> On 8/6/20 2:12 PM, Ken Mankoff wrote:
>>>> Actual example:
>>>>
>>>>
>>>> * Prologue test
>>>> :PROPERTIES:
>>>> :header-args:python+: :prologue "import numpy as np; import 
>>>> os"
>>>> :END:
>>>>
>>>> #+BEGIN_SRC python :results output
>>>> print(np.__version__)
>>>> #+END_SRC
>>>>
>>>> #+RESULTS:
>>>> : 1.18.4
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff 
>>>> <mankoff@gmail.com> wrote:
>>>> What about using :pre or :prologue and setting it at the 
>>>> header or document level?
>>>>
>>>> Please excuse brevity. Sent from tiny pocket computer with 
>>>> non-haptic-feedback keyboard.
>>>>
>>>> On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> 
>>>> wrote:
>>>> Use case:
>>>>
>>>> I'm using ob-racket but this would apply just as well to a 
>>>> few other workflows I have with python or js.
>>>>
>>>> I would like to write a helper function in a src block and 
>>>> then automatically have access to it in other src blocks 
>>>> further down the document. I don't really want a stateful 
>>>> session (nor does ob-racket support sessions) so I 
>>>> essentially want the equivalent of automatically including it 
>>>> everywhere so I don't have to type it out all the time (and 
>>>> have it screw up syntax coloring/indentation).
>>>>
>>>> Is this currently possible? Does anyone have any ideas for 
>>>> how to extend things so it is?
>>


--
Thomas S. Dye
https://tsdye.online/tsdye


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-07 21:18           ` Thomas S. Dye
@ 2020-08-07 21:25             ` Berry, Charles via General discussions about Org-mode.
  2020-08-07 22:01               ` William McCoy
  0 siblings, 1 reply; 14+ messages in thread
From: Berry, Charles via General discussions about Org-mode. @ 2020-08-07 21:25 UTC (permalink / raw)
  To: Thomas S. Dye; +Cc: org-mode mailing list, William McCoy

Good catch. Also it works if you put the property block at the very beginning of the file.

This sometimes helps:

M-x org-lint RET

which in this case reports "Incorrect contents for PROPERTIES drawer"

which is a bit cryptic IMO, but does point to any issue with the property.

HTH,

Chuck

> On Aug 7, 2020, at 2:18 PM, Thomas S. Dye <tsd@tsdye.online> wrote:
> 
> It works here if you remove the blank line between the headline and the PROPERTIES block.
> 
> William McCoy writes:
> 
>> Chuck,
>> 
>> Thanks very much for your response.  I didn't know about those options.  When I
>> use C-c C-v C-i, I get the following:
>> 
>> Lang: python
>> Properties:
>>    :header-args    nil
>>    :header-args:python     nil
>> Header Arguments:
>>    :cache          no
>>    :exports        code
>>    :hlines         no
>>    :noweb          no
>>    :results        output replace
>>    :session        none
>>    :tangle         no
>> 
>> And C-c C-v C-v, shows that the import statements in the header do not get
>> expanded into the code block.
>> 
>> So I am obviously doing something wrong.  There appear to be no typos or
>> misspellings and the org file containing the coded is exactly this:
>> 
>> * Test of prologue header
>> 
>> :PROPERTIES:
>> :header-args:python+: :prologue "import numpy as np; import os"
>> :END:
>> 
>> #+BEGIN_SRC python :results output
>> print(np.__version__)
>> #+END_SRC
>> 
>> #+RESULTS:
>> 
>> 
>> My init file has no org babel header arguments defined.
>> 
>> I am using C-c C-v C-b or C-c C-v C-s to evaluate and I get
>> 
>> "Code block produced no output." in the mini-buffer.
>> 
>> 
>> If I use C-c C-c directly on the code block itself I get:
>> 
>> Traceback (most recent call last):
>>  File "<stdin>", line 1, in <module>
>> NameError: name 'np' is not defined
>> 
>> Is there something else I need to do to get babel to recognize the header-args?
>> 
>> Thanks
>> 
>> 
>> On 8/7/20 12:51 PM, Berry, Charles wrote:
>>> 
>>>> On Aug 7, 2020, at 8:39 AM, William McCoy <wdm8588@gmail.com> wrote:
>>>> 
>>>> This use of :prologue appeared to me to be very useful.  But for some reason when I try it out it does not work for me.  I just get a message that the code block produced no output and that 'np' is not defined.  Just to check, when I put the import statements directly within my code block it works fine.
>>>> 
>>>> I am running:  Org mode version 9.3.7 (9.3.7-16-g521d7f-elpa
>>>> 
>>>> Any idea what I'm doing wrong?
>>>> 
>>>> 
>>> It is sometimes useful to use C-c C-v C-i to see what header args org has detected for a source block. Misspelled words sometimes wreak havoc and invisible characters can cause real pain.
>>> 
>>> 
>>> Also, it helps to use C-c C-v C-v to to see the expanded code block. When I do this with Kens' ECM, I get
>>> 
>>> import numpy as np; import os
>>> print(np.__version__)
>>> 
>>> in the preview buffer.
>>> 
>>> HTH,
>>> 
>>> Chuck
>>> 
>>> 
>>>> On 8/6/20 2:12 PM, Ken Mankoff wrote:
>>>>> Actual example:
>>>>> 
>>>>> 
>>>>> * Prologue test
>>>>> :PROPERTIES:
>>>>> :header-args:python+: :prologue "import numpy as np; import os"
>>>>> :END:
>>>>> 
>>>>> #+BEGIN_SRC python :results output
>>>>> print(np.__version__)
>>>>> #+END_SRC
>>>>> 
>>>>> #+RESULTS:
>>>>> : 1.18.4
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff <mankoff@gmail.com> wrote:
>>>>> What about using :pre or :prologue and setting it at the header or document level?
>>>>> 
>>>>> Please excuse brevity. Sent from tiny pocket computer with non-haptic-feedback keyboard.
>>>>> 
>>>>> On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> wrote:
>>>>> Use case:
>>>>> 
>>>>> I'm using ob-racket but this would apply just as well to a few other workflows I have with python or js.
>>>>> 
>>>>> I would like to write a helper function in a src block and then automatically have access to it in other src blocks further down the document. I don't really want a stateful session (nor does ob-racket support sessions) so I essentially want the equivalent of automatically including it everywhere so I don't have to type it out all the time (and have it screw up syntax coloring/indentation).
>>>>> 
>>>>> Is this currently possible? Does anyone have any ideas for how to extend things so it is?
>>> 
> 
> 
> --
> Thomas S. Dye
> https://tsdye.online/tsdye




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-07 21:25             ` Berry, Charles via General discussions about Org-mode.
@ 2020-08-07 22:01               ` William McCoy
  2020-08-08  4:15                 ` George Mauer
  0 siblings, 1 reply; 14+ messages in thread
From: William McCoy @ 2020-08-07 22:01 UTC (permalink / raw)
  To: Berry, Charles, Thomas S. Dye; +Cc: org-mode mailing list

Yes, of course, that was it!  I ran into that issue a few months ago and 
then I forgot about again!

Thanks both for your help!

Bill

On 8/7/20 5:25 PM, Berry, Charles wrote:
> Good catch. Also it works if you put the property block at the very beginning of the file.
>
> This sometimes helps:
>
> M-x org-lint RET
>
> which in this case reports "Incorrect contents for PROPERTIES drawer"
>
> which is a bit cryptic IMO, but does point to any issue with the property.
>
> HTH,
>
> Chuck
>
>> On Aug 7, 2020, at 2:18 PM, Thomas S. Dye <tsd@tsdye.online> wrote:
>>
>> It works here if you remove the blank line between the headline and the PROPERTIES block.
>>
>> William McCoy writes:
>>
>>> Chuck,
>>>
>>> Thanks very much for your response.  I didn't know about those options.  When I
>>> use C-c C-v C-i, I get the following:
>>>
>>> Lang: python
>>> Properties:
>>>     :header-args    nil
>>>     :header-args:python     nil
>>> Header Arguments:
>>>     :cache          no
>>>     :exports        code
>>>     :hlines         no
>>>     :noweb          no
>>>     :results        output replace
>>>     :session        none
>>>     :tangle         no
>>>
>>> And C-c C-v C-v, shows that the import statements in the header do not get
>>> expanded into the code block.
>>>
>>> So I am obviously doing something wrong.  There appear to be no typos or
>>> misspellings and the org file containing the coded is exactly this:
>>>
>>> * Test of prologue header
>>>
>>> :PROPERTIES:
>>> :header-args:python+: :prologue "import numpy as np; import os"
>>> :END:
>>>
>>> #+BEGIN_SRC python :results output
>>> print(np.__version__)
>>> #+END_SRC
>>>
>>> #+RESULTS:
>>>
>>>
>>> My init file has no org babel header arguments defined.
>>>
>>> I am using C-c C-v C-b or C-c C-v C-s to evaluate and I get
>>>
>>> "Code block produced no output." in the mini-buffer.
>>>
>>>
>>> If I use C-c C-c directly on the code block itself I get:
>>>
>>> Traceback (most recent call last):
>>>   File "<stdin>", line 1, in <module>
>>> NameError: name 'np' is not defined
>>>
>>> Is there something else I need to do to get babel to recognize the header-args?
>>>
>>> Thanks
>>>
>>>
>>> On 8/7/20 12:51 PM, Berry, Charles wrote:
>>>>> On Aug 7, 2020, at 8:39 AM, William McCoy <wdm8588@gmail.com> wrote:
>>>>>
>>>>> This use of :prologue appeared to me to be very useful.  But for some reason when I try it out it does not work for me.  I just get a message that the code block produced no output and that 'np' is not defined.  Just to check, when I put the import statements directly within my code block it works fine.
>>>>>
>>>>> I am running:  Org mode version 9.3.7 (9.3.7-16-g521d7f-elpa
>>>>>
>>>>> Any idea what I'm doing wrong?
>>>>>
>>>>>
>>>> It is sometimes useful to use C-c C-v C-i to see what header args org has detected for a source block. Misspelled words sometimes wreak havoc and invisible characters can cause real pain.
>>>>
>>>>
>>>> Also, it helps to use C-c C-v C-v to to see the expanded code block. When I do this with Kens' ECM, I get
>>>>
>>>> import numpy as np; import os
>>>> print(np.__version__)
>>>>
>>>> in the preview buffer.
>>>>
>>>> HTH,
>>>>
>>>> Chuck
>>>>
>>>>
>>>>> On 8/6/20 2:12 PM, Ken Mankoff wrote:
>>>>>> Actual example:
>>>>>>
>>>>>>
>>>>>> * Prologue test
>>>>>> :PROPERTIES:
>>>>>> :header-args:python+: :prologue "import numpy as np; import os"
>>>>>> :END:
>>>>>>
>>>>>> #+BEGIN_SRC python :results output
>>>>>> print(np.__version__)
>>>>>> #+END_SRC
>>>>>>
>>>>>> #+RESULTS:
>>>>>> : 1.18.4
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff <mankoff@gmail.com> wrote:
>>>>>> What about using :pre or :prologue and setting it at the header or document level?
>>>>>>
>>>>>> Please excuse brevity. Sent from tiny pocket computer with non-haptic-feedback keyboard.
>>>>>>
>>>>>> On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> wrote:
>>>>>> Use case:
>>>>>>
>>>>>> I'm using ob-racket but this would apply just as well to a few other workflows I have with python or js.
>>>>>>
>>>>>> I would like to write a helper function in a src block and then automatically have access to it in other src blocks further down the document. I don't really want a stateful session (nor does ob-racket support sessions) so I essentially want the equivalent of automatically including it everywhere so I don't have to type it out all the time (and have it screw up syntax coloring/indentation).
>>>>>>
>>>>>> Is this currently possible? Does anyone have any ideas for how to extend things so it is?
>>
>> --
>> Thomas S. Dye
>> https://tsdye.online/tsdye
>



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-07 22:01               ` William McCoy
@ 2020-08-08  4:15                 ` George Mauer
  0 siblings, 0 replies; 14+ messages in thread
From: George Mauer @ 2020-08-08  4:15 UTC (permalink / raw)
  To: org-mode mailing list

[-- Attachment #1: Type: text/plain, Size: 5140 bytes --]

Is there a straightforward way to have a multiline prologue? Or maybe use
the body of named block as prologue?

On Fri, Aug 7, 2020 at 5:02 PM William McCoy <wdm8588@gmail.com> wrote:

> Yes, of course, that was it!  I ran into that issue a few months ago and
> then I forgot about again!
>
> Thanks both for your help!
>
> Bill
>
> On 8/7/20 5:25 PM, Berry, Charles wrote:
> > Good catch. Also it works if you put the property block at the very
> beginning of the file.
> >
> > This sometimes helps:
> >
> > M-x org-lint RET
> >
> > which in this case reports "Incorrect contents for PROPERTIES drawer"
> >
> > which is a bit cryptic IMO, but does point to any issue with the
> property.
> >
> > HTH,
> >
> > Chuck
> >
> >> On Aug 7, 2020, at 2:18 PM, Thomas S. Dye <tsd@tsdye.online> wrote:
> >>
> >> It works here if you remove the blank line between the headline and the
> PROPERTIES block.
> >>
> >> William McCoy writes:
> >>
> >>> Chuck,
> >>>
> >>> Thanks very much for your response.  I didn't know about those
> options.  When I
> >>> use C-c C-v C-i, I get the following:
> >>>
> >>> Lang: python
> >>> Properties:
> >>>     :header-args    nil
> >>>     :header-args:python     nil
> >>> Header Arguments:
> >>>     :cache          no
> >>>     :exports        code
> >>>     :hlines         no
> >>>     :noweb          no
> >>>     :results        output replace
> >>>     :session        none
> >>>     :tangle         no
> >>>
> >>> And C-c C-v C-v, shows that the import statements in the header do not
> get
> >>> expanded into the code block.
> >>>
> >>> So I am obviously doing something wrong.  There appear to be no typos
> or
> >>> misspellings and the org file containing the coded is exactly this:
> >>>
> >>> * Test of prologue header
> >>>
> >>> :PROPERTIES:
> >>> :header-args:python+: :prologue "import numpy as np; import os"
> >>> :END:
> >>>
> >>> #+BEGIN_SRC python :results output
> >>> print(np.__version__)
> >>> #+END_SRC
> >>>
> >>> #+RESULTS:
> >>>
> >>>
> >>> My init file has no org babel header arguments defined.
> >>>
> >>> I am using C-c C-v C-b or C-c C-v C-s to evaluate and I get
> >>>
> >>> "Code block produced no output." in the mini-buffer.
> >>>
> >>>
> >>> If I use C-c C-c directly on the code block itself I get:
> >>>
> >>> Traceback (most recent call last):
> >>>   File "<stdin>", line 1, in <module>
> >>> NameError: name 'np' is not defined
> >>>
> >>> Is there something else I need to do to get babel to recognize the
> header-args?
> >>>
> >>> Thanks
> >>>
> >>>
> >>> On 8/7/20 12:51 PM, Berry, Charles wrote:
> >>>>> On Aug 7, 2020, at 8:39 AM, William McCoy <wdm8588@gmail.com> wrote:
> >>>>>
> >>>>> This use of :prologue appeared to me to be very useful.  But for
> some reason when I try it out it does not work for me.  I just get a
> message that the code block produced no output and that 'np' is not
> defined.  Just to check, when I put the import statements directly within
> my code block it works fine.
> >>>>>
> >>>>> I am running:  Org mode version 9.3.7 (9.3.7-16-g521d7f-elpa
> >>>>>
> >>>>> Any idea what I'm doing wrong?
> >>>>>
> >>>>>
> >>>> It is sometimes useful to use C-c C-v C-i to see what header args org
> has detected for a source block. Misspelled words sometimes wreak havoc and
> invisible characters can cause real pain.
> >>>>
> >>>>
> >>>> Also, it helps to use C-c C-v C-v to to see the expanded code block.
> When I do this with Kens' ECM, I get
> >>>>
> >>>> import numpy as np; import os
> >>>> print(np.__version__)
> >>>>
> >>>> in the preview buffer.
> >>>>
> >>>> HTH,
> >>>>
> >>>> Chuck
> >>>>
> >>>>
> >>>>> On 8/6/20 2:12 PM, Ken Mankoff wrote:
> >>>>>> Actual example:
> >>>>>>
> >>>>>>
> >>>>>> * Prologue test
> >>>>>> :PROPERTIES:
> >>>>>> :header-args:python+: :prologue "import numpy as np; import os"
> >>>>>> :END:
> >>>>>>
> >>>>>> #+BEGIN_SRC python :results output
> >>>>>> print(np.__version__)
> >>>>>> #+END_SRC
> >>>>>>
> >>>>>> #+RESULTS:
> >>>>>> : 1.18.4
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> On Wed, Aug 5, 2020 at 3:03 PM Ken Mankoff <mankoff@gmail.com>
> wrote:
> >>>>>> What about using :pre or :prologue and setting it at the header or
> document level?
> >>>>>>
> >>>>>> Please excuse brevity. Sent from tiny pocket computer with
> non-haptic-feedback keyboard.
> >>>>>>
> >>>>>> On Wed, Aug 5, 2020, 14:22 George Mauer <gmauer@gmail.com> wrote:
> >>>>>> Use case:
> >>>>>>
> >>>>>> I'm using ob-racket but this would apply just as well to a few
> other workflows I have with python or js.
> >>>>>>
> >>>>>> I would like to write a helper function in a src block and then
> automatically have access to it in other src blocks further down the
> document. I don't really want a stateful session (nor does ob-racket
> support sessions) so I essentially want the equivalent of automatically
> including it everywhere so I don't have to type it out all the time (and
> have it screw up syntax coloring/indentation).
> >>>>>>
> >>>>>> Is this currently possible? Does anyone have any ideas for how to
> extend things so it is?
> >>
> >> --
> >> Thomas S. Dye
> >> https://tsdye.online/tsdye
> >
>
>
>

[-- Attachment #2: Type: text/html, Size: 7807 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-05 21:21 Can you automatically noweb include? George Mauer
  2020-08-05 22:03 ` Ken Mankoff
@ 2020-08-08  4:18 ` Tom Gillespie
  2020-08-08  4:20   ` Tom Gillespie
  1 sibling, 1 reply; 14+ messages in thread
From: Tom Gillespie @ 2020-08-08  4:18 UTC (permalink / raw)
  To: gmauer; +Cc: emacs-orgmode

I don't see a direct answer to the original question in the thread, so
here is an example of how I do it taken from
https://raw.githubusercontent.com/SciCrunch/sparc-curation/master/docs/developer-guide.org.
You can ctrl-f for racket-graph-helper to see the relevant blocks. A
reduced version is below. Recall that I use
https://github.com/wallyqs/ob-racket. I use this pattern all over the
place in my org blocks. Best,
Tom

* Use the code
:cache yes"
#+begin_src racket :lang racket/base :noweb yes
<<racket-helper>>
(helper-function "this should work")
#+end_src

#+RESULTS:
: this should work hello world


* Define the helpers
#+name: racket-helper
#+header: :prologue "#lang racket/base"
#+begin_src racket :lang racket/base
(define (helper-function arg)
  (string-append arg " hello world"))
#+end_src


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-08  4:18 ` Tom Gillespie
@ 2020-08-08  4:20   ` Tom Gillespie
  2020-08-08  4:47     ` Tom Gillespie
  0 siblings, 1 reply; 14+ messages in thread
From: Tom Gillespie @ 2020-08-08  4:20 UTC (permalink / raw)
  To: gmauer; +Cc: emacs-orgmode

Hah, this is what I get for not reading carefully enough. I wonder if
it is possible to stick <<racket-helper>> in the prologue and have it
expand.

On Fri, Aug 7, 2020 at 9:18 PM Tom Gillespie <tgbugs@gmail.com> wrote:
>
> I don't see a direct answer to the original question in the thread, so
> here is an example of how I do it taken from
> https://raw.githubusercontent.com/SciCrunch/sparc-curation/master/docs/developer-guide.org.
> You can ctrl-f for racket-graph-helper to see the relevant blocks. A
> reduced version is below. Recall that I use
> https://github.com/wallyqs/ob-racket. I use this pattern all over the
> place in my org blocks. Best,
> Tom
>
> * Use the code
> :cache yes"
> #+begin_src racket :lang racket/base :noweb yes
> <<racket-helper>>
> (helper-function "this should work")
> #+end_src
>
> #+RESULTS:
> : this should work hello world
>
>
> * Define the helpers
> #+name: racket-helper
> #+header: :prologue "#lang racket/base"
> #+begin_src racket :lang racket/base
> (define (helper-function arg)
>   (string-append arg " hello world"))
> #+end_src


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-08  4:20   ` Tom Gillespie
@ 2020-08-08  4:47     ` Tom Gillespie
  2020-08-08 19:42       ` George Mauer
  0 siblings, 1 reply; 14+ messages in thread
From: Tom Gillespie @ 2020-08-08  4:47 UTC (permalink / raw)
  To: gmauer; +Cc: emacs-orgmode

After a bit of investigation, it seems that wallyqs implementation of
ob-racket does not treat/manage :prologue arguments correctly, which
is worrying because I would assume that the semantics for how prologue
works should not be something that could be accidentally broken by
ob-* implementations (but that is a separate issue). More relevant to
this thread is that python the prologue works as others have reported,
but if you include a noweb reference in the prologue it does not get
expanded. It is quite possible that this should be considered a bug
since it means that prologues are added only after the main block is
expanded. This seems incorrect, and I suspect that it is another bug
related to the one fixed in df5a83637518ad9aa586d49884a6271f11afc592
(discussion here
https://orgmode.org/list/CA+G3_PNi3uMvBiWgBdKuC3C6VJt1T1j-RKH43LRqYbr+4NS8ZA@mail.gmail.com/).
The fact that prologue is not expanded means that you can modify what
code is run by putting it in a prologue and org mode will be none-the
wiser. The sha1 changes if you set :cache yes, which means that
something in the execution code is doing something different than in
the block hashing code. Further investigation required.

* Use the code
:PROPERTIES:
:header-args:python: :prologue "<<python-helper>>"
:END:

#+name: python-helper
#+begin_src python
asdf = lambda : 'result'
#+end_src

#+begin_src python :noweb yes
return asdf()
#+end_src

On Fri, Aug 7, 2020 at 9:20 PM Tom Gillespie <tgbugs@gmail.com> wrote:
>
> Hah, this is what I get for not reading carefully enough. I wonder if
> it is possible to stick <<racket-helper>> in the prologue and have it
> expand.
>
> On Fri, Aug 7, 2020 at 9:18 PM Tom Gillespie <tgbugs@gmail.com> wrote:
> >
> > I don't see a direct answer to the original question in the thread, so
> > here is an example of how I do it taken from
> > https://raw.githubusercontent.com/SciCrunch/sparc-curation/master/docs/developer-guide.org.
> > You can ctrl-f for racket-graph-helper to see the relevant blocks. A
> > reduced version is below. Recall that I use
> > https://github.com/wallyqs/ob-racket. I use this pattern all over the
> > place in my org blocks. Best,
> > Tom
> >
> > * Use the code
> > :cache yes"
> > #+begin_src racket :lang racket/base :noweb yes
> > <<racket-helper>>
> > (helper-function "this should work")
> > #+end_src
> >
> > #+RESULTS:
> > : this should work hello world
> >
> >
> > * Define the helpers
> > #+name: racket-helper
> > #+header: :prologue "#lang racket/base"
> > #+begin_src racket :lang racket/base
> > (define (helper-function arg)
> >   (string-append arg " hello world"))
> > #+end_src


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Can you automatically noweb include?
  2020-08-08  4:47     ` Tom Gillespie
@ 2020-08-08 19:42       ` George Mauer
  0 siblings, 0 replies; 14+ messages in thread
From: George Mauer @ 2020-08-08 19:42 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 3337 bytes --]

For what its worth, I maintain (well maintain is a big word when I'm also
probably the only person to use it) this fork of xchrishawk/ob-racket:
https://github.com/togakangaroo/ob-racket

It seems to have more features than the wallyqs one supporting :var headers.
I can look at how prologue support works in others and add it, but I also
am surprised that this is up to the plugin authors *at all*. As you pointed
out, that means that it can't possibly support noweb expansion

On Fri, Aug 7, 2020 at 11:47 PM Tom Gillespie <tgbugs@gmail.com> wrote:

> After a bit of investigation, it seems that wallyqs implementation of
> ob-racket does not treat/manage :prologue arguments correctly, which
> is worrying because I would assume that the semantics for how prologue
> works should not be something that could be accidentally broken by
> ob-* implementations (but that is a separate issue). More relevant to
> this thread is that python the prologue works as others have reported,
> but if you include a noweb reference in the prologue it does not get
> expanded. It is quite possible that this should be considered a bug
> since it means that prologues are added only after the main block is
> expanded. This seems incorrect, and I suspect that it is another bug
> related to the one fixed in df5a83637518ad9aa586d49884a6271f11afc592
> (discussion here
>
> https://orgmode.org/list/CA+G3_PNi3uMvBiWgBdKuC3C6VJt1T1j-RKH43LRqYbr+4NS8ZA@mail.gmail.com/
> ).
> The fact that prologue is not expanded means that you can modify what
> code is run by putting it in a prologue and org mode will be none-the
> wiser. The sha1 changes if you set :cache yes, which means that
> something in the execution code is doing something different than in
> the block hashing code. Further investigation required.
>
> * Use the code
> :PROPERTIES:
> :header-args:python: :prologue "<<python-helper>>"
> :END:
>
> #+name: python-helper
> #+begin_src python
> asdf = lambda : 'result'
> #+end_src
>
> #+begin_src python :noweb yes
> return asdf()
> #+end_src
>
> On Fri, Aug 7, 2020 at 9:20 PM Tom Gillespie <tgbugs@gmail.com> wrote:
> >
> > Hah, this is what I get for not reading carefully enough. I wonder if
> > it is possible to stick <<racket-helper>> in the prologue and have it
> > expand.
> >
> > On Fri, Aug 7, 2020 at 9:18 PM Tom Gillespie <tgbugs@gmail.com> wrote:
> > >
> > > I don't see a direct answer to the original question in the thread, so
> > > here is an example of how I do it taken from
> > >
> https://raw.githubusercontent.com/SciCrunch/sparc-curation/master/docs/developer-guide.org
> .
> > > You can ctrl-f for racket-graph-helper to see the relevant blocks. A
> > > reduced version is below. Recall that I use
> > > https://github.com/wallyqs/ob-racket. I use this pattern all over the
> > > place in my org blocks. Best,
> > > Tom
> > >
> > > * Use the code
> > > :cache yes"
> > > #+begin_src racket :lang racket/base :noweb yes
> > > <<racket-helper>>
> > > (helper-function "this should work")
> > > #+end_src
> > >
> > > #+RESULTS:
> > > : this should work hello world
> > >
> > >
> > > * Define the helpers
> > > #+name: racket-helper
> > > #+header: :prologue "#lang racket/base"
> > > #+begin_src racket :lang racket/base
> > > (define (helper-function arg)
> > >   (string-append arg " hello world"))
> > > #+end_src
>

[-- Attachment #2: Type: text/html, Size: 4745 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-08-08 19:43 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-05 21:21 Can you automatically noweb include? George Mauer
2020-08-05 22:03 ` Ken Mankoff
2020-08-06 18:12   ` Ken Mankoff
2020-08-07 15:39     ` William McCoy
2020-08-07 16:51       ` Berry, Charles via General discussions about Org-mode.
2020-08-07 18:24         ` William McCoy
2020-08-07 21:18           ` Thomas S. Dye
2020-08-07 21:25             ` Berry, Charles via General discussions about Org-mode.
2020-08-07 22:01               ` William McCoy
2020-08-08  4:15                 ` George Mauer
2020-08-08  4:18 ` Tom Gillespie
2020-08-08  4:20   ` Tom Gillespie
2020-08-08  4:47     ` Tom Gillespie
2020-08-08 19:42       ` George Mauer

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).