emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org d71bb04f78 2/2: Merge branch 'bugfix'


From: ELPA Syncer
Subject: [elpa] externals/org d71bb04f78 2/2: Merge branch 'bugfix'
Date: Fri, 13 Jan 2023 04:58:00 -0500 (EST)

branch: externals/org
commit d71bb04f780c28cfbe2d6bf93f6559856e6b99a2
Merge: 76f9a3c2cb 97a235cf1c
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>

    Merge branch 'bugfix'
---
 lisp/org-clock.el | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index 414b667895..0cd473209e 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -1801,17 +1801,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 ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]