branch: externals/tmr
commit e18496d187894a0aae4498da09beb2bc9bd2fc30
Author: Daniel Mendler <[email protected]>
Commit: Protesilaos Stavrou <[email protected]>
Add tmr--update-hook
This hook should be called always when tmr--timers or
any timer changes.
---
tmr-tabulated.el | 8 +++-----
tmr.el | 10 ++++++++--
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/tmr-tabulated.el b/tmr-tabulated.el
index 2c07298a03..35d9254ab0 100644
--- a/tmr-tabulated.el
+++ b/tmr-tabulated.el
@@ -115,7 +115,7 @@ prompt for a duration."
(tmr-tabulated--get-timer-at-point)
(tmr--description-prompt)))
(setf (tmr--timer-description timer) description)
- (revert-buffer))
+ (run-hooks 'tmr--update-hook))
(defun tmr-tabulated--move-point-to-closest-entry ()
"Move the point to the next entry if there is one or to the previous one.
@@ -145,15 +145,13 @@ Point isn't moved if point is on the only entry."
"Return the timer on the current line or nil."
(tmr--get-timer-by-creation-date (tabulated-list-get-id)))
-(defun tmr-tabulated--refresh (_timer)
+(defun tmr-tabulated--refresh ()
"Refresh *tmr-tabulated-view* buffer if it exists."
(when-let (buf (get-buffer "*tmr-tabulated-view*"))
(with-current-buffer buf
(revert-buffer))))
-(add-hook 'tmr-timer-completed-functions #'tmr-tabulated--refresh)
-(add-hook 'tmr-timer-created-functions #'tmr-tabulated--refresh)
-(add-hook 'tmr-timer-cancelled-functions #'tmr-tabulated--refresh)
+(add-hook 'tmr--update-hook #'tmr-tabulated--refresh)
(provide 'tmr-tabulated)
;;; tmr-tabulated.el ends here
diff --git a/tmr.el b/tmr.el
index 23bd4d60de..b6ec15e746 100644
--- a/tmr.el
+++ b/tmr.el
@@ -190,6 +190,9 @@ original input for TIMER's duration."
"List of timer objects.
Populated by `tmr' and then operated on by `tmr-cancel'.")
+(defvar tmr--update-hook nil
+ "Hooks to execute when timers are changed.")
+
(defun tmr--active-timers ()
"Retun list of active timers."
(cl-remove-if
@@ -215,13 +218,14 @@ With optional NO-HOOKS refrain from calling
(cancel-timer (tmr--timer-timer-object timer))
(setq tmr--timers (delete timer tmr--timers))
(unless no-hooks
+ (run-hooks 'tmr--update-hook)
(run-hook-with-args 'tmr-timer-cancelled-functions timer))))
(defun tmr-remove-finished ()
"Remove all finished timers."
(interactive)
- ;; TODO call tabulated refresh
- (setq tmr--timers (cl-delete-if #'tmr--timer-donep tmr--timers)))
+ (setq tmr--timers (cl-delete-if #'tmr--timer-donep tmr--timers))
+ (run-hooks 'tmr--update-hook))
(defun tmr--read-timer (&optional active description)
"Let the user choose a timer among all timers.
@@ -308,6 +312,7 @@ If optional DEFAULT is provided use it as a default
candidate."
(defun tmr--complete (timer)
"Mark TIMER as completed and execute `tmr-timer-completed-functions'."
(setf (tmr--timer-donep timer) t)
+ (run-hooks 'tmr--update-hook)
(run-hook-with-args 'tmr-timer-completed-functions timer))
;;;###autoload
@@ -345,6 +350,7 @@ command `tmr-with-description' instead of this one."
#'tmr--complete timer)))
(setf (tmr--timer-timer-object timer) timer-object)
(push timer tmr--timers)
+ (run-hooks 'tmr--update-hook)
(run-hook-with-args 'tmr-timer-created-functions timer)))
;;;###autoload