From: Carsten Dominik <dominik@science.uva.nl>
To: "Alan E. Davis" <lngndvs@gmail.com>
Cc: emacs-orgmode Mailinglist <emacs-orgmode@gnu.org>
Subject: Re: Re: Relative clocking [Further discussion and ideas by OP]
Date: Tue, 25 Nov 2008 08:07:11 +0100 [thread overview]
Message-ID: <D303C6F0-31CF-467D-AE71-DBB39F482479@uva.nl> (raw)
In-Reply-To: <7bef1f890811241231m52f9a2e1o8c320272d3a6e291@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 2702 bytes --]
On Nov 24, 2008, at 9:31 PM, Alan E. Davis wrote:
> Thank you for the reply.
>
> On Mon, Nov 24, 2008 at 8:30 PM, Carsten Dominik <dominik@science.uva.nl
> > wrote:
> Why would you want to turn off the clock? It is actually
> not running, only a starting time is recorded. Just "start"
> it again when you need a new clock.
>
> Perfect! Thank you.
>
>> A further suggestion is born or my initial experiment with his
>> function: I started the clock a bit too late, so all the timestamps
>> are off by about 30-40 seconds. Is it (at least in theory)
>> possible to adjust all time stamps in a subtree by the same
>> amount? That would enable me to correct all of my notes in one
>> fell stroke.
>
> Of course this is possible, but code for that would need to be
> written.
>
>
> I have written some elisp, not alot. May I request a clue where to
> start?
Well write a function searching for the strings and change them... :-)
Something like this (untested) might do it. These functions
handle negative times, so you can also use this to change
the timings relative to the beginning of a scene, so that a prelude
to a scene might be at negative times.....:
(defun my-change-times-in-region (beg end delta)
"Change all h:mm:ss time in region by a DELTA."
(interactive "r\nsEnter time difference like \"-1:08:26\" or
\"0:00:25\": ")
(let ((re "[-+]?[0-9]+:[0-9]\\{2\\}:[0-9]\\{2\\}")
(delta (my-hms-to-secs delta))
old new p)
(when (= delta 0) (error "No change"))
(save-excursion
(goto-char end)
(while (re-search-backward re beg t)
(setq p (point))
(replace-match
(save-match-data
(my-secs-to-hms (+ (my-hms-to-secs (match-string 0)) delta)))
t t)
(goto-char p)))))
(defun my-hms-to-secs (hms)
"Convert h:mm:ss string to an integer time.
If the string starts with a minus sign, the integer will be negative."
(if (not (string-match
"\\([-+]?[0-9]+\\):\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)"
hms))
0
(let* ((h (string-to-int (match-string 1 hms)))
(m (string-to-int (match-string 2 hms)))
(s (string-to-int (match-string 3 hms)))
(sign (equal (substring (match-string 1 hms) 0 1) "-")))
(setq h (abs h))
(* (if sign -1 1) (+ s (* 60 (+ m (* 60 h))))))))
(defun my-secs-to-hms (s)
"Convert integer S into h:mm:ss.
If the integer is negative, the strig will start with \"-\"."
(let (sign m h)
(setq sign (if (< s 0) "-" "")
s (abs s)
m (/ s 60) s (- s (* 60 m))
h (/ m 60) m (- m (* 60 h)))
(format "%s%d:%02d:%02d" sign h m s)))
HTH
- Carsten
Hmmm, looks useful to me also for general note taking, maybe
I can add something linke this to Org....
[-- Attachment #1.2: Type: text/html, Size: 5443 bytes --]
[-- Attachment #2: Type: text/plain, Size: 204 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
next prev parent reply other threads:[~2008-11-25 7:44 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-24 7:47 Relative clocking [Further discussion and ideas by OP] Alan E. Davis
2008-11-24 10:30 ` Carsten Dominik
2008-11-24 20:31 ` Alan E. Davis
2008-11-25 7:07 ` Carsten Dominik [this message]
2008-11-25 8:08 ` Alan E. Davis
2008-11-25 11:29 ` Carsten Dominik
2008-11-25 11:48 ` Charles Sebold
2008-11-25 13:27 ` Carsten Dominik
2008-11-25 21:44 ` Alan E. Davis
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=D303C6F0-31CF-467D-AE71-DBB39F482479@uva.nl \
--to=dominik@science.uva.nl \
--cc=emacs-orgmode@gnu.org \
--cc=lngndvs@gmail.com \
/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).