【问题标题】:How to untick checkboxes in org-mode for the next cyclic/repetitive task如何在组织模式下为下一个循环/重复任务取消勾选复选框
【发布时间】:2013-12-08 12:24:50
【问题描述】:

对于org-mode的循环或重复性任务,在这个任务里面,如果有几个checkbox并且都标记为tick,在一般任务被屏蔽为DONE后,下一个循环周期的checkbox仍然显示为tick它应该被取消勾选。例如:

  • TODO Cyclic 每月主页 [0/5] 计划:
    • [ ] 付费桑拿
    • []交电费
    • [ ] 支付租金
    • [ ] 支付互联网
    • [ ] 支付工会

一旦我勾选了所有这些并完成,这就是我可以看到的:

  • WIP Cyclic 每月首页 [5/5] 计划:
  • 从“WIP”状态“完成”[2013-11-06 星期三 20:49]:属性::LAST_REPEAT:[2013-11-06 星期三 20:49]:END:
    • [X] 付费桑拿
    • [X] 支付电费
    • [X]支付租金
    • [X] 支付网络费用
    • [X] pay union

在版本中测试:

  • Emacs 版本: *GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, X toolkit, Xaw3d scroll bars) of 2013-08-30 on apocalipsis*

  • 组织模式版本: *组织模式版本 7.9.3f (release_7.9.3f-17-g7524ef @ /usr/local/share/emacs/24.3/lisp/org/)*

更新:按照以下说明解决:

1。在 emacs 配置文件 .emacs 中包括:

(add-to-list 'load-path (expand-file-name "~/path_to_file_org-checklist.el/"))

(需要'org-checklist)

注意:如果没有该文件,可以从here下载

2。在 TODO 任务之后,但在复选框之前的文件 mytasks.org 中包含这些行:

:属性:

:RESET_CHECK_BOXES: t

:END:

3。验证它是否有效

只需使用C-c C-t 关闭任务,您就会看到未选中的复选框。

【问题讨论】:

    标签: emacs checkbox task org-mode todo


    【解决方案1】:

    如果我理解正确,情况是:您有一个重复任务,其中子项作为复选框。任务完成后,应清除子项上的所有复选框 - 这样才能在下一个循环时间完成任务。

    • 将任务的属性RESET_CHECK_BOXES设置为t
    • 确保 org-checklist 是加载的模块之一(通过变量 org-modules

    【讨论】:

    • 是的,它运行良好,正是我想要的。
    • 我试过这个,但它不起作用。 org-modules 已配置,RESET_CHECK_BOXES 已设置,但将项目标记为 DONE 不会取消选中复选框。
    • 这对我有用。 @NoahSlater:你放了吗? (require 'org-checklist) 在你的初始化文件中?
    • 注意添加模块到org-modules 会在加载 org 时加载模块。使用 require 意味着它将在执行 require 时(如果尚未加载)加载。这可能会导致模块被加载之前 org - 不知道会如何工作。另外,请确保 org-checklist 实际上在您的系统上 - 它位于 org/contrib 目录中。
    【解决方案2】:

    您可以在选定区域上使用 C-c C-x C-b 取消选中一系列复选框。 这会调用org-toggle-checkbox 命令。

    【讨论】:

    • 是的,我知道。但是一旦完成了一项任务,就会为新周期出现一个新任务。为什么新任务出现并带有标记的复选框?我想说的是;因为它是一个新任务,应该自动显示为未选中,不使用C-c C-x C-b
    • 我明白你的意思,但最好还是这样。否则下一个人会开始抱怨他不希望它们不被选中,或者只希望它们中的一半被选中等等......可以为子 TODO 项目制定解决方案。您描述的任务正是为此。 org 甚至会为您跟踪依赖关系,并且不允许您在子项完成之前将父项标记为完成。
    【解决方案3】:

    org-checklist.el 在 Org 9.5 之前已移至 https://git.sr.ht/~bzg/org-contrib。因此,如果您使用的是最新版本,则必须从那里获取它。 The code 按原样工作。如果您一直在加载org-mode/contrib/lisp/,则可以将其更改为指向org-contrib/lisp/,它应该会像以前一样工作。

    (use-package org
      :load-path ( "~/src/org-mode/lisp"
                   "~/src/org-contrib/lisp/")
    

    如果您只是想重置您的复选框,您可以复制其中的一部分并将其放入您的 init.el:

    (defun my-org-reset-checkbox-state-maybe ()
      "Reset all checkboxes in an entry if the `RESET_CHECK_BOXES' property is set"
      (interactive "*")
      (if (org-entry-get (point) "RESET_CHECK_BOXES")
          (org-reset-checkbox-state-subtree)))
    
    (defun my-org-reset-checkbox-when-done ()
      (when (member org-state org-done-keywords) ;; org-state dynamically bound in org.el/org-todo
        (my-org-reset-checkbox-state-maybe)))
    
    (add-hook 'org-after-todo-state-change-hook 'my-org-reset-checkbox-when-done)
    
    

    原代码为 GPLv3+。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-12
      • 2021-02-14
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多