changeset 60650:5294e5833aef

(mark-diary-entries): Use new optional argument REDRAW rather than calendar-redrawing variable. From Matt Hodges <MPHodges@member.fsf.org>: (diary-redraw-calendar): Preserve point in diary-file buffer.
author Glenn Morris <rgm@gnu.org>
date Wed, 16 Mar 2005 13:23:55 +0000
parents 3a754b1548d3
children de22fdff5bad
files lisp/calendar/diary-lib.el
diffstat 1 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calendar/diary-lib.el	Wed Mar 16 13:23:09 2005 +0000
+++ b/lisp/calendar/diary-lib.el	Wed Mar 16 13:23:55 2005 +0000
@@ -835,21 +835,23 @@
 (defvar marking-diary-entry nil
   "True during the marking of diary entries, if current entry is marking.")
 
-(defun mark-diary-entries ()
+(defun mark-diary-entries (&optional redraw)
   "Mark days in the calendar window that have diary entries.
-Each entry in the diary file visible in the calendar window is marked.
-After the entries are marked, the hooks `nongregorian-diary-marking-hook' and
-`mark-diary-entries-hook' are run."
-  (interactive)
-  ;; To remove any deleted diary entries.
-  (when (and mark-diary-entries-in-calendar
-             ;; Avoid redrawing when called recursively, eg through
-             ;; mark-diary-entries-hook for #include's, else only get
-             ;; the last set of diary marks.
-             (not marking-diary-entries)
-             ;; If called from redraw-calendar, the calendar has been
-             ;; erased, so no need to unmark the diary entries.
-             (not calendar-redrawing))
+Each entry in the diary file visible in the calendar window is
+marked.  After the entries are marked, the hooks
+`nongregorian-diary-marking-hook' and `mark-diary-entries-hook'
+are run.  If the optional argument REDRAW is non-nil (which is
+the case interactively, for example) then any existing diary
+marks are first removed. This is intended to deal with deleted
+diary entries."
+  (interactive "p")
+  ;; To remove any deleted diary entries. Do not redraw when:
+  ;; i) processing #include diary files (else only get the marks from
+  ;; the last #include file processed).
+  ;; ii) called via calendar-redraw (since calendar has already been
+  ;; erased).
+  ;; Use of REDRAW handles both of these cases.
+  (when (and redraw mark-diary-entries-in-calendar)
     (setq mark-diary-entries-in-calendar nil)
     (redraw-calendar))
   (let ((marking-diary-entries t)
@@ -1661,7 +1663,8 @@
 (defun diary-redraw-calendar ()
   "If `calendar-buffer' is live and diary entries are marked, redraw it."
   (and mark-diary-entries-in-calendar
-       (redraw-calendar))
+       (save-excursion
+         (redraw-calendar)))
   ;; Return value suitable for `write-contents-functions'.
   nil)