emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/calendar/appt.el


From: Glenn Morris
Subject: [Emacs-diffs] Changes to emacs/lisp/calendar/appt.el
Date: Tue, 21 Jun 2005 09:10:39 -0400

Index: emacs/lisp/calendar/appt.el
diff -c emacs/lisp/calendar/appt.el:1.59 emacs/lisp/calendar/appt.el:1.60
*** emacs/lisp/calendar/appt.el:1.59    Mon May 16 11:11:48 2005
--- emacs/lisp/calendar/appt.el Tue Jun 21 13:10:39 2005
***************
*** 534,621 ****
  They specify the range of dates that the diary is being processed for.
  
  Any appointments made with `appt-add' are not affected by this
! function."
  
!   ;; We have something to do if the range of dates that the diary is
!   ;; considering includes the current date.
!   (if (and (not (calendar-date-compare
!                (list (calendar-current-date))
!                (list original-date)))
!          (calendar-date-compare
!           (list (calendar-current-date))
!             (list (calendar-gregorian-from-absolute
!                  (+ (calendar-absolute-from-gregorian original-date)
!                     number)))))
!       (save-excursion
!       ;; Clear the appointments list, then fill it in from the diary.
!       (dolist (elt appt-time-msg-list)
!         ;; Delete any entries that were not made with appt-add.
!         (unless (nth 2 elt)
!           (setq appt-time-msg-list
!                 (delq elt appt-time-msg-list))))
!       (if diary-entries-list
! 
!           ;; Cycle through the entry-list (diary-entries-list)
!           ;; looking for entries beginning with a time. If
!           ;; the entry begins with a time, add it to the
!           ;; appt-time-msg-list. Then sort the list.
! 
!           (let ((entry-list diary-entries-list)
!                 (new-time-string ""))
!             ;; Skip diary entries for dates before today.
!             (while (and entry-list
!                         (calendar-date-compare
!                          (car entry-list) (list (calendar-current-date))))
!               (setq entry-list (cdr entry-list)))
!             ;; Parse the entries for today.
!             (while (and entry-list
!                         (calendar-date-equal
!                          (calendar-current-date) (car (car entry-list))))
!               (let ((time-string (cadr (car entry-list))))
!                 (while (string-match
!                         "\\([0-9]?[0-9][:.][0-9][0-9]\\(am\\|pm\\)?\\).*"
!                         time-string)
!                   (let* ((beg (match-beginning 0))
!                          ;; Get just the time for this appointment.
!                          (only-time (match-string 1 time-string))
!                          ;; Find the end of this appointment
!                          ;; (the start of the next).
!                          (end (string-match
!                                "^[ 
\t]*[0-9]?[0-9][:.][0-9][0-9]\\(am\\|pm\\)?"
!                                time-string
!                                (match-end 0)))
!                          ;; Get the whole string for this appointment.
!                          (appt-time-string
!                           (substring time-string beg (if end (1- end)))))
! 
!                     ;; Add this appointment to appt-time-msg-list.
!                     (let* ((appt-time (list (appt-convert-time only-time)))
!                            (time-msg (list appt-time appt-time-string)))
!                       (setq appt-time-msg-list
!                             (nconc appt-time-msg-list (list time-msg))))
! 
!                     ;; Discard this appointment from the string.
!                     (setq time-string
!                           (if end (substring time-string end) "")))))
!               (setq entry-list (cdr entry-list)))))
!       (setq appt-time-msg-list (appt-sort-list appt-time-msg-list))
! 
!       ;; Get the current time and convert it to minutes
!       ;; from midnight. ie. 12:01am = 1, midnight = 0,
!       ;; so that the elements in the list
!       ;; that are earlier than the present time can
!       ;; be removed.
! 
!       (let* ((now (decode-time))
!              (cur-hour (nth 2 now))
!              (cur-min (nth 1 now))
!              (cur-comp-time (+ (* cur-hour 60) cur-min))
!              (appt-comp-time (car (caar appt-time-msg-list))))
! 
!         (while (and appt-time-msg-list (< appt-comp-time cur-comp-time))
!           (setq appt-time-msg-list (cdr appt-time-msg-list))
!           (if appt-time-msg-list
!               (setq appt-comp-time (car (caar appt-time-msg-list)))))))))
  
  
  (defun appt-sort-list (appt-list)
--- 534,626 ----
  They specify the range of dates that the diary is being processed for.
  
  Any appointments made with `appt-add' are not affected by this
! function.
  
