emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Org Agenda Error
@ 2022-06-12 15:48 Michael Powe
  2022-06-12 17:46 ` Bhavin Gandhi
  0 siblings, 1 reply; 19+ messages in thread
From: Michael Powe @ 2022-06-12 15:48 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 927 bytes --]

Hello,

Not sure if this qualifies as a bug.

This occurred when discarding an agenda item that was more than 60 days 
overdue. (The repeater is 6 days.) I imagine most people take better 
care of their agenda. ;-)

TODO state changed to DISCARDED
TODO state changed to TODO
[MP] Error in post-command-hook (org-add-log-note): (error "Can’t expand 
minibuffer to full frame")
[MP] 10 repeater intervals were not enough to shift date past today.  
Continue? (y or n) y
Entry repeats: SCHEDULED: <2022-06-16 Thu ++6d>

The two items I initialed travel together. I got this message several times.

* Org mode version 9.5.4 (release_9.5.4-535-ged6f8d.dirty @ 
c:/Users/micha/AppData/Roaming/.emacs.d/org-new/org-mode/lisp/)

* GNU Emacs 29.0.50 (build 2, x86_64-w64-mingw32) of 2022-06-09

Thanks.

mp

-- 
"Do not neglect to do good, and to share what you have." - Hebrews 13:16a
Michael Powe
Naugatuck CT USA
powem@ctpowe.net

[-- Attachment #2: Type: text/html, Size: 1437 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Org Agenda Error
  2022-06-12 15:48 Org Agenda Error Michael Powe
@ 2022-06-12 17:46 ` Bhavin Gandhi
  2022-06-13  3:29   ` Michael Powe
  2022-06-13 17:31   ` Bhavin Gandhi
  0 siblings, 2 replies; 19+ messages in thread
From: Bhavin Gandhi @ 2022-06-12 17:46 UTC (permalink / raw)
  To: Michael Powe; +Cc: emacs-orgmode

Hello Michael

On Sun, 12 Jun 2022 at 21:20, Michael Powe <powem@ctpowe.net> wrote:
> [MP] Error in post-command-hook (org-add-log-note): (error "Can’t expand minibuffer to full frame")
> [MP] 10 repeater intervals were not enough to shift date past today.  Continue? (y or n) y

I have been seeing these with my repeating tasks recently, and took this
bug report as an opportunity to see if I can reproduce it with emacs -Q.

1. emacs -Q
2. Create test.org with following content

* TODO Repeating entry
SCHEDULED: <2022-05-01 Mon ++2d>

3. C-c C-t on the entry, shows the above error. And shifts the scheduled
   date correctly.

This happens on the Org mode version bundled with Emacs 28.1
i.e. release_9.5.2-25-gaf6f12.
And with latest main: release_9.5.4-544-gae168d

