From e65a5bee42a15955c4e25eabda55c55f6362c812 Mon Sep 17 00:00:00 2001 From: Benson Chu Date: Mon, 4 May 2020 09:16:58 -0500 Subject: [PATCH] New delay behavior. Delay tasks if not scheduled --- lisp/org-delay.el | 3 ++- lisp/org-project/opr-projects.el | 17 ++++++++--------- lisp/org-project/opr-tasks.el | 4 +++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lisp/org-delay.el b/lisp/org-delay.el index 1d69cee..7917853 100644 --- a/lisp/org-delay.el +++ b/lisp/org-delay.el @@ -44,7 +44,8 @@ nil nil nil "Delay until when?"))) (formatted (format "<%s>" new-time))) - (if (eq 'task (opr/get-type)) + (if (and (eq 'task (opr/get-type)) + (org-entry-get (point) "SCHEDULED")) (org-schedule arg new-time) (org-entry-put (point) "DELAYED" formatted) (format "Delayed until %s" formatted))))))) diff --git a/lisp/org-project/opr-projects.el b/lisp/org-project/opr-projects.el index d9dedb8..d3c2cf1 100644 --- a/lisp/org-project/opr-projects.el +++ b/lisp/org-project/opr-projects.el @@ -40,15 +40,14 @@ 'active 'stuck) (if (or - ;; No active tasks? Stuck if no other projects! - (and (not (olc/any-todo-children? - (eq 'active (opr/type-of-task)))) - (not - (olc/any-todo-children? - (eq 'project (opr/get-type))))) - ;; Have a stuck project? Stuck! - (and (olc/any-todo-children? - (eq 'stuck (opr/type-of-project))))) + (olc/any-todo-children? + (or + ;; Any stuck task? Stuck! + (eq 'stuck (opr/type-of-task)) + ;; Have a stuck project? Stuck! + (eq 'stuck (opr/type-of-project)))) + ;; No todo children? Stuck! + (not (olc/any-todo-children? t))) 'stuck 'active))) diff --git a/lisp/org-project/opr-tasks.el b/lisp/org-project/opr-tasks.el index 68972bb..9f82cd3 100644 --- a/lisp/org-project/opr-tasks.el +++ b/lisp/org-project/opr-tasks.el @@ -65,7 +65,9 @@ (and (member state opr/ambiguous) (eq 'task (opr/ambiguous-task-or-project)))) - (if (member "_invis_" (org-get-tags)) + (if (or (member "_invis_" (org-get-tags)) + (when-let (d (org-entry-get (point) "DELAYED")) + (org-time> d (org-matcher-time "")))) 'invis (pcase state ("TASK" (if (or (org-get-deadline-time (point))