changeset 95410:d933144b818e

(diary-display-function): New name for diary-display-hook. Keep old name as obsolete alias. Doc fix. Change custom type and version. (diary-list-entries-hook, diary-list-entries, diary-simple-display) (diary-fancy-display): Doc fixes. (diary-list-entries, diary-include-other-diary-files, diary-mail-entries): Use diary-display-function rather than diary-display-hook.
author Glenn Morris <rgm@gnu.org>
date Fri, 30 May 2008 02:57:27 +0000
parents 9e040b6f6a8f
children 7a388916f4ae
files lisp/calendar/diary-lib.el
diffstat 1 files changed, 44 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calendar/diary-lib.el	Fri May 30 02:56:59 2008 +0000
+++ b/lisp/calendar/diary-lib.el	Fri May 30 02:57:27 2008 +0000
@@ -148,33 +148,33 @@
   :type 'hook
   :group 'diary)
 
-(defcustom diary-display-hook nil
-  "List of functions that handle the display of the diary.
-If nil (the default), `diary-simple-display' is used.  Use
-`ignore' for no diary display.
+(define-obsolete-variable-alias 'diary-display-hook 'diary-display-function
+  "23.1")
+
+(defcustom diary-display-function 'diary-simple-display
+  "Function used to display the diary.
+The default is `diary-simple-display'; `diary-fancy-display' is
+an alternative.
 
-Ordinarily, this just displays the diary buffer (with holidays
-indicated in the mode line), if there are any relevant entries.
-At the time these functions are called, the variable
-`diary-entries-list' is a list, in order by date, of all relevant
-diary entries in the form of ((MONTH DAY YEAR) STRING), where
-string is the diary entry for the given date.  This can be used,
-for example, a different buffer for display (perhaps combined
-with holidays), or produce hard copy output.
+For historical reasons, `nil' is the same as `diary-simple-display'
+\(so you must use `ignore' for no display).  Also for historical
+reasons, this variable can be a list of functions to run.  These
+uses are not recommended and may be removed at some point.
 
-A function `diary-fancy-display' is provided for use with this
-hook; this function prepares a special noneditable diary buffer
-with the relevant diary entries that has neat day-by-day
-arrangement with headings.  The fancy diary buffer will show the
-holidays unless the variable `diary-show-holidays-flag' is set to
-nil.  Ordinarily, the fancy diary buffer will not show days for
-which there are no diary entries, even if that day is a holiday;
-if you want such days to be shown in the fancy diary buffer, set
-the variable `diary-list-include-blanks' non-nil."
-  :type 'hook
-  :options '(diary-fancy-display)
+When this function is called, the variable `diary-entries-list'
+is a list, in order by date, of all relevant diary entries in the
+form of ((MONTH DAY YEAR) STRING), where string is the diary
+entry for the given date.  This can be used, for example, to
+produce a different buffer for display (perhaps combined with
+holidays), or hard copy output."
+  :type '(choice (const diary-simple-display :tag "Basic display")
+                 (const diary-fancy-display :tag "Fancy display")
+                 (const ignore :tag "No display")
+                 (const nil :tag "Obsolete way to choose basic display")
+                 (hook :tag "Obsolete form with list of display functions"))
   :initialize 'custom-initialize-default
   :set 'diary-set-maybe-redraw
+  :version "23.1"
   :group 'diary)
 
 (define-obsolete-variable-alias 'list-diary-entries-hook
@@ -186,9 +186,9 @@
 you will probably also want to add `diary-mark-included-diary-files' to
 `diary-mark-entries-hook'.  For example, you could use
 
+     (setq diary-display-function 'diary-fancy-display)
      (add-hook 'diary-list-entries-hook 'diary-include-other-diary-files)
      (add-hook 'diary-list-entries-hook 'diary-sort-entries)
-     (add-hook 'diary-display-hook 'diary-fancy-display)
 
 in your `.emacs' file to cause the fancy diary buffer to be displayed with
 diary entries from various included files, each day's entries sorted into
@@ -728,18 +728,16 @@
       from other files or to sort the diary entries.  Invoked *once*
       only, before the display hook is run.
 
-  `diary-display-hook' does the actual display of information.  If nil,
-      `diary-simple-display' is used.  Use `add-hook' to use
-      `diary-fancy-display', if desired, or `ignore' for no display.
-
-  `diary-hook' is run last.  This is used e.g. by `appt-check'.
+  `diary-hook' is run last, after the diary is displayed.
+      This is used e.g. by `appt-check'.
 
 Functions called by these hooks may use the variables ORIGINAL-DATE
 and NUMBER, which are the arguments with which this function was called.
 Note that hook functions should _not_ use DATE, but ORIGINAL-DATE.
 \(Sexp diary entries may use DATE - see `diary-list-sexp-entries'.)
 
-If LIST-ONLY is non-nil don't modify or display the buffer, only return a list."
+This function displays the list using `diary-display-function', unless
+LIST-ONLY is non-nil, in which case it just returns the list."
   (unless number
     (setq number (if (vectorp diary-number-of-entries)
                      (aref diary-number-of-entries (calendar-day-of-week date))
@@ -795,9 +793,12 @@
             (run-hooks 'diary-nongregorian-listing-hook
                        'diary-list-entries-hook)
             (unless list-only
-              (if diary-display-hook
-                  (run-hooks 'diary-display-hook)
-                (diary-simple-display)))
+              (if (and diary-display-function
+                       (listp diary-display-function))
+                  ;; Backwards compatability.
+                  (run-hooks 'diary-display-function)
+                (funcall (or diary-display-function
+                             'diary-simple-display))))
             (run-hooks 'diary-hook)
             diary-entries-list))))))
 
@@ -829,7 +830,7 @@
                        (match-string-no-properties 1)))
           (diary-list-include-blanks nil)
           (diary-list-entries-hook 'diary-include-other-diary-files)
-          (diary-display-hook 'ignore)
+          (diary-display-function 'ignore)
           (diary-hook nil))
       (if (file-exists-p diary-file)
           (if (file-readable-p diary-file)
@@ -886,7 +887,9 @@
 (defvar diary-saved-point)              ; bound in diary-list-entries
 
 (defun diary-simple-display ()
-  "Display the diary buffer if there are any relevant entries or holidays."
+  "Display the diary buffer if there are any relevant entries or holidays.
+Entries that do not apply are made invisible.  Holidays are shown
+in the mode line.  This is an option for `diary-display-function'."
   ;; If selected window is dedicated (to the calendar), need a new one
   ;; to display the diary.
   (let* ((pop-up-frames (or pop-up-frames
@@ -941,7 +944,11 @@
 
 (defun diary-fancy-display ()
   "Prepare a diary buffer with relevant entries in a fancy, noneditable form.
-To use this function, add it to `diary-display-hook'."
+Holidays are shown unless `diary-show-holidays-flag' is nil.
+Days with no diary entries are not shown (even if that day is a
+holiday), unless `diary-list-include-blanks' is non-nil.
+
+This is an option for `diary-display-function'."
   ;; Turn off selective-display in the diary file's buffer.
   (with-current-buffer
       (find-buffer-visiting (substitute-in-file-name diary-file))
@@ -1117,7 +1124,7 @@
   (interactive "P")
   (if (string-equal diary-mail-addr "")
       (error "You must set `diary-mail-addr' to use this command")
-    (let ((diary-display-hook 'diary-fancy-display))
+    (let ((diary-display-function 'diary-fancy-display))
       (diary-list-entries (calendar-current-date) (or ndays diary-mail-days)))
     (compose-mail diary-mail-addr
                   (concat "Diary entries generated "