--
Bhavin Gandhi (bhavin192) | https://geeksocket.in


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Org Agenda Error
  2022-06-12 17:46 ` Bhavin Gandhi
@ 2022-06-13  3:29   ` Michael Powe
  2022-06-13 17:31   ` Bhavin Gandhi
  1 sibling, 0 replies; 19+ messages in thread
From: Michael Powe @ 2022-06-13  3:29 UTC (permalink / raw)
  To: Bhavin Gandhi; +Cc: emacs-orgmode

hello,

Thank you for the followup. Yes, I should have mentioned that the date 
is correctly updated following the error. Very odd, considering the text 
of the error message.

Thanks.

mp

On 6/12/2022 13:46, Bhavin Gandhi wrote:
> Hello Michael
>
> On Sun, 12 Jun 2022 at 21:20, Michael Powe <powem@ctpowe.net> wrote:
>> [MP] Error in post-command-hook (org-add-log-note): (error "Can’t expand minibuffer to full frame")
>> [MP] 10 repeater intervals were not enough to shift date past today.  Continue? (y or n) y
> I have been seeing these with my repeating tasks recently, and took this
> bug report as an opportunity to see if I can reproduce it with emacs -Q.
>
> 1. emacs -Q
> 2. Create test.org with following content
>
> * TODO Repeating entry
> SCHEDULED: <2022-05-01 Mon ++2d>
>
> 3. C-c C-t on the entry, shows the above error. And shifts the scheduled
>     date correctly.
>
> This happens on the Org mode version bundled with Emacs 28.1
> i.e. release_9.5.2-25-gaf6f12.
> And with latest main: release_9.5.4-544-gae168d
>
> --
> Bhavin Gandhi (bhavin192) | https://geeksocket.in

-- 
"Do not neglect to do good, and to share what you have." - Hebrews 13:16a
Michael Powe
Naugatuck CT USA
powem@ctpowe.net



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: Org Agenda Error
  2022-06-12 17:46 ` Bhavin Gandhi
  2022-06-13  3:29   ` Michael Powe
@ 2022-06-13 17:31   ` Bhavin Gandhi
  2022-06-18 18:00     ` [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note Bhavin Gandhi
  1 sibling, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-06-13 17:31 UTC (permalink / raw)
  To: Michael Powe; +Cc: emacs-orgmode

On Sun, 12 Jun 2022 at 23:16, Bhavin Gandhi <bhavin7392@gmail.com> wrote:
> 1. emacs -Q
> 2. Create test.org with following content
>
> * TODO Repeating entry
> SCHEDULED: <2022-05-01 Mon ++2d>
>
> 3. C-c C-t on the entry, shows the above error. And shifts the scheduled
>    date correctly.

When this error appears, the log note entry about state change is not
added. I found this issue for the first time when I saw the state
change log notes were missing.

If I do C-c C-t again on the same entry, we get the note.
- State "DONE"       from "TODO"       [2022-06-13 Mon 22:48]

This is missing when we hit the error mentioned in the first mail.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-06-13 17:31   ` Bhavin Gandhi
@ 2022-06-18 18:00     ` Bhavin Gandhi
  2022-07-01  2:14       ` Ihor Radchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-06-18 18:00 UTC (permalink / raw)
  To: Michael Powe; +Cc: emacs-orgmode

On Mon, 13 Jun 2022 at 23:01, Bhavin Gandhi <bhavin7392@gmail.com> wrote:
> > 1. emacs -Q
> > 2. Create test.org with following content
> >
> > * TODO Repeating entry
> > SCHEDULED: <2022-05-01 Mon ++2d>
> >
> > 3. C-c C-t on the entry, shows the above error. And shifts the scheduled
> >    date correctly.
>
> When this error appears, the log note entry about state change is not
> added. I found this issue for the first time when I saw the state
> change log notes were missing.
>
> If I do C-c C-t again on the same entry, we get the note.
> - State "DONE"       from "TODO"       [2022-06-13 Mon 22:48]
>
> This is missing when we hit the error mentioned in the first mail.

Confirmed.
Trying to change the subject for Woof! for the first time, I hope I get
it right.

I remember reading this code around a year back, where we were fixing
two bugs.
1. Bug: Duplicate logbook entry for repeated tasks:
   https://list.orgmode.org/orgmode/CAOn=hbcaW1R6vtun-E2r4LS=j3dp=VjqmjGtzy8UC1SyPArKbA@mail.gmail.com/
2. Bug: org-agenda-undo does not work with repeated tasks [9.4]:
   https://list.orgmode.org/87v98a8mes.fsf@gnu.org/

Currently, when we call `org-auto-repeat-maybe', it adds
`org-add-log-note' to post-command-hook using `org-add-log-setup'. As
soon as we reach the question about 10 repeater intervals (the call to
`y-or-n-p' from `org-auto-repeat-maybe'), the post-command-hook gets
executed.[1]

So, we end up calling `delete-other-windows' while we are waiting for
the user to respond with y/n. And this causes error "Can’t expand
minibuffer to full frame".

I don't know how to fix this issue yet, but I'm planning to add a test
case for completing repeating tasks which need 10+ repeating intervals
to shift the date.

Maybe this is off-topic:
I'm not sure why [1] happens, my assumption was Emacs will wait till all
the functions finish executing, and then run the post-command-hooks.
this-command remains org-todo (C-c C-t) throughout all the other calls
done by org-todo as long as they are not commands
i.e. org-auto-repeat-maybe etc. So, I tried following snippet:

(defun my-test-command ()
  (interactive)
  (message "my-test-command: setting post-command-hook")
  (add-hook 'post-command-hook 'my-own-hook)
  (y-or-n-p "Some question: ")
  (message "my-test-command: message after setting the hook")
)
(defun my-own-hook ()
  (remove-hook 'post-command-hook 'my-own-hook)
  (message "my-own-hook: hopefully executing at the end")
)

In this case as well, as soon as it calls y-or-n-p, I can see
"my-own-hook: hopefully executing at the end" in the minibuffer (while
it is still waiting for user input). Is it expected? I read (info
"(elisp)Command Overview") but couldn't understand this behavior.

-- 
Bhavin Gandhi (bhavin192) | https://geeksocket.in


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-06-18 18:00     ` [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note Bhavin Gandhi
@ 2022-07-01  2:14       ` Ihor Radchenko
  2022-07-03 17:10         ` Bhavin Gandhi
  0 siblings, 1 reply; 19+ messages in thread
From: Ihor Radchenko @ 2022-07-01  2:14 UTC (permalink / raw)
  To: Bhavin Gandhi; +Cc: Michael Powe, emacs-orgmode

Bhavin Gandhi <bhavin7392@gmail.com> writes:

> Currently, when we call `org-auto-repeat-maybe', it adds
> `org-add-log-note' to post-command-hook using `org-add-log-setup'. As
> soon as we reach the question about 10 repeater intervals (the call to
> `y-or-n-p' from `org-auto-repeat-maybe'), the post-command-hook gets
> executed.[1]

Bhavin, did you have a chance to send a bug report on this to Emacs
devs?

Best,
Ihor


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-01  2:14       ` Ihor Radchenko
@ 2022-07-03 17:10         ` Bhavin Gandhi
  2022-07-04 12:03           ` Ihor Radchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-07-03 17:10 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

On Fri, 1 Jul 2022 at 07:43, Ihor Radchenko <yantar92@gmail.com> wrote:
> > Currently, when we call `org-auto-repeat-maybe', it adds
> > `org-add-log-note' to post-command-hook using `org-add-log-setup'. As
> > soon as we reach the question about 10 repeater intervals (the call to
> > `y-or-n-p' from `org-auto-repeat-maybe'), the post-command-hook gets
> > executed.[1]
>
> Bhavin, did you have a chance to send a bug report on this to Emacs
> devs?

Haven't done that yet. But it seems like we will have to find a fix to make
sure `delete-other-windows' is not called for the minibuffer.

My modified example:

(defvar my-hook-counter)
(defun my-test-command ()
  (interactive)
  (message "my-test-command: setting post-command-hook")
  (setq my-hook-counter 3)
  (add-hook 'post-command-hook 'my-own-hook)
  (y-or-n-p "Some question: ")
  (message "my-test-command: message after setting the hook")
)
(defun my-own-hook ()
  (print (format "hook: this: %s, real: %s, last: %s" this-command
real-this-command last-command))
  (message "my-own-hook: hopefully executing at the end")
  (setq my-hook-counter (- my-hook-counter 1))
  (if (eq my-hook-counter 0)
      (remove-hook 'post-command-hook 'my-own-hook))
)

While looking at the *Messages* buffer, I came across the command
y-or-n-p-insert-y. There are commands for n, and other keys. When we
press y, M-p etc, these commands get executed. So, even if we manage to
fix the initial example in Emacs, the hook will still run while one is
in the minibuffer.

--
Bhavin Gandhi (bhavin192) | https://geeksocket.in


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-03 17:10         ` Bhavin Gandhi
@ 2022-07-04 12:03           ` Ihor Radchenko
  2022-07-10 17:23             ` Bhavin Gandhi
  0 siblings, 1 reply; 19+ messages in thread
From: Ihor Radchenko @ 2022-07-04 12:03 UTC (permalink / raw)
  To: Bhavin Gandhi; +Cc: emacs-orgmode

Bhavin Gandhi <bhavin7392@gmail.com> writes:

> While looking at the *Messages* buffer, I came across the command
> y-or-n-p-insert-y. There are commands for n, and other keys. When we
> press y, M-p etc, these commands get executed. So, even if we manage to
> fix the initial example in Emacs, the hook will still run while one is
> in the minibuffer.

This explains the observed behavior.

A possible fix could be let-binding post-command-hook to
(delq #'org-add-log-note post-command-hook), though we may get a similar
issue in other context in future.

A better fix may relate to the fact that org-add-log-setup is usually
used to run org-add-log-note at the end of current command. y-or-n-p or
any other kind of command (e.g. added via advice) will break this
assumption we use. So, org-add-log-setup could also store
`this-command', say, in `org-log-note-this-command' and
`org-add-log-note' can then execute only when `this-command' is the same
with `org-log-note-this-command'. WDYT?

Best,
Ihor



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-04 12:03           ` Ihor Radchenko
@ 2022-07-10 17:23             ` Bhavin Gandhi
  2022-07-11  1:57               ` Ihor Radchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-07-10 17:23 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

On Mon, 4 Jul 2022 at 17:32, Ihor Radchenko <yantar92@gmail.com> wrote:
> > While looking at the *Messages* buffer, I came across the command
> > y-or-n-p-insert-y. There are commands for n, and other keys. When we
> > press y, M-p etc, these commands get executed. So, even if we manage to
> > fix the initial example in Emacs, the hook will still run while one is
> > in the minibuffer.
>
> This explains the observed behavior.

Apart from these commands triggering the post-command-hook, there is one
additional time it gets executed. This is the place when y-or-n-p calls
read-from-minibuffer. When read-from-minibuffer executes, this-command
remains my-test-command.

> A possible fix could be let-binding post-command-hook to
> (delq #'org-add-log-note post-command-hook), though we may get a similar
> issue in other context in future.
>
> A better fix may relate to the fact that org-add-log-setup is usually
> used to run org-add-log-note at the end of current command. y-or-n-p or
> any other kind of command (e.g. added via advice) will break this
> assumption we use. So, org-add-log-setup could also store
> `this-command', say, in `org-log-note-this-command' and
> `org-add-log-note' can then execute only when `this-command' is the same
> with `org-log-note-this-command'. WDYT?

I had something similar in my mind, something like we check if
this-command is org-* (not very robust). Your idea makes sense to
me. But this won't work when read-from-minibuffer is called as it
doesn't seem to change this-command when it runs.

I had created an Emacs bug report: https://debbugs.gnu.org/56425

-- 
Bhavin Gandhi (bhavin192) | https://geeksocket.in


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-10 17:23             ` Bhavin Gandhi
@ 2022-07-11  1:57               ` Ihor Radchenko
  2022-07-14 15:22                 ` Bhavin Gandhi
  0 siblings, 1 reply; 19+ messages in thread
From: Ihor Radchenko @ 2022-07-11  1:57 UTC (permalink / raw)
  To: Bhavin Gandhi; +Cc: emacs-orgmode

Bhavin Gandhi <bhavin7392@gmail.com> writes:

>> A better fix may relate to the fact that org-add-log-setup is usually
>> used to run org-add-log-note at the end of current command. y-or-n-p or
>> any other kind of command (e.g. added via advice) will break this
>> assumption we use. So, org-add-log-setup could also store
>> `this-command', say, in `org-log-note-this-command' and
>> `org-add-log-note' can then execute only when `this-command' is the same
>> with `org-log-note-this-command'. WDYT?
>
> I had something similar in my mind, something like we check if
> this-command is org-* (not very robust). Your idea makes sense to
> me. But this won't work when read-from-minibuffer is called as it
> doesn't seem to change this-command when it runs.

Then, we will also need to save (recursion-depth) value and check for it
in addition to this-command.

Best,
Ihor


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-11  1:57               ` Ihor Radchenko
@ 2022-07-14 15:22                 ` Bhavin Gandhi
  2022-07-16  9:21                   ` Ihor Radchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-07-14 15:22 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

On Mon, 11 Jul 2022 at 07:26, Ihor Radchenko <yantar92@gmail.com> wrote:
>
> Bhavin Gandhi <bhavin7392@gmail.com> writes:
>
> >> A better fix may relate to the fact that org-add-log-setup is usually
> >> used to run org-add-log-note at the end of current command. y-or-n-p or
> >> any other kind of command (e.g. added via advice) will break this
> >> assumption we use. So, org-add-log-setup could also store
> >> `this-command', say, in `org-log-note-this-command' and
> >> `org-add-log-note' can then execute only when `this-command' is the same
> >> with `org-log-note-this-command'. WDYT?
> >
> > I had something similar in my mind, something like we check if
> > this-command is org-* (not very robust). Your idea makes sense to
> > me. But this won't work when read-from-minibuffer is called as it
> > doesn't seem to change this-command when it runs.
>
> Then, we will also need to save (recursion-depth) value and check for it
> in addition to this-command.

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

Seems like soon I will cross the TINYCHANGE limit, so I will get the
FSF copyright assignment done.

-- 
Bhavin Gandhi (bhavin192) | https://geeksocket.in


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-14 15:22                 ` Bhavin Gandhi
@ 2022-07-16  9:21                   ` Ihor Radchenko
  2022-07-21 18:03                     ` Bhavin Gandhi
  0 siblings, 1 reply; 19+ messages in thread
From: Ihor Radchenko @ 2022-07-16  9:21 UTC (permalink / raw)
  To: Bhavin Gandhi; +Cc: emacs-orgmode

Bhavin Gandhi <bhavin7392@gmail.com> writes:

> 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.

Best,
Ihor


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-16  9:21                   ` Ihor Radchenko
@ 2022-07-21 18:03                     ` Bhavin Gandhi
  2022-07-26 11:49                       ` Ihor Radchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-07-21 18:03 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1752 bytes --]

On Sat, 16 Jul 2022 at 14:50, Ihor Radchenko <yantar92@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.

[-- Attachment #2: org-add-log-note-minibuffer.diff --]
[-- Type: text/x-patch, Size: 1433 bytes --]

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 ()

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-21 18:03                     ` Bhavin Gandhi
@ 2022-07-26 11:49                       ` Ihor Radchenko
  2022-08-16 18:17                         ` Bhavin Gandhi
  0 siblings, 1 reply; 19+ messages in thread
From: Ihor Radchenko @ 2022-07-26 11:49 UTC (permalink / raw)
  To: Bhavin Gandhi; +Cc: emacs-orgmode

Bhavin Gandhi <bhavin7392@gmail.com> writes:

>> 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'.

Yikes! Then, can also check for window-minibuffer-p, but I feel that it
will be a fight against all kinds of edge cases.

> 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.

what about

(when (or (and (equal org-log-note-this-command this-command)
               (= org-log-note-recursion-depth (recursion-depth)))
           (> org-log-note-recursion-depth (recursion-depth)))

Best,
Ihor


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-07-26 11:49                       ` Ihor Radchenko
@ 2022-08-16 18:17                         ` Bhavin Gandhi
  2022-08-17  9:45                           ` Ihor Radchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-08-16 18:17 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

On Thu, 21 Jul 2022 at 23:33, Bhavin Gandhi <bhavin7392@gmail.com> wrote:
>
> On Sat, 16 Jul 2022 at 14:50, Ihor Radchenko <yantar92@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.

I finally got this done. I now have a fully executed copy of the copyright
assignment (signed by FSF and me). Do I need to send it to someone so
that they can check and update the page at
https://orgmode.org/worg/contributors.html ?


On Tue, 26 Jul 2022 at 17:18, Ihor Radchenko <yantar92@gmail.com> wrote:
> >
> > 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'.
>
> Yikes! Then, can also check for window-minibuffer-p, but I feel that it
> will be a fight against all kinds of edge cases.

I haven't been able to make much progress on this bug in the last two
weeks. Will try to send a patch in a few days, as the steps I gave above
feels like an edge case which we won't see happening hopefully.

-- 
Bhavin Gandhi (bhavin192) | https://geeksocket.in


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-08-16 18:17                         ` Bhavin Gandhi
@ 2022-08-17  9:45                           ` Ihor Radchenko
  2022-09-01  9:48                             ` Bastien Guerry
  2022-09-25 18:16                             ` Bhavin Gandhi
  0 siblings, 2 replies; 19+ messages in thread
From: Ihor Radchenko @ 2022-08-17  9:45 UTC (permalink / raw)
  To: Bhavin Gandhi, Bastien; +Cc: emacs-orgmode

Bhavin Gandhi <bhavin7392@gmail.com> writes:

>> 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.
>
> I finally got this done. I now have a fully executed copy of the copyright
> assignment (signed by FSF and me). Do I need to send it to someone so
> that they can check and update the page at
> https://orgmode.org/worg/contributors.html ?

You do not need to share the paperwork with us. FSF has a database
available to GNU maintainers with a list of all the people with
copyright assignment.

I am CCing Bastien.
Bastien, can you please confirm that Bhavin's paperwork is registered
and add him to the contributor list?

>> Yikes! Then, can also check for window-minibuffer-p, but I feel that it
>> will be a fight against all kinds of edge cases.
>
> I haven't been able to make much progress on this bug in the last two
> weeks. Will try to send a patch in a few days, as the steps I gave above
> feels like an edge case which we won't see happening hopefully.

Your patch will be already an improvement.

I guess that the proper fix of this type of issues would be rewriting
the note system in such a way that it uses recursive editing. Then, we
can make the user write the note in the middle of a running command and
not worry about post-command-hook quirks. But that will be a much more
involved change.

-- 
Ihor Radchenko,
Org mode contributor,
Learn more about Org mode at https://orgmode.org/.
Support Org development at https://liberapay.com/org-mode,
or support my work at https://liberapay.com/yantar92


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-08-17  9:45                           ` Ihor Radchenko
@ 2022-09-01  9:48                             ` Bastien Guerry
  2022-09-25 18:16                             ` Bhavin Gandhi
  1 sibling, 0 replies; 19+ messages in thread
From: Bastien Guerry @ 2022-09-01  9:48 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Bhavin Gandhi, emacs-orgmode

Hi,

sorry for the late answer.

Ihor Radchenko <yantar92@gmail.com> writes:

> You do not need to share the paperwork with us. FSF has a database
> available to GNU maintainers with a list of all the people with
> copyright assignment.
>
> I am CCing Bastien.
> Bastien, can you please confirm that Bhavin's paperwork is
> registered

Yes he is.

> and add him to the contributor list?

Done.  Thanks Bhavin for contributing!

-- 
 Bastien


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-08-17  9:45                           ` Ihor Radchenko
  2022-09-01  9:48                             ` Bastien Guerry
@ 2022-09-25 18:16                             ` Bhavin Gandhi
  2022-09-26 12:46                               ` Ihor Radchenko
  1 sibling, 1 reply; 19+ messages in thread
From: Bhavin Gandhi @ 2022-09-25 18:16 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode, powem

[-- Attachment #1: Type: text/plain, Size: 905 bytes --]

On Wed, 17 Aug 2022 at 15:14, Ihor Radchenko <yantar92@gmail.com> wrote:
> >> Yikes! Then, can also check for window-minibuffer-p, but I feel that it
> >> will be a fight against all kinds of edge cases.
> >
> > I haven't been able to make much progress on this bug in the last two
> > weeks. Will try to send a patch in a few days, as the steps I gave above
> > feels like an edge case which we won't see happening hopefully.
>
> Your patch will be already an improvement.

I'm attaching the patch for the current approach we discussed in this
thread. I have tried basic operations like taking note on state change,
and have tried with recurring entries which need more than 10 cycles to
be marked as done (original bug report).

As I was changing the indentation of code from org-add-log-note, I converted
some tabs to spaces, is it okay to do so?

-- 
Bhavin Gandhi (bhavin192) | https://geeksocket.in

[-- Attachment #2: 0001-org.el-Make-sure-org-add-log-note-runs-at-the-end-of.patch --]
[-- Type: text/x-patch, Size: 5136 bytes --]

From afb1158d9a360020f093436228cdf4e689474db8 Mon Sep 17 00:00:00 2001
From: Bhavin Gandhi <bhavin192@geeksocket.in>
Date: Sun, 25 Sep 2022 22:06:53 +0530
Subject: [PATCH] org.el: Make sure `org-add-log-note' runs at the end of Org
 command
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* lisp/org.el (org-add-log-setup): Save `this-command' and
`recursion-depth' before adding the `org-add-log-note'to
post-command-hook.
(org-add-log-note): Execute only if the current `(recursion-depth)'
and `this-command' are same as the ones we saved during the log-setup.

This change tries to make sure that we run the `org-add-log-note' only
after the current Org command has finished executing. Previously, the
post-command-hook was getting triggered if the Org command in turn
runs some other command.

Fixes the bug originally reported by Michael Powe.

Bhavin Gandhi. [BUG] org-auto-repeat-maybe: error "Can’t expand
minibuffer to full frame" and missing log note.
Sat, 18 Jun 2022 23:30:50 +0530.
https://list.orgmode.org/CAOn=hbcsOCO++We0XgRHFoxxCEXROCpyGd1nCjzKYy-9LckQZg@mail.gmail.com/

Relevant discussion on bug-gnu-emacs: https://debbugs.gnu.org/56425
---
 lisp/org.el | 64 ++++++++++++++++++++++++++++-------------------------
 1 file changed, 34 insertions(+), 30 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index b63aaed4f..ba20df59f 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -10355,6 +10355,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))
 
@@ -10383,37 +10385,39 @@ 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."
-  (remove-hook 'post-command-hook 'org-add-log-note)
-  (setq org-log-setup nil)
-  (setq org-log-note-window-configuration (current-window-configuration))
-  (delete-other-windows)
-  (move-marker org-log-note-return-to (point))
-  (pop-to-buffer-same-window (marker-buffer org-log-note-marker))
-  (goto-char org-log-note-marker)
-  (org-switch-to-buffer-other-window "*Org Note*")
-  (erase-buffer)
-  (if (memq org-log-note-how '(time state))
-      (org-store-log-note)
-    (let ((org-inhibit-startup t)) (org-mode))
-    (insert (format "# Insert note for %s.
+  (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))
+    (delete-other-windows)
+    (move-marker org-log-note-return-to (point))
+    (pop-to-buffer-same-window (marker-buffer org-log-note-marker))
+    (goto-char org-log-note-marker)
+    (org-switch-to-buffer-other-window "*Org Note*")
+    (erase-buffer)
+    (if (memq org-log-note-how '(time state))
+        (org-store-log-note)
+      (let ((org-inhibit-startup t)) (org-mode))
+      (insert (format "# Insert note for %s.
 # Finish with C-c C-c, or cancel with C-c C-k.\n\n"
-		    (cl-case org-log-note-purpose
-		      (clock-out "stopped clock")
-		      (done  "closed todo item")
-		      (reschedule "rescheduling")
-		      (delschedule "no longer scheduled")
-		      (redeadline "changing deadline")
-		      (deldeadline "removing deadline")
-		      (refile "refiling")
-		      (note "this entry")
-		      (state
-		       (format "state change from \"%s\" to \"%s\""
-			       (or org-log-note-previous-state "")
-			       (or org-log-note-state "")))
-		      (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)))
+                      (cl-case org-log-note-purpose
+                        (clock-out "stopped clock")
+                        (done  "closed todo item")
+                        (reschedule "rescheduling")
+                        (delschedule "no longer scheduled")
+                        (redeadline "changing deadline")
+                        (deldeadline "removing deadline")
+                        (refile "refiling")
+                        (note "this entry")
+                        (state
+                         (format "state change from \"%s\" to \"%s\""
+                                 (or org-log-note-previous-state "")
+                                 (or org-log-note-state "")))
+                        (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))))
 
 (defvar org-note-abort nil) ; dynamically scoped
 (defun org-store-log-note ()
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note
  2022-09-25 18:16                             ` Bhavin Gandhi
@ 2022-09-26 12:46                               ` Ihor Radchenko
  0 siblings, 0 replies; 19+ messages in thread
From: Ihor Radchenko @ 2022-09-26 12:46 UTC (permalink / raw)
  To: Bhavin Gandhi; +Cc: emacs-orgmode, powem

Bhavin Gandhi <bhavin7392@gmail.com> writes:

> I'm attaching the patch for the current approach we discussed in this
> thread. I have tried basic operations like taking note on state change,
> and have tried with recurring entries which need more than 10 cycles to
> be marked as done (original bug report).
>
> As I was changing the indentation of code from org-add-log-note, I converted
> some tabs to spaces, is it okay to do so?

Thanks! Should be fine I think. We have a mess with spaces and tabs in
some places.

Applied onto main with amendments.
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=2e012db31a8dbae0f859b8fbfc899aeed3e34244

I have changed the commit message to `quote' lisp symbols and have
double space "  " between sentences.

I also added defvars for the new variables to pacify the compiler and
changed the commit message accordingly.

Applied
Fixed

-- 
Ihor Radchenko,
Org mode contributor,
Learn more about Org mode at https://orgmode.org/.
Support Org development at https://liberapay.com/org-mode,
or support my work at https://liberapay.com/yantar92


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2022-09-26 12:47 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-12 15:48 Org Agenda Error Michael Powe
2022-06-12 17:46 ` Bhavin Gandhi
2022-06-13  3:29   ` Michael Powe
2022-06-13 17:31   ` Bhavin Gandhi
2022-06-18 18:00     ` [BUG] org-auto-repeat-maybe: error "Can’t expand minibuffer to full frame" and missing log note Bhavin Gandhi
2022-07-01  2:14       ` Ihor Radchenko
2022-07-03 17:10         ` Bhavin Gandhi
2022-07-04 12:03           ` Ihor Radchenko
2022-07-10 17:23             ` Bhavin Gandhi
2022-07-11  1:57               ` Ihor Radchenko
2022-07-14 15:22                 ` Bhavin Gandhi
2022-07-16  9:21                   ` Ihor Radchenko
2022-07-21 18:03                     ` Bhavin Gandhi
2022-07-26 11:49                       ` Ihor Radchenko
2022-08-16 18:17                         ` Bhavin Gandhi
2022-08-17  9:45                           ` Ihor Radchenko
2022-09-01  9:48                             ` Bastien Guerry
2022-09-25 18:16                             ` Bhavin Gandhi
2022-09-26 12:46                               ` Ihor Radchenko

Code repositories for project(s) associated with this public 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).