From: Ihor Radchenko <yantar92@gmail.com> To: Bhavin Gandhi <bhavin7392@gmail.com> Cc: emacs-orgmode@gnu.org, Gustavo Barros <gusbrs.2016@gmail.com> Subject: Re: [PATCH] Re: Bug: Duplicate logbook entry for repeated tasks [9.4.6 (9.4.6-gab9f2a @ /home/gustavo/.emacs.d/elpa/org-9.4.6/)] Date: Sun, 11 Jul 2021 13:40:26 +0800 [thread overview] Message-ID: <871r85wgqd.fsf@localhost> (raw) In-Reply-To: <874kd1wsc6.fsf@localhost> [-- Attachment #1: Type: text/plain, Size: 43 bytes --] Updating the patch with relevant new test [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-Fix-duplicate-logbook-entry-for-repeated-tasks.patch --] [-- Type: text/x-diff, Size: 3356 bytes --] From 5b89c95318a38df9f0a6706b6eb5320baafbd4d8 Mon Sep 17 00:00:00 2001 Message-Id: <5b89c95318a38df9f0a6706b6eb5320baafbd4d8.1625981997.git.yantar92@gmail.com> From: Ihor Radchenko <yantar92@gmail.com> Date: Sat, 10 Jul 2021 21:43:44 +0800 Subject: [PATCH] Fix duplicate logbook entry for repeated tasks * lisp/org.el (org-add-log-setup): Always run `org-add-log-note' via `post-command-hook'. Otherwise, there is no way to know if a note was requested for `this-command'. Running `org-add-log-note' directly would, for example, break `org-auto-repeat-maybe' as reported in [1]. * lisp/org-agenda.el (org-agenda-todo): Avoid reintroducing the bug fixed in c670379adf. * testing/lisp/test-org.el: Add test checking the reported bug. [1] https://orgmode.org/list/CAOn=hbcaW1R6vtun-E2r4LS=j3dp=VjqmjGtzy8UC1SyPArKbA@mail.gmail.com --- lisp/org-agenda.el | 6 +++++- lisp/org.el | 4 +--- testing/lisp/test-org.el | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 44acd035a..4cd527e5b 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -9433,7 +9433,11 @@ (defun org-agenda-todo (&optional arg) (goto-char pos) (org-show-context 'agenda) (let ((current-prefix-arg arg)) - (call-interactively 'org-todo)) + (call-interactively 'org-todo) + ;; Make sure that log is recorded in current undo. + (when (and org-log-setup + (not (eq org-log-note-how 'note))) + (org-add-log-note))) (and (bolp) (forward-char 1)) (setq newhead (org-get-heading)) (when (and org-agenda-headline-snapshot-before-repeat diff --git a/lisp/org.el b/lisp/org.el index ffcc5945d..3d15771a2 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -10939,9 +10939,7 @@ (defun org-add-log-setup (&optional purpose state prev-state how extra) org-log-note-extra extra org-log-note-effective-time (org-current-effective-time) org-log-setup t) - (if (eq how 'note) - (add-hook 'post-command-hook 'org-add-log-note 'append) - (org-add-log-note purpose))) + (add-hook 'post-command-hook 'org-add-log-note 'append)) (defun org-skip-over-state-notes () "Skip past the list of State notes in an entry." diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el index de3c6f3c9..0634ba608 100644 --- a/testing/lisp/test-org.el +++ b/testing/lisp/test-org.el @@ -7397,6 +7397,27 @@ (ert-deftest test-org/auto-repeat-maybe () CLOCK: [2012-03-29 Thu 10:00]--[2012-03-29 Thu 16:40] => 6:40" (org-todo "DONE") (buffer-string)))))) + ;; Make sure that logbook state change record does not get + ;; duplicated when `org-log-repeat' `org-log-done' are non-nil. + (should + (string-match-p + (rx "* TODO Read book +SCHEDULED: <2021-06-16 Wed +1d> +:PROPERTIES: +:LAST_REPEAT:" (1+ nonl) " +:END: +- State \"DONE\" from \"TODO\"" (1+ nonl) buffer-end) + (let ((org-log-repeat 'time) + (org-todo-keywords '((sequence "TODO" "|" "DONE(d!)"))) + (org-log-into-drawer nil)) + (org-test-with-temp-text + "* TODO Read book +SCHEDULED: <2021-06-15 Tue +1d>" + (org-todo "DONE") + (when (memq 'org-add-log-note post-command-hook) + (org-add-log-note)) + (buffer-string)))))) + \f ;;; Timestamps API -- 2.31.1
next prev parent reply other threads:[~2021-07-11 5:41 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-14 13:39 Gustavo Barros 2021-06-14 18:01 ` Bhavin Gandhi 2021-06-14 18:41 ` Gustavo Barros 2021-07-10 13:48 ` [PATCH] " Ihor Radchenko 2021-07-10 16:46 ` Gustavo Barros 2021-07-10 17:14 ` Bhavin Gandhi 2021-07-11 1:29 ` Ihor Radchenko 2021-07-11 5:40 ` Ihor Radchenko [this message] 2021-07-11 5:57 ` Ihor Radchenko 2021-07-12 17:50 ` Bhavin Gandhi 2021-07-13 2:55 ` [PATCH] " Carlo Tambuatco 2021-07-13 15:35 ` Alan Ristow 2021-07-13 18:08 ` Bhavin Gandhi 2021-07-17 13:51 ` Ihor Radchenko 2021-07-17 13:41 ` [PATCH] " Ihor Radchenko 2021-09-25 15:25 ` Bastien 2021-09-25 18:15 ` Gustavo Barros 2021-09-26 6:26 ` Bastien
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=871r85wgqd.fsf@localhost \ --to=yantar92@gmail.com \ --cc=bhavin7392@gmail.com \ --cc=emacs-orgmode@gnu.org \ --cc=gusbrs.2016@gmail.com \ --subject='Re: [PATCH] Re: Bug: Duplicate logbook entry for repeated tasks [9.4.6 (9.4.6-gab9f2a @ /home/gustavo/.emacs.d/elpa/org-9.4.6/)]' \ /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).