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))
(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))