[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Multiple (identical) RESULTS blocks of one code block?
From: |
Rainer M Krug |
Subject: |
Re: [O] Multiple (identical) RESULTS blocks of one code block? |
Date: |
Tue, 10 Mar 2015 10:35:45 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4 (darwin) |
Rainer M Krug <address@hidden> writes:
> John Kitchin <address@hidden> 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
signature.asc
Description: PGP signature
Re: [O] Multiple (identical) RESULTS blocks of one code block?, Nicolas Goaziou, 2015/03/09
Re: [O] Multiple (identical) RESULTS blocks of one code block?, Aaron Ecay, 2015/03/09