emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Set or update timestamp after evaluation of code block?


From: Rainer M Krug
Subject: Re: [O] Set or update timestamp after evaluation of code block?
Date: Tue, 22 Sep 2015 11:45:04 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (darwin)

Rainer M Krug <address@hidden> writes:

> John Kitchin <address@hidden> writes:
>
>> so picky ;)
>
> Jup - aren't all org users like that?
>
>> Maybe something like this will put that stamp in a comment
>> that won't export.
>>
>> #+BEGIN_SRC emacs-lisp
>> (defun j-add-ts ()
>>   (save-excursion
>>     (re-search-forward "#\\+END_SRC")
>>     (forward-line)
>>     (beginning-of-line)
>>     (when (looking-at "# Last run:")
>>       (kill-line))
>>     (insert (concat
>>              "# Last run: "
>>              (format-time-string "[%Y-%m-%d %a %H:%M:%S]" (current-time))))))
>>
>>
>> (add-hook 'org-babel-after-execute-hook
>>           'j-add-ts)
>>
>> ;(remove-hook 'org-babel-after-execute-hook
>> ;         'j-add-ts)
>> #+END_SRC
>
> Perfect! I added it to my emacs.org just now and I relly like it.

I modified it a bit so that I get the following time stamp before the
source block. Can the fact that I use #+ cause problems? Because I like
the coloring of the LASTRUN line.

Additional question: if I execute the code block from a preceding
e.g. #+NAME: line which belongs to the code block, the line gets
obviously inserted in front of the code block before.

Is there some org wizardry so that I can search the property #+LASTRUN:
which belongs to the code block and replace or insert it?

Or g=can I somehow jump to the beginning of the code block when I am in
a preceding #+ line?

Thanks,

Rainer

--8<---------------cut here---------------start------------->8---
#+LASTRUN: [2015-09-22 Tue 11:37:43]
#+begin_src emacs-lisp 
(defun rmk/org-babel-add-time-stamp-after-execute-before-src-block ()
  (save-excursion
    (re-search-backward "#\\+BEGIN_SRC")
    (forward-line -1)
    (beginning-of-line)
    (when (not (or
                (looking-at "[[:space:]]*$")
                (looking-at "#\\+LASTRUN:")))
      (forward-line 1)
      (newline)
      (forward-line -1))
    (when (looking-at "#\\+LASTRUN:")
      (kill-line))
    (insert (concat
             "#+LASTRUN: "
             (format-time-string "[%Y-%m-%d %a %H:%M:%S]" (current-time))))
))

(add-hook 'org-babel-after-execute-hook
          'rmk/org-babel-add-time-stamp-after-execute-before-src-block)
#+end_src
--8<---------------cut here---------------end--------------->8---

>
> Thanks a lot,
>
> Rainer
>
>>
>>
>> Rainer M Krug writes:
>>
>>> John Kitchin <address@hidden> writes:
>>>
>>>> Here is one approach:
>>>>
>>>> #+name: update-timestamp
>>>> #+BEGIN_SRC emacs-lisp :var data=""
>>>> (concat
>>>>  "Last run: "
>>>>  (format-time-string "[%Y-%m-%d %a %H:%M:%S]" (current-time))
>>>>  "\n" data)
>>>> #+END_SRC
>>>>
>>>>
>>>> #+BEGIN_SRC python :post update-timestamp(data=*this*)
>>>> print('hello')
>>>> #+END_SRC
>>>>
>>>> #+RESULTS:
>>>> : Last run: [2015-09-21 Mon 11:09:18]
>>>> : hello
>>>
>>> Thanks John - that looks nice and I like the idea of using
>>> (current-time) and the possibility to format the time string, but this
>>> info will be part of the export - and I only would like tho have the
>>> info in the org file and not in the exported document.
>>>
>>>
>>> Rainer
>>>
>>>>
>>>>
>>>>
>>>> Rainer M Krug writes:
>>>>
>>>>> Eric S Fraga <address@hidden> writes:
>>>>>
>>>>>> On Monday, 21 Sep 2015 at 14:46, Rainer M Krug wrote:
>>>>>>
>>>>>> [...]
>>>>>>
>>>>>>> Is it possible to set a timestamp (ur update it when it exists already)
>>>>>>> when a code block has been evaluated, so that I have e record when it
>>>>>>> was updated?
>>>>>>
>>>>>> Could you make use of the :post header argument to invoke emacs lisp and
>>>>>> execute org-time-stamp-inactive in some way?
>>>>>
>>>>> Thanks - sounds possible? But if I just use
>>>>>
>>>>> ,----
>>>>> | :post (org-time-stamp-inactive)
>>>>> `----
>>>>>
>>>>> 1) an input is required and
>>>>> 2) the time stamp is inserted before the #+begin_src and makes the block
>>>>> invalid.
>>>>>
>>>>> How can I put the time stamp in the line after the #+end_src or possibly
>>>>> even in the same line, as this does not seem to have an impact on the
>>>>> source block?
>>>>>
>>>>> 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
>>
>> --
>> 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, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :       +33 - (0)9 53 10 27 44
Cell:       +33 - (0)6 85 62 59 98
Fax :       +33 - (0)9 58 10 27 44

Fax (D):    +49 - (0)3 21 21 25 22 44

email:      address@hidden

Skype:      RMkrug

PGP: 0x0F52F982

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]