* babel result chain outdated/inconsistent using var
@ 2016-04-06 12:01 Daniele Pizzolli
2016-04-06 12:54 ` Nicolas Goaziou
0 siblings, 1 reply; 9+ messages in thread
From: Daniele Pizzolli @ 2016-04-06 12:01 UTC (permalink / raw)
To: Org-mode
Hello,
is possible to update the “#+RESULTS: pid” when the block “#+NAME:
echo-pid” is evaluated in the following snippet?
This will lead to a consistent document generation with “M-x
org-babel-execute-buffer” or by hitting “C-c C-c” on “#+NAME:
echo-pid”. Using the cache does not make sense: the process is
generating different output every time.
The info at “M-: (info "(org) Specific header arguments")” does not
mention something useful.
* Intro
** pid
#+NAME: pid
#+BEGIN_SRC shell :results value :cache no
printf '%s' "${$}"
#+END_SRC
The following result is usually outdated/inconsistent!
#+RESULTS: pid
: 25272
** echo pid
#+NAME: echo-pid
#+BEGIN_SRC shell :var DATA=pid :results value
printf '%s' "${DATA}"
#+END_SRC
#+RESULTS: echo-pid
: 25273
The code block in pid is evaluated every time, but the results are
used only to populate the pid variable and non for updating the
results in the buffer:
#+BEGIN_EXAMPLE
executing Shell code block (pid)...
Wrote /tmp/babel-4889iZN/ob-input-4889CyZ
"25273"
executing Shell code block (echo-pid)...
Wrote /tmp/babel-4889iZN/ob-input-48892ay
Code block evaluation complete.
#+END_EXAMPLE
This was tested with Org-mode version 8.3.4 release_8.3.4-705-g716e33.
Thanks in advance for your suggestions,
Daniele
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-06 12:01 babel result chain outdated/inconsistent using var Daniele Pizzolli
@ 2016-04-06 12:54 ` Nicolas Goaziou
2016-04-06 13:27 ` Daniele Pizzolli
0 siblings, 1 reply; 9+ messages in thread
From: Nicolas Goaziou @ 2016-04-06 12:54 UTC (permalink / raw)
To: Daniele Pizzolli; +Cc: Org-mode
Hello,
Daniele Pizzolli <dan@toel.it> writes:
> is possible to update the “#+RESULTS: pid” when the block “#+NAME:
> echo-pid” is evaluated in the following snippet?
Without `org-babel-execute-buffer', I don't think so.
> This will lead to a consistent document generation with “M-x
> org-babel-execute-buffer” or by hitting “C-c C-c” on “#+NAME:
> echo-pid”.
I'm not convinced that this behaviour should be enforced. If I C-c C-c
on a block, I expect only the results of the block to be updated, not
some other part of the document I am editing.
Also, what if the other block is in another document? I don't think it
should be updated either.
What is the harm in using `org-babel-execute-buffer' for your use case?
Regards,
--
Nicolas Goaziou
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-06 12:54 ` Nicolas Goaziou
@ 2016-04-06 13:27 ` Daniele Pizzolli
2016-04-06 19:27 ` Nicolas Goaziou
0 siblings, 1 reply; 9+ messages in thread
From: Daniele Pizzolli @ 2016-04-06 13:27 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: Org-mode
On Wed, Apr 06 2016, Nicolas Goaziou wrote:
> Hello,
>
> Daniele Pizzolli <dan@toel.it> writes:
>
>> is possible to update the “#+RESULTS: pid” when the block “#+NAME:
>> echo-pid” is evaluated in the following snippet?
>
> Without `org-babel-execute-buffer', I don't think so.
Hello,
Thanks Nicolas for the reply. Ok, but `org-babel-execute-buffer'
produces an inconsistent document right now.
>> This will lead to a consistent document generation with “M-x
>> org-babel-execute-buffer” or by hitting “C-c C-c” on “#+NAME:
>> echo-pid”.
>
> I'm not convinced that this behaviour should be enforced. If I C-c C-c
> on a block, I expect only the results of the block to be updated, not
> some other part of the document I am editing.
Mmm, the same reasoning can be used for arguing about the current
behaviour: If I C-c C-c on a block, I expect only the code of the
block to be executed, not some other part of the document I am
editing. This behaviour will fix my issue.
I agree that neither case should be enforced, but the user should be
in charge to choose. A reasonable default behaviour will be to not
re-execute the other code block if the previous result is already
present.
> Also, what if the other block is in another document? I don't think it
> should be updated either.
But should it be either executed?
> What is the harm in using `org-babel-execute-buffer' for your use case?
Right now it does not produce a consistent document, that should be
desirable.
I do not have a strong preference about the solution (reuse without
re-execute, or update the other result) but for sure, right now there
is no way to produce a consistent document.
I tried for a workaround, adding `:eval query'
#+NAME: pid
#+BEGIN_SRC shell :results value :cache no :eval query
printf '%s' "${$}"
#+END_SRC
and then discarding the execution, but instead of reusing the actual
result it pass `nil'... no luck.
Thanks again,
Daniele
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-06 13:27 ` Daniele Pizzolli
@ 2016-04-06 19:27 ` Nicolas Goaziou
2016-04-07 8:12 ` Daniele Pizzolli
0 siblings, 1 reply; 9+ messages in thread
From: Nicolas Goaziou @ 2016-04-06 19:27 UTC (permalink / raw)
To: Daniele Pizzolli; +Cc: Org-mode
Daniele Pizzolli <dan@toel.it> writes:
> Thanks Nicolas for the reply. Ok, but `org-babel-execute-buffer'
> produces an inconsistent document right now.
This is because you ask it to. See below.
> Mmm, the same reasoning can be used for arguing about the current
> behaviour: If I C-c C-c on a block, I expect only the code of the
> block to be executed, not some other part of the document I am
> editing. This behaviour will fix my issue.
You are explicitly asking for a re-execution of a remote source block:
:var DATA=pid
If you are only interested in the results, you should name them, and use
that instead, e.g.
#+NAME: pid
#+BEGIN_SRC shell :results value :cache no
printf '%s' "${$}"
#+END_SRC
The following result is usually outdated/inconsistent!
#+NAME: pid-result
#+RESULTS: pid
: 21867
#+NAME: echo-pid
#+BEGIN_SRC shell :var DATA=pid-result :results value
printf '%s' "${DATA}"
#+END_SRC
#+RESULTS: echo-pid
: 21867
Regards,
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-06 19:27 ` Nicolas Goaziou
@ 2016-04-07 8:12 ` Daniele Pizzolli
2016-04-07 8:50 ` Nicolas Goaziou
0 siblings, 1 reply; 9+ messages in thread
From: Daniele Pizzolli @ 2016-04-07 8:12 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: Org-mode
On Wed, Apr 06 2016, Nicolas Goaziou wrote:
> Daniele Pizzolli writes:
>
>> Thanks Nicolas for the reply. Ok, but `org-babel-execute-buffer'
>> produces an inconsistent document right now.
>
> This is because you ask it to. See below.
>
>> Mmm, the same reasoning can be used for arguing about the current
>> behaviour: If I C-c C-c on a block, I expect only the code of the
>> block to be executed, not some other part of the document I am
>> editing. This behaviour will fix my issue.
>
> You are explicitly asking for a re-execution of a remote source block:
>
> :var DATA=pid
>
> If you are only interested in the results, you should name them, and use
> that instead, e.g.
Hello,
Oh, thanks Nicolas for the tip. But it does not work in a reliable
manner.
Calling `org-babel-execute-buffer' in the following snippet, raises:
(error "Reference `pid-result' not found in this buffer")
#+NAME: pid
#+BEGIN_SRC shell :results value :cache no
printf '%s' "${$}"
#+END_SRC
#+NAME: pid-result
#+RESULTS: pid
#+NAME: echo-pid
#+BEGIN_SRC shell :var DATA=pid-result :results value
printf '%s' "${DATA}"
#+END_SRC
#+RESULTS: echo-pid
Using the C-c C-c on the blocks also does not work... unless you also
do a C-c C-c on `#+NAME: pid-result' which is cumbersome if you have a
chain of blocks and results. Do you think that this can be fixed
easily?
Thanks in advance,
Daniele
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-07 8:12 ` Daniele Pizzolli
@ 2016-04-07 8:50 ` Nicolas Goaziou
2016-04-07 9:22 ` Daniele Pizzolli
0 siblings, 1 reply; 9+ messages in thread
From: Nicolas Goaziou @ 2016-04-07 8:50 UTC (permalink / raw)
To: Daniele Pizzolli; +Cc: Org-mode
Hello,
Daniele Pizzolli <dan@toel.it> writes:
> #+NAME: pid-result
> #+RESULTS: pid
> #+NAME: echo-pid
> #+BEGIN_SRC shell :var DATA=pid-result :results value
> printf '%s' "${DATA}" #+END_SRC
>
> #+RESULTS: echo-pid
You are giving two names to the block, which is not possible.
I don't know what you are trying to do here but you seem to confuse
blocks with their results. They can be named independently.
Regards,
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-07 8:50 ` Nicolas Goaziou
@ 2016-04-07 9:22 ` Daniele Pizzolli
2016-04-07 9:50 ` Nicolas Goaziou
0 siblings, 1 reply; 9+ messages in thread
From: Daniele Pizzolli @ 2016-04-07 9:22 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: Org-mode
On Thu, Apr 07 2016, Nicolas Goaziou wrote:
> Hello,
>
> Daniele Pizzolli writes:
>
>> #+NAME: pid-result
>> #+RESULTS: pid
>> #+NAME: echo-pid
>> #+BEGIN_SRC shell :var DATA=pid-result :results value
>> printf '%s' "${DATA}" #+END_SRC
>>
>> #+RESULTS: echo-pid
>
> You are giving two names to the block, which is not possible.
Hello,
Sorry for the confusion, I deleted one line more than the result ones.
I guess a new line or a comment or a text is enough to separate the
blocks.
> I don't know what you are trying to do here but you seem to confuse
> blocks with their results. They can be named independently.
I copied your example without the results, here is the updated
version, and even with a comment between the block produces the same
error `(error "Reference `pid-result' not found in this buffer")'
after calling `org-babel-execute-buffer'
#+NAME: pid
#+BEGIN_SRC shell :results value :cache no
printf '%s' "${$}"
#+END_SRC
#+NAME: pid-result
#+RESULTS: pid
# Some comment is required here to separate blocks, but it does not
# work either
#+NAME: echo-pid
#+BEGIN_SRC shell :var DATA=pid-result :results value
printf '%s' "${DATA}"
#+END_SRC
#+RESULTS: echo-pid
Do I am missing something else? Thanks again for your assistance.
Daniele
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-07 9:22 ` Daniele Pizzolli
@ 2016-04-07 9:50 ` Nicolas Goaziou
2016-04-07 11:16 ` Daniele Pizzolli
0 siblings, 1 reply; 9+ messages in thread
From: Nicolas Goaziou @ 2016-04-07 9:50 UTC (permalink / raw)
To: Daniele Pizzolli; +Cc: Org-mode
Daniele Pizzolli <dan@toel.it> writes:
> Do I am missing something else? Thanks again for your assistance.
There seems to be an issue with cache. Call `M-x
org-element-reset-cache' before calling `org-babel-execute-buffer'.
Regards,
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: babel result chain outdated/inconsistent using var
2016-04-07 9:50 ` Nicolas Goaziou
@ 2016-04-07 11:16 ` Daniele Pizzolli
0 siblings, 0 replies; 9+ messages in thread
From: Daniele Pizzolli @ 2016-04-07 11:16 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: Org-mode
On Thu, Apr 07 2016, Nicolas Goaziou wrote:
> Daniele Pizzolli writes:
>
>> Do I am missing something else? Thanks again for your assistance.
>
> There seems to be an issue with cache. Call `M-x
> org-element-reset-cache' before calling `org-babel-execute-buffer'.
Hello,
thanks, to be precise this is required to be iterated for every empty
(without result output) named result block (if they are in chain) in
the buffer.
Not straightforward but I can live with that workaround. Once all the
result block are populated, `M-x org-babel-execute-buffer' updates the
results in a consistent way without the need of `M-x
org-element-reset-cache' call.
Thanks Nicolas for your support,
Daniele
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-04-07 11:17 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-06 12:01 babel result chain outdated/inconsistent using var Daniele Pizzolli
2016-04-06 12:54 ` Nicolas Goaziou
2016-04-06 13:27 ` Daniele Pizzolli
2016-04-06 19:27 ` Nicolas Goaziou
2016-04-07 8:12 ` Daniele Pizzolli
2016-04-07 8:50 ` Nicolas Goaziou
2016-04-07 9:22 ` Daniele Pizzolli
2016-04-07 9:50 ` Nicolas Goaziou
2016-04-07 11:16 ` Daniele Pizzolli
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).