Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
Hi Thomas, Thanks for that link. I really need to go over that document carefully. :-) Best, Joost On Tue, Mar 31 2020, Thomas S. Dye wrote: Aloha Joost, This link reflects my understanding of how properties accumulate, rather than overwrite: https://org-babel.readthedocs.io/en/latest/header-args/ hth, Tom -- Joost Kremers Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
On Tue, Mar 31 2020, Berry, Charles via General discussions about Org-mode. wrote: `org-babel-view-src-block-info' (C-c C-v C-i with point in the src block below) reports I didn't know about that command, it's proven to be very helpful. Thanks! Joost -- Joost Kremers Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
On Tue, Mar 31 2020, Ken Mankoff wrote: Yes I'm sure. From the link Thomas sent, Any property specification, unless it is postfixed with a `+`, will *reset* the value of that property to its current value. Yes, I realise now I was mistaken. For some reason, I though that `:results function` meant something, which it doesn't. C-c C-v (for me, Charles uses C-c C-v C-i) withitn a code block shows you the header args that are set for that block. Useful for debugging. Yes, that turned out to be very useful. Thanks. Joost -- Joost Kremers Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
Yes I'm sure. From the link Thomas sent, Any property specification, unless it is postfixed with a `+`, will *reset* the value of that property to its current value. C-c C-v (for me, Charles uses C-c C-v C-i) withitn a code block shows you the header args that are set for that block. Useful for debugging. -k. On Mon, Mar 30, 2020 at 3:24 PM Joost Kremers wrote: > > On Mon, Mar 30 2020, Ken Mankoff wrote: > > Header args overwrite. Change python to python+ to append header > > args. > > Are you sure? That's not documented anywhere I can find and it > seems to be belied by the fact that if I put the headers in the > order: > > ``` > :PROPERTIES: > :header-args:python: :tangle out1.py > :header-args:python: :session py1 :results function > :END: > ``` > > everything works as I would expect (the code blocks are tangled to > a file `out1.py` *and* they are evaluated in a python session > `py1`), meaning that *all* header args are picked up. > > If I reverse the order and add a `+` sign, like so: > > ``` > :PROPERTIES: > :header-args:python+: :session py1 :results function > :header-args:python+: :tangle out1.py > :END: > ``` > > the code does indeed get tangled, but the `:results` header arg > isn't picked up, because the code block doesn't produce any > output. > > For reference, this is my test file: > > ``` > * Header 1 > :PROPERTIES: > :header-args:python+: :session py1 :results function > :header-args:python+: :tangle out1.py > :END: > > #+begin_src python > a=1 > b=2 > c=a+b > return c > #+end_src > > #+RESULTS: > ``` > > > -- > Joost Kremers > Life has its moments >
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
> On Mar 30, 2020, at 3:23 PM, Joost Kremers wrote: > [stuff deleted] > > If I reverse the order and add a `+` sign, like so: > > ``` > :PROPERTIES: > :header-args:python+: :session py1 :results function > :header-args:python+: :tangle out1.py > :END: > ``` > > the code does indeed get tangled, but the `:results` header arg isn't picked > up, because the code block doesn't produce any output. Not so. `org-babel-view-src-block-info' (C-c C-v C-i with point in the src block below) reports , | Lang: python | Properties: | :header-argsnil | :header-args:python :session py1 :results function :tangle out1.py | Header Arguments: | :cache no | :exportscode | :hlines no | :noweb no | :resultsfunction replace | :sessionpy1 | :tangle out1.py ` > > For reference, this is my test file: > > ``` > * Header 1 > :PROPERTIES: > :header-args:python+: :session py1 :results function > :header-args:python+: :tangle out1.py > :END: > > #+begin_src python > a=1 > b=2 > c=a+b > return c > #+end_src > > #+RESULTS: > ```
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
Aloha Joost, This link reflects my understanding of how properties accumulate, rather than overwrite: https://org-babel.readthedocs.io/en/latest/header-args/ hth, Tom -- Thomas S. Dye https://tsdye.online/tsdye
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
On Mon, Mar 30 2020, Ken Mankoff wrote: Header args overwrite. Change python to python+ to append header args. Are you sure? That's not documented anywhere I can find and it seems to be belied by the fact that if I put the headers in the order: ``` :PROPERTIES: :header-args:python: :tangle out1.py :header-args:python: :session py1 :results function :END: ``` everything works as I would expect (the code blocks are tangled to a file `out1.py` *and* they are evaluated in a python session `py1`), meaning that *all* header args are picked up. If I reverse the order and add a `+` sign, like so: ``` :PROPERTIES: :header-args:python+: :session py1 :results function :header-args:python+: :tangle out1.py :END: ``` the code does indeed get tangled, but the `:results` header arg isn't picked up, because the code block doesn't produce any output. For reference, this is my test file: ``` * Header 1 :PROPERTIES: :header-args:python+: :session py1 :results function :header-args:python+: :tangle out1.py :END: #+begin_src python a=1 b=2 c=a+b return c #+end_src #+RESULTS: ``` -- Joost Kremers Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
Header args overwrite. Change python to python+ to append header args. Please excuse brevity. Sent from tiny pocket computer with non-haptic feedback keyboard. On Sun, Mar 29, 2020, 15:42 Joost Kremers wrote: > > On Mon, Mar 30 2020, Joost Kremers wrote: > > Looks like a bug, right? > > And while I'm at it, this doesn't work as expected either: > > ``` > #+PROPERTY: header-args :dir /home/joost/tmp/dlpy/ > > * Header 1 > :PROPERTIES: > :header-args:python: :tangle out1.py > :header-args:python: :session py1 :results function > :END: > > #+begin_src python > a=1 > b=2 > c=a+b > return c > #+end_src > ``` > > I would expect that the file `out1.py` is created in the directory > `/home/joost/tmp/dlpy`, but it's created in the same directory as > the Org file. > > Are my expectations wrong or is this really a bug? > > > -- > Joost Kremers > Life has its moments > >
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
On Mon, Mar 30 2020, Joost Kremers wrote: Looks like a bug, right? And while I'm at it, this doesn't work as expected either: ``` #+PROPERTY: header-args :dir /home/joost/tmp/dlpy/ * Header 1 :PROPERTIES: :header-args:python: :tangle out1.py :header-args:python: :session py1 :results function :END: #+begin_src python a=1 b=2 c=a+b return c #+end_src ``` I would expect that the file `out1.py` is created in the directory `/home/joost/tmp/dlpy`, but it's created in the same directory as the Org file. Are my expectations wrong or is this really a bug? -- Joost Kremers Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
On Sun, Mar 29 2020, Berry, Charles via General discussions about Org-mode. wrote: What we really need is an ECM rather than snippets of code. Yes, my apologies. It seems that having more than one `header-arg` line doesn't work properly. The following works: ``` * Header 1 :PROPERTIES: :header-args:python: :tangle out1.py :header-args:python: :session py1 :results function :END: #+begin_src python a=1 b=2 c=a+b return c #+end_src #+RESULTS: : 3 ``` But if I swap the two `header-args` lines, tangling stops working and at the same time evaluating the code block doesn't give any output at all: ``` * Header 1 :PROPERTIES: :header-args:python: :session py1 :results function :header-args:python: :tangle out1.py :END: #+begin_src python a=1 b=2 c=a+b return c #+end_src #+RESULTS: ``` With a `#+PROPERTY` line, I can't make it work at all: ``` #+PROPERTY: header-args:python :tangle out.py #+PROPERTY: header-args:python :results function * Header 1 #+begin_src python a=1 b=2 c=a+b return c #+end_src #+RESULTS: : 3 ``` Evaluating the code block works, but tangling doesn't. Reversing the order of the `#+PROPERTY` lines has no effect in this case. Looks like a bug, right? -- Joost Kremers Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
> On Mar 29, 2020, at 1:13 PM, Joost Kremers wrote: > > > On Sun, Mar 29 2020, Berry, Charles via General discussions about Org-mode. > wrote: >>> On Mar 28, 2020, at 3:00 PM, Joost Kremers wrote: >>> Is this expected behaviour? Am I doing something wrong? >> >> IIUC what you did, then yes and yes. >> >> This is the accepted idiom: >> >> #+PROPERTY: header-args :tangle yes > What we really need is an ECM rather than snippets of code. This ECM works for me: #+begin_src org ,* try python :PROPERTIES: :header-args:python: :tangle yes :END: ,#+begin_src python "a+b" ,#+end_src #+end_src producing a file of the same name with the .py extension with one line containing "a+b". I am on release Org mode version 9.3.6 (release_9.3.6-442-g97f0f1 ), but this also work on release_9.3-34-g2eee3c HTH, Chuck p.s. `M-x org-lint' may reveal some issues with your file that might not be obvious to the eye. > I have tried: > > #+begin_example > #+PROPERTY: header-args:python :tangle yes :dir /home/joost/tmp/dlpy > #+end_example > > which AFAICT is the syntax shown in the info node you mentioned. I have also > tried a file name instead of =yes=, both with and without quotes, but it > doesn't work. > > What I really want is to have a property block with the =:tangle= arg under > each top-level header, like so: > > #+begin_example > :PROPERTIES: > :header-args:python: :tangle out1.py > :END: > #+begin_example > > because I want the code below each top-level header to be tangled to a > separate file. Again, AFAICT this is the syntax described in the info manual. > > Hmm, experimenting a bit more I find that if I leave out the =python= part, > it works: > > #+begin_example > :PROPERTIES: > :header-args: :tangle out1.py > :END: > #+begin_example > > But the info manual gives this example: > > #+begin_example > :PROPERTIES: > :header-args:clojure::session *clojure-1* > :END: > #+begin_example > > The same is true for the #+PROPERTY block at the top of the file: leave out > the =python=, it works. Isn't it possible to restrict tangling to source > blocks of a particular language? (Or, more specifically what I want: to > specify different tangling targets for different language? I wanted to have > both python and bash code blocks under one header and have them tangled to > different files...) > > Joost > > > -- > Joost Kremers > Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
On Sun, Mar 29 2020, Berry, Charles via General discussions about Org-mode. wrote: On Mar 28, 2020, at 3:00 PM, Joost Kremers wrote: Is this expected behaviour? Am I doing something wrong? IIUC what you did, then yes and yes. This is the accepted idiom: #+PROPERTY: header-args :tangle yes I have tried: #+begin_example #+PROPERTY: header-args:python :tangle yes :dir /home/joost/tmp/dlpy #+end_example which AFAICT is the syntax shown in the info node you mentioned. I have also tried a file name instead of =yes=, both with and without quotes, but it doesn't work. What I really want is to have a property block with the =:tangle= arg under each top-level header, like so: #+begin_example :PROPERTIES: :header-args:python: :tangle out1.py :END: #+begin_example because I want the code below each top-level header to be tangled to a separate file. Again, AFAICT this is the syntax described in the info manual. Hmm, experimenting a bit more I find that if I leave out the =python= part, it works: #+begin_example :PROPERTIES: :header-args: :tangle out1.py :END: #+begin_example But the info manual gives this example: #+begin_example :PROPERTIES: :header-args:clojure::session *clojure-1* :END: #+begin_example The same is true for the #+PROPERTY block at the top of the file: leave out the =python=, it works. Isn't it possible to restrict tangling to source blocks of a particular language? (Or, more specifically what I want: to specify different tangling targets for different language? I wanted to have both python and bash code blocks under one header and have them tangled to different files...) Joost -- Joost Kremers Life has its moments
Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
> On Mar 28, 2020, at 3:00 PM, Joost Kremers wrote: > > Hi list, > > I'm having trouble tangling an Org file. Basically, if I put a =:tangle= > header argument in a =#+PROPERTY= line at the top of the file or in a > =:PROPERTIES:= block under a header, it is not picked up and the code blocks > to which (I think) it should apply are not tangled. Only when I put a > =:tangle= argument at the top of the source block itself is the source block > tangled. > > Is this expected behaviour? Am I doing something wrong? IIUC what you did, then yes and yes. This is the accepted idiom: #+PROPERTY: header-args :tangle yes Remember that if you add or change that line you need to update with C-c C-c or `org-mode-restart'. Maybe you omitted the `header-args'. That used to be correct syntax but was obsoleted some time back. See (info "(org) Using Header Arguments") HTH, Chuck > > Emacs 26.3, Org 9.3.6. > > TIA > > Joost > > > -- > Joost Kremers > Life has its moments > >
:tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block
Hi list, I'm having trouble tangling an Org file. Basically, if I put a =:tangle= header argument in a =#+PROPERTY= line at the top of the file or in a =:PROPERTIES:= block under a header, it is not picked up and the code blocks to which (I think) it should apply are not tangled. Only when I put a =:tangle= argument at the top of the source block itself is the source block tangled. Is this expected behaviour? Am I doing something wrong? Emacs 26.3, Org 9.3.6. TIA Joost -- Joost Kremers Life has its moments