Mercurial > emacs
diff lisp/calendar/diary-lib.el @ 60321:efcf9ada3122
(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.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Tue, 01 Mar 2005 10:23:58 +0000 |
parents | 6f85d024a41d |
children | 4358de407410 e4694597cbf4 |
line wrap: on
line diff
--- 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 <reingold@cs.uiuc.edu> @@ -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))