From: Ignacio Casso <firstname.lastname@example.org> To: email@example.com Subject: [PATCH] Fix for bug that makes the user have to answer the prompt more than once for resolving running clock after being idle Date: Thu, 17 Mar 2022 12:22:43 +0100 [thread overview] Message-ID: <PAXPR06MB7760D9E94D6D25A51F73BDD0C6129@PAXPR06MB7760.eurprd06.prod.outlook.com> (raw) [-- Attachment #1: Type: text/plain, Size: 381 bytes --] Hello, I have fixed the bug reported in https://lists.gnu.org/archive/html/emacs-orgmode/2010-08/msg00188.html, https://lists.gnu.org/archive/html/emacs-orgmode/2019-02/msg00333.html, and https://lists.gnu.org/archive/html/emacs-orgmode/2022-03/msg00127.html. In the last of those threads (two emails) I explained in detail the bug and the reason it happens. Here is the patch: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Bug fix --] [-- Type: text/x-diff, Size: 2077 bytes --] From bb4c9e0836b039a496a033a002d97d7062bd8dc8 Mon Sep 17 00:00:00 2001 From: Ignacio <firstname.lastname@example.org> 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
reply other threads:[~2022-03-17 11:57 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=PAXPR06MB7760D9E94D6D25A51F73BDD0C6129@PAXPR06MB7760.eurprd06.prod.outlook.com \ --email@example.com \ --firstname.lastname@example.org \ --subject='Re: [PATCH] Fix for bug that makes the user have to answer the prompt more than once for resolving running clock after being idle' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).