diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index ebd57201e..67df65a58 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -6001,24 +6001,26 @@ specification like [h]h:mm." (org-agenda--timestamp-to-absolute s base 'future (current-buffer) pos))))) (diff (- deadline current)) - (wdays - (cond - ;; The current item has a scheduled date, so - ;; evaluate its prewarning lead time. - ((integerp org-agenda-skip-deadline-prewarning-if-scheduled) - ;; Use global prewarning-restart lead time. - org-agenda-skip-deadline-prewarning-if-scheduled) - ((eq org-agenda-skip-deadline-prewarning-if-scheduled - 'pre-scheduled) - ;; Set pre-warning to no earlier than SCHEDULED. - (min (- deadline - (org-agenda--timestamp-to-absolute - (org-entry-get nil "SCHEDULED"))) - org-deadline-warning-days)) - ;; Set pre-warning to 0 - (org-agenda-skip-deadline-prewarning-if-scheduled 0) - ;; Set pre-warning to deadline. - (t (org-get-wdays s))))) + (suppress-prewarning + (let ((scheduled + (and org-agenda-skip-deadline-prewarning-if-scheduled + (org-entry-get nil "SCHEDULED")))) + (cond + ((not scheduled) nil) + ;; The current item has a scheduled date, so + ;; evaluate its prewarning lead time. + ((integerp org-agenda-skip-deadline-prewarning-if-scheduled) + ;; Use global prewarning-restart lead time. + org-agenda-skip-deadline-prewarning-if-scheduled) + ((eq org-agenda-skip-deadline-prewarning-if-scheduled + 'pre-scheduled) + ;; Set pre-warning to no earlier than SCHEDULED. + (min (- deadline + (org-agenda--timestamp-to-absolute scheduled)) + org-deadline-warning-days)) + ;; Set pre-warning to deadline. + (t 0)))) + (wdays (or suppress-prewarning (org-get-wdays s)))) (cond ;; Only display deadlines at their base date, at future ;; repeat occurrences or in today agenda.