Raymond Zeitler <[email protected]> writes:

> Request:
> Add (org-agenda-check-type nil 'agenda) near the beginning of
> `org-agenda-todo' to prevent execution unless thing at point is an agenda
> item.  Optionally, add a custom variable (perhaps named
> `org-agenda-todo-allow-only-agenda-items' or something similar) with
> default value of nil such that if non-nil, the added (org-agenda-check-type
> nil 'agenda) statement is called.  This ensures that `org-agenda-todo'
> works the same way as before, unless the user changes the default value.

This is awkward.

> Reason:
> Prevents this scenario:  When a user marks a recurring task in the Tags
> List as Done, there is no indication that it happened.  The TODO state
> remains at Todo and the task remains on the list, even though the
> schedule/deadline date advanced.  The user might repeat the action, which
> will cause the schedule/deadline date to advance a second time.  The next
> schedule/deadline may be missed as a result.
>
> This is described in more detail on my blog:
> See:
> https://ray-on-emacs.blogspot.com/2026/07/the-problem-with-tags-lists.html

What about providing a visual feedback like in agenda view?
See the attached draft patch.

>From 4fa00689a4149fd44cca56fc676c6fee2e4a5930 Mon Sep 17 00:00:00 2001
Message-ID: <4fa00689a4149fd44cca56fc676c6fee2e4a5930.1785606557.git.yanta...@posteo.net>
From: Ihor Radchenko <[email protected]>
Date: Sat, 1 Aug 2026 19:47:38 +0200
Subject: [PATCH] org-agenda-todo: Add more visual feedback on repeating tasks

* lisp/org-agenda.el (org-agenda-todo): Show snapshot before repeat
not only in agenda view on today's task, but also in non-agenda views,
like tag views.

Link: https://orgmode.org/list/CAFGbN8Y=84MVWUszBNosWV0y-=cl5df9bw3l8d97spag8rp...@mail.gmail.com
---
 lisp/org-agenda.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 707444b8a..c7bc7fe14 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -9794,7 +9794,8 @@ (defun org-agenda-todo (&optional arg)
 	 (when (and org-agenda-headline-snapshot-before-repeat
 		    (not (equal org-agenda-headline-snapshot-before-repeat
 			      newhead))
-		    todayp)
+		    (or (not (org-agenda-check-type nil 'agenda))
+                        todayp))
 	   (setq newhead org-agenda-headline-snapshot-before-repeat
 		 just-one t))
 	 (save-excursion
-- 
2.54.0


-- 
Ihor Radchenko // yantar92,
Org mode maintainer,
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>

Reply via email to