Most of my tasks are tagged with dates (@Today, @Monday, @Tuesday… @February … @Year 2027 …). Only the many repetitive little tasks are given a defer date, and only very important tasks with consequences if not completed are given a due date.
In my Today perspective, the corresponding tasks are displayed as a list. I then flag the tasks I want to complete, and these are displayed grouped accordingly. If I mark a flagged recurring task with a defer date as completed, the flagged task disappears from the perspective and I have to search for the task in Omnifocus to remove the flag. If I remove the flag before checking it off, the task immediately slips down into the group of unflagged tasks and I then have to search for it there to mark it as completed. It’s annoying. Does anyone have any idea how to remove the flag at the same time as checking off the task?
The method I can think of is to try writing a batch script using AppleScript that, when triggered, removes the flag and marks the task as “completed.” Have you tried anything similar?
I will invert your problem. Perhaps consider why you need to remove the flag from a completed task. Without that step, your troubles stop when you mark the task as completed.
Otherwise, I wonder if a properly designed Perspective (flagged + deferred + completed + …) could find the task.
EDIT: Perhaps the reason to unflag is that you do not want the flag to propagate to the next reoccurrence of the repeating task when you subsequently mark that task as complete. If so, as noted above, an AppleScript could carry out the proper sequence (unflag first and then mark complete).
If I understand this correctly, it is the old task vs. template problem. When you have a repeating task, you are not working with a single task; you are working with a template (or “factory” or “class of”) all task iterations, current and future. The head task is not split off until you complete the task. Until then, all you have is the template, not the task, and any changes you make to the template will apply to all future tasks.
This works for a large number of use cases but is not always what you want.
The opposite would be to detach a head task from the template first and then to change that in whatever way you want.
I wrote a simple plugin for this, see attached. You select a repeating task (the template) then call the plugin, which
Completes the repeating task, thus detaching a (completed) head instance from the template, and
Immediately “un-completes” it.
It tries its best to sort the head instance precisely at the same spot where the template was before but that doesn’t work in all perspectives for whatever reason.