[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] #+header: :post -> Symbol's value as variable is void: *this*
From: |
Thorsten Jolitz |
Subject: |
Re: [O] #+header: :post -> Symbol's value as variable is void: *this* |
Date: |
Wed, 06 Aug 2014 10:54:57 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Aaron Ecay <address@hidden> writes:
Hi Aaron,
> 2014ko uztailak 27an, Thorsten Jolitz-ek idatzi zuen:
>>
>> Thorsten Jolitz <address@hidden> writes:
>>
>>> Hi List,
>>>
>>> whats wrong with this :post header arg:
>>>
>>> #+header: :post (format "#+attr_latex :float :placement
>>> {c}{scale=.6}\n%s" *this*)
>>> #+begin_src emacs-lisp
>>> (+ 2 2)
>>> #+end_src
>>>
>>> When I understand
>>>
>>> ,----
>>> | http://orgmode.org/manual/post.html
>>> `----
>>>
>>> correctly, *this* should hold the block results, but I get
>>>
>>> ,----
>>> | Symbol's value as variable is void: *this*
>>> `----
>>
>>
>> This works:
>>
>> #+name: myconcat
>> #+header: :var x=""
>> #+begin_src emacs-lisp
>> (format "Do %sx then quit" x)
>> #+end_src
>>
>>
>> #+header: :post myconcat(x=*this*)
>> #+begin_src emacs-lisp
>> (+ 2 2)
>> #+end_src
>>
>> #+results:
>> : Do 4x then quit
>>
>>
>> but how do I interpret the following sentence from the manual:
>>
>> ,----
>> | This variable [*this*] may then be included in header argument forms
>> | such as those used in var header argument specifications allowing
>> | passing of results to other code blocks, or direct execution via Emacs
>> | Lisp.
>> `----
>>
>> What is meant by 'direct execution via Emacs Lisp' here? I think the
>> above construct with two src-blocks is a bit heavy for the rather small
>> task and hoped I could just give an Emacs Lisp expression containing
>> *this* as value to the :post header arg, but apparently not?
>>
>> #+header: :post (format "Do %sx then quit" *this*)
>> #+begin_src emacs-lisp
>> (+ 2 2)
>> #+end_src
>>
>> -> eval: Symbol's value as variable is void: *this*
>
> The value of :post should be a babel call (in the same format as e.g. a
> #+call line), not an elisp form. If babel sees something that looks
> like elisp, it will attempt to ‘eval’ it when parsing the src block,
> before *this* is bound (which happens only upon execution, after
> parsing).
Thats
#+CALL: <name>(<arguments>)
then, and looks like the headerline of the working example above:
#+header: :post myconcat(x=*this*)
Then there is no way to achieve what I had in mind. Thx.
--
cheers,
Thorsten