Mercurial > emacs
changeset 101083:27e9141ce15b
(calendar-list-holidays, calendar-mark-holidays): Add event handling,
for when called from menus with the calendar buffer not current.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Sat, 10 Jan 2009 22:00:14 +0000 |
parents | a69b4c107ea4 |
children | 38710cc3b8b5 |
files | lisp/calendar/holidays.el |
diffstat | 1 files changed, 47 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/calendar/holidays.el Sat Jan 10 21:57:00 2009 +0000 +++ b/lisp/calendar/holidays.el Sat Jan 10 22:00:14 2009 +0000 @@ -463,35 +463,41 @@ ;; FIXME name that makes sense ;;;###cal-autoload -(defun calendar-list-holidays () +(defun calendar-list-holidays (&optional event) "Create a buffer containing the holidays for the current calendar window. The holidays are those in the list `calendar-notable-days'. -Returns non-nil if any holidays are found." - (interactive) - (message "Looking up holidays...") - (let ((holiday-list (calendar-holiday-list)) - (m1 displayed-month) - (y1 displayed-year) - (m2 displayed-month) - (y2 displayed-year)) - (if (not holiday-list) - (message "Looking up holidays...none found") - (calendar-in-read-only-buffer holiday-buffer - (calendar-increment-month m1 y1 -1) - (calendar-increment-month m2 y2 1) - (calendar-set-mode-line - (if (= y1 y2) - (format "Notable Dates from %s to %s, %d%%-" - (calendar-month-name m1) (calendar-month-name m2) y2) - (format "Notable Dates from %s, %d to %s, %d%%-" - (calendar-month-name m1) y1 (calendar-month-name m2) y2))) - (insert - (mapconcat - (lambda (x) (concat (calendar-date-string (car x)) - ": " (cadr x))) - holiday-list "\n"))) - (message "Looking up holidays...done")) - holiday-list)) +Returns non-nil if any holidays are found. +If EVENT is non-nil, it's an event indicating the buffer position to +use instead of point." + (interactive (list last-nonmenu-event)) + ;; If called from a menu, with the calendar window not selected. + (with-current-buffer + (if event (window-buffer (posn-window (event-start event))) + (current-buffer)) + (message "Looking up holidays...") + (let ((holiday-list (calendar-holiday-list)) + (m1 displayed-month) + (y1 displayed-year) + (m2 displayed-month) + (y2 displayed-year)) + (if (not holiday-list) + (message "Looking up holidays...none found") + (calendar-in-read-only-buffer holiday-buffer + (calendar-increment-month m1 y1 -1) + (calendar-increment-month m2 y2 1) + (calendar-set-mode-line + (if (= y1 y2) + (format "Notable Dates from %s to %s, %d%%-" + (calendar-month-name m1) (calendar-month-name m2) y2) + (format "Notable Dates from %s, %d to %s, %d%%-" + (calendar-month-name m1) y1 (calendar-month-name m2) y2))) + (insert + (mapconcat + (lambda (x) (concat (calendar-date-string (car x)) + ": " (cadr x))) + holiday-list "\n"))) + (message "Looking up holidays...done")) + holiday-list))) (define-obsolete-function-alias 'list-calendar-holidays 'calendar-list-holidays "23.1") @@ -658,14 +664,20 @@ ;; FIXME move to calendar? ;;;###cal-autoload -(defun calendar-mark-holidays () - "Mark notable days in the calendar window." - (interactive) - (setq calendar-mark-holidays-flag t) - (message "Marking holidays...") - (dolist (holiday (calendar-holiday-list)) - (calendar-mark-visible-date (car holiday) calendar-holiday-marker)) - (message "Marking holidays...done")) +(defun calendar-mark-holidays (&optional event) + "Mark notable days in the calendar window. +If EVENT is non-nil, it's an event indicating the buffer position to +use instead of point." + (interactive (list last-nonmenu-event)) + ;; If called from a menu, with the calendar window not selected. + (with-current-buffer + (if event (window-buffer (posn-window (event-start event))) + (current-buffer)) + (setq calendar-mark-holidays-flag t) + (message "Marking holidays...") + (dolist (holiday (calendar-holiday-list)) + (calendar-mark-visible-date (car holiday) calendar-holiday-marker)) + (message "Marking holidays...done"))) (define-obsolete-function-alias 'mark-calendar-holidays 'calendar-mark-holidays "23.1")