# HG changeset patch # User Glenn Morris # Date 1109672638 0 # Node ID efcf9ada312279971ddba6891c76401b77b74a85 # Parent c0317237105a760c8004620c8c958b1bc30beb80 (mark-diary-entries): Remove any old marks first. (diary-redraw-calendar): New function. (make-diary-entry): Add diary-redraw-calendar to local write-contents-functions. Turn off selective display before inserting in diary. diff -r c0317237105a -r efcf9ada3122 lisp/calendar/diary-lib.el --- a/lisp/calendar/diary-lib.el Tue Mar 01 10:15:32 2005 +0000 +++ b/lisp/calendar/diary-lib.el Tue Mar 01 10:23:58 2005 +0000 @@ -1,6 +1,6 @@ ;;; diary-lib.el --- diary functions -;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1995, 2003, 2004 +;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1995, 2003, 2004, 2005 ;; Free Software Foundation, Inc. ;; Author: Edward M. Reingold @@ -841,6 +841,10 @@ 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 mark-diary-entries-in-calendar + (setq mark-diary-entries-in-calendar nil) + (redraw-calendar)) (let ((marking-diary-entries t) file-glob-attrs marks) (save-excursion @@ -1647,11 +1651,26 @@ (append diary-entries-list (list (list date string specifier marker globcolor)))))) +(defun diary-redraw-calendar () + "If `calendar-buffer' is live and diary entries are marked, redraw it." + (and mark-diary-entries-in-calendar + (redraw-calendar)) + ;; Return value suitable for `write-contents-functions'. + nil) + (defun make-diary-entry (string &optional nonmarking file) "Insert a diary entry STRING which may be NONMARKING in FILE. -If omitted, NONMARKING defaults to nil and FILE defaults to `diary-file'." +If omitted, NONMARKING defaults to nil and FILE defaults to +`diary-file'. Adds `diary-redraw-calendar' to +`write-contents-functions' for FILE, so that the calendar will be +redrawn with the new entry marked, if necessary." (let ((pop-up-frames (window-dedicated-p (selected-window)))) (find-file-other-window (substitute-in-file-name (or file diary-file)))) + (add-hook 'write-contents-functions 'diary-redraw-calendar nil t) + (when selective-display + (subst-char-in-region (point-min) (point-max) ?\^M ?\n t) + (setq selective-display nil) + (kill-local-variable 'mode-line-format)) (widen) (goto-char (point-max)) (when (let ((case-fold-search t))