branch: externals/org
commit 129a18abf32f6de085623a572679a5a6c96a5cdd
Author: Ihor Radchenko <[email protected]>
Commit: Ihor Radchenko <[email protected]>

    org-timer-set-timer: Fix when called from agenda buffer
    
    * lisp/org-timer.el (org-timer-set-timer): Get effort minutes from
    agenda entry line when in agenda buffer.
    
    Reported-by: Bhavin Gandhi <[email protected]>
    Link: 
https://orgmode.org/list/CAOn=hbez7-4wfg2m1-mshqawvv0mysvlauyp9_gk6mrsbtz...@mail.gmail.com
---
 lisp/org-timer.el | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/lisp/org-timer.el b/lisp/org-timer.el
index 8bb8be7be0..7a1d2f4d23 100644
--- a/lisp/org-timer.el
+++ b/lisp/org-timer.el
@@ -420,13 +420,18 @@ using three \\[universal-argument] prefix arguments."
             (not org-timer-countdown-timer))
     (user-error "Relative timer is running.  Stop first"))
   (let* ((default-timer
-          ;; `org-timer-default-timer' used to be a number, don't choke:
-          (if (numberp org-timer-default-timer)
-              (number-to-string org-timer-default-timer)
-            org-timer-default-timer))
-        (effort-minutes (let ((effort (org-entry-get nil org-effort-property)))
-                          (when (org-string-nw-p effort)
-                            (floor (org-duration-to-minutes effort)))))
+         ;; `org-timer-default-timer' used to be a number, don't choke:
+         (if (numberp org-timer-default-timer)
+             (number-to-string org-timer-default-timer)
+           org-timer-default-timer))
+        (effort-minutes
+          (cond ((derived-mode-p 'org-agenda-mode)
+                 (org-get-at-bol 'effort-minutes))
+                ((derived-mode-p 'org-mode)
+                 (let ((effort (org-entry-get nil org-effort-property)))
+                  (when (org-string-nw-p effort)
+                    (floor (org-duration-to-minutes effort)))))
+                (t nil)))
         (minutes (or (and (numberp opt) (number-to-string opt))
                      (and (not (equal opt '(64)))
                           effort-minutes
@@ -443,7 +448,7 @@ using three \\[universal-argument] prefix arguments."
       (let ((secs (org-timer-hms-to-secs (org-timer-fix-incomplete minutes))))
        (if (and org-timer-countdown-timer
                 (not (or (equal opt '(16))
-                         (y-or-n-p "Replace current timer? "))))
+                       (y-or-n-p "Replace current timer? "))))
            (message "No timer set")
          (when (timerp org-timer-countdown-timer)
            (cancel-timer org-timer-countdown-timer))

Reply via email to