summaryrefslogtreecommitdiff
path: root/lisp/calendar/appt.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2010-09-23 15:00:31 -0400
committerChong Yidong <cyd@stupidchicken.com>2010-09-23 15:00:31 -0400
commit266a86bd7fedf743225c2497956b73ecb2245196 (patch)
tree7d0c8b128070eac293ce2606acb4e55de5843ba8 /lisp/calendar/appt.el
parent29cdc13ed61e5a64ba30df1030029898a26b7947 (diff)
parentaf3ccb5cc061bccab1c9b024ea444d01c0767767 (diff)
downloademacs-266a86bd7fedf743225c2497956b73ecb2245196.tar.gz
Merge changes from emacs-23 branch
Diffstat (limited to 'lisp/calendar/appt.el')
-rw-r--r--lisp/calendar/appt.el71
1 files changed, 47 insertions, 24 deletions
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index ea419aee52d..18f7a36012f 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -334,30 +334,42 @@ displayed in a window:
(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))))
- ;; 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.
- (if d-buff
- ;; Displays the diary buffer.
- (or selective (diary-show-all-entries))
- (and (setq d-buff (find-buffer-visiting diary-file))
- (kill-buffer d-buff)))))
- (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)
@@ -573,6 +585,17 @@ appointment package (if it is not already active)."
(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