From 4d7a451a3c91ca765b62a408f54ce29d67c02b28 Mon Sep 17 00:00:00 2001 From: Brady McDonough Date: Sat, 5 Aug 2023 12:24:03 -0600 Subject: [PATCH] Correcting interactions, pause/unpause --- tacc.el | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/tacc.el b/tacc.el index a5d1a70..a432070 100644 --- a/tacc.el +++ b/tacc.el @@ -49,7 +49,8 @@ ;;; Code: -;; TODOS: +;; TODOS: Buffer kill hook not triggered on exit? +;; ;; ;; ERROR: timer shutdown seems to leave things in a wrong state and buffer doesn't die properly ;; Check on the logic of push-current, needs predicates rather than lazy if conditions @@ -379,30 +380,37 @@ Note, if there is no tacc-buffer then you shouldn't be touching tacc-info" (time-add start-ts (if (eq state 'work) (tacc-work-period cycle) - (tacc-break-period cycle))))) + (if (eq state 'break) + (tacc-break-period cycle)) + 0)))) ;; 05.3 State manipulation -(defun tacc-tick () - "Time marches on. Called every second while a tacc timer is running" - (let* ((now (current-time)) - (state (alist-get 'state tacc-info)) - (cycle (alist-get 'cycle tacc-info)) +(defun tacc-draw-buffer (now state) + "Redraws the timer buffer and returns the calculated countdown seconds" + (let* ((cycle (alist-get 'cycle tacc-info)) (work-ts (alist-get 'work-ts tacc-info)) - (break-ts (alist-get 'break-ts tacc-info)) + (break-ts (alist-gete 'break-ts tacc-info)) (est (tacc-est-ts state cycle work-ts break-ts)) (countdown (time-subtract est now))) (tacc-timer-buffer-update state est countdown now) + countdown)) + +(defun tacc-tick () + "Time marches on. Called every second while a tacc timer is running" + (let* ((now (current-time)) + (state (alist-get 'state tacc-info)) + (countdown (tacc-draw-buffer now state))) (if (functionp tacc-play-sound-file) (cond ((tacc-chime-p countdown) (funcall tacc-play-sound-file tacc-sound-chime)) (t (funcall tacc-play-sound-file tacc-sound-tick)))))) (defun tacc-timer-buffer-redraw () + "Force a redraw of the timer buffer" (let ((now (current-time)) (state (alist-get 'state tacc-info))) - (tacc-timer-buffer-update state))) -;; TODO + (tacc-draw-buffer now state))) (defun tacc-schedule () "Note the time and schedule the first tick" @@ -737,8 +745,9 @@ Returns the current tag if no prompt is made" (tacc-deschedule) (tacc-push-current) (tacc-save-record (assoc 'history tacc-info)) - (setcdr (assoc 'state tacc-info) 'stop) - (kill-buffer (tacc-buffer))))) + (setq tacc-info (tacc-info-initial)) + (kill-buffer (tacc-buffer)) + (tacc-cleanup-invariant)))) ;; 09 Hooks setup (add-hook 'after-init-hook 'tacc-load-tag-history)