emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Feature request and patch - blocked TODO to say BLOCKED


From: Carsten Dominik
Subject: Re: [Orgmode] Feature request and patch - blocked TODO to say BLOCKED
Date: Sat, 17 Jan 2009 09:01:35 +0100

Hi Tom,

thanks for the patch, I have applied it, with one change:
The variable is now called `org-depend-tag-blocked'.

Thanks!

- Carsten


On Jan 15, 2009, at 3:34 AM, Tom Breton (Tehom) wrote:

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]







reply via email to

[Prev in Thread] Current Thread [Next in Thread]