diff --git a/lisp/org.el b/lisp/org.el index 3ec5686b1..613249561 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -13317,9 +13317,11 @@ This function is run automatically after each state change to a DONE state." (when (eq org-log-repeat t) (setq org-log-repeat 'state)) (let ((to-state (or (org-entry-get nil "REPEAT_TO_STATE" 'selective) org-todo-repeat-to-state))) - (unless (and to-state (member to-state org-todo-keywords-1)) - (setq to-state (if (eq interpret 'type) org-last-state head))) - (org-todo to-state)) + (org-todo (cond ((and to-state (member to-state org-todo-keywords-1)) + to-state) + ((eq interpret 'type) org-last-state) + (head) + (t 'none)))) (when (or org-log-repeat (org-entry-get nil "CLOCK")) (org-entry-put nil "LAST_REPEAT" (format-time-string (org-time-stamp-format t t))))