changeset 76639:5a2583d3a11b

(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.
author Glenn Morris <rgm@gnu.org>
date Wed, 21 Mar 2007 06:24:59 +0000
parents 6e19bdae1f08
children 1e01809a040c
files lisp/calendar/diary-lib.el
diffstat 1 files changed, 20 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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