[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Fix org-agenda-skip-scheduled-if-deadline-is-shown bug
From: |
Morgan Smith |
Subject: |
[PATCH] Fix org-agenda-skip-scheduled-if-deadline-is-shown bug |
Date: |
Sat, 30 Dec 2023 15:45:47 -0500 |
lisp/org-agenda.el (org-agenda-get-scheduled): Consolidate deadline
fetching code. Don't check if deadline is shown when
'org-agenda-skip-scheduled-if-deadline-is-shown' has a value of
'repeated-after-deadline'.
Currently when 'org-agenda-skip-scheduled-if-deadline-is-shown' has a
value of 'repeated-after-deadline' then there is no effect. This is
because when 'org-agenda-get-scheduled' is run on later dates, the
previous deadlines are not put in 'deadline-pos'.
---
lisp/org-agenda.el | 49 +++++++++++++++++++++++-----------------------
1 file changed, 24 insertions(+), 25 deletions(-)
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index a1b2f3dc4..df1e8cb7d 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -6606,25 +6606,26 @@ scheduled items with an hour specification like
[h]h:mm."
(futureschedp (> schedule today))
(habitp (and (fboundp 'org-is-habit-p)
(string= "habit" (org-element-property :STYLE
el))))
+ (deadline (and (or
org-agenda-skip-scheduled-delay-if-deadline
+
org-agenda-skip-scheduled-if-deadline-is-shown)
+ (when-let ((timestamp (org-element-property
:deadline el)))
+ (time-to-days
+ (org-timestamp-to-time
+ timestamp)))))
(suppress-delay
- (let ((deadline (and
org-agenda-skip-scheduled-delay-if-deadline
- (org-element-property
- :raw-value
- (org-element-property :deadline
el)))))
- (cond
- ((not deadline) nil)
- ;; The current item has a deadline date, so
- ;; evaluate its delay time.
- ((integerp org-agenda-skip-scheduled-delay-if-deadline)
- ;; Use global delay time.
- (- org-agenda-skip-scheduled-delay-if-deadline))
- ((eq org-agenda-skip-scheduled-delay-if-deadline
- 'post-deadline)
- ;; Set delay to no later than DEADLINE.
- (min (- schedule
- (org-agenda--timestamp-to-absolute deadline))
- org-scheduled-delay-days))
- (t 0))))
+ (cond
+ ((not (and deadline
org-agenda-skip-scheduled-delay-if-deadline)) nil)
+ ;; The current item has a deadline date, so
+ ;; evaluate its delay time.
+ ((integerp org-agenda-skip-scheduled-delay-if-deadline)
+ ;; Use global delay time.
+ (- org-agenda-skip-scheduled-delay-if-deadline))
+ ((eq org-agenda-skip-scheduled-delay-if-deadline
+ 'post-deadline)
+ ;; Set delay to no later than DEADLINE.
+ (min (- schedule deadline)
+ org-scheduled-delay-days))
+ (t 0)))
(ddays
(cond
;; Nullify delay when a repeater triggered already
@@ -6661,16 +6662,14 @@ scheduled items with an hour specification like
[h]h:mm."
;; doesn't apply to habits.
(when (pcase org-agenda-skip-scheduled-if-deadline-is-shown
((guard
- (or (not (memq (line-beginning-position 0) deadline-pos))
+ (or (not deadline)
habitp))
nil)
(`repeated-after-deadline
- (let ((deadline (time-to-days
- (when (org-element-property :deadline
el)
- (org-time-string-to-time
- (org-element-interpret-data
- (org-element-property :deadline
el)))))))
- (and (<= schedule deadline) (> current deadline))))
+ (and (<= schedule deadline) (> current deadline)))
+ ((guard
+ (not (memq (line-beginning-position 0) deadline-pos)))
+ nil)
(`not-today pastschedp)
(`t t)
(_ nil))
--
2.41.0
- [PATCH] Fix org-agenda-skip-scheduled-if-deadline-is-shown bug,
Morgan Smith <=