diff --git a/lisp/org.el b/lisp/org.el index d2890844b..66626e0e1 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -9051,14 +9051,6 @@ A non-nil value for INTERACTIVE? is used to signal that this function is being called interactively." (interactive (list current-prefix-arg nil nil nil nil t)) (let ((case-func (if with-case 'identity 'downcase)) - (cmstr - ;; The clock marker is lost when using `sort-subr', let's - ;; store the clocking string. - (when (equal (marker-buffer org-clock-marker) (current-buffer)) - (save-excursion - (goto-char org-clock-marker) - (buffer-substring-no-properties (line-beginning-position) - (point))))) start beg end stars re re2 txt what tmp) ;; Find beginning and end of region to sort @@ -9140,9 +9132,20 @@ function is being called interactively." (save-restriction (narrow-to-region start end) - (let ((dcst (downcase sorting-type)) + (let ((restore-clock? + ;; The clock marker is lost when using `sort-subr'; let's + ;; mark the clock with a temporary + ;; `org-clock-marker-backup' text property. + (when (and (eq (org-clocking-buffer) (current-buffer)) + (<= start (marker-position org-clock-marker)) + (>= end (marker-position org-clock-marker))) + (org-with-silent-modifications + (put-text-property (1- org-clock-marker) org-clock-marker + 'org-clock-marker-backup t)) + t)) + (dcst (downcase sorting-type)) (case-fold-search nil) - (now (current-time))) + (now (current-time))) (sort-subr (/= dcst sorting-type) ;; This function moves to the beginning character of the "record" to @@ -9224,14 +9227,14 @@ function is being called interactively." (concat "Function for comparing keys " "(empty for default `sort-subr' predicate): ") 'allow-empty)))) - ((member dcst '(?p ?t ?s ?d ?c ?k)) '<))))) + ((member dcst '(?p ?t ?s ?d ?c ?k)) '<))) + (when restore-clock? + (move-marker org-clock-marker + (1+ (next-single-property-change + start 'org-clock-marker-backup))) + (remove-text-properties (1- org-clock-marker) org-clock-marker + '(org-clock-marker-backup t))))) (run-hooks 'org-after-sorting-entries-or-items-hook) - ;; Reset the clock marker if needed - (when cmstr - (save-excursion - (goto-char start) - (search-forward cmstr nil t) - (move-marker org-clock-marker (point)))) (message "Sorting entries...done"))) ;;; The orgstruct minor mode