! For backwards compatibility, this function activates the
! appointment package (if it is not already active)."
!   ;; See comments above appt-activate defun.
!   (if (not appt-timer)
!       (appt-activate 1)
!     ;; We have something to do if the range of dates that the diary is
!     ;; considering includes the current date.
!     (if (and (not (calendar-date-compare
!                    (list (calendar-current-date))
!                    (list original-date)))
!              (calendar-date-compare
!               (list (calendar-current-date))
!               (list (calendar-gregorian-from-absolute
!                      (+ (calendar-absolute-from-gregorian original-date)
!                         number)))))
!         (save-excursion
!           ;; Clear the appointments list, then fill it in from the diary.
!           (dolist (elt appt-time-msg-list)
!             ;; Delete any entries that were not made with appt-add.
!             (unless (nth 2 elt)
!               (setq appt-time-msg-list
!                     (delq elt appt-time-msg-list))))
!           (if diary-entries-list
! 
!               ;; Cycle through the entry-list (diary-entries-list)
!               ;; looking for entries beginning with a time. If
!               ;; the entry begins with a time, add it to the
!               ;; appt-time-msg-list. Then sort the list.
! 
!               (let ((entry-list diary-entries-list)
!                     (new-time-string ""))
!                 ;; Skip diary entries for dates before today.
!                 (while (and entry-list
!                             (calendar-date-compare
!                              (car entry-list) (list (calendar-current-date))))
!                   (setq entry-list (cdr entry-list)))
!                 ;; Parse the entries for today.
!                 (while (and entry-list
!                             (calendar-date-equal
!                              (calendar-current-date) (car (car entry-list))))
!                   (let ((time-string (cadr (car entry-list))))
!                     (while (string-match
!                             "\\([0-9]?[0-9][:.][0-9][0-9]\\(am\\|pm\\)?\\).*"
!                             time-string)
!                       (let* ((beg (match-beginning 0))
!                              ;; Get just the time for this appointment.
!                              (only-time (match-string 1 time-string))
!                              ;; Find the end of this appointment
!                              ;; (the start of the next).
!                              (end (string-match
!                                    "^[ 
\t]*[0-9]?[0-9][:.][0-9][0-9]\\(am\\|pm\\)?"
!                                    time-string
!                                    (match-end 0)))
!                              ;; Get the whole string for this appointment.
!                              (appt-time-string
!                               (substring time-string beg (if end (1- end)))))
! 
!                         ;; Add this appointment to appt-time-msg-list.
!                         (let* ((appt-time (list (appt-convert-time 
only-time)))
!                                (time-msg (list appt-time appt-time-string)))
!                           (setq appt-time-msg-list
!                                 (nconc appt-time-msg-list (list time-msg))))
! 
!                         ;; Discard this appointment from the string.
!                         (setq time-string
!                               (if end (substring time-string end) "")))))
!                   (setq entry-list (cdr entry-list)))))
!           (setq appt-time-msg-list (appt-sort-list appt-time-msg-list))
! 
!           ;; Get the current time and convert it to minutes
!           ;; from midnight. ie. 12:01am = 1, midnight = 0,
!           ;; so that the elements in the list
!           ;; that are earlier than the present time can
!           ;; be removed.
! 
!           (let* ((now (decode-time))
!                  (cur-hour (nth 2 now))
!                  (cur-min (nth 1 now))
!                  (cur-comp-time (+ (* cur-hour 60) cur-min))
!                  (appt-comp-time (car (caar appt-time-msg-list))))
! 
!             (while (and appt-time-msg-list (< appt-comp-time cur-comp-time))
!               (setq appt-time-msg-list (cdr appt-time-msg-list))
!               (if appt-time-msg-list
!                   (setq appt-comp-time (car (caar appt-time-msg-list))))))))))
  
  
  (defun appt-sort-list (appt-list)
***************
*** 665,670 ****
--- 670,699 ----
    nil)
  
  
+ ;; In Emacs-21.3, the manual documented the following procedure to
+ ;; activate this package:
+ ;;     (display-time)
+ ;;     (add-hook 'diary-hook 'appt-make-list)
+ ;;     (diary 0)
+ ;; The display-time call was not necessary, AFAICS.
+ ;; What was really needed was to add the hook and load this file.
+ ;; Calling (diary 0) once the hook had been added was in some sense a
+ ;; roundabout way of loading this file. This file used to have code at
+ ;; the top-level that set up the appt-timer and global-mode-string.
+ ;; One way to maintain backwards compatibility would be to call
+ ;; (appt-activate 1) at top-level. However, this goes against the
+ ;; convention that just loading an Emacs package should not activate
+ ;; it. Instead, we make appt-make-list activate the package (after a
+ ;; suggestion from rms). This means that one has to call diary in
+ ;; order to get it to work, but that is in line with the old (weird,
+ ;; IMO) documented behavior for activating the package.
+ ;; Actually, since (diary 0) does not run diary-hook, I don't think
+ ;; the documented behavior in Emacs-21.3 would ever have worked.
+ ;; Oh well, at least with the changes to appt-make-list it will now
+ ;; work as well as it ever did.
+ ;; The new method is just to use (appt-activate 1).
+ ;; -- gmorris
+ 
  ;;;###autoload
  (defun appt-activate (&optional arg)
  "Toggle checking of appointments.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]