]> code.delx.au - gnu-emacs/blobdiff - lisp/calendar/cal-menu.el
New file, from: Anna M. Bigatti <bigatti at dima.unige.it>.
[gnu-emacs] / lisp / calendar / cal-menu.el
index 1ea0f68ed955d5133593dfde2513b0ed981e5d04..1bae5ce6299a37ad58659c2cce7ab2e170e032e0 100644 (file)
@@ -1,6 +1,7 @@
 ;;; cal-menu.el --- calendar functions for menu bar and popup menu support
 
-;; Copyright (C) 1994, 1995, 2001, 2003, 2004, 2005  Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006
+;;   Free Software Foundation, Inc.
 
 ;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
 ;;     Lara Rios <lrios@coewl.cen.uiuc.edu>
 
 ;;; Code:
 
-(defvar date)
 (defvar displayed-month)
 (defvar displayed-year)
-(defvar event)
 
-(eval-when-compile (require 'calendar))
+;; Don't require calendar because calendar requires us.
+;; (eval-when-compile (require 'calendar))
+(defvar calendar-mode-map)
 
 (define-key calendar-mode-map [menu-bar edit] 'undefined)
 (define-key calendar-mode-map [menu-bar search] 'undefined)
 (define-key calendar-mode-map [menu-bar diary ent]
   '("Insert Diary Entry" . insert-diary-entry))
 (define-key calendar-mode-map [menu-bar diary all]
-  '("Show All" . show-all-diary-entries))
+  '("Show All" . diary-show-all-entries))
 (define-key calendar-mode-map [menu-bar diary mark]
  '("Mark All" . mark-diary-entries))
 (define-key calendar-mode-map [menu-bar diary view]
-  '("Cursor Date" . view-diary-entries))
+  '("Cursor Date" . diary-view-entries))
 (define-key calendar-mode-map [menu-bar diary view]
   '("Other File" . view-other-diary-entries))
 
@@ -212,14 +213,14 @@ not available."
   (condition-case nil
       (if (eq major-mode 'calendar-mode)
           (let ((l))
-            (calendar-for-loop;; Show 11 years--5 before, 5 after year of
-                   ;; middle month
-             i from (- displayed-year 5) to (+ displayed-year 5) do
-             (setq l (cons (vector (format "For Year %s" i)
-                                   (list (list 'lambda 'nil '(interactive)
-                                               (list 'list-holidays i i)))
-                                   t)
-                           l)))
+            ;; Show 11 years--5 before, 5 after year of middle month
+            (dotimes (i 11)
+              (let ((y (+ displayed-year -5 i)))
+                (push (vector (format "For Year %s" y)
+                              (list (list 'lambda 'nil '(interactive)
+                                          (list 'list-holidays y y)))
+                              t)
+                      l)))
             (setq l (cons ["Mark Holidays" mark-calendar-holidays t]
                           (cons ["Unmark Calendar" calendar-unmark t]
                                 (cons "--" l))))
@@ -232,22 +233,18 @@ not available."
                            (calendar-date-string (calendar-current-date) t t))
                   . cal-menu-today-holidays))
             (let ((title
-                   (let ((m1 displayed-month)
-                         (y1 displayed-year)
-                         (m2 displayed-month)
-                         (y2 displayed-year))
-                     (increment-calendar-month m1 y1 -1)
-                     (increment-calendar-month m2 y2 1)
-                     (if (= y1 y2)
+                   (let ((my1 (calendar-increment-month -1))
+                         (my2 (calendar-increment-month 1)))
+                     (if (= (cdr my1) (cdr my2))
                          (format "%s-%s, %d"
-                                 (calendar-month-name m1 'abbrev)
-                                 (calendar-month-name m2 'abbrev)
-                                 y2)
+                                 (calendar-month-name (car my1) 'abbrev)
+                                 (calendar-month-name (car my2) 'abbrev)
+                                 (cdr my2))
                        (format "%s, %d-%s, %d"
-                               (calendar-month-name m1 'abbrev)
-                               y1
-                               (calendar-month-name m2 'abbrev)
-                               y2)))))
+                               (calendar-month-name (car my1) 'abbrev)
+                               (cdr my1)
+                               (calendar-month-name (car my2) 'abbrev)
+                               (cdr my2))))))
               (define-key  calendar-mode-map [menu-bar Holidays 3-month]
                 `(,(format "For Window (%s)" title)
                   . list-calendar-holidays)))
@@ -325,9 +322,9 @@ ERROR is t, otherwise just returns nil."
 (autoload 'check-calendar-holidays "holidays")
 (autoload 'diary-list-entries "diary-lib")
 
-(defun calendar-mouse-holidays ()
+(defun calendar-mouse-holidays (&optional event)
   "Pop up menu of holidays for mouse selected date."
-  (interactive)
+  (interactive "e")
   (let* ((date (calendar-event-to-date))
          (l (mapcar 'list (check-calendar-holidays date)))
          (selection
@@ -340,12 +337,12 @@ ERROR is t, otherwise just returns nil."
              (if l l '("None")))))))
     (and selection (call-interactively selection))))
 
-(defun calendar-mouse-view-diary-entries (&optional date diary)
+(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)
+  (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)
@@ -490,10 +487,10 @@ The output is in landscape format, one month to a page."
     (calendar-mouse-goto-date (calendar-event-to-date))
     (cal-tex-cursor-year-landscape nil)))
 
-(defun calendar-mouse-print-dates ()
+(defun calendar-mouse-print-dates (&optional event)
   "Pop up menu of equivalent dates to mouse selected date."
-  (interactive)
-  (let ((date (calendar-event-to-date))
+  (interactive "e")
+  (let* ((date (calendar-event-to-date))
         (selection
          (cal-menu-x-popup-menu
           event
@@ -524,8 +521,8 @@ The output is in landscape format, one month to a page."
             (list
              (list (format "Chinese date: %s"
                            (calendar-chinese-date-string date))))
-;            (list '("Chinese date (select to echo Chinese date)"
-;                    . calendar-mouse-chinese-date))
+            ;; (list '("Chinese date (select to echo Chinese date)"
+            ;;         . calendar-mouse-chinese-date))
             (let ((c (calendar-coptic-date-string date)))
               (if (not (string-equal c ""))
                   (list (list (format "Coptic date: %s" c)))))
@@ -580,7 +577,7 @@ The output is in landscape format, one month to a page."
   (let* ((selection
           (cal-menu-x-popup-menu
            event
-           (list (calendar-date-string date t nil)
+           (list (calendar-date-string (calendar-event-to-date t) t nil)
                  (list
                   ""
                   '("Daily (1 page)" . cal-tex-mouse-day)
@@ -603,7 +600,7 @@ The output is in landscape format, one month to a page."
   (let* ((selection
           (cal-menu-x-popup-menu
            event
-           (list (calendar-date-string date t nil)
+           (list (calendar-date-string (calendar-event-to-date t) t nil)
                  (list
                   ""
                   '("Filofax Daily (one-day-per-page)" .
@@ -619,7 +616,7 @@ The output is in landscape format, one month to a page."
 (define-key calendar-mouse-3-map [exit-calendar]
   '("Exit calendar" . exit-calendar))
 (define-key calendar-mouse-3-map [show-diary]
-  '("Show diary" . show-all-diary-entries))
+  '("Show diary" . diary-show-all-entries))
 (define-key calendar-mouse-3-map [lunar-phases]
   '("Lunar phases" . calendar-phases-of-moon))
 (define-key calendar-mouse-3-map [unmark]
@@ -639,5 +636,5 @@ The output is in landscape format, one month to a page."
 
 (provide 'cal-menu)
 
-;;; arch-tag: aa81cf73-ce89-48a4-97ec-9ef861e87fe9
+;; arch-tag: aa81cf73-ce89-48a4-97ec-9ef861e87fe9
 ;;; cal-menu.el ends here