我怎样才能像过去那样标记组织习惯

Nao*_*ter 11 org-mode

在活动结束后的第二天,我经常将习惯标记为已完成.当我这样做时,习惯模块会自动更新元数据中的一堆日期,但日期总是在今天.那么,我必须手动编辑SCHEDULED,LOGBOOK和LAST_REPEAT状态.

有没有办法在过去的某一天将习惯标记为DONE?因此,我没有做Cc Ct d(我将"d"设置为"完成"),而是可以得到一个提示,要求我约会.

Dan*_*ler 10

我也想这样做一段时间,你的问题激励我最终弄明白.

有一个名为"org-todo-yesterday"的功能.默认情况下,它不会映射到任何键,但您可以随时调用它M-x org-todo-yesterday(或者如果您经常使用它,则映射它).对我来说,它打破了,因为它调用"第三",这不是我的安装中定义的功能.

对于一个更通用的函数,提示我们输入日期并将事情标记为当时已完成,我们可以将此函数(受org-todo-yesterday启发)添加到我们的emacs init文件中.它会像你在目标日期的23:59完成一样,这有望足够好.

(defun dk/org-todo-custom-date (&optional arg)
  "Like org-todo-yesterday, but prompt the user for a date. The time
of change will be 23:59 on that day"
  (interactive "P")
  (let* ((hour (nth 2 (decode-time
                       (org-current-time))))
         (daysback (- (date-to-day (current-time-string)) (org-time-string-to-absolute (org-read-date))))
         (org-extend-today-until (+ 1 (* 24 (- daysback 1)) hour))
         (org-use-effective-time t)) ; use the adjusted timestamp for logging
    (if (eq major-mode 'org-agenda-mode)
      (org-agenda-todo arg)
      (org-todo arg))))
Run Code Online (Sandbox Code Playgroud)