# HG changeset patch # User Glenn Morris # Date 1174458299 0 # Node ID 5a2583d3a11b5c50e4417c65123af7b486ef2662 # Parent 6e19bdae1f0855c47cefcf1afc79aff5a085cf35 (diary-header-line-flag): Doc fix. Add custom :set function. (diary-header-line-format): Doc fix. (diary-set-maybe-redraw): New function. (number-of-diary-entries): Change :set to use diary-set-maybe-redraw. (diary-list-entries): Always run diary-mode. diff -r 6e19bdae1f08 -r 5a2583d3a11b lisp/calendar/diary-lib.el --- a/lisp/calendar/diary-lib.el Tue Mar 20 19:47:30 2007 +0000 +++ b/lisp/calendar/diary-lib.el Wed Mar 21 06:24:59 2007 +0000 @@ -267,10 +267,12 @@ ;; This can be removed once the kill/yank treatment of invisible text ;; (see etc/TODO) is fixed. -- gm (defcustom diary-header-line-flag t - "If non-nil, `diary-simple-display' will show a header line. + "If non-nil, `simple-diary-display' will show a header line. The format of the header is specified by `diary-header-line-format'." :group 'diary :type 'boolean + :initialize 'custom-initialize-default + :set 'diary-set-maybe-redraw :version "22.1") (defvar diary-selective-display nil) @@ -282,7 +284,7 @@ before edit/copy" "Diary")) ?\s (frame-width))) - "Format of the header line displayed by `diary-simple-display'. + "Format of the header line displayed by `simple-diary-display'. Only used if `diary-header-line-flag' is non-nil." :group 'diary :type 'sexp @@ -301,6 +303,17 @@ (with-current-buffer dbuff diary-selective-display)))))) +(defun diary-set-maybe-redraw (symbol value) + "Set SYMBOL's value to VALUE, and redraw the diary if necessary. +Redraws the diary if it is being displayed (note this is not the same as +just visiting the `diary-file'), and SYMBOL's value is to be changed." + (let ((oldvalue (eval symbol))) + (custom-set-default symbol value) + (and (not (equal value oldvalue)) + (diary-live-p) + ;; Note this assumes diary was called without prefix arg. + (diary)))) + (defcustom number-of-diary-entries 1 "Specifies how many days of diary entries are to be displayed initially. This variable affects the diary display when the command \\[diary] is used, @@ -328,14 +341,7 @@ (integer :tag "Friday") (integer :tag "Saturday"))) :initialize 'custom-initialize-default - ;; Redraw a live diary buffer if necessary. Note this assumes diary - ;; was not called with a prefix arg. - :set (lambda (symbol value) - (let ((oldvalue number-of-diary-entries)) - (custom-set-default symbol value) - (and (not (equal value oldvalue)) - (diary-live-p) - (diary)))) + :set 'diary-set-maybe-redraw :group 'diary) @@ -429,7 +435,10 @@ (or (verify-visited-file-modtime diary-buffer) (revert-buffer t t)))) ;; Setup things like the header-line-format and invisibility-spec. - (when (eq major-mode default-major-mode) (diary-mode)) + ;; This used to only run if the major-mode was default-major-mode, + ;; but that meant eg changes to header-line-format did not + ;; take effect from one diary invocation to the next. + (diary-mode) ;; d-s-p is passed to the diary display function. (let ((diary-saved-point (point))) (save-excursion