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

时间:2019-05-20 21:32:15

标签: emacs org-mode

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

enter image description here

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

但是,不是。

enter image description here

更新:

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

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

1 个答案:

答案 0 :(得分:1)

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

或者,我们可以使组织议程向我们显示不活动的时间戳。有两种方法可以做到:

  • 在议程视图中,按[],这将导致不活动的时间戳出现。
  • 将变量org-agenda-include-inactive-timestamps设置为t,然后重新加载议程。

这也不理想。再次,由于重复任务的待办事项状态改变,议程条目被标记为NEXT。此外,(至少对我而言)该项目显示两次。其中一个来自日志,另一个来自LAST_REPEAT属性。

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

  • 使用通用参数(org-agenda-log-mode)调用C-u l
  • state添加到org-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>

调用org-agenda后,我们看不到完成的“唤醒”的时间戳: The timestamp for the completed repeated task does not appear

允许不活动的时间戳将显示已完成的“唤醒”时间戳,但是该时间戳显示了两次,并且这些议程项目指的是不是很清楚: Allowing inactive timestamps allows the logged timestamp to appear, but the associated agenda item is not very clear

调用org-agenda-log-mode会给出更多相关的议程条目(足以显示一次性任务的结束时间戳记)。但是,默认情况下它不会显示状态更改,这意味着我们的“唤醒”时间戳将不会显示:

org-agenda-log-mode allows closed items' timestamps to appear as entries

修改org-agenda-log-mode以显示更改状态的时间戳,我们终于看到了关闭的“唤醒”时间戳。 Using org-agenda-log-mode and setting it to show state allows the timestamp to show up with information that shows that its TODO status was changed