I have a task with multiple subitems in different states, and I would like to have a binding to switch the task and all its subtasks to the same state (DONE). I know that I can ignore state blocking, but that isn't what I want.

Do I have to iterate over all the subtasks for that, and if so how?

1 Answer 1


I adapted the function from this answer to a similar question, which works fantastically and even respects selections :)

(defun org-todo-region ()
  (let ((scope (if mark-active 'region 'tree))
        (state (org-fast-todo-selection))
        (org-enforce-todo-dependencies nil))
    (org-map-entries (lambda () (org-todo state)) nil scope)))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.