+2008-04-23 Glenn Morris <rgm@gnu.org>
+
+ * dframe.el (dframe-have-timer-flag): Drop support for Emacs without
+ timers. Doc fix.
+ (dframe-update-speed): Drop support for XEmacs < 20.
+ (dframe-frame-mode): Drop support for Emacs < 20.
+ (dframe-set-timer-internal): Drop support for Emacs without timers.
+ (dframe-popup-kludge): Use mouse-menu-major-mode-map if defined.
+
+ * ediff-init.el (ediff-check-version): Drop support for very old Emacs
+ versions. Add doc-string. Mark as obsolete.
+
+ * ps-def.el (ps-color-device): Drop support for XEmacs < 19.12.
+
+ * speedbar.el (speedbar-use-tool-tips-flag): Check for tooltip-mode,
+ rather than using an Emacs version test.
+
+ * tree-widget.el (tree-widget-image-enable): Use display-images-p
+ rather than an Emacs version test.
+
+ * calendar/cal-china.el (holiday-chinese-qingming)
+ (holiday-chinese-winter-solstice, holiday-chinese): New functions.
+ * calendar/calendar.el (calendar-chinese-all-holidays-flag): New.
+ * calendar/holidays.el (holiday-oriental-holidays): Add more holidays.
+
+ * calendar/cal-islam.el (holiday-islamic): Doc fix.
+
+ * calendar/calendar.el (calendar-other-dates): Add absolute date.
+
+ * calendar/diary-lib.el (diary-list-sexp-entries): Doc fix.
+ (diary-remind): Allow negative DAYS to represent a range 1:DAYS.
+ Suggested by Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>.
+
2008-04-23 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-previous-frame-address): Rename...
%%(diary-remind SEXP DAYS &optional MARKING) text
Entry is a reminder for diary sexp SEXP. DAYS is either a
single number or a list of numbers indicating the number(s)
- of days before the event that the warning(s) should occur. If
- the current date is (one of) DAYS before the event indicated
+ of days before the event that the warning(s) should occur.
+ A negative number -DAYS has the same meaning as a list (1 2 ... DAYS).
+ If the current date is (one of) DAYS before the event indicated
by EXPR, then a suitable message (as specified by
`diary-remind-message') appears. In addition to the
reminders beforehand, the diary entry also appears on the
(defun diary-remind (sexp days &optional marking)
"Provide a reminder of a diary entry.
-SEXP is a diary-sexp. DAYS is either a single number or a list of numbers
-indicating the number(s) of days before the event that the warning(s) should
-occur on. If the current date is (one of) DAYS before the event indicated by
-SEXP, then a suitable message (as specified by `diary-remind-message' is
-returned.
-
-In addition to the reminders beforehand, the diary entry also appears on the
-date itself.
-
-A `diary-nonmarking-symbol' at the beginning of the line of the `diary-remind'
-entry specifies that the diary entry (not the reminder) is non-marking.
-Marking of reminders is independent of whether the entry itself is a marking
-or nonmarking; if optional parameter MARKING is non-nil then the reminders are
-marked on the calendar."
+SEXP is a diary-sexp. DAYS is either a single number or a list
+of numbers indicating the number(s) of days before the event that
+the warning(s) should occur on. A negative number -DAYS has the
+same meaning as a list (1 2 ... DAYS). If the current date
+is (one of) DAYS before the event indicated by SEXP, then this function
+returns a suitable message (as specified by `diary-remind-message').
+
+In addition to the reminders beforehand, the diary entry also
+appears on the date itself.
+
+A `diary-nonmarking-symbol' at the beginning of the line of the
+`diary-remind' entry specifies that the diary entry (not the
+reminder) is non-marking. Marking of reminders is independent of
+whether the entry itself is a marking or nonmarking; if optional
+parameter MARKING is non-nil then the reminders are marked on the
+calendar."
;; `date' has a value at this point, from diary-sexp-entry.
+ ;; Convert a negative number to a list of days.
+ (and (integerp days)
+ (< days 0)
+ (setq days (number-sequence 1 (- days))))
(let ((diary-entry (eval sexp)))
(cond
;; Diary entry applies on date.