changeset 110352:7c4d14415111

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.
author Glenn Morris <rgm@gnu.org>
date Tue, 14 Sep 2010 00:15:06 -0700
parents 061976c19319
children 5f841657c901
files lisp/ChangeLog lisp/calendar/appt.el lisp/calendar/diary-lib.el
diffstat 3 files changed, 25 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Sep 12 13:46:57 2010 -0400
+++ b/lisp/ChangeLog	Tue Sep 14 00:15:06 2010 -0700
@@ -1,3 +1,11 @@
+2010-09-14  Glenn Morris  <rgm@gnu.org>
+
+	* 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  <david.reitter@gmail.com>
 
 	* simple.el (line-move-visual): Do not truncate goal column to
--- a/lisp/calendar/appt.el	Sun Sep 12 13:46:57 2010 -0400
+++ b/lisp/calendar/appt.el	Tue Sep 14 00:15:06 2010 -0700
@@ -345,6 +345,8 @@
                           (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 @@
 
 (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)))
--- a/lisp/calendar/diary-lib.el	Sun Sep 12 13:46:57 2010 -0400
+++ b/lisp/calendar/diary-lib.el	Tue Sep 14 00:15:06 2010 -0700
@@ -699,6 +699,10 @@
              (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 @@
            (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 @@
     (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)