Hi,

Sébastien Vauban 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)))
>   signal(error (#("TODO state change from TODO to DONE blocked" 23 27 (face 
> org-todo) 31 35 (face org-done))))
>   error("TODO state change from %s to %s blocked" #("TODO" 0 4 (face 
> org-todo)) #("DONE" 0 4 (face org-done)))
>   (if (interactive-p) (error "TODO state change from %s to %s blocked" this 
> state) (message "TODO state change from %s to %s blocked" this state) (throw 
> (quote exit) nil))
>   (if (save-excursion (save-match-data ...)) nil (if (interactive-p) (error 
> "TODO state change from %s to %s blocked" this state) (message "TODO state 
> change from %s to %s blocked" this state) (throw ... nil)))
>   (unless (save-excursion (save-match-data ...)) (if (interactive-p) (error 
> "TODO state change from %s to %s blocked" this state) (message "TODO state 
> change from %s to %s blocked" this state) (throw ... nil)))
>   (progn (setq org-last-todo-state-is-todo (not ...)) (unless (save-excursion 
> ...) (if ... ... ... ...)))
>   (if org-blocker-hook (progn (setq org-last-todo-state-is-todo ...) (unless 
> ... ...)))
>   (when org-blocker-hook (setq org-last-todo-state-is-todo (not ...)) (unless 
> (save-excursion ...) (if ... ... ... ...)))
>   (let* ((match-data ...) (startpos ...) (logging ...) (org-log-done 
> org-log-done) (org-log-repeat org-log-repeat) (org-todo-log-states 
> org-todo-log-states) (this ...) (hl-pos ...) (head ...) (ass ...) (interpret 
> ...) (done-word ...) (final-done-word ...) (last-state ...) 
> (completion-ignore-case t) (member ...) (tail ...) (state ...) (state ...) 
> (next ...) (change-plist ...) dolog now-done-p) (when org-blocker-hook (setq 
> org-last-todo-state-is-todo ...) (unless ... ...)) (store-match-data 
> match-data) (replace-match next t t) (unless (pos-visible-in-window-p hl-pos) 
> (message "TODO state changed to %s" ...)) (unless head (setq head ... ass ... 
> interpret ... done-word ... final-done-word ...)) (when (memq arg ...) 
> (message "Keyword-Set %d/%d: %s" ... ... ...)) (setq 
> org-last-todo-state-is-todo (not ...)) (setq now-done-p (and ... ...)) (and 
> logging (org-local-logging logging)) (when (and ... ... ...) (setq dolog ...) 
> (if ... ...) (when ... ...) (when ... ... ...) (when ... ...)) 
> (org-todo-trigger-tag-changes state) (and org-auto-align-tags (not 
> org-setting-tags) (org-set-tags nil t)) (when org-provide-todo-statistics 
> (org-update-parent-todo-statistics)) (run-hooks (quote 
> org-after-todo-state-change-hook)) (if (and arg ...) (setq head ...)) 
> (put-text-property (point-at-bol) (point-at-eol) (quote org-todo-head) head) 
> (when now-done-p (when ... ...) (org-auto-repeat-maybe state)) (if (and ... 
> ... ... ...) (progn ... ...)) (when org-trigger-hook (save-excursion ...)))
>   (catch (quote exit) (org-back-to-heading t) (if (looking-at outline-regexp) 
> (goto-char ...)) (or (looking-at ...) (looking-at " *")) (let* (... ... ... 
> ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... dolog 
> now-done-p) (when org-blocker-hook ... ...) (store-match-data match-data) 
> (replace-match next t t) (unless ... ...) (unless head ...) (when ... ...) 
> (setq org-last-todo-state-is-todo ...) (setq now-done-p ...) (and logging 
> ...) (when ... ... ... ... ... ...) (org-todo-trigger-tag-changes state) (and 
> org-auto-align-tags ... ...) (when org-provide-todo-statistics ...) 
> (run-hooks ...) (if ... ...) (put-text-property ... ... ... head) (when 
> now-done-p ... ...) (if ... ...) (when org-trigger-hook ...)))
>   (save-excursion (catch (quote exit) (org-back-to-heading t) (if ... ...) 
> (or ... ...) (let* ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
> ... ... ... ... ... ...)))
>   (let ((org-blocker-hook org-blocker-hook) (case-fold-search nil)) (when 
> (equal arg ...) (setq arg nil org-blocker-hook nil)) (when (and 
> org-blocker-hook ...) (setq org-blocker-hook nil)) (save-excursion (catch ... 
> ... ... ... ...)))
>   org-todo(nil)
>   call-interactively(org-todo)
>   (cond ((commandp org-speed-command) (setq this-command org-speed-command) 
> (call-interactively org-speed-command)) ((functionp org-speed-command) 
> (funcall org-speed-command)) ((and org-speed-command ...) (eval 
> org-speed-command)) (t (let ... ...)))
>   (cond ((and org-use-speed-commands ...) (cond ... ... ... ...)) ((and ... 
> ... ... ...) (let ... ... ... ... ...)) (t (setq org-table-may-need-update t) 
> (self-insert-command N) (org-fix-tags-on-the-fly) (if 
> org-self-insert-cluster-for-undo ...)))
>   org-self-insert-command(1)
>   call-interactively(org-self-insert-command nil nil)
>
> I absolutely don't understand which conditions are met for provoking that
> strange reaction.
>
> Taking that leaf and putting it in a blanco Org file allows me to do the state
> change. So, it's not related to the headline itself.

Weird discovery: in the "full" document, the state change is blocked. But, the
state change works if I narrow the buffer on that leaf subtree...

> Anybody having an idea, or able to suggest some more tests to do, based on the
> above input?

Best regards,
  Seb

-- 
Sébastien Vauban


_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

Reply via email to