org: Repeated tasks

 
 8.3.2 Repeated tasks
 --------------------
 
 Some tasks need to be repeated again and again.  Org mode helps to
 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
 or plain timestamp.  In the following example
      ** TODO Pay the rent
         DEADLINE: <2005-10-01 Sat +1m>
 the ‘+1m’ is a repeater; the intended interpretation is that the task
 has a deadline on <2005-10-01> and repeats itself every (one) month
 starting from that time.  You can use yearly, monthly, weekly, daily and
 hourly repeat cookies by using the ‘y/w/m/d/h’ letters.  If you need
 both a repeater and a special warning period in a deadline entry, the
 repeater should come first and the warning period last: ‘DEADLINE:
 <2005-10-01 Sat +1m -3d>’.
 
    Deadlines and scheduled items produce entries in the agenda when they
 are over-due, so it is important to be able to mark such an entry as
 completed once you have done so.  When you mark a DEADLINE or a SCHEDULE
 with the TODO keyword DONE, it will no longer produce entries in the
 agenda.  The problem with this is, however, that then also the _next_
 instance of the repeated entry will not be active.  Org mode deals with
 this in the following way: When you try to mark such an entry DONE
 (using ‘C-c C-t’), it will shift the base date of the repeating
 timestamp by the repeater interval, and immediately set the entry state
 back to TODO(1). In the example above, setting the state to DONE would
 actually switch the date like this:
 
      ** TODO Pay the rent
         DEADLINE: <2005-11-01 Tue +1m>
 
    A timestamp(2) will be added under the deadline, to keep a record
 that you actually acted on the previous instance of this deadline.
 
    As a consequence of shifting the base date, this entry will no longer
 be visible in the agenda when checking past dates, but all future
 instances will be visible.
 
    With the ‘+1m’ cookie, the date shift will always be exactly one
 month.  So if you have not paid the rent for three months, marking this
 entry DONE will still keep it as an overdue deadline.  Depending on the
 task, this may not be the best way to handle it.  For example, if you
 forgot to call your father for 3 weeks, it does not make sense to call
 him 3 times in a single day to make up for it.  Finally, there are tasks
 like changing batteries which should always repeat a certain time after
 the last time you did it.  For these tasks, Org mode has special
 repeaters ‘++’ and ‘.+’.  For example:
 
      ** TODO Call Father
         DEADLINE: <2008-02-10 Sun ++1w>
         Marking this DONE will shift the date by at least one week,
         but also by as many weeks as it takes to get this date into
         the future.  However, it stays on a Sunday, even if you called
         and marked it done on Saturday.
      ** TODO Check the batteries in the smoke detectors
         DEADLINE: <2005-11-01 Tue .+1m>
         Marking this DONE will shift the date to one month after
         today.
 
    You may have both scheduling and deadline information for a specific
 task.  If the repeater is set for the scheduling information only, you
 probably want the repeater to be ignored after the deadline.  If so, set
 the variable ‘org-agenda-skip-scheduled-if-deadline-is-shown’ to
 ‘repeated-after-deadline’.  If you want both scheduling and deadline
 information to repeat after the same interval, set the same repeater for
 both timestamps.
 
    An alternative to using a repeater is to create a number of copies of
 a task subtree, with dates shifted in each copy.  The command ‘C-c C-x
 c’ was created for this purpose, it is described in SeeStructure
 editing.
 
    ---------- Footnotes ----------
 
    (1) In fact, the target state is taken from, in this sequence, the
 ‘REPEAT_TO_STATE’ property or the variable ‘org-todo-repeat-to-state’.
 If neither of these is specified, the target state defaults to the first
 state of the TODO state sequence.
 
    (2) You can change this using the option ‘org-log-repeat’, or the
 ‘#+STARTUP’ options ‘logrepeat’, ‘lognoterepeat’, and ‘nologrepeat’.
 With ‘lognoterepeat’, you will also be prompted for a note.