Hi all, how do I reference the results of a #+call line? Here are my unsuccessful attempts: --8<---------------cut here---------------start------------->8--- * Test call results #+name: curdir #+begin_src sh echo "$PWD" #+end_src #+results: curdir : /home/andreas/tmp/junk/2013/11 #+name: curdircall #+call: curdir() #+results: curdircall : /home/andreas/tmp/junk/2013/11 #+begin_src sh :var test=curdircall echo "$test" #+end_src #+results: : nil #+begin_src sh :var test=curdircall() echo "$test" #+end_src #+results: : nil --8<---------------cut here---------------end--------------->8--- Regards, Andreas
Andreas Leha wrote: > how do I reference the results of a #+call line? > > Here are my unsuccessful attempts: > > * Test call results > > #+name: curdir > #+begin_src sh > echo "$PWD" > #+end_src > > #+results: curdir > : /home/andreas/tmp/junk/2013/11 > > > #+name: curdircall > #+call: curdir() > > #+results: curdircall > : /home/andreas/tmp/junk/2013/11 > > #+begin_src sh :var test=curdircall > echo "$test" > #+end_src > > #+results: > : nil IIUC, #+CALL lines can't be named. See http://orgmode.org/manual/Structure-of-code-blocks.html#Structure-of-code-blocks vs http://orgmode.org/manual/Evaluating-code-blocks.html#Evaluating-code-blocks. Best regards, Seb -- Sebastien Vauban
Andreas Leha wrote:
> how do I reference the results of a #+call line?
>
> Here are my unsuccessful attempts:
>
> * Test call results
>
> #+name: curdir
> #+begin_src sh
> echo "$PWD"
> #+end_src
>
> #+results: curdir
> : /home/andreas/tmp/junk/2013/11
>
> [...]
>
> #+begin_src sh :var test=curdircall()
> echo "$test"
> #+end_src
>
> #+results:
> : nil
Use the following:
#+begin_src sh :var test=curdir()
echo "$test"
#+end_src
Best regards,
Seb
--
Sebastien Vauban
"Sebastien Vauban" <sva-news@mygooglest.com> writes: > Andreas Leha wrote: >> how do I reference the results of a #+call line? >> >> Here are my unsuccessful attempts: >> >> * Test call results >> >> #+name: curdir >> #+begin_src sh >> echo "$PWD" >> #+end_src >> >> #+results: curdir >> : /home/andreas/tmp/junk/2013/11 >> >> >> #+name: curdircall >> #+call: curdir() >> >> #+results: curdircall >> : /home/andreas/tmp/junk/2013/11 >> >> #+begin_src sh :var test=curdircall >> echo "$test" >> #+end_src >> >> #+results: >> : nil > > IIUC, #+CALL lines can't be named. > > See http://orgmode.org/manual/Structure-of-code-blocks.html#Structure-of-code-blocks > vs http://orgmode.org/manual/Evaluating-code-blocks.html#Evaluating-code-blocks. > > Best regards, > Seb Hi Sebastian, they can be named now (see http://thread.gmane.org/gmane.emacs.orgmode/73811/focus=74096). Regards, Andreas
"Sebastien Vauban" <sva-news@mygooglest.com>
writes:
> Andreas Leha wrote:
>> how do I reference the results of a #+call line?
>>
>> Here are my unsuccessful attempts:
>>
>> * Test call results
>>
>> #+name: curdir
>> #+begin_src sh
>> echo "$PWD"
>> #+end_src
>>
>> #+results: curdir
>> : /home/andreas/tmp/junk/2013/11
>>
>> [...]
>>
>> #+begin_src sh :var test=curdircall()
>> echo "$test"
>> #+end_src
>>
>> #+results:
>> : nil
>
> Use the following:
>
> #+begin_src sh :var test=curdir()
> echo "$test"
> #+end_src
>
> Best regards,
> Seb
Hi Sebastien,
thanks for that. I am aware of the workaround to use a full code block
instead. But my question still stands.
I found out how to do it. Rather simple and straight forward, blush...
For future reference here it is:
--8<---------------cut here---------------start------------->8---
#+name: curdir
#+begin_src sh
echo "$PWD"
#+end_src
#+results: curdir
: /home/andreas/tmp/junk/2013/11
#+name: curdircall
#+call: curdir()
#+name: myname
#+results: curdircall
: /home/andreas/tmp/junk/2013/11
#+begin_src sh :var test=myname
echo "$test"
#+end_src
--8<---------------cut here---------------end--------------->8---
Regards,
Andreas
Hi Andreas, Andreas Leha wrote: > "Sebastien Vauban" <sva-news-D0wtAvR13HarG/iDocfnWg@public.gmane.org> writes: >> Andreas Leha wrote: >>> how do I reference the results of a #+call line? >>> >>> Here are my unsuccessful attempts: >>> >>> * Test call results >>> >>> #+name: curdir >>> #+begin_src sh >>> echo "$PWD" >>> #+end_src >>> >>> #+results: curdir >>> : /home/andreas/tmp/junk/2013/11 >> >> Use the following: >> >> #+begin_src sh :var test=curdir() >> echo "$test" >> #+end_src > > thanks for that. I am aware of the workaround to use a full code block > instead. But my question still stands. I don't understand what you mean: it's not a workaround, as you have to define your block once. Then, you simply use its name, instead of naming a call line, and using that name. You avoid one indirection, no? > I found out how to do it. Rather simple and straight forward, blush... > > For future reference here it is: > #+name: curdir > #+begin_src sh > echo "$PWD" > #+end_src > > #+results: curdir > : /home/andreas/tmp/junk/2013/11 > > #+name: curdircall > #+call: curdir() > > #+name: myname > #+results: curdircall > : /home/andreas/tmp/junk/2013/11 > > #+begin_src sh :var test=myname > echo "$test" > #+end_src I don't know if that's the solution, or simply a feature which works for now. I find this weird and unsound: - For code blocks, the results' name (curdir) is the code block's name (curdir). - For call lines, as you do above, you give another name to the results of a call line (myname) than the name of the call line itself (curdircall). This is not appealing to me, and confusing at least. Best regards, Seb -- Sebastien Vauban
Hi Sebastien, "Sebastien Vauban" <sva-news@mygooglest.com> writes: > Hi Andreas, > > Andreas Leha wrote: >> "Sebastien Vauban" <sva-news@mygooglest.com> writes: >>> Andreas Leha wrote: >>>> how do I reference the results of a #+call line? >>>> >>>> Here are my unsuccessful attempts: >>>> >>>> * Test call results >>>> >>>> #+name: curdir >>>> #+begin_src sh >>>> echo "$PWD" >>>> #+end_src >>>> >>>> #+results: curdir >>>> : /home/andreas/tmp/junk/2013/11 >>> >>> Use the following: >>> >>> #+begin_src sh :var test=curdir() >>> echo "$test" >>> #+end_src >> >> thanks for that. I am aware of the workaround to use a full code block >> instead. But my question still stands. > > I don't understand what you mean: it's not a workaround, as you have to define > your block once. Then, you simply use its name, instead of naming a call line, > and using that name. You avoid one indirection, no? > Sorry about the lame example. Let's assume, the original code block takes an argument. I want to 'get rid of' that argument, let's say to avoid typing. So, I have to name the result of calling that code block with a specific argument. There has to be at least one level of indirection here? IIUC, you propose to use a code block to provide that argument, and my idea was to use a #+call line. For me, a call line is the more natural way to accomplish this. >> I found out how to do it. Rather simple and straight forward, blush... >> >> For future reference here it is: >> #+name: curdir >> #+begin_src sh >> echo "$PWD" >> #+end_src >> >> #+results: curdir >> : /home/andreas/tmp/junk/2013/11 >> >> #+name: curdircall >> #+call: curdir() >> >> #+name: myname >> #+results: curdircall >> : /home/andreas/tmp/junk/2013/11 >> >> #+begin_src sh :var test=myname >> echo "$test" >> #+end_src > > I don't know if that's the solution, or simply a feature which works for now. > > I find this weird and unsound: > > - For code blocks, the results' name (curdir) is the code block's name > (curdir). > > - For call lines, as you do above, you give another name to the results of a > call line (myname) than the name of the call line itself (curdircall). > > This is not appealing to me, and confusing at least. I agree completely. So my question boils down to this feature request: Now, that #+call lines can be named, would it be possible to reference the results the same way as for code blocks? Regards, Andreas
[-- Attachment #1: Type: text/plain, Size: 268 bytes --] > > I agree completely. So my question boils down to this feature request: > > Now, that #+call lines can be named, would it be possible to reference > the results the same way as for code blocks? > I just pushed up a commit which should make this possible. E.g., [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: call.org --] [-- Type: text/x-org, Size: 320 bytes --] * call by name #+name: echo-input #+begin_src sh :var input="original" echo "input=$input" #+end_src #+RESULTS: echo-input : input=original #+name: echo-new #+call: echo-input("new") #+RESULTS: echo-new : input=new #+begin_src sh :var input=echo-new() echo "this=$input" #+end_src #+RESULTS: : this=input=new [-- Attachment #3: Type: text/plain, Size: 70 bytes --] Best, -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D
Hi Eric,
Eric Schulte <schulte.eric@gmail.com> writes:
>>
>> I agree completely. So my question boils down to this feature request:
>>
>> Now, that #+call lines can be named, would it be possible to reference
>> the results the same way as for code blocks?
>>
>
> I just pushed up a commit which should make this possible. E.g.,
>
> * call by name
>
> #+name: echo-input
> #+begin_src sh :var input="original"
> echo "input=$input"
> #+end_src
>
> #+RESULTS: echo-input
> : input=original
> #+name: echo-new
> #+call: echo-input("new")
> #+RESULTS: echo-new
> : input=new
> #+begin_src sh :var input=echo-new()
> echo "this=$input"
> #+end_src
>
> #+RESULTS:
> : this=input=new
>
thanks a lot! I confirm that it works. This was really fast!
Regards,
Andreas