Есть ли способ для подзадач унаследовать сроки в режиме org? - PullRequest
12 голосов
/ 02 февраля 2011

Было бы очень удобно, если бы для определенных задач в орг-режиме подзадачи могли унаследовать крайний срок выполнения основной задачи.Это должно происходить в случае, если я еще не указал крайний срок для подзадачи.Таким образом, все подзадачи будут отображаться в моем представлении повестки дня организации с надлежащими сроками, которыми легко манипулировать.

Ответы [ 6 ]

5 голосов
/ 19 января 2012

Как насчет функции для добавления подзадач?Этот добавляет крайний срок к подзадаче, если его родитель имеет один:

(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)
2 голосов
/ 11 апреля 2012

Недавно этот вопрос задавали и отвечали в списке рассылки org-mode. Я добавляю это обсуждение здесь в надежде, что кто-то найдет его полезным:

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

Я добавил этот код в мой .emacs в этом коммите:

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

0 голосов
/ 05 июля 2018

Вот совет, который работает для последних версий 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)
0 голосов
/ 24 апреля 2018

Org-mode имеет возможность наследовать теги, такие как крайние сроки, но по умолчанию 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)
0 голосов
/ 13 мая 2014

Другой подход заключается в использовании org-agenda-bulk-action в org-agenda-mode.

  1. Определить stuck-projects как заголовки TODO, которые еще не имеют крайнего срока и еще не запланированы: Определение внеплановых задач как застрявших проектов в Emacs Org-Mode
  2. M-x org-agenda-list-stuck-projects.Будет отображен список заголовков TODO без крайнего срока.
  3. m , чтобы отметить записи, к которым вы хотите добавить крайний срок.
  4. B для вызова org-agenda-bulk-action.
  5. d , чтобы назначить им один срок.
0 голосов
/ 10 августа 2011

DEADLINE является одним из этих свойств, которые не наследуются по умолчанию.Вы можете изменить это, настроив переменную org-use-property-inheritance

...