diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-04-03 14:35:52 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-04-03 14:35:52 +0000 |
commit | 3aebe039843e75782f80778020525ab3468c70e0 (patch) | |
tree | 111da99a8fb74e1e528f9ce32a6db76a3dec6a6b /lisp/calendar | |
parent | 228cedd4d996473563c311290b83a9809b7e1ba5 (diff) | |
download | emacs-3aebe039843e75782f80778020525ab3468c70e0.tar.gz |
(update-calendar-mode-line): Force mode-line update.
Make date under the cursor available as `date' in
calendar-mode-line-format.
Eval items in calendar-mode-line-format list.
Diffstat (limited to 'lisp/calendar')
-rw-r--r-- | lisp/calendar/calendar.el | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index 99e6757c03a..9eb9352843a 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -569,7 +569,7 @@ See the documentation of `diary-date-forms' for an explanation." european-date-diary-pattern american-date-diary-pattern) "*List of pseudo-patterns describing the forms of date used in the diary. -The patterns on the list must be MUTUALLY EXCLUSIVE and must not match +The patterns on the list must be MUTUALLY EXCLUSIVE and must should not match any portion of the diary entry itself, just the date component. A pseudo-pattern is a list of regular expressions and the keywords `month', @@ -2075,7 +2075,32 @@ the inserted text. Value is always t." 'help-echo "mouse-2: scroll right" 'keymap (make-mode-line-mouse-map 'mouse-2 #'scroll-calendar-right))) - "The mode line of the calendar buffer.") + "The mode line of the calendar buffer. + +This must be a list of items that evaluate to strings--those strings are +evaluated and concatenated together, evenly separated by blanks. The variable +`date' is available for use as the date under (or near) the cursor; `date' +defaults to the current date if it is otherwise undefined. Here is an example +value that has the Hebrew date, the day number/days reamining in the year, +and the ISO week/year numbers in the mode. When calendar-move-hook is set to +'update-calendar-mode-line, these mode line shows these values for the date +under the cursor: + + (list + \"\" + '(calendar-hebrew-date-string date) + '(let* ((year (extract-calendar-year date)) + (d (calendar-day-number date)) + (days-remaining + (- (calendar-day-number (list 12 31 year)) d))) + (format \"%d/%d\" d days-remaining)) + '(let* ((d (calendar-absolute-from-gregorian date)) + (iso-date (calendar-iso-from-absolute d))) + (format \"ISO week %d of %d\" + (extract-calendar-month iso-date) + (extract-calendar-year iso-date))) + \"\")) +") (defun calendar-goto-info-node () "Go to the info node for the calendar." @@ -2142,7 +2167,12 @@ the STRINGS are just concatenated and the result truncated." (set-buffer calendar-buffer) (setq mode-line-format (calendar-string-spread - calendar-mode-line-format ? (frame-width)))))) + (let ((date (condition-case nil + (calendar-cursor-to-nearest-date) + (error (calendar-current-date))))) + (mapcar 'eval calendar-mode-line-format)) + ? (frame-width))) + (force-mode-line-update)))) (defun calendar-window-list () "List of all calendar-related windows." |