Simple question here, pretty new to org mode.

I have an assignemnt I want to do once a day until a specific date. How can I have it scheduled for every day, but end on a ceratin day? This is what I have right now but it goes forever, and I want it to stop on monday

*** TODO f, f' , f'' sheet :NEXTACTION:MOBILEOFFICE: SCHEDULED: <2018-05-10 Thurs +1d>


There is an org-mode FAQ here that recommends using a command to generate a separate task for each day. That might seem heavyweight, but the FAQ suggests reading this blog post for the pros of this approach. The folding nature of org makes it easy to hide long lists.

If you prefer infinite recurrence, note that there are two kinds. There is an infinite task recurrence, like in the question, which uses SCHEDULED and the plus time increment syntax. This entry only shows up in the agenda once and is regenerated each time you mark it completed, leaving a completion log. A fairly simple solution would be to use this and schedule a task on the day that the recurrence should end, reminding you to end the recurrence.

An infinite calendar recurrence would be a case where, instead of a single timestamp, you can use an elisp expression to match multiple dates. These entries show up on the agenda on every matching date. There is an org-mode FAQ about using this, here. The thing about this approach is, you can't combine it with regeneration. I tried inserting one of these expressions into the SCHEDULED: field on a task and it works but still behaves like a recurring calendar entry, not a recurring task. I tried adding increments like +1d before the close angle bracket and it didn't seem to do anything. It's not apparently possible to get a task with this kind of customized scheduling to regenerate when it's marked as done. Even if it has a TODO keyword, it's a single task, that happens to show up multiple times, so if you mark it done it's done everywhere. You could use this method if you don't need to log completion times, or you could, for example, reset from DONE back to TODO when you review your agenda in the morning. Or submit a patch to make TODOs with elisp based recurrences regenerate :)

See also the manual node for repeated tasks.

  • Your answer is good and the links are very useful. Edit it to create better defined parts with titles to make users able to find answers very quickly and it could be a great answer – pietrodito Jul 3 '20 at 7:31
  • @pietrodito thanks for the suggestion, I edited and it should be clearer now – Ratha Grimes Jul 6 '20 at 16:55

Surprisingly, there is no out-of-the-box, automatic method to stop a recurring task. No option for a repeat-until date.

@Ratha Grimes points out one option. You could make a separate "reminder-task" that is scheduled to appear on the date you'd like your repeating-task to end.

Another option: use a property (e.g., :UNTIL:) in the property drawer. Set :UNITL: to the date you want the task to stop. Then you'd have to tell Agenda to ignore any tasks with an :UNTIL: value preceding Today. I am not sure if someone has already written a little routine for this. org-super-agenda might let you filter tasks based on property values. Once in a while, you'd have to go through your org files and clear out halted repeating-tasks... not as tedious as it sounds if you use Agenda to find tasks with UNTIL dates preceding Today.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.