在议程视图中显示计划的例程的实际“完成”时间

Alg*_*bra 10 emacs org-mode

我安排例行程序在早上5:00醒来,并在今天早上5:12完成

在此处输入图片说明

如果显示了该例程的实际完成时刻,则可能会更有帮助。

但是,事实并非如此。

在此处输入图片说明

更新:

更糟糕的是,计划的工作在重建议程后消失了,而不是显示为“完成”状态。

如何配置议程视图以显示实际的完成时间?

D. *_*lis 5

DONE状态的时间戳不会出现在您的中,org-agenda因为它是一个非活动时间戳。这是常规时间戳和非活动时间戳之间的区别:常规时间戳会触发条目显示在议程中,而非活动时间戳则不会。这将我们引向我们的第一个潜在解决方案(您已经尝试过):手动将这些非活动时间戳更改为活动时间戳。当org-agenda解析一个活动时间戳时,它会在当时的议程中放置一个相关任务的条目。这里的问题是任务的TODO状态是NEXT因为重复的任务已经转移到下一次出现。因此,org-agenda条目将具有NEXT作为其状态,而不是DONE。(这里值得注意的是,改变CLOSED 处于活动状态的非重复任务上的时间戳不会导致它出现在当时的议程中。)

或者,我们可以让 org-agenda 向我们显示不活动的时间戳。有几种方法可以做到这一点:

  • 在议程视图中,按[],这将导致显示不活动的时间戳。
  • 将变量设置org-agenda-include-inactive-timestampst并重新加载议程。

这也不太理想。再次,NEXT由于重复任务的 TODO 状态发生变化,议程条目被标记。此外,(至少对我而言),该项目出现了两次。其中一个来自日志,而另一个来自LAST_REPEAT物业。

幸运的是 org-agenda 提供了更好的选项来查看已完成任务的时间戳org-agenda-log-mode。在议程视图中,org-agenda-log-mode可以用l(“k”和“m”之间的字母)激活。这仍然不足以显示重复的任务完成时间戳。默认情况下,org-agenda-log-mode仅显示已关闭或已打卡的任务。如上所述,此任务自转移到下一个重复后尚未关闭。但是,org-agenda 也能够显示已更改状态的任务的时间戳。由于已记录的任务从 更改NEXTDONE,因此其时间戳将显示在此视图下。我们可以通过几种不同的方式激活此视图:

  • org-agenda-log-mode使用通用参数 ( C-u l) 进行调用。
  • 添加stateorg-agenda-log-mode-items例如(setq org-agenda-log-mode-items '(closed clock state))
  • 设置org-agenda-start-with-log-mode例如(setq org-agenda-start-with-log-mode '(closed clock state))。此选项将导致议程开始,org-agenda-log-mode如果您总是希望在打开议程时看到此信息,则是最佳选择。

应该注意的是,虽然已完成的任务会显示在这里,但它仍然会有NEXT标签。但是,它也会显示此时它的状态更改为DONE(请参见下面的最后一张图片示例)。


例子

例如,这里有一个短org-mode文件,其中包含已经完成一次的重复任务(“唤醒”)。出于演示目的,此文件还有另一个尚未完成的重复任务、一个已关闭的一次性任务和另一个尚未完成但已计时的计划任务:

#+SEQ_TODO: NEXT(n) TODO(t) | DONE(d)
* Items
** NEXT Wake up
   SCHEDULED: <2019-06-11 Tues 05:00 +1d>
   :PROPERTIES:
   :LAST_REPEAT: [2019-06-10 Mon 13:37]
   :END:
   :LOGBOOK:
   - State "DONE"       from "NEXT"       [2019-06-10 Mon 13:37]
   :END:
** DONE One time event
   CLOSED: [2019-06-10 Mon 13:46] SCHEDULED: <2019-06-10 Mon 15:00>
** Not going to be finished
   SCHEDULED: <2019-06-11 Tue>
   :LOGBOOK:
   CLOCK: [2019-06-10 Mon 13:54]--[2019-06-10 Mon 13:54] =>  0:00
   :END:
** Go to bed
   SCHEDULED: <2019-06-10 Mon 22:00 +1d>
Run Code Online (Sandbox Code Playgroud)

调用后org-agenda,我们看到我们完成的“唤醒”的时间戳没有显示: 已完成重复任务的时间戳不出现

允许非活动时间戳将显示完成的“唤醒”时间戳,但时间戳显示两次并且不太清楚这些议程项目指的是什么: 允许非活动时间戳允许出现记录的时间戳,但相关的议程项目不是很清楚

调用org-agenda-log-mode提供了更多相关的议程条目(并且足以显示一次性任务的结束时间戳)。但是,它默认不显示状态变化,这意味着我们的“唤醒”时间戳不会出现:

org-agenda-log-mode 允许关闭项目的时间戳显示为条目

修改org-agenda-log-mode以显示更改状态的时间戳,我们终于看到了我们关闭的“唤醒”时间戳。 使用 org-agenda-log-mode 并将其设置为显示状态允许时间戳显示显示其 TODO 状态已更改的信息