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 <bhavin7392@gmail.com>
Link: https://orgmode.org/list/CAOn=hbez7-4wFG2M1-MSHqAwvV0mysvLAUYP9_GK6mrSbtz3CQ@mail.gmail.com
This commit is contained in:
Ihor Radchenko 2024-04-10 11:49:55 +03:00
parent 85389da8cf
commit 129a18abf3
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
1 changed files with 13 additions and 8 deletions

View File

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