On Sat, 16 Jul 2022 at 14:50, Ihor Radchenko <yanta...@gmail.com> wrote:
> > Seems like soon I will cross the TINYCHANGE limit, so I will get the
> > FSF copyright assignment done.
>
> Note that FSF should reply within 5 working days. If not, we can help
> you to push them.

Thanks! I received the PDF to sign the next day after my email, this
will probably take a couple of days more from my side as I'm talking
with my employer.

> Thanks for the idea, I'm exploring (recursion-depth),
> (minibuffer-depth). I will come up with a patch to fix this bug.

So, I saved this-command and (recursion-depth) value, and I'm checking
for it in the org-add-log-note (attaching diff of my changes). But this
doesn't guarantee that we are not in the minibuffer when the
post-command-hook runs.

This is what I did, and it failed after answering the question about 10
repeated intervals:
1. M-: (y-or-n-p "Some question")
2. Now I switched to Org mode buffer.
3. Did C-c C-t on the entry.

When org-log-add-setup runs, (recursion-depth) is 1, and
(minibuffer-depth) is also 1.
Now, the question about 10 repeated intervals is asked, once I answer
it, post-command-hook runs. And it runs while we are in the minibuffer
waiting for 'Some question'.

So, I changed the second condition to (= (minibuffer-depth) 0).
This has a different effect when org-todo finishes the execution and we
are still in minibuffer:
this-command won't be org-todo again unless it is invoked again by the
user. org-add-log-note post-command-hook is never removed, and it keeps
executing as the condition is not fulfilled.

I'm going through the code of org-add-log-note to see if we can avoid
calling (delete-other-windows) in the minibuffer. Or move out of minibuffer
and then proceed.
diff --git a/lisp/org.el b/lisp/org.el
index 3d4de5b4f..978850199 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -10146,6 +10146,8 @@ EXTRA is additional text that will be inserted into the notes buffer."
 	org-log-note-how how
 	org-log-note-extra extra
 	org-log-note-effective-time (org-current-effective-time)
+        org-log-note-this-command this-command
+        org-log-note-recursion-depth (recursion-depth)
         org-log-setup t)
   (add-hook 'post-command-hook 'org-add-log-note 'append))
 
@@ -10174,6 +10176,8 @@ EXTRA is additional text that will be inserted into the notes buffer."
 
 (defun org-add-log-note (&optional _purpose)
   "Pop up a window for taking a note, and add this note later."
+  (when (and (equal org-log-note-this-command this-command)
+             (= org-log-note-recursion-depth (recursion-depth)))
   (remove-hook 'post-command-hook 'org-add-log-note)
   (setq org-log-setup nil)
   (setq org-log-note-window-configuration (current-window-configuration))
@@ -10204,7 +10208,7 @@ EXTRA is additional text that will be inserted into the notes buffer."
 		      (t (error "This should not happen")))))
     (when org-log-note-extra (insert org-log-note-extra))
     (setq-local org-finish-function 'org-store-log-note)
-    (run-hooks 'org-log-buffer-setup-hook)))
+    (run-hooks 'org-log-buffer-setup-hook))))
 
 (defvar org-note-abort nil) ; dynamically scoped
 (defun org-store-log-note ()

Reply via email to