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 <[EMAIL PROTECTED]>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 <[EMAIL PROTECTED]>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
_______________________________________________
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

Reply via email to