diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 69e44e8a8..49288c464 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -1999,16 +1999,13 @@ and is only done if the variable `org-clock-out-when-done' is not nil." (or (buffer-base-buffer (current-buffer)) (current-buffer))) (< (point) org-clock-marker) - (> (save-excursion (outline-next-heading) (point)) + (> (org-with-wide-buffer (org-entry-end-position)) org-clock-marker)) ;; Clock out, but don't accept a logging message for this. (let ((org-log-note-clock-out nil) (org-clock-out-switch-to-state nil)) (org-clock-out)))) -(add-hook 'org-after-todo-state-change-hook - 'org-clock-out-if-current) - ;;;###autoload (defun org-clock-get-clocktable (&rest props) "Get a formatted clocktable with parameters according to PROPS. diff --git a/lisp/org.el b/lisp/org.el index 24f526640..ecfe6d9b2 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -132,6 +132,7 @@ Stars are put in group 1 and the trimmed body in group 2.") (declare-function org-clock-in "org-clock" (&optional select start-time)) (declare-function org-clock-in-last "org-clock" (&optional arg)) (declare-function org-clock-out "org-clock" (&optional switch-to-state fail-quietly at-time)) +(declare-function org-clock-out-if-current "org-clock" ()) (declare-function org-clock-remove-overlays "org-clock" (&optional beg end noremove)) (declare-function org-clock-report "org-clock" (&optional arg)) (declare-function org-clock-sum "org-clock" (&optional tstart tend headline-filter propname)) @@ -12147,6 +12148,7 @@ When called through ELisp, arg is also interpreted in the following way: (when org-auto-align-tags (org-align-tags)) (when org-provide-todo-statistics (org-update-parent-todo-statistics)) + (org-clock-out-if-current) (run-hooks 'org-after-todo-state-change-hook) (when (and arg (not (member org-state org-done-keywords))) (setq head (org-get-todo-sequence-head org-state)))