forked from mirrors/org-mode
org-clock-timestamps-change: Preserve point position
* lisp/org-clock.el (org-clock-timestamps-change): Try harder to preserve point position. `save-excursion' is not sufficient here, when the timestamp gets deleted in the process. Reported-by: Johannes Dahl <muusik@gmail.com> Link: https://orgmode.org/list/CAHuokSbJxM4kqjdT94aHmjnKqzOvpJpq3tJqOEqdswaBC=JnfA@mail.gmail.com
This commit is contained in:
parent
cd967ce006
commit
97a235cf1c
|
@ -1800,17 +1800,25 @@ Optional argument N tells to change by that many units."
|
|||
(time-subtract
|
||||
(org-time-string-to-time org-last-changed-timestamp)
|
||||
(org-time-string-to-time ts)))
|
||||
(save-excursion
|
||||
(goto-char begts)
|
||||
(org-timestamp-change
|
||||
(round (/ (float-time tdiff)
|
||||
(pcase timestamp?
|
||||
(`minute 60)
|
||||
(`hour 3600)
|
||||
(`day (* 24 3600))
|
||||
(`month (* 24 3600 31))
|
||||
(`year (* 24 3600 365.2)))))
|
||||
timestamp? 'updown)))))))
|
||||
;; `save-excursion' won't work because
|
||||
;; `org-timestamp-change' deletes and re-inserts the
|
||||
;; timestamp.
|
||||
(let ((origin (point)))
|
||||
(save-excursion
|
||||
(goto-char begts)
|
||||
(org-timestamp-change
|
||||
(round (/ (float-time tdiff)
|
||||
(pcase timestamp?
|
||||
(`minute 60)
|
||||
(`hour 3600)
|
||||
(`day (* 24 3600))
|
||||
(`month (* 24 3600 31))
|
||||
(`year (* 24 3600 365.2)))))
|
||||
timestamp? 'updown))
|
||||
;; Move back to initial position, but never beyond updated
|
||||
;; clock.
|
||||
(unless (< (point) origin)
|
||||
(goto-char origin))))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-clock-cancel ()
|
||||
|
|
Loading…
Reference in New Issue