(appt-mode-string): New variable.
(global-mode-string): Add appt-mode-string to it. (appt-check): Avoid using display-time-string to fetch current time. To display in mode line, use appt-mode-string.
This commit is contained in:
parent
b775a47213
commit
efa434d9f2
1 changed files with 71 additions and 72 deletions
|
@ -44,8 +44,7 @@
|
|||
;;; pending appointment based on their diary file.
|
||||
;;;
|
||||
;;;
|
||||
;;; ******* It is necessary to invoke 'display-time' ********
|
||||
;;; ******* and 'diary' for this to work properly. ********
|
||||
;;; ******* It is necessary to invoke 'diary' for this to work properly. ****
|
||||
;;;
|
||||
;;; A message will be displayed in the mode line of the emacs buffer
|
||||
;;; and (if the user desires) the terminal will beep and display a message
|
||||
|
@ -60,14 +59,16 @@
|
|||
;;; In order to use, the following should be in your .emacs file in addition to
|
||||
;;; creating a diary file and invoking calendar:
|
||||
;;;
|
||||
;;; Set some options
|
||||
;;; (setq view-diary-entries-initially t)
|
||||
;;; (setq appt-issue-message t)
|
||||
;;;
|
||||
;;; The following three lines are required:
|
||||
;;; (display-time)
|
||||
;;; (add-hook 'diary-hook 'appt-make-list)
|
||||
;;; To enable appointment reminders, the following lines are required:
|
||||
;;; (add-hook 'diary-hook 'appt-make-list)
|
||||
;;; (let ((diary-display-hook 'ignore))
|
||||
;;; (diary))
|
||||
;;; You can replace the last two with just (diary)
|
||||
;;; if you want to display the diary as well.
|
||||
;;;
|
||||
;;; Before that, you can also set some options if you want
|
||||
;;; (setq view-diary-entries-initially t)
|
||||
;;; (setq appt-issue-message t)
|
||||
;;;
|
||||
;;; This is an example of what can be in your diary file:
|
||||
;;; Monday
|
||||
|
@ -173,6 +174,12 @@ This will occur at midnight when the appointment list is updated."
|
|||
:type 'boolean
|
||||
:group 'appt)
|
||||
|
||||
(defcustom appt-interval 60
|
||||
"*Interval in seconds between checking for appointments."
|
||||
:type 'integer
|
||||
:group 'appt
|
||||
:version "20.3")
|
||||
|
||||
(defvar appt-time-msg-list nil
|
||||
"The list of appointments for today.
|
||||
Use `appt-add' and `appt-delete' to add and delete appointments from list.
|
||||
|
@ -196,6 +203,9 @@ The number before each time/message is the time in minutes from midnight.")
|
|||
(defvar appt-delete-window-function 'appt-delete-window
|
||||
"Function called to remove appointment window and buffer.")
|
||||
|
||||
(defvar appt-mode-string nil
|
||||
"String to display in the mode line for an appointment.")
|
||||
|
||||
(defun appt-check ()
|
||||
"Check for an appointment and update the mode line.
|
||||
Note: the time must be the first thing in the line in the diary
|
||||
|
@ -212,46 +222,43 @@ Example:
|
|||
|
||||
The following variables control the action of the notification:
|
||||
|
||||
appt-issue-message
|
||||
If T, the diary buffer is checked for appointments.
|
||||
`appt-issue-message'
|
||||
If t, the diary buffer is checked for appointments.
|
||||
|
||||
appt-message-warning-time
|
||||
`appt-message-warning-time'
|
||||
Variable used to determine if appointment message
|
||||
should be displayed.
|
||||
|
||||
appt-audible
|
||||
`appt-audible'
|
||||
Variable used to determine if appointment is audible.
|
||||
Default is t.
|
||||
|
||||
appt-visible
|
||||
`appt-visible'
|
||||
Variable used to determine if appointment message should be
|
||||
displayed in the mini-buffer. Default is t.
|
||||
displayed in the mini-buffer. Default is t.
|
||||
|
||||
appt-msg-window
|
||||
`appt-msg-window'
|
||||
Variable used to determine if appointment message
|
||||
should temporarily appear in another window. Mutually exclusive
|
||||
to appt-visible.
|
||||
should temporarily appear in another window. Mutually exclusive
|
||||
to `appt-visible'.
|
||||
|
||||
appt-display-duration
|
||||
`appt-display-duration'
|
||||
The number of seconds an appointment message
|
||||
is displayed in another window.
|
||||
|
||||
appt-display-interval
|
||||
`appt-display-interval'
|
||||
The number of minutes to wait between checking the appointments
|
||||
list.
|
||||
|
||||
appt-disp-window-function
|
||||
Function called to display appointment window. You can customize
|
||||
`appt-disp-window-function '
|
||||
Function called to display appointment window. You can customize
|
||||
appt.el by setting this variable to a function different from the
|
||||
one provided with this package.
|
||||
|
||||
appt-delete-window-function
|
||||
`appt-delete-window-function '
|
||||
Function called to remove appointment window and buffer. You can
|
||||
customize appt.el by setting this variable to a function different
|
||||
from the one provided with this package.
|
||||
|
||||
This function is run from the loadst process for display time.
|
||||
Therefore, you need to have `(display-time)' in your .emacs file."
|
||||
from the one provided with this package."
|
||||
|
||||
|
||||
(if (or (= appt-display-interval 1)
|
||||
|
@ -314,55 +321,39 @@ Therefore, you need to have `(display-time)' in your .emacs file."
|
|||
;; issue warning if the appointment time is
|
||||
;; within appt-message-warning time
|
||||
|
||||
(if (and (<= min-to-app appt-message-warning-time)
|
||||
(>= min-to-app 0))
|
||||
(progn
|
||||
(if appt-msg-window
|
||||
(progn
|
||||
(string-match
|
||||
"[0-9]?[0-9]:[0-9][0-9]\\(am\\|pm\\)?"
|
||||
display-time-string)
|
||||
|
||||
(setq new-time (substring display-time-string
|
||||
(match-beginning 0)
|
||||
(match-end 0)))
|
||||
(funcall
|
||||
appt-disp-window-function
|
||||
min-to-app new-time
|
||||
(car (cdr (car appt-time-msg-list))))
|
||||
(when (and (<= min-to-app appt-message-warning-time)
|
||||
(>= min-to-app 0))
|
||||
(if appt-msg-window
|
||||
(progn
|
||||
(setq new-time (format-time-string "%a %b %e "
|
||||
(current-time)))
|
||||
(funcall
|
||||
appt-disp-window-function
|
||||
min-to-app new-time
|
||||
(car (cdr (car appt-time-msg-list))))
|
||||
|
||||
(run-at-time
|
||||
(format "%d sec" appt-display-duration)
|
||||
nil
|
||||
appt-delete-window-function))
|
||||
(run-at-time
|
||||
(format "%d sec" appt-display-duration)
|
||||
nil
|
||||
appt-delete-window-function))
|
||||
;;; else
|
||||
|
||||
(if appt-visible
|
||||
(message "%s"
|
||||
(car (cdr (car appt-time-msg-list)))))
|
||||
(if appt-visible
|
||||
(message "%s"
|
||||
(car (cdr (car appt-time-msg-list)))))
|
||||
|
||||
(if appt-audible
|
||||
(beep 1)))
|
||||
(if appt-audible
|
||||
(beep 1)))
|
||||
|
||||
(if appt-display-mode-line
|
||||
(progn
|
||||
(string-match
|
||||
"[0-9]?[0-9]:[0-9][0-9]\\(am\\|pm\\)?"
|
||||
display-time-string)
|
||||
(when appt-display-mode-line
|
||||
(setq appt-mode-string
|
||||
(concat "App't in " min-to-app " min. "))
|
||||
(force-mode-line-update t)
|
||||
(sit-for 0))
|
||||
|
||||
(setq new-time (substring display-time-string
|
||||
(match-beginning 0)
|
||||
(match-end 0)))
|
||||
(setq display-time-string
|
||||
(concat "App't in "
|
||||
min-to-app " min. " new-time " "))
|
||||
|
||||
(force-mode-line-update t)
|
||||
(sit-for 0)))
|
||||
|
||||
(if (= min-to-app 0)
|
||||
(setq appt-time-msg-list
|
||||
(cdr appt-time-msg-list))))))))))))
|
||||
(if (= min-to-app 0)
|
||||
(setq appt-time-msg-list
|
||||
(cdr appt-time-msg-list)))))))))))
|
||||
|
||||
|
||||
;; Display appointment message in a separate buffer.
|
||||
|
@ -392,6 +383,7 @@ Therefore, you need to have `(display-time)' in your .emacs file."
|
|||
(setq mode-line-format
|
||||
(concat "-------------------- Appointment in "
|
||||
min-to-app " minutes. " new-time " %-"))
|
||||
(erase-buffer)
|
||||
(insert-string appt-msg)
|
||||
(shrink-window-if-larger-than-buffer (get-buffer-window appt-disp-buf t))
|
||||
(set-buffer-modified-p nil)
|
||||
|
@ -612,7 +604,14 @@ The time should be in either 24 hour format or am/pm format."
|
|||
(setq conv-time (+ (* hr 60) min))
|
||||
conv-time))
|
||||
|
||||
(add-hook 'display-time-hook 'appt-check)
|
||||
(defvar appt-timer nil
|
||||
"Timer used for diary appointment notifications (`appt-check').")
|
||||
|
||||
(setq appt-timer (run-at-time t appt-interval 'appt-check))
|
||||
|
||||
(or global-mode-string (setq global-mode-string '("")))
|
||||
(or (memq 'appt-mode-string global-mode-string)
|
||||
(setq global-mode-string
|
||||
(append global-mode-string '(appt-mode-string))))
|
||||
|
||||
;;; appt.el ends here
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue