aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/calendar/diary-lib.el
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1997-11-25 04:00:20 +0000
committerRichard M. Stallman <[email protected]>1997-11-25 04:00:20 +0000
commit8ffbfaa96516203a8786a4f3285fe60f7eaecdaf (patch)
tree0859387a0867659233eddb238fac0b791252971b /lisp/calendar/diary-lib.el
parent85d27e9b108fc1da9fe8c5ba587dce4fa2bad2d9 (diff)
(diary-mail-addr, diary-mail-days): New variables.
(diary-mail-entries): New function.
Diffstat (limited to 'lisp/calendar/diary-lib.el')
-rw-r--r--lisp/calendar/diary-lib.el58
1 files changed, 58 insertions, 0 deletions
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 4a960e0ec4..08eb40b567 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -583,6 +583,64 @@ is created."
(error "Your diary file is not readable!"))
(error "You don't have a diary file!"))))
+
+
+(defcustom diary-mail-addr
+ (if (boundp 'user-mail-address) user-mail-address nil)
+ "*Email address that `diary-mail-entries' will send email to."
+ :group 'diary
+ :type 'string)
+
+(defcustom diary-mail-days 7
+ "*Number of days for `diary-mail-entries' to check."
+ :group 'diary
+ :type integer)
+
+(defun diary-mail-entries (&optional ndays)
+ "Send a mail message showing diary entries for next NDAYS days.
+If no prefix argument is given, NDAYS is set to `diary-mail-days'.
+
+You can call `diary-mail-entries' every night using an at/cron job.
+For example, this script will run the program at 2am daily. Since
+`emacs -batch' does not load your `.emacs' file, you must ensure that
+all relevant variables are set, as done here.
+
+#!/bin/sh
+# diary-rem.sh -- repeatedly run the Emacs diary-reminder
+emacs -batch \\
+-eval \"(setq diary-mail-days 3 \\
+ european-calendar-style t \\
+ diary-mail-addr \\\"[email protected]\\\" )\" \\
+-l diary-lib -f diary-mail-entries
+at -f diary-rem.sh 0200 tomorrow
+
+You may have to tweak the syntax of the `at' command to suit your
+system. Alternatively, you can specify a cron entry:
+0 1 * * * diary-rem.sh
+to run it every morning at 1am."
+ (interactive "p")
+ (let ((text nil)
+ ;; Use the fancy-diary-display as it doesn't hide rest of
+ ;; diary file with ^M characters. It also looks nicer.
+ (diary-display-hook 'fancy-diary-display))
+ (if (not current-prefix-arg)
+ (setq ndays diary-mail-days))
+ (calendar)
+ (view-diary-entries ndays)
+ (set-buffer "*Fancy Diary Entries*")
+ (setq text (buffer-substring (point-min) (point-max)))
+
+ ;; Now send text as a mail message.
+ (mail)
+ (mail-to)
+ (insert diary-mail-addr)
+ (mail-subject)
+ (insert "Diary entries generated ")
+ (insert (format-time-string "%a %d %b %y" (current-time)))
+ (mail-text)
+ (insert text)
+ (mail-send-and-exit nil)))
+
(defun diary-name-pattern (string-array &optional fullname)
"Convert an STRING-ARRAY, an array of strings to a pattern.
The pattern will match any of the strings, either entirely or abbreviated