17

我正在使用 org-mode 来安排任务。

有没有一种简单的方法来安排在每个月的第一个星期六发生的任务?

4

3 回答 3

16

org-float现在已过时(请参阅此提交)。从现在开始,您将不得不使用diary-float.org-float

(对不起,噪音:这不值得一个完整的答案,但现在我没有足够的“声誉”来评论。)

于 2013-03-11T18:15:15.010 回答
9

组织模式有一个很好的文档,使用它。 (info "(org) Deadlines and scheduling")

您可以在调度和截止日期条目中使用带有中继器的时间戳。Org 模式将基于时间戳表示最近的中继器实例的假设发出早期和晚期警告。但是,在调度和截止时间时间戳中使用像 `<%%(diary-float t 42)>' 这样的日记 sexp 条目是有限的。Org 模式对每个 sexp 函数的内部了解不足,无法发出早期和晚期警告。但是,它将在每天匹配 sexp 条目的地方显示该项目。

* My Task
  <%%(diary-float t 6 1)>
于 2012-11-25T22:39:28.590 回答
9

在调度和截止日期时间戳中使用 sexp 是有限的,就像信息说的那样

Org 模式对每个 sexp 函数的内部了解不足,无法发出早期和晚期警告。

我编写了一个 elisp 代码来自动更改时间戳,有了它,您需要做的就是设置一个属性。

elisp 代码在这里

  1. 添加(load "/path/to/next-spec-day")到您的点 emacs 文件。

  2. TODO 任务的集合NEXT-SPEC-DEADLINE和/或NEXT-SPEC-SCHEDULED属性,如下所示:

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

    NEXT-SPEC-SCHEDULED 的值是一个 sexp,non-nil如果date是该月的第一个星期六,将返回

  3. 然后,当您更改该任务的 TODO 状态时,时间戳将自动更改(包括警告设置的提前时间)。它变为:

    * TODO test
      SCHEDULED: <2013-01-05 Sat>
      :PROPERTIES:
      :NEXT-SPEC-SCHEDULED: (org-float t 6 1)
      :END:
    
于 2012-12-07T01:36:19.153 回答