[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Feature request and patch - blocked TODO to say BLOCKED
From: |
Tom Breton (Tehom) |
Subject: |
Re: [Orgmode] Feature request and patch - blocked TODO to say BLOCKED |
Date: |
Wed, 14 Jan 2009 21:34:25 -0500 (EST) |
User-agent: |
SquirrelMail/1.4.13 |
> Hi Tom,
>
> I am hesitant to apply this relatively complex patch which
> I have not had the time to study closely enough.
> I am wondering: Instead of setting a TODO keyword,
> would it not be simpler and equally effective to set a
> special tag when an entry is blocked?
That is a much better solution. I have coded that and tested it against
an example file, and it works.
I've attached a patch. One note: I used diff flag -b to ignore whitespace
because most of the change is that the big `catch' statement isn't
directly returned but assigned to proceed-p. So most of it got indented
further but no change other than whitespace. I can diff it without -b if
you prefer.
> You could use a bright font to mark this tag, in order to
> make it obvious. And you could use a custom query to look
> for blocked items, to see what can be done about them....
Tom Breton (Tehom)
[example-file.org]
* Header
** TODO Blocking item
** Item that gets blocked
:PROPERTIES:
:BLOCKER: previous-sibling
:END:
[end]
[begin patch]
*** old-org-depend.el 2009-01-04 03:01:50.000000000 -0500
--- ord-depend.el 2009-01-14 21:15:47.000000000 -0500
***************
*** 112,117 ****
--- 112,121 ----
;;
(require 'org)
+ (defcustom org-tag-blocked-depends t
+ "Whether to indicate blocked TODO items by a special tag."
+ :group 'org
+ :type 'bool)
(defun org-depend-trigger-todo (change-plist)
"Trigger new TODO entries after the current is switched to DONE.
***************
*** 191,197 ****
(from (plist-get change-plist :from))
(to (plist-get change-plist :to))
(org-log-done nil) ; IMPROTANT!: no logging during automatic trigger
! blocker blockers bl p1)
(catch 'return
(unless (eq type 'todo-state-change)
;; We are not handling this kind of change
--- 195,202 ----
(from (plist-get change-plist :from))
(to (plist-get change-plist :to))
(org-log-done nil) ; IMPROTANT!: no logging during automatic trigger
! blocker blockers bl p1
! (proceed-p
(catch 'return
(unless (eq type 'todo-state-change)
;; We are not handling this kind of change
***************
*** 234,239 ****
--- 239,251 ----
(throw 'return nil))))))
t ; return t to indicate that we are not blocking
)))
+ (when org-tag-blocked-depends
+ (org-toggle-tag "blocked"
+ (if proceed-p 'off 'on)))
+
+ proceed-p))
+
+
(add-hook 'org-trigger-hook 'org-depend-trigger-todo)
(add-hook 'org-blocker-hook 'org-depend-block-todo)
[end patch]