From 92b99a01de828c4bf81b465f1b1b2e9e06b0d96d Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 14 Sep 2010 00:15:06 -0700 Subject: [PATCH] Fix bug#6999. * lisp/calendar/diary-lib.el (diary-included-files): New variable. (diary-list-entries): Maybe initialize diary-included-files. (diary-include-other-diary-files): Append to diary-included-files. * lisp/calendar/appt.el (appt-update-list): Also check the members of diary-included-files. --- lisp/ChangeLog | 8 ++++++++ lisp/calendar/appt.el | 8 ++++++-- lisp/calendar/diary-lib.el | 12 +++++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8ac5a4a4351..103d6406629 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2010-09-14 Glenn Morris + + * calendar/diary-lib.el (diary-included-files): New variable. + (diary-list-entries): Maybe initialize diary-included-files. + (diary-include-other-diary-files): Append to diary-included-files. + * calendar/appt.el (appt-update-list): Also check the members of + diary-included-files. (Bug#6999) + 2010-09-12 David Reitter * simple.el (line-move-visual): Do not truncate goal column to diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el index 7fcaab9da34..08184922e79 100644 --- a/lisp/calendar/appt.el +++ b/lisp/calendar/appt.el @@ -345,6 +345,8 @@ displayed in a window: (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. @@ -642,8 +644,10 @@ hour and minute parts." (defun appt-update-list () "If the current buffer is visiting the diary, update appointments. -This function is intended for use with `write-file-functions'." - (and (string-equal buffer-file-name (expand-file-name diary-file)) +This function also acts on any file listed in `diary-included-files'. +It is intended for use with `write-file-functions'." + (and (member buffer-file-name (append diary-included-files + (list (expand-file-name diary-file)))) appt-timer (let ((appt-display-diary nil)) (appt-check t))) diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 39354bd31e3..83b49e91e76 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -699,6 +699,10 @@ of the appropriate type." (1+ (calendar-absolute-from-gregorian gdate)))))) (goto-char (point-min))) +(defvar diary-including) ; dynamically bound in diary-include-other-diary-files +(defvar diary-included-files nil + "List of any diary files included in the last call to `diary-list-entries'.") + ;; FIXME non-greg and list hooks run same number of times? (defun diary-list-entries (date number &optional list-only) "Create and display a buffer containing the relevant lines in `diary-file'. @@ -743,6 +747,8 @@ LIST-ONLY is non-nil, in which case it just returns the list." (date-string (calendar-date-string date)) (diary-buffer (find-buffer-visiting diary-file)) diary-entries-list file-glob-attrs) + (or (bound-and-true-p diary-including) + (setq diary-included-files nil)) (message "Preparing diary...") (save-current-buffer (if (not diary-buffer) @@ -828,11 +834,15 @@ the variable `diary-include-string'." (let ((diary-file (match-string-no-properties 1)) (diary-list-entries-hook 'diary-include-other-diary-files) (diary-display-function 'ignore) + (diary-including t) diary-hook diary-list-include-blanks) (if (file-exists-p diary-file) (if (file-readable-p diary-file) (unwind-protect - (setq diary-entries-list + (setq diary-included-files + (append diary-included-files + (list (expand-file-name diary-file))) + diary-entries-list (append diary-entries-list (diary-list-entries original-date number))) (with-current-buffer (find-buffer-visiting diary-file) -- 2.39.2