Re: :tangle header argument not picked up in #+PROPERTY line or :PROPERTIES: block

2020-04-01 Thread Joost Kremers

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

2020-03-31 Thread Joost Kremers



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

2020-03-31 Thread Joost Kremers



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

2020-03-31 Thread Ken Mankoff
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

2020-03-30 Thread Berry, Charles



> 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

2020-03-30 Thread Thomas S. Dye

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

2020-03-30 Thread Joost Kremers



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

2020-03-29 Thread Ken Mankoff
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

2020-03-29 Thread Joost Kremers



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

2020-03-29 Thread Joost Kremers



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

2020-03-29 Thread Berry, Charles



> 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

2020-03-29 Thread Joost Kremers



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

2020-03-29 Thread Berry, Charles



> 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

2020-03-28 Thread Joost Kremers

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