Fix bug#6999.
authorGlenn Morris <rgm@gnu.org>
Tue, 14 Sep 2010 07:15:06 +0000 (00:15 -0700)
committerGlenn Morris <rgm@gnu.org>
Tue, 14 Sep 2010 07:15:06 +0000 (00:15 -0700)
* 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
lisp/calendar/appt.el
lisp/calendar/diary-lib.el

index 8ac5a4a..103d640 100644 (file)
@@ -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
index 7fcaab9..0818492 100644 (file)
@@ -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)))
index 39354bd..83b49e9 100644 (file)
@@ -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)