在议程视图中显示已安排的例程实际 'Done' 时间
Display scheduled routines actual 'Done' time in agenda view
我计划在早上 5:00 醒来,并在今天早上 5:12 完成它
如果显示例程的实际完成时刻可能会更有帮助。
然而,事实并非如此。
更新:
更糟糕的是,计划的工作在重建议程后消失了,而不是显示为完成状态的计划时刻。
如何配置议程视图以显示实际完成时间?
DONE
状态的时间戳不会出现在您的 org-agenda
中,因为它是一个非活动时间戳。这是常规时间戳和非活动时间戳之间的区别:常规时间戳会触发一个条目显示在议程中,而非活动时间戳则不会。这引导我们找到第一个可能的解决方案(您已经尝试过):手动将这些非活动时间戳更改为活动时间戳。当 org-agenda
解析活动时间戳时,它会在当时将相关任务的条目放入议程中。这里的问题是任务的 TODO
状态是 NEXT
因为重复的任务已经转移到下一次出现。因此 org-agenda
条目的状态将是 NEXT
,而不是 DONE
。 (这里值得注意的是,将 non-repeating 任务的 CLOSED
时间戳更改为活动状态不会导致它在当时出现在议程中。)
或者,我们可以让 org-agenda 显示非活动时间戳。有几种方法可以做到这一点:
- 在议程视图中,按
[
或 ]
,这将导致显示非活动时间戳。
- 将变量
org-agenda-include-inactive-timestamps
设置为 t
并重新加载议程。
这也不太理想。由于重复任务的转移 TODO 状态,议程条目再次被标记为 NEXT
。此外,(至少对我而言),该项目出现了两次。其中一个来自航海日志,另一个来自 LAST_REPEAT
属性.
幸运的是 org-agenda 提供了更好的选项来查看使用 org-agenda-log-mode
完成的任务的时间戳。在议程视图中,可以使用 l
("k" 和 "m" 之间的字母)激活 org-agenda-log-mode
。这仍然不足以显示重复的任务完成时间戳。默认情况下 org-agenda-log-mode
仅显示已关闭或已打卡的任务。如上所述,此任务自转移到下一次重复后尚未关闭。但是,org-agenda 还能够显示已更改状态的任务的时间戳。由于记录的任务从 NEXT
更改为 DONE
,其时间戳将显示在此视图下。我们可以通过几种不同的方式激活此视图:
- 正在使用通用参数 (
C-u l
) 调用 org-agenda-log-mode
。
- 将
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
文件,其中包含一个已经完成一次的重复任务 ("Wake Up")。出于演示目的,此文件还有另一个未完成的重复任务,一个已关闭的one-time任务和另一个未完成但已打卡的计划任务:
#+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
后,我们看到完成的 "Wake Up" 的时间戳没有显示:
允许不活动的时间戳将显示已完成的 "Wake Up" 时间戳,但时间戳出现两次并且不太清楚这些议程项目指的是什么:
调用 org-agenda-log-mode
会提供更多相关的议程条目(并且足以显示 one-time 任务的结束时间戳)。但是,它默认不显示状态变化,这意味着我们的 "Wake Up" 时间戳不会出现:
修改 org-agenda-log-mode
以显示更改状态的时间戳,我们终于看到了关闭的 "Wake Up" 时间戳。
我计划在早上 5:00 醒来,并在今天早上 5:12 完成它
如果显示例程的实际完成时刻可能会更有帮助。
然而,事实并非如此。
更新:
更糟糕的是,计划的工作在重建议程后消失了,而不是显示为完成状态的计划时刻。
如何配置议程视图以显示实际完成时间?
DONE
状态的时间戳不会出现在您的 org-agenda
中,因为它是一个非活动时间戳。这是常规时间戳和非活动时间戳之间的区别:常规时间戳会触发一个条目显示在议程中,而非活动时间戳则不会。这引导我们找到第一个可能的解决方案(您已经尝试过):手动将这些非活动时间戳更改为活动时间戳。当 org-agenda
解析活动时间戳时,它会在当时将相关任务的条目放入议程中。这里的问题是任务的 TODO
状态是 NEXT
因为重复的任务已经转移到下一次出现。因此 org-agenda
条目的状态将是 NEXT
,而不是 DONE
。 (这里值得注意的是,将 non-repeating 任务的 CLOSED
时间戳更改为活动状态不会导致它在当时出现在议程中。)
或者,我们可以让 org-agenda 显示非活动时间戳。有几种方法可以做到这一点:
- 在议程视图中,按
[
或]
,这将导致显示非活动时间戳。 - 将变量
org-agenda-include-inactive-timestamps
设置为t
并重新加载议程。
这也不太理想。由于重复任务的转移 TODO 状态,议程条目再次被标记为 NEXT
。此外,(至少对我而言),该项目出现了两次。其中一个来自航海日志,另一个来自 LAST_REPEAT
属性.
幸运的是 org-agenda 提供了更好的选项来查看使用 org-agenda-log-mode
完成的任务的时间戳。在议程视图中,可以使用 l
("k" 和 "m" 之间的字母)激活 org-agenda-log-mode
。这仍然不足以显示重复的任务完成时间戳。默认情况下 org-agenda-log-mode
仅显示已关闭或已打卡的任务。如上所述,此任务自转移到下一次重复后尚未关闭。但是,org-agenda 还能够显示已更改状态的任务的时间戳。由于记录的任务从 NEXT
更改为 DONE
,其时间戳将显示在此视图下。我们可以通过几种不同的方式激活此视图:
- 正在使用通用参数 (
C-u l
) 调用org-agenda-log-mode
。 - 将
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
文件,其中包含一个已经完成一次的重复任务 ("Wake Up")。出于演示目的,此文件还有另一个未完成的重复任务,一个已关闭的one-time任务和另一个未完成但已打卡的计划任务:
#+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
后,我们看到完成的 "Wake Up" 的时间戳没有显示:
允许不活动的时间戳将显示已完成的 "Wake Up" 时间戳,但时间戳出现两次并且不太清楚这些议程项目指的是什么:
调用 org-agenda-log-mode
会提供更多相关的议程条目(并且足以显示 one-time 任务的结束时间戳)。但是,它默认不显示状态变化,这意味着我们的 "Wake Up" 时间戳不会出现:
修改 org-agenda-log-mode
以显示更改状态的时间戳,我们终于看到了关闭的 "Wake Up" 时间戳。