如果你为某个工作项启动了计时,之后离开电脑—比如去接一通电话—你通常需要 “处理(resolve)” 这段离开的时间:要么从当前计时中扣除,要么把这段时间计入另一个任务。
通过将变量 org-clock-idle-time 自定义为某个整数(例如 10 或 15),Emacs 可以在你闲置这么多分钟 82 后回到电脑时提醒你,并询问你要如何处理这段闲置时间。当你返回时会出现一个提示,显示已经闲置的时长并持续更新当前数值,同时提供一组选项来修正时间偏差:
保留部分或全部分钟并继续当前计时,按 k。 Org 会询问保留的分钟数,按 RET 保留全部(即不做修改), 或输入数字保留指定分钟。
按住 Shift 按 K,会保留指定分钟数并立即结束当前任务计时。 若保留全部分钟,效果等同于直接结束当前任务计时。
不保留任何分钟,按 s 从计时中扣除全部离开时间, 并从返回时刻重新开始计时。
不保留任何分钟,并直接在离开开始时刻结束计时,按住 Shift 按 S。 注意使用 Shift 时无论选择哪项,最终都会处于未计时状态。
直接取消整个计时,按 C。 注意若未取消而是扣除离开时间后,计时时长不足一分钟, 计时仍会被取消,避免日志中出现空条目。
如果从当前计时中扣除了离开时间,现在想将其计入新任务? 只需在扣除后立即为任意任务启动计时。Org 会检测到你有已扣除的“记账时间”, 并询问是否将这段时间计入下一个计时任务。
这种计时处理逻辑还会出现在另一种场景: 假设你正在计时编辑内容,突然意外断电导致所有缓冲区丢失, 但得益于自动保存,你仍保留了最近的 Org 修改(包括最后一次计时启动)。
重启 Emacs 并为任意任务计时后,Org 会检测到上一会话中存在未正常结束的悬空计时。 以上次计时开始时间作为未统计时段起点,Org 会询问如何处理这段时间。 逻辑与行为和处理闲置离开时间完全一致,只是触发原因是异常恢复而非固定闲置时长。
你也可以随时通过 M-x org-resolve-clocks RET(或 C-c C-x C-z) 检查 Org 日程涉及的所有文件中的悬空计时。
你可能希望以上一个任务的结束时间作为新任务的计时起点。
要系统性启用该功能,将 org-clock-continuously 设为非 nil 。
每次启动计时时,Org 会读取本次会话中上一条计时的结束时间,
并从该时刻开始新计时。
若仅偶尔需要该功能,可在使用 org-clock-in 时携带三层通用前缀参数,
或在使用 org-clock-in-last 时携带两层 C-u C-u 前缀。
如果你经常忘记在闲置前结束计时,且不想手动调整计时时间,
可以将 org-clock-auto-clockout-timer 设为秒数,
并在 ‘.emacs’ 文件中添加 ‘(org-clock-auto-clockout-insinuate)’ 。
当计时正在运行且 Emacs 闲置超过该秒数时,会自动结束计时。
使用 ‘M-x org-clock-toggle-auto-clockout RET’ 可临时开启或关闭该功能。
在 macOS 设备上,闲置状态基于实际用户闲置时间,而非仅 Emacs 闲置时间。X11 环境下可安装工具程序 ‘x11idle.c’ (位于 ‘org-contrib/’ 仓库),或 Debian 系统中安装 xprintidle 包并赋值给变量 org-clock-x11idle-program-name ,以实现相同的闲置检测逻辑。其他系统下闲置时间仅指 Emacs 闲置时间。