From bb4c9e0836b039a496a033a002d97d7062bd8dc8 Mon Sep 17 00:00:00 2001 From: Ignacio Date: Thu, 17 Mar 2022 11:50:44 +0100 Subject: [PATCH] org-clock.el: resolve running clock after being idle only once * lisp/org-clock.el (org-resolve-clocks-if-idle): Cancel timer for `org-resolve-clocks-if-idle' while `org-clock-resolve' waits for the user to answer the prompt. After the user answered the prompt to resolve the running clock, the pending scheduled calls to `org-resolve-clocks-if-idle' (one for each minute it took the user to answer) were being executed immediately. But after an old change in Emacs, the user answer does not reset the idle timer anymore, so each of those calls thought that the user was still idle and prompted them again, to the user had to answer the same prompt again N times. This commit fixes that bug. TINYCHANGE --- lisp/org-clock.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 6f441c18e..83e6dd319 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -1231,7 +1231,9 @@ so long." (org-clock-user-idle-start (time-since org-clock-user-idle-seconds)) (org-clock-resolving-clocks-due-to-idleness t)) - (if (> org-clock-user-idle-seconds (* 60 org-clock-idle-time)) + (when (> org-clock-user-idle-seconds (* 60 org-clock-idle-time)) + (cancel-timer org-clock-idle-timer) + (setq org-clock-idle-timer nil) (org-clock-resolve (cons org-clock-marker org-clock-start-time) @@ -1240,7 +1242,10 @@ so long." (/ (float-time (time-since org-clock-user-idle-start)) 60))) - org-clock-user-idle-start))))) + org-clock-user-idle-start) + (when (and (org-clocking-p) (not org-clock-idle-timer)) + (setq org-clock-idle-timer + (run-with-timer 60 60 #'org-resolve-clocks-if-idle))))))) (defvar org-clock-current-task nil "Task currently clocked in.") (defvar org-clock-out-time nil) ; store the time of the last clock-out -- 2.25.1