+(defun calendar-mouse-holidays (&optional event)
+ "Pop up menu of holidays for mouse selected date."
+ (interactive "e")
+ (let* ((date (calendar-event-to-date))
+ (l (mapcar 'list (check-calendar-holidays date)))
+ (selection
+ (cal-menu-x-popup-menu
+ event
+ (list
+ (format "Holidays for %s" (calendar-date-string date))
+ (append
+ (list (format "Holidays for %s" (calendar-date-string date)))
+ (if l l '("None")))))))
+ (and selection (call-interactively selection))))
+
+(defun calendar-mouse-view-diary-entries (&optional date diary event)
+ "Pop up menu of diary entries for mouse-selected date.
+Use optional DATE and alternative file DIARY.
+
+Any holidays are shown if `holidays-in-diary-buffer' is t."
+ (interactive "i\ni\ne")
+ (let* ((date (if date date (calendar-event-to-date)))
+ (diary-file (if diary diary diary-file))
+ (diary-list-include-blanks nil)
+ (diary-display-hook 'ignore)
+ (diary-entries
+ (mapcar (lambda (x) (split-string (car (cdr x)) "\^M\\|\n"))
+ (diary-list-entries date 1 'list-only)))
+ (holidays (if holidays-in-diary-buffer
+ (check-calendar-holidays date)))
+ (title (concat "Diary entries "
+ (if diary (format "from %s " diary) "")
+ "for "
+ (calendar-date-string date)))
+ (selection
+ (cal-menu-x-popup-menu
+ event
+ (list title
+ (append
+ (list title)
+ (mapcar (lambda (x) (list (concat " " x))) holidays)
+ (if holidays
+ (list "--shadow-etched-in" "--shadow-etched-in"))
+ (if diary-entries
+ (mapcar 'list (calendar-flatten diary-entries))
+ '("None")))))))
+ (and selection (call-interactively selection))))