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)
This commit is contained in:
parent
1bf6d0759d
commit
ea7f9ebfda
2 changed files with 52 additions and 34 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -333,40 +333,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)))
|
||||
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 @@ 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
|
||||
|
|
Loading…
Add table
Reference in a new issue