Mercurial > emacs
changeset 110520:ec3a9ffbd128
appt.el fixes for bug#7019.
* lisp/calendar/appt.el (appt-check): If not displaying the diary,
use (diary 1) to only get the entries we need.
(appt-make-list): Sort diary-list-entries, if we cannot guarantee
that it is in day order. (Bug#7019)
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Tue, 14 Sep 2010 19:55:44 -0700 |
parents | d649dba1ba8d |
children | 1cdff3b101d6 |
files | lisp/ChangeLog lisp/calendar/appt.el |
diffstat | 2 files changed, 52 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Sep 14 19:46:00 2010 -0700 +++ b/lisp/ChangeLog Tue Sep 14 19:55:44 2010 -0700 @@ -1,5 +1,10 @@ 2010-09-15 Glenn Morris <rgm@gnu.org> + * calendar/appt.el (appt-check): If not displaying the diary, + use (diary 1) to only get the entries we need. + (appt-make-list): Sort diary-list-entries, if we cannot guarantee + that it is in day order. (Bug#7019) + * calendar/appt.el (appt-check): Rather than showing the diary, just turn off invisible display, and only if needed.
--- a/lisp/calendar/appt.el Tue Sep 14 19:46:00 2010 -0700 +++ b/lisp/calendar/appt.el Tue Sep 14 19:55:44 2010 -0700 @@ -333,40 +333,42 @@ (if (or force ; eg initialize, diary save (null appt-prev-comp-time) ; first check (< cur-comp-time appt-prev-comp-time)) ; new day - (condition-case nil - (if appt-display-diary - (let ((diary-hook - (if (assoc 'appt-make-list diary-hook) - diary-hook - (cons 'appt-make-list diary-hook)))) - (diary)) - (let* ((diary-display-function 'appt-make-list) - (d-buff (find-buffer-visiting diary-file)) - (selective - (if d-buff ; diary buffer exists - (with-current-buffer d-buff - diary-selective-display))) - d-buff2) - ;; FIXME why not using diary-list-entries with - ;; non-nil LIST-ONLY? - (diary) - ;; If the diary buffer existed before this command, - ;; restore its display state. Otherwise, kill it. - (and (setq d-buff2 (find-buffer-visiting diary-file)) - (if d-buff - (or selective - (with-current-buffer d-buff2 - (if diary-selective-display - ;; diary-show-all-entries displays - ;; the diary buffer. - (diary-unhide-everything)))) - ;; FIXME does not kill any included diary files. - ;; The real issue is that (diary) should not - ;; have the side effect of visiting all the - ;; diary files. It is not really appt.el's job to - ;; clean up this mess... - (kill-buffer d-buff2))))) - (error nil))) + (ignore-errors + (if appt-display-diary + (let ((diary-hook + (if (assoc 'appt-make-list diary-hook) + diary-hook + (cons 'appt-make-list diary-hook)))) + (diary)) + (let* ((diary-display-function 'appt-make-list) + (d-buff (find-buffer-visiting diary-file)) + (selective + (if d-buff ; diary buffer exists + (with-current-buffer d-buff + diary-selective-display))) + d-buff2) + ;; Not displaying the diary, so we can ignore + ;; diary-number-of-entries. Since appt.el only + ;; works on a daily basis, no need for more entries. + ;; FIXME why not using diary-list-entries with + ;; non-nil LIST-ONLY? + (diary 1) + ;; If the diary buffer existed before this command, + ;; restore its display state. Otherwise, kill it. + (and (setq d-buff2 (find-buffer-visiting diary-file)) + (if d-buff + (or selective + (with-current-buffer d-buff2 + (if diary-selective-display + ;; diary-show-all-entries displays + ;; the diary buffer. + (diary-unhide-everything)))) + ;; FIXME does not kill any included diary files. + ;; The real issue is that (diary) should not + ;; have the side effect of visiting all the + ;; diary files. It is not really appt.el's job to + ;; clean up this mess... + (kill-buffer d-buff2))))))) (setq appt-prev-comp-time cur-comp-time appt-mode-string nil appt-display-count nil) @@ -582,6 +584,17 @@ (let ((entry-list diary-entries-list) (new-time-string "") time-string) + ;; Below, we assume diary-entries-list was in date + ;; order. It is, unless something on + ;; diary-list-entries-hook has changed it, eg + ;; diary-include-other-files (bug#7019). It must be + ;; in date order if number = 1. + (and diary-list-entries-hook + appt-display-diary + (not (eq diary-number-of-entries 1)) + (not (memq (car (last diary-list-entries-hook)) + '(diary-sort-entries sort-diary-entries))) + (setq entry-list (sort entry-list 'diary-entry-compare))) ;; Skip diary entries for dates before today. (while (and entry-list (calendar-date-compare