Function: nndiary-compute-reminders

nndiary-compute-reminders is a byte-compiled function defined in nndiary.el.gz.

Signature

(nndiary-compute-reminders DATE)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nndiary.el.gz
(defun nndiary-compute-reminders (date)
  ;; Returns a list of times corresponding to the reminders of date DATE.
  ;; See the comment in `nndiary-reminders' about rounding.
  (let* ((reminders nndiary-reminders)
	 (date-elts (decode-time date))
	 ;; ### NOTE: out-of-range values are accepted by encode-time. This
	 ;; makes our life easier.
	 (monday (- (decoded-time-day date-elts)
		    (if nndiary-week-starts-on-monday
			(if (zerop (decoded-time-weekday date-elts))
			    6
			  (- (decoded-time-weekday date-elts) 1))
		      (decoded-time-weekday date-elts))))
	 reminder res)
    ;; remove the DOW and DST entries
    (setcdr (nthcdr 5 date-elts) (nthcdr 8 date-elts))
    (while (setq reminder (pop reminders))
      (push
       (cond ((eq (cdr reminder) 'minute)
	      (time-subtract
	       (apply #'encode-time 0 (nthcdr 1 date-elts))
	       (* (car reminder) 60)))
	     ((eq (cdr reminder) 'hour)
	      (time-subtract
	       (apply #'encode-time 0 0 (nthcdr 2 date-elts))
	       (* (car reminder) 3600)))
	     ((eq (cdr reminder) 'day)
	      (time-subtract
	       (apply #'encode-time 0 0 0 (nthcdr 3 date-elts))
	       (* (car reminder) 86400)))
	     ((eq (cdr reminder) 'week)
	      (time-subtract
	       (apply #'encode-time 0 0 0 monday (nthcdr 4 date-elts))
	       (* (car reminder) 604800)))
	     ((eq (cdr reminder) 'month)
	      (time-subtract
	       (apply #'encode-time 0 0 0 1 (nthcdr 4 date-elts))
	       (* (car reminder) 18748800)))
	     ((eq (cdr reminder) 'year)
	      (time-subtract
	       (apply #'encode-time 0 0 0 1 1 (nthcdr 5 date-elts))
	       (* (car reminder) 400861056))))
       res))
    (sort res #'time-less-p)))