Hi Bastien, Sébastien Vauban wrote: > Bastien wrote: >>>> I've a really weird exception occurring: change state from TODO to DONE is >>>> blocked... while I'm on a leaf of the Org tree!? >>>> >>>> Debugger entered--Lisp error: (error #("TODO state change from TODO to >>>> DONE blocked" 23 27 (face org-todo) 31 35 (face org-done))) >> >> Are you using `org-blocker-hook' or `org-trigger-hook'? >> >> Let us know. > > Though, hopping from one variable description to another, I remembered that I > had set the variable =org-enforce-todo-dependencies= to =t=. Trying to set it > to =nil= made the problem disappear... So, it was a bit narrowed. > > I could see in the description of that var that it could block state change if > tasks were ordered and a previous one not done. But I never use the ordered > property. > > ... Well, never, but well in that parent tree. Was it for test purpose? Did I > have something else in mind? I dunno anymore, but that property was > definitely the culprit. > > Doing so, I'm wondering: > > - if the output message could be updated to make it clear what the reason is, > or can be?
diff --git a/lisp/org.el b/lisp/org.el index 3a07cfd..fb60bc6 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -10927,7 +10927,10 @@ For calling through lisp, arg is also interpreted in the following way: (run-hook-with-args-until-failure 'org-blocker-hook change-plist))) (if (interactive-p) - (error "TODO state change from %s to %s blocked" this state) + (error (concat "TODO state change from %s to %s blocked " + "(because of undone child, or " + "parent with ORDERED property and undone prior sibling)") + this state) ;; fail silently (message "TODO state change from %s to %s blocked" this state) (throw 'exit nil)))) Best regards, Seb -- Sébastien Vauban