-\1f
-File: xemacs.info, Node: Adding to Diary, Next: Special Diary Entries, Prev: Date Formats, Up: Diary
-
-Commands to Add to the Diary
-----------------------------
-
- While in the calendar, there are several commands to create diary
-entries:
-
-`i d'
- Add a diary entry for the selected date (`insert-diary-entry').
-
-`i w'
- Add a diary entry for the selected day of the week
- (`insert-weekly-diary-entry').
-
-`i m'
- Add a diary entry for the selected day of the month
- (`insert-monthly-diary-entry').
-
-`i y'
- Add a diary entry for the selected day of the year
- (`insert-yearly-diary-entry').
-
- You can make a diary entry for a specific date by selecting that date
-in the calendar window and typing the `i d' command. This command
-displays the end of your diary file in another window and inserts the
-date; you can then type the rest of the diary entry.
-
- If you want to make a diary entry that applies to a specific day of
-the week, select that day of the week (any occurrence will do) and type
-`i w'. This inserts the day-of-week as a generic date; you can then
-type the rest of the diary entry. You can make a monthly diary entry in
-the same fashion. Select the day of the month, use the `i m' command,
-and type rest of the entry. Similarly, you can insert a yearly diary
-entry with the `i y' command.
-
- All of the above commands make marking diary entries by default. To
-make a nonmarking diary entry, give a numeric argument to the command.
-For example, `C-u i w' makes a nonmarking weekly diary entry.
-
- When you modify the diary file, be sure to save the file before
-exiting Emacs.
-
-\1f
-File: xemacs.info, Node: Special Diary Entries, Prev: Adding to Diary, Up: Diary
-
-Special Diary Entries
----------------------
-
- In addition to entries based on calendar dates, the diary file can
-contain "sexp entries" for regular events such as anniversaries. These
-entries are based on Lisp expressions (sexps) that Emacs evaluates as
-it scans the diary file. Instead of a date, a sexp entry contains `%%'
-followed by a Lisp expression which must begin and end with
-parentheses. The Lisp expression determines which dates the entry
-applies to.
-
- Calendar mode provides commands to insert certain commonly used sexp
-entries:
-
-`i a'
- Add an anniversary diary entry for the selected date
- (`insert-anniversary-diary-entry').
-
-`i b'
- Add a block diary entry for the current region
- (`insert-block-diary-entry').
-
-`i c'
- Add a cyclic diary entry starting at the date
- (`insert-cyclic-diary-entry').
-
- If you want to make a diary entry that applies to the anniversary of
-a specific date, move point to that date and use the `i a' command.
-This displays the end of your diary file in another window and inserts
-the anniversary description; you can then type the rest of the diary
-entry. The entry looks like this:
-
- The effect of `i a' is to add a `diary-anniversary' sexp to your
-diary file. You can also add one manually, for instance:
-
- %%(diary-anniversary 10 31 1948) Arthur's birthday
-
-This entry applies to October 31 in any year after 1948; `10 31 1948'
-specifies the date. (If you are using the European calendar style, the
-month and day are interchanged.) The reason this expression requires a
-beginning year is that advanced diary functions can use it to calculate
-the number of elapsed years.
-
- A "block" diary entry applies to a specified range of consecutive
-dates. Here is a block diary entry that applies to all dates from June
-24, 1990 through July 10, 1990:
-
- %%(diary-block 6 24 1990 7 10 1990) Vacation
-
-The `6 24 1990' indicates the starting date and the `7 10 1990'
-indicates the stopping date. (Again, if you are using the European
-calendar style, the month and day are interchanged.)
-
- To insert a block entry, place point and the mark on the two dates
-that begin and end the range, and type `i b'. This command displays
-the end of your diary file in another window and inserts the block
-description; you can then type the diary entry.
-
- "Cyclic" diary entries repeat after a fixed interval of days. To
-create one, select the starting date and use the `i c' command. The
-command prompts for the length of interval, then inserts the entry,
-which looks like this:
-
- %%(diary-cyclic 50 3 1 1990) Renew medication
-
-This entry applies to March 1, 1990 and every 50th day following; `3 1
-1990' specifies the starting date. (If you are using the European
-calendar style, the month and day are interchanged.)
-
- All three of these commands make marking diary entries. To insert a
-nonmarking entry, give a numeric argument to the command. For example,
-`C-u i a' makes a nonmarking anniversary diary entry.
-
- Marking sexp diary entries in the calendar is _extremely_
-time-consuming, since every date visible in the calendar window must be
-individually checked. So it's a good idea to make sexp diary entries
-nonmarking (with `&') when possible.
-
- Another sophisticated kind of sexp entry, a "floating" diary entry,
-specifies a regularly occurring event by offsets specified in days,
-weeks, and months. It is comparable to a crontab entry interpreted by
-the `cron' utility. Here is a nonmarking, floating diary entry that
-applies to the last Thursday in November:
-
- &%%(diary-float 11 4 -1) American Thanksgiving
-
-The 11 specifies November (the eleventh month), the 4 specifies Thursday
-(the fourth day of the week, where Sunday is numbered zero), and the -1
-specifies "last" (1 would mean "first", 2 would mean "second", -2 would
-mean "second-to-last", and so on). The month can be a single month or
-a list of months. Thus you could change the 11 above to `'(1 2 3)' and
-have the entry apply to the last Thursday of January, February, and
-March. If the month is `t', the entry applies to all months of the
-year.
-
- The sexp feature of the diary allows you to specify diary entries
-based on any Emacs Lisp expression. You can use the library of built-in
-functions or you can write your own functions. The built-in functions
-include the ones shown in this section, plus a few others (*note Sexp
-Diary Entries::).
-
- The generality of sexps lets you specify any diary entry that you can
-describe algorithmically. Suppose you get paid on the 21st of the month
-if it is a weekday, and to the Friday before if the 21st is on a
-weekend. The diary entry
-
- &%%(let ((dayname (calendar-day-of-week date))
- (day (car (cdr date))))
- (or (and (= day 21) (memq dayname '(1 2 3 4 5)))
- (and (memq day '(19 20)) (= dayname 5)))
- ) Pay check deposited
-
-to just those dates. This example illustrates how the sexp can depend
-on the variable `date'; this variable is a list (MONTH DAY YEAR) that
-gives the Gregorian date for which the diary entries are being found.
-If the value of the sexp is `t', the entry applies to that date. If
-the sexp evaluates to `nil', the entry does _not_ apply to that date.
-