子任务是否有办法在org-mode中继承最后期限?

时间:2011-02-02 08:12:21

标签: emacs org-mode

如果对于org-mode中的某些任务,子任务可以继承主任务的最后期限,那将非常方便。如果我还没有指定子任务的截止日期,则会发生此行为。通过这种方式,所有子任务都会显示在我的组织议程视图中,并且具有易于操作的适当截止日期。

6 个答案:

答案 0 :(得分:5)

添加子任务的功能如何?如果子任务具有一个子任务,则为子任务添加一个截止日期:

(defun my-org-insert-sub-task ()
  (interactive)
  (let ((parent-deadline (org-get-deadline-time nil)))
    (org-goto-sibling)
    (org-insert-todo-subheading t)
    (when parent-deadline
      (org-deadline nil parent-deadline))))

不要忘记将其绑定到密钥:

(define-key org-mode-map (kbd "C-c s") 'my-org-insert-sub-task)

此外,您可能会发现这些设置很有用:

(setq org-enforce-todo-dependencies t)
(setq org-agenda-dim-blocked-tasks 'invisible)

答案 1 :(得分:2)

最近,在org-mode邮件列表中询问并回答了这个问题。我在这里添加了这个讨论,希望有人能发现它有用:

http://article.gmane.org/gmane.emacs.orgmode/49215

我已在此提交中将该代码添加到我的.emacs中:

https://github.com/vedang/emacs-config/commit/1cb6c774a991d50853134d8085ca61dd12585993

答案 2 :(得分:0)

DEADLINE是其中一个属性,默认情况下不会继承。 您可以通过自定义变量org-use-property-inheritance

来更改它

答案 3 :(得分:0)

另一种方法是在org-agenda-bulk-action中使用org-agenda-mode

  1. stuck-projects定义为还没有截止日期且尚未安排的TODO标题:Defining unscheduled todos as stuck projects in Emacs Org-Mode
  2. M-x org-agenda-list-stuck-projects。这将显示没有截止日期的TODO标题列表。
  3. m 标记您要添加截止日期的条目。
  4. B 调用org-agenda-bulk-action
  5. d 为所有人分配一个截止日期。

答案 4 :(得分:0)

组织模式具有继承标签(如截止日期)的功能,但默认情况下org-entry-get不会这样做。以下建议确保始终继承DEADLINE

(defvar inherit-override nil)
(defun org-entry-get-inherit-deadline (orig-fun pom property &optional inherit &rest args)
  "Call ORIG-FUN with POM, but if PROPERTY is `DEADLINE', set INHERIT.

Passes through remaining ARGS.

Sets inherit-override variable which stops infinite loops."
  (when (and (eq inherit nil)
             (string= property "DEADLINE")
             (not inherit-override))
    (setq inherit t))
  (let ((inherit-override t))
    (apply orig-fun pom property inherit args)))

(advice-add 'org-entry-get :around #'org-entry-get-inherit-deadline)

答案 5 :(得分:0)

这里的建议适用于Org 9的最新版本,这与我以前的回答在某个时候停止工作不一样。

(defun org-entry-properties-inherit-deadline (orig-fun &optional pom which)
  "Call ORIG-FUN with POM, but if WHICH is `DEADLINE' do it recursively."

  (if (string= which "DEADLINE")
      (org-with-point-at pom
        (let (value)
          (while (not (or (setq value (funcall orig-fun (point) which))
                          (not (org-up-heading-safe)))))
          value)
    (funcall orig-fun pom which))))
(advice-add 'org-entry-properties :around #'org-entry-properties-inherit-deadline)