Bhavin Gandhi <bhavin7...@gmail.com> writes: > I was trying to understand your change. So, when we call > `org-agenda-todo', it calls `org-todo' which adds the > post-command-hook. This hook is supposed to run when `org-agenda-todo' > finishes, but instead of that we call it directly. This makes sure that > the change is recorded in `buffer-undo-list'.
You are almost correct. To be able to use undo from agenda, we must have all the changes happen inside org-with-remote-undo body. Only then the changes are recorded into agenda's buffer `buffer-undo-list'. post-command-hook, if ran after `org-agenda-todo', will only record changes in the actual org buffer's `buffer-undo-list', but not inside the agenda's `buffer-undo-list'. > Sorry if that's too much to ask, but why don't we need something similar > when org-log-note-how is 'note? Can you please help me understand that? > I tried reading org-add-log-note and org-store-log-note, but I think I'm > missing something basic here. AFAIK, it is quite hard to do with current log note implementation. `org-add-log-note' itself does not record the note text. Instead, it only creates and pre-populates the note buffer and returns the control to the function calling `org-add-log-note'. Regardless where we call `org-add-log-note', the actual note text will only be added to the org buffer when the user presses C-c C-c in the note buffer. And the user input will only be possible after the current command (in our case `org-agenda-todo') finishes. Thus, user note will always be added outside `org-with-remote-undo' and cannot be recorded by agenda. IMHO, the proper way to handle this would be rewriting the log-note code using recursive editing. But that's not a trivial change and should be implemented in a separate patch. > Also, should this line from org.el (org-store-log-note) be removed? > > ;; Don't add undo information when called from `org-agenda-todo'. I think so. It appears to be irrelevant to current state of the code. Someone forgot to remove this comment in one of the past patches. But removing the comment should be a separate patch itself. Best, Ihor