emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Rainer M Krug <Rainer@krugs.de>
To: John Kitchin <jkitchin@andrew.cmu.edu>
Cc: emacs-orgmode@gnu.org
Subject: Re: Multiple (identical) RESULTS blocks of one code block?
Date: Tue, 10 Mar 2015 10:35:45 +0100	[thread overview]
Message-ID: <m27fup19fy.fsf@krugs.de> (raw)
In-Reply-To: <m2h9tt1atf.fsf@krugs.de> (Rainer M. Krug's message of "Tue, 10 Mar 2015 10:06:04 +0100")

[-- Attachment #1: Type: text/plain, Size: 5444 bytes --]

Rainer M Krug <Rainer@krugs.de> writes:

> John Kitchin <jkitchin@andrew.cmu.edu> writes:
>
>> I don't believe this is possible out of the box. The first RESULTS block
>> from the beginning of the buffer will be updated, and not the others.
>>
>> You might be able to use a hook function to do this, something like:
>>
>> #+BEGIN_SRC emacs-lisp
>> (defun update-results () (interactive)
>>   ;; get name of src block
>>   (let ((name (org-element-property :name (org-element-at-point)))
>>         (results))
>>     (when name
>>       (org-element-map (org-element-parse-buffer) 'fixed-width
>>         (lambda (object)
>>           (if results
>>               ;; replace value in block
>>               (setf
>>                (buffer-substring
>>                 (org-element-property :begin  object)
>>                 (org-element-property :end  object))
>>                results)
>>             ;; set results
>>             (setq results
>>                   (buffer-substring
>>                    (org-element-property :begin  object)
>>                    (org-element-property :end  object)))))))))
>> #+END_SRC
>> #+BEGIN_SRC emacs-lisp
>> (add-hook 'org-babel-after-execute-hook 'update-results)
>> #+END_SRC
>>
>> This worked on a small test example, but I did not test it
>> thoroughly. your mileage might vary ;)
>
> This looks nice - I will try it out and see how it goes.


I don't get it to work.

I put the following into my emacs.org and evaluated it:

--8<---------------cut here---------------start------------->8---
(defun rmk/update-multiple-results-blocks () (interactive)
       ;; get name of src block
       (let ((name (org-element-property :name (org-element-at-point)))
             (results))
         (when name
           (org-element-map (org-element-parse-buffer) 'fixed-width
             (lambda (object)
               (if results
                   ;; replace value in block
                   (setf
                    (buffer-substring
                     (org-element-property :begin  object)
                     (org-element-property :end  object))
                    results)
                 ;; set results
                 (setq results
                       (buffer-substring
                        (org-element-property :begin  object)
                        (org-element-property :end  object)))))))))

#+end_src

#+RESULTS:
: rmk/update-multiple-results-blocks

Add this function to =org-babel=after-execute-hook=
#+begin_src emacs-lisp 
(add-hook 'org-babel-after-execute-hook 'rmk/update-multiple-results-blocks)
#+end_src

#+RESULTS:
| rmk/update-multiple-results-blocks |
--8<---------------cut here---------------end--------------->8---


I am using the following org file to test it:

--8<---------------cut here---------------start------------->8---
* The calculation
#+NAME: testcode
#+begin_src R :session test
runif(10)
#+end_src

* summary of the results
First time
#+RESULTS: testcode
|  0.471471928292885 |
|  0.128247044514865 |
|  0.398714824113995 |
|  0.335577708436176 |
| 0.0184990330599248 |
|  0.952211205149069 |
|  0.367342215497047 |
|  0.581879974342883 |
|  0.440492485417053 |
| 0.0729096119757742 |


#+RESULTS: testcode
| 0.0095007149502635 |
| 0.0898537992034107 |
|  0.764667606214061 |
| 0.0309854068327695 |
|  0.510338442632928 |
|  0.220906731439754 |
|  0.589271233882755 |
|  0.966699115466326 |
| 0.0183747289702296 |
|  0.734954049577937 |
--8<---------------cut here---------------end--------------->8---

But only the first results block is updated. The function
=rmk/update-multiple-results-blocks= is executed.

I am using

,----
| Org-mode version 8.3beta (release_8.3beta-884-g9ed426 @ /Users/rainerkrug/.emacs.d/org-mode/lisp/)
| GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, Carbon Version 157 AppKit 1343.16) of 2015-02-02 on Rainers-MacBook-Pro-4.local
`----

Any ideas what is going wrong?

Thanks,

Rainer


>
>
>>
>>
>> Rainer M Krug writes:
>>
>>> Hi
>>>
>>> Consider the following:
>>>
>>> --8<---------------cut here---------------start------------->8---
>>> * The calculation
>>> #+NAME: testcode :exports both
>>> #+begin_src R  :session test
>>> runif(10)
>>> #+end_src
>>>
>>>
>>> * summary of the results
>>> First time
>>> #+RESULTS: testcode :exports both
>>> |  0.772744940361008 |
>>> |  0.170518629485741 |
>>> | 0.0833237133920193 |
>>> |  0.149035625392571 |
>>> |  0.698798568220809 |
>>> |  0.627075897762552 |
>>> |  0.177144371205941 |
>>> | 0.0476319056469947 |
>>> |  0.289851602632552 |
>>> | 0.0296813279855996 |
>>>
>>> * and another
>>> testthingy
>>> #+RESULTS: testcode :exports both
>>>
>>> --8<---------------cut here---------------end--------------->8---
>>>
>>> If I update the calculation, the first results block is updated, but
>>> not the second one. I would like to have two RESULTS blocks which
>>> are both updated when the code block is evaluated.
>>>
>>> Is this possible?
>>>
>>> Thanks,
>>>
>>> Rainer
>>
>> --
>> Professor John Kitchin
>> Doherty Hall A207F
>> Department of Chemical Engineering
>> Carnegie Mellon University
>> Pittsburgh, PA 15213
>> 412-268-7803
>> @johnkitchin
>> http://kitchingroup.cheme.cmu.edu
>>
>>

-- 
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 494 bytes --]

  reply	other threads:[~2015-03-10  9:36 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-09 10:04 Multiple (identical) RESULTS blocks of one code block? Rainer M Krug
2015-03-09 13:01 ` John Kitchin
2015-03-09 13:10   ` Sebastien Vauban
2015-03-10  9:06   ` Rainer M Krug
2015-03-10  9:35     ` Rainer M Krug [this message]
     [not found]       ` <m2sidd2ems.fsf@andrew.cmu.edu>
2015-03-10 13:31         ` Rainer M Krug
2015-03-10 13:57           ` Rainer M Krug
2015-03-09 16:34 ` Nicolas Goaziou
2015-03-10  2:05 ` Aaron Ecay
2015-03-10  9:02   ` Rainer M Krug

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m27fup19fy.fsf@krugs.de \
    --to=rainer@krugs.de \
    --cc=emacs-orgmode@gnu.org \
    --cc=jkitchin@andrew.cmu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).