Re: [O] Setting multiple variables for code blocks in one property drawer
Hi Eric, Eric Schulte wrote: > However try replacing > > :var: foo="a" > with > > :var+: foo="a" > which is valid and should work for your use case below. I'm not sure if I understood you correctly, but even if I replace "var" with "var+" in the child's property drawer, the value of bar that is set in the parent task is not available in the child task. Cheers, Viktor > > There are still some lingering issues with inheritance and Org-mode > properties which I may try to address one of these days. > > Cheers, > > > > > Cheers, > > Viktor > > > > * Parent task > > :PROPERTIES: > > :var: foo="1" > > :var+: bar="2" > > :END: > > ** Child task without own properties > > > > #+BEGIN_SRC sh > > echo foo: $foo > > echo bar: $bar > > #+END_SRC > > > > #+RESULTS: > > | foo: | 1 | > > | bar: | 2 | > > > > ** Child task with own properties > > :PROPERTIES: > > :var: foo="a" > > :END: > > > > #+BEGIN_SRC sh > > echo foo: $foo > > echo bar: $bar > > #+END_SRC > > > > #+RESULTS: > > | foo: | a | > > | bar: | | > > > > > > -- > Eric Schulte > http://cs.unm.edu/~eschulte/ >
Re: [O] Setting multiple variables for code blocks in one property drawer
Hi, Viktor Rosenfeld writes: > Hi Eric, > > Eric Schulte wrote: > >> Viktor Rosenfeld writes: >> >> > Hi Eric, >> > >> > thanks for your input. I just pulled the latest code from git and while >> > my original example works, the following does not: >> > >> > :PROPERTIES: >> > :var: foo=1 >> > :var+: bar=2 >> > :var+: baz=3 >> > :END: >> > >> > #+BEGIN_SRC sh >> > echo foo: $foo >> > echo bar: $bar >> > echo baz: $baz >> > #+END_SRC >> > >> >> Thanks for reporting, I've just pushed up a fix for this bug. > > Thanks for your fix. The above example now works for me. > > However, I've noticed a problem with inheriting var properties. They are > inherited in a child task only if the child task itself has no var > property. Is this the intended behavior? See the example below. > Yes, The example below is the intended behavior. The property mechanism is not tailored to variable setting, but is rather a general mechanism for the concatenation of property strings. Any property specification unless it is postfixed with a "+" will /reset/ the value of that property to its current value. However try replacing > :var: foo="a" with > :var+: foo="a" which is valid and should work for your use case below. There are still some lingering issues with inheritance and Org-mode properties which I may try to address one of these days. Cheers, > > Cheers, > Viktor > > * Parent task > :PROPERTIES: > :var: foo="1" > :var+: bar="2" > :END: > ** Child task without own properties > > #+BEGIN_SRC sh > echo foo: $foo > echo bar: $bar > #+END_SRC > > #+RESULTS: > | foo: | 1 | > | bar: | 2 | > > ** Child task with own properties > :PROPERTIES: > :var: foo="a" > :END: > > #+BEGIN_SRC sh > echo foo: $foo > echo bar: $bar > #+END_SRC > > #+RESULTS: > | foo: | a | > | bar: | | > > -- Eric Schulte http://cs.unm.edu/~eschulte/
Re: [O] Setting multiple variables for code blocks in one property drawer
Hi Eric, Eric Schulte wrote: > Viktor Rosenfeld writes: > > > Hi Eric, > > > > thanks for your input. I just pulled the latest code from git and while > > my original example works, the following does not: > > > > :PROPERTIES: > > :var: foo=1 > > :var+: bar=2 > > :var+: baz=3 > > :END: > > > > #+BEGIN_SRC sh > > echo foo: $foo > > echo bar: $bar > > echo baz: $baz > > #+END_SRC > > > > Thanks for reporting, I've just pushed up a fix for this bug. Thanks for your fix. The above example now works for me. However, I've noticed a problem with inheriting var properties. They are inherited in a child task only if the child task itself has no var property. Is this the intended behavior? See the example below. Cheers, Viktor * Parent task :PROPERTIES: :var: foo="1" :var+: bar="2" :END: ** Child task without own properties #+BEGIN_SRC sh echo foo: $foo echo bar: $bar #+END_SRC #+RESULTS: | foo: | 1 | | bar: | 2 | ** Child task with own properties :PROPERTIES: :var: foo="a" :END: #+BEGIN_SRC sh echo foo: $foo echo bar: $bar #+END_SRC #+RESULTS: | foo: | a | | bar: | |
Re: [O] Setting multiple variables for code blocks in one property drawer
Viktor Rosenfeld writes: > Hi Eric, > > thanks for your input. I just pulled the latest code from git and while > my original example works, the following does not: > > :PROPERTIES: > :var: foo=1 > :var+: bar=2 > :var+: baz=3 > :END: > > #+BEGIN_SRC sh > echo foo: $foo > echo bar: $bar > echo baz: $baz > #+END_SRC > Thanks for reporting, I've just pushed up a fix for this bug. > > There also appears to be a difference between quoted and unquoted > values and commatas. E.g. the following works > > :PROPERTIES: > :var: foo=1 > :var+: bar="2", baz=3 > :END: > > #+BEGIN_SRC sh > echo foo: $foo > echo bar: $bar > echo baz: $baz > #+END_SRC > > If I remove the quotes around 2 I get the following error: > > ad-Orig-error: reference '2,' not found in this buffer > > On the other hand, the following version does not produce an error, but > the value of $baz is not set. > > :PROPERTIES: > :var: foo=1 > :var+: bar="2", > :var+: baz=3 > :END: > > #+BEGIN_SRC sh > echo foo: $foo > echo bar: $bar > echo baz: $baz > #+END_SRC > Yes, the comma results in the 2 not being parsed as a number, which means that it will then try to be understood by Babel (which thinks first of a reference unless the value is wrapped in quotes indicating it is a string). The moral is to not give references purely numerical names. Best, > > Cheers, > Viktor > > Eric Schulte wrote: > >> Viktor Rosenfeld writes: >> >> > Hi, >> > >> > after following the discussion about the new BABEL syntax I was under >> > the impression that the following should work to set two variables in >> > one PROPERTIES drawer: >> > >> > :PROPERTIES: >> > :var: foo=1 >> > :var+: bar=2 >> > :END: >> > >> > However, the definition of bar is ignored. It turns out that there can >> > only be one :var: or :var+: entry in a drawer and the latter can only be >> > used to append to inherited entries, but not to those defined in the >> > same drawer. Is this the intended behavior? How would I define multiple >> > variables in a drawer (except for putting them all on one line)? >> > >> > Thanks, >> > Viktor >> > >> >> You are correct, I believe this is a bug. I've just pushed up a fix, so >> your example above should now work as expected. >> >> Thanks, >> >> -- >> Eric Schulte >> http://cs.unm.edu/~eschulte/ >> > -- Eric Schulte http://cs.unm.edu/~eschulte/
Re: [O] Setting multiple variables for code blocks in one property drawer
Hi Eric, thanks for your input. I just pulled the latest code from git and while my original example works, the following does not: :PROPERTIES: :var: foo=1 :var+: bar=2 :var+: baz=3 :END: #+BEGIN_SRC sh echo foo: $foo echo bar: $bar echo baz: $baz #+END_SRC If I evaluate the source block I get the following error in the messages buffer: =: Args out of range: "", 0 The following works: :PROPERTIES: :var: foo=1 :var+: bar=2 baz=3 :END: #+BEGIN_SRC sh echo foo: $foo echo bar: $bar echo baz: $baz #+END_SRC There also appears to be a difference between quoted and unquoted values and commatas. E.g. the following works :PROPERTIES: :var: foo=1 :var+: bar="2", baz=3 :END: #+BEGIN_SRC sh echo foo: $foo echo bar: $bar echo baz: $baz #+END_SRC If I remove the quotes around 2 I get the following error: ad-Orig-error: reference '2,' not found in this buffer On the other hand, the following version does not produce an error, but the value of $baz is not set. :PROPERTIES: :var: foo=1 :var+: bar="2", :var+: baz=3 :END: #+BEGIN_SRC sh echo foo: $foo echo bar: $bar echo baz: $baz #+END_SRC Cheers, Viktor Eric Schulte wrote: > Viktor Rosenfeld writes: > > > Hi, > > > > after following the discussion about the new BABEL syntax I was under > > the impression that the following should work to set two variables in > > one PROPERTIES drawer: > > > > :PROPERTIES: > > :var: foo=1 > > :var+: bar=2 > > :END: > > > > However, the definition of bar is ignored. It turns out that there can > > only be one :var: or :var+: entry in a drawer and the latter can only be > > used to append to inherited entries, but not to those defined in the > > same drawer. Is this the intended behavior? How would I define multiple > > variables in a drawer (except for putting them all on one line)? > > > > Thanks, > > Viktor > > > > You are correct, I believe this is a bug. I've just pushed up a fix, so > your example above should now work as expected. > > Thanks, > > -- > Eric Schulte > http://cs.unm.edu/~eschulte/ >
Re: [O] Setting multiple variables for code blocks in one property drawer
Viktor Rosenfeld writes: > Hi, > > after following the discussion about the new BABEL syntax I was under > the impression that the following should work to set two variables in > one PROPERTIES drawer: > > :PROPERTIES: > :var: foo=1 > :var+: bar=2 > :END: > > However, the definition of bar is ignored. It turns out that there can > only be one :var: or :var+: entry in a drawer and the latter can only be > used to append to inherited entries, but not to those defined in the > same drawer. Is this the intended behavior? How would I define multiple > variables in a drawer (except for putting them all on one line)? > > Thanks, > Viktor > You are correct, I believe this is a bug. I've just pushed up a fix, so your example above should now work as expected. Thanks, -- Eric Schulte http://cs.unm.edu/~eschulte/
[O] Setting multiple variables for code blocks in one property drawer
Hi, after following the discussion about the new BABEL syntax I was under the impression that the following should work to set two variables in one PROPERTIES drawer: :PROPERTIES: :var: foo=1 :var+: bar=2 :END: However, the definition of bar is ignored. It turns out that there can only be one :var: or :var+: entry in a drawer and the latter can only be used to append to inherited entries, but not to those defined in the same drawer. Is this the intended behavior? How would I define multiple variables in a drawer (except for putting them all on one line)? Thanks, Viktor