Org mode: How to schedule repeating tasks for the first Saturday of every month?

Org Mode has a great documentation, use it. (info "(org) Deadlines and scheduling")

You may use timestamps with repeaters in scheduling and deadline entries. Org mode will issue early and late warnings based on the assumption that the timestamp represents the nearest instance of the repeater. However, the use of diary sexp entries like `<%%(diary-float t 42)>' in scheduling and deadline timestamps is limited. Org mode does not know enough about the internals of each sexp function to issue early and late warnings. However, it will show the item on each day where the sexp entry matches.

* My Task
  <%%(diary-float t 6 1)>

org-float is now obsolete (see this commit). From now on, you'll have to use diary-float in place of org-float.

(Sorry for the noise: this does not deserve a full answer, but for now I don't have enough "reputation" to comment.)


Using sexp in scheduling and deadline timestamp is limited,like info says

Org mode does not know enough about the internals of each sexp function to issue early and late warnings.

I write a elisp code to change the timestamp automatically,with it,all you need to do is setting a property.

the elisp code is here

  1. add (load "/path/to/next-spec-day") to your dot emacs file.

  2. set NEXT-SPEC-DEADLINE and/or NEXT-SPEC-SCHEDULED property of a TODO task,like this:

    * test
      :PROPERTIES:
      :NEXT-SPEC-SCHEDULED: (org-float t 6 1)
      :END:
    

    The value of NEXT-SPEC-SCHEDULED is a sexp will return non-nil if date is the first Saturday of the month

  3. Then,when you change the TODO state of that tasks,the timestamp will be changed automatically(include lead time of warnings settings).It becomes:

    * TODO test
      SCHEDULED: <2013-01-05 Sat>
      :PROPERTIES:
      :NEXT-SPEC-SCHEDULED: (org-float t 6 1)
      :END:
    

Tags:

Org Mode