* 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).