You may understand that I was already looking at the idea of converting integer times back and forth to/from hh:mm:ss. Your functions look extremely interesting. I am trying to write a function to start the clock at a specific point in time. This could be useful when restarting or continuing a video, and continuing notes. Thank you again, Alan On Tue, Nov 25, 2008 at 5:07 PM, Carsten Dominik wrote: > > 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 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.... > > -- Alan Davis "It's never a matter of liking or disliking ..." ---Santa Ynez Chumash Medicine Man