【问题标题】:Emacs org mode: how to adjust previous clock if I forget to clock outEmacs org 模式:如果我忘记打卡,如何调整以前的时钟
【发布时间】:2012-06-21 17:36:09
【问题描述】:

现在使用 emacs org 模式大约一个月来跟踪我的所有项目和任务。

我全天为所有活动计时,而不仅仅是与工作相关的活动。

我的问题是 - 我经常忘记打卡参加一项新活动(例如,吃午饭)。当我返回并打卡回到工作活动时,我需要先打卡吃午饭,然后调整它的开始时间戳。这对于午餐活动来说是可以的,但是它并没有调整我吃午餐之前之前的工作工作相关任务,所以净是之前的任务与午餐重叠并且不准确。

有没有办法改变行为以调整之前的任务?我不希望使用空闲功能来执行此操作;我希望自动进行调整。

【问题讨论】:

  • 目前还没有这样的功能,但实现它可能是个好主意。
  • 这是有道理的,因为一个人在任何给定时间只能专注于一项活动,我们这些无论如何都是单线程的 ;-) 起初,当我忘记打卡到新活动时,我需要调整新时钟,跳到旧时钟进行相同的调整,然后再次跳回新项目。对我来说很乏味,因为我有一个相当大的 todo 文档,其中包含许多工作项。如果实现了这个功能,那么在 C-c C-x C-i 之前允许一个 C-u 参数也是非常方便的,这将提示几分钟后开始为新活动计时。

标签: emacs org-mode


【解决方案1】:

预计到达时间:这也再次出现在邮件列表中,似乎最近对代码库的提交提供了另一种 [也许更好的] 方法来执行此操作。请参阅 the mailing list discussion 了解 Bastien(组织模式维护者)的意见:

时钟时间戳上的 S-M-[up/down] 将尝试更新上一个/下一个 时钟时间戳。

(实际上,下面的bzg's 建议就是这个东西......它只是没有包含上面的快捷方式,所以我认为他的答案看起来比上面的更难/更不吸引人,这真的很容易。)


您也可以使用org-resolve-clocks。见Resolving idle time

基本上,你有一些标题并且被打卡了:

* Work
  :LOGBOOK:
  CLOCK: [2012-07-25 Wed 8:26]
  :END:

我吃完午饭回来,发现我忘了打卡下班去吃午饭了。

我运行M-x org-resolve-clocks 并得到以下提示:

Select a Clock Resolution Command:

i/q/C-g  Ignore this question; the same as keeping all the idle time.

k/K      Keep X minutes of the idle time (default is all).  If this
         amount is less than the default, you will be clocked out
         that many minutes after the time that idling began, and then
         clocked back in at the present time.
g/G      Indicate that you "got back" X minutes ago.  This is quite
         different from 'k': it clocks you out from the beginning of
         the idle period and clock you back in X minutes ago.
s/S      Subtract the idle time from the current clock.  This is the
         same as keeping 0 minutes.
C        Cancel the open timer altogether.  It will be as though you
         never clocked in.
j/J      Jump to the current clock, to make manual adjustments.

For all these options, using uppercase makes your final state
to be CLOCKED OUT.

因为我想Keep X 分钟的工作,打卡,然后打卡进入午餐,我按K,它提示我(现在是 ~1:30p):

Keep how many minutes? (default 303) 

我可以按 Enter 保留所有这些,但假设我在 12 点左右吃午饭。这大约是 3.5 小时的工作,所以我将输入 210 RET

现在,我打卡进入午餐并收到以下提示:

You stopped another clock 101 minutes ago; start this one from them? (y or n)

我输入y RET,午餐在上午 11:56 打卡。如果您吃完午饭回来又开始工作(或开始工作却忘记了),重复这个过程:

M-x org-resolve-clocks
K
____ RET ;; for how many minutes you at lunch
C-c C-x C-i ;; to clock in on Work again
y RET ;; clock in at when you stopped lunch

最终结果:

* Work
  :LOGBOOK:
  CLOCK: [2012-07-25 Wed 12:41]
  CLOCK: [2012-07-25 Wed 8:26]--[2012-07-25 Wed 11:56] =>  3:30
  :END:

* Lunch
  :LOGBOOK:
  CLOCK: [2012-07-25 Wed 11:56]--[2012-07-25 Wed 12:41] =>  0:45
  :END:

希望这会有所帮助。组织模式时钟向导Bernt Hansen 向我解释了这一点via an org-mode mailing list thread

【讨论】:

  • 这太长了。我经常在工作时“做梦”,并估计每隔几分钟就有这么多关键动作似乎会分散注意力。不过我目前正在使用它。
【解决方案2】:

现在已实现(检查http://orgmode.org/w/?p=org-mode.git;a=commit;h=3528fc)。

(setq org-clock-continuously t) 在您的 .emacs.el 中,新时钟将从最后一个时钟关闭的时间开始。

C-u C-u C-u M-x org-clock-in RETC-u C-u M-x org-clock-in-last RET 也会这样做,即使 org-clock-continuously 设置为 nil

【讨论】:

    【解决方案3】:

    如果我正确理解您的问题,您想在下班后调整时间戳。有一个命令;您可以查看功能:

    org-timestamp-up

    org-timestamp-down

    我认为这些是默认绑定的,但似乎它们不是,所以您需要将它们绑定到一个键序列,可能是 C-c T uC-c T d 之类的东西,或者任何漂浮在您船上的东西。用法很简单,只需将光标移到要调整的字段上,然后向上或向下运行。它仅适用于时间戳本身,不适用于右侧显示的计算持续时间。

    你也可以去看看

    org-timestamp-change

    前两个函数是封装的。您可能还需要自定义变量

    org-time-stamp-rounding-minutes

    默认情况下,它会将时间戳从原始打卡开始算起 +/- 5 分钟,您在修改时间戳时可能会感到困惑。

    就个人而言,我更喜欢(setq org-time-stamp-rounding-minutes '(0 1)),它会在我打卡的那一刻(零)启动计时器,并使用 1 分钟的粒度来更改时间戳。此外,您可以在时间戳的分钟部分使用 C-u 4 7 C-c T u 之类的前缀,而 org-mode 会做正确的事情 - 甚至将小时四舍五入。

    总结:

    (setq org-time-stamp-rounding-minutes '(0 1))
    (add-hook 'org-mode-hook
      '(lambda ()
         (local-set-key (kbd "C-c T u") 'org-timestamp-up)
         (local-set-key (kbd "C-c T d") 'org-timestamp-down)))
    

    【讨论】:

    • 时间戳上的Shift-arrow到底映射到什么不?它确实有助于调整时间戳,但无论你怎么做,它都不能解决一开始就忘记打卡的问题。
    • 我不同意,它解决了因忘记打卡或忘记打卡而产生的问题,但没有解决问题的根源(健忘)。
    • 我担心我最初关于银杏叶、维生素 b 和欧米茄 3 的强效养生法的建议在编程网站上是不合适的 :)
    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多