emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: BROKEN BADLY: How to pause the relative timer. new version


From: Alan E. Davis
Subject: [Orgmode] Re: BROKEN BADLY: How to pause the relative timer. new version and warning
Date: Mon, 5 Jan 2009 23:05:59 +1000

I feel sorry that I have unleashed this broken code, and have now "fixed" the first problem I have found.  I think it's best to ask for help and advice. 

The code I just posted does work, but when restarting after a pause, if one has paused twice, time is subtracted serially, each time the restart routine is run. 

Also, the rest of the relative timer code is ignorant of my code, and continues to stamp times using, for example, org-timer-item, progressively.  But then, when the timer is "restarted" the time is adjusted to the paused time. 

I have solved one problem, and left others.  I would welcome any ideas.  I cannot hack the timer code, as much of it is beyond the limits of my lisp cluefullness.  But probably the best that can be hoped for is for this to be incorporated into the code in org-timer.el . 

I have written into my little dired-vlc a test for C-u that starts the relative timer if the argument is detected when starting the video!  Man, this is nice.  It's much more straightforward for me to start, comment, pause, reset as needed, etc., at this point.  And I already see the pitfalls.  I'm likely to keep it simple, keep it for my own purposes.  Should I post that?  It's not very large, so I will do so below, with thanks to the emms people and others, as well as caveats aplenty.

Thanks for the relative timer.  And org-mode.

Alan


------PAUSE----VERSION 2 -----------%--------------------
(defvar org-timer-pause-time nil
  "t=0 for pause")

(defvar org-timer-pause-restart-time nil
  "t=last for pause")

(defvar org-timer-pause-flag nil)

(defun org-aed-pause-timer-pause ()
  "Set the time of the pause timer to the start time
of the pause interval."
  (interactive)
  (if org-timer-pause-flag
    (let ((ind 0))
      (save-excursion
    (skip-chars-backward " \n\t")
    (condition-case nil
        (progn
          (org-beginning-of-item)
          (setq ind (org-get-indentation)))
      (error nil)))
      (or (bolp) (newline))
      (org-indent-line-to ind)
      (insert "Timer is already paused!  Do not pause again.")))
  (or org-timer-pause-flag
      (progn
    (setq org-timer-pause-time (current-time))
    (let ((ind 0))
      (save-excursion
        (skip-chars-backward " \n\t")
        (condition-case nil
        (progn
          (org-beginning-of-item)
          (setq ind (org-get-indentation)))
          (error nil)))
      (or (bolp) (newline))
      (org-indent-line-to ind)
      (insert "- paused:  ")
      (org-timer))
    (setq org-timer-pause-flag t))))a
  


;; Temporary variable for
(defvar scnds nil)

(defun org-aed-pause-timer-restart ()
  "Get current time, calculate pause interval, do the math,
and reset org-timer-start-time"
  (interactive)
  (if org-timer-pause-flag
      (progn
    (setq scnds (time-to-seconds org-timer-start-time))
    (setq org-timer-start-time
          (seconds-to-time
           (+ scnds
          (-
           (time-to-seconds (current-time))
           (time-to-seconds org-timer-pause-time)))))
    (let ((ind 0))
      (save-excursion
        (skip-chars-backward " \n\t")
        (condition-case nil
        (progn
          (org-beginning-of-item)
          (setq ind (org-get-indentation)))
          (error nil)))
      (or (bolp) (newline))
      (org-indent-line-to ind)
      (insert "- pause off:  ")
      (org-timer))
        (setq org-timer-pause-flag nil))
    (let ((ind 0))
      (save-excursion
        (skip-chars-backward " \n\t")
        (condition-case nil
        (progn
          (org-beginning-of-item)
          (setq ind (org-get-indentation)))
          (error nil)))
      (or (bolp) (newline))
      (org-indent-line-to ind)
      (insert "Error: not paused."))))

-----------------END Version 2---------%--------------


;;---------dired-vlc.el --------------%-----------------
;;  -*- mode: elisp -*-
;; Time-stamp: <05-Jan-2009 23:03:58 address@hidden>
;; AED 05 January 2009
;;;;;;;;;;;;;;;;;

(require 'org-mode)


(defvar dired-vlc-program "/usr/bin/vlc")


(defun dired-vlc (&optional timer)
  "Asynchronously start vlc on file through dired.  If an optional
argument is given (C-u), the org relative timer is started.  This
function purports to start vlc in rc mode, to leave open the
possibility of remote control."
  (interactive "P")
  (let ((file (expand-file-name (dired-get-filename)))
        ext files basename dir curr-file ;idx-file sub-file srt-file
    command options)
    (setq basename (file-name-nondirectory
            (file-name-sans-extension file)))
    (setq dir (file-name-directory file))
    (setq files (directory-files dir t basename))
    (delete file files)
    (setq command (format "\"%s\" \"%s" dired-vlc-program "--intf rc"))
;              file))
    (if (y-or-n-p (format "Run command %s?" command))
;        (shell-command command))))
        (start-process "junk" nil dired-vlc-program file)))
  (if (equal timer '(4)) (org-timer-start))
)



;; Doesn't work. 
;(defun vlc-pause ()
;  (interactive)
;  "Depends on vlc's rc mode."
;  (process-send-string
;   "junk" "pause\n"))



;; end dired-vlc.el
;;----------------------

On Mon, Jan 5, 2009 at 9:23 PM, Alan E. Davis <address@hidden> wrote:
Hello:

I have been able to put together a tentative solution to this problem of pausing the relative timer.

It needs work, but perhaps one will be forgiven for posting it (below).  It has mostly been stolen, as anyone will see:


---------------- Code --------------
(defvar org-timer-pause-time nil
  "t=0 for pause")

(defvar org-timer-pause-restart-time nil
  "t=last for pause")


(defun org-aed-pause-timer-pause ()
  "Set the time of the pause timer to the start time
of the pause interval."
  (interactive)
  (setq org-timer-pause-time (current-time))
  (let ((ind 0))
    (save-excursion
      (skip-chars-backward " \n\t")
      (condition-case nil
      (progn
        (org-beginning-of-item)
        (setq ind (org-get-indentation)))
    (error nil)))
    (or (bolp) (newline))
    (org-indent-line-to ind)
    (insert "- paused:  ")
    (org-timer)))

(defvar scnds nil)

(defun org-aed-pause-timer-restart ()
  "Get current time, calculate pause interval, do the math,
and reset org-timer-start-time"
  (interactive)
;  (setq org-timer-start-time
;    (seconds-to-time
;     (+ (time-to-seconds org-timer-start-time)
  (setq scnds (time-to-seconds org-timer-start-time))
  (setq org-timer-start-time
    (seconds-to-time
     (+ scnds
        (-

         (time-to-seconds (current-time))
         (time-to-seconds org-timer-pause-time)))))
  (let ((ind 0))
    (save-excursion
      (skip-chars-backward " \n\t")
      (condition-case nil
      (progn
        (org-beginning-of-item)
        (setq ind (org-get-indentation)))
    (error nil)))
    (or (bolp) (newline))
    (org-indent-line-to ind)
    (insert "- pause off:  ")
    (org-timer)))

------------END Code ---------------%--------------------- 
                  
 


--
Alan Davis

"It's never a matter of liking or disliking ..."
      ---Santa Ynez Chumash Medicine Man




--
Alan Davis

"It's never a matter of liking or disliking ..."
      ---Santa Ynez Chumash Medicine Man


reply via email to

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