home *** CD-ROM | disk | FTP | other *** search
GNU Info File | 1993-05-11 | 45.5 KB | 965 lines |
- This is Info file elisp, produced by Makeinfo-1.52 from the input file
- elisp.texi.
-
- This file documents GNU Emacs Lisp.
-
- This is edition 2.0 of the GNU Emacs Lisp Reference Manual, for
- Emacs Version 19.
-
- Published by the Free Software Foundation, 675 Massachusetts Avenue,
- Cambridge, MA 02139 USA
-
- Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
- manual provided the copyright notice and this permission notice are
- preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
- this manual under the conditions for verbatim copying, provided that
- the entire resulting derived work is distributed under the terms of a
- permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
- manual into another language, under the above conditions for modified
- versions, except that this permission notice may be stated in a
- translation approved by the Foundation.
-
- File: elisp, Node: Display Table Format, Next: Active Display Table, Up: Display Tables
-
- Display Table Format
- --------------------
-
- A display table is actually an
- array of 261 elements.
-
- - Function: make-display-table
- This creates and returns a
- display table. The table
- initially has `nil' in all
- elements.
-
- The first 256 elements correspond
- to character codes; the Nth element says how to display the character
- code N. The value should be `nil' or a vector of glyph values (*note
- Glyphs::.). If an element is `nil', it says to display that character
- according to the usual display conventions (*note Usual Display::.).
-
- The remaining five elements of a
- display table serve special purposes, and `nil' means use the default
- stated below.
-
- 256
- The glyph for the end of a
- truncated screen line (the
- default for this is `$').
- *Note Glyphs::.
-
- 257
- The glyph for the end of a
- continued line (the default is
- `\').
-
- 258
- The glyph for indicating a
- character displayed as an octal
- character code (the default is
- `\').
-
- 259
- The glyph for indicating a
- control character (the default
- is `^').
-
- 260
- A vector of glyphs for
- indicating the presence of
- invisible lines (the default is
- `...'). *Note Selective
- Display::.
-
- For example, here is how to
- construct a display table that mimics the effect of setting `ctl-arrow'
- to a non-`nil' value:
-
- (setq disptab (make-display-table))
- (let ((i 0))
- (while (< i 32)
- (or (= i ?\t) (= i ?\n)
- (aset disptab i (vector ?^ (+ i 64))))
- (setq i (1+ i)))
- (aset disptab 127 (vector ?^ ??)))
-
- File: elisp, Node: Active Display Table, Next: Glyphs, Prev: Display Table Format, Up: Display Tables
-
- Active Display Table
- --------------------
-
- Each window can specify a display
- table, and so can each buffer. When a buffer B is displayed in window
- W, display uses the display table for window W if it has one;
- otherwise, the display table for buffer B if it has one; otherwise, the
- standard display table if any. The display table chosen is called the
- "active" display table.
-
- - Function: window-display-table
- WINDOW
- This function returns WINDOW's
- display table, or `nil' if
- WINDOW does not have an
- assigned display table.
-
- - Function:
- set-window-display-table
- WINDOW TABLE
- This function sets the display
- table of WINDOW to TABLE. The
- argument TABLE should be either
- a display table or `nil'.
-
- - Variable: buffer-display-table
- This variable is automatically
- local in all buffers; its value
- in a particular buffer is the
- display table for that buffer,
- or `nil' if the buffer does not
- have any assigned display table.
-
- - Variable: standard-display-table
- This variable's value is the
- default display table, used
- when neither the current buffer
- nor the window displaying it
- has an assigned display table.
- This variable is `nil' by
- default.
-
- If neither the selected window
- nor the current buffer has a display table, and if the variable
- `standard-display-table' is `nil', then Emacs uses the usual display
- conventions. *Note Usual Display::.
-
- File: elisp, Node: Glyphs, Next: ISO Latin 1, Prev: Active Display Table, Up: Display Tables
-
- Glyphs
- ------
-
- A "glyph" is a generalization of
- a character; it stands for an image that takes up a single character
- position on the screen. Glyphs are represented in Lisp as integers,
- just as characters are.
-
- The meaning of each integer, as a
- glyph, is defined by the glyph table, which is the value of the
- variable `glyph-table'.
-
- - Variable: glyph-table
- The value of this variable is
- the current glyph table. It
- should be a vector; the Gth
- element defines glyph code G.
- If the value is `nil' instead
- of a vector, then all glyphs
- are simple (see below).
-
- Here are the possible types of
- elements in the glyph table:
-
- INTEGER
- Define this glyph code as an
- alias for code INTEGER. This
- is used with X windows to
- specify a face code.
-
- STRING
- Send the characters in STRING
- to the terminal to output this
- glyph. This alternative is not
- available with X Windows.
-
- `NIL'
- This glyph is simple. On an
- ordinary terminal, the glyph
- code mod 256 is the character
- to output. With X, the glyph
- code mod 256 is character to
- output, and the glyph code
- divided by 256 specifies the
- "face id number" to use while
- outputting it. *Note Faces::.
-
- If a glyph code is greater than
- or equal to the length of the glyph table, that code is automatically
- simple.
-
- File: elisp, Node: ISO Latin 1, Prev: Glyphs, Up: Display Tables
-
- ISO Latin 1
- -----------
-
- If you have a terminal that can
- handle the entire ISO Latin 1 character set, you can arrange to use
- that character set as follows:
-
- (require 'disp-table)
- (standard-display-8bit 0 255)
-
- If you are editing buffers
- written in the ISO Latin 1 character set and your terminal doesn't
- handle anything but ASCII, you can load the file `iso-ascii' to set up
- a display table which makes the other ISO characters display as
- sequences of ASCII characters. For example, the character "o with
- umlaut" displays as `{"o}'.
-
- Some European countries have
- terminals that don't support ISO Latin 1 but do support the special
- characters for that country's language. You can define a display table
- to work one language using such terminals. For an example, see
- `lisp/iso-swed.el', which handles certain Swedish terminals.
-
- You can load the appropriate
- display table for your terminal automatically by writing a
- terminal-specific Lisp file for the terminal type.
-
- File: elisp, Node: Beeping, Next: Window Systems, Prev: Display Tables, Up: Emacs Display
-
- Beeping
- =======
-
- You can make Emacs ring a bell
- (or blink the screen) to attract the user's attention. Be conservative
- about how often you do this; frequent bells can become irritating.
- Also be careful not to use beeping alone when signaling an error is
- appropriate. (*Note Errors::.)
-
- - Function: ding &optional
- DONT-TERMINATE
- This function beeps, or flashes
- the screen (see `visible-bell'
- below). It also terminates any
- keyboard macro currently
- executing unless DONT-TERMINATE
- is non-`nil'.
-
- - Function: beep &optional
- DONT-TERMINATE
- This is a synonym for `ding'.
-
- - Variable: visible-bell
- This variable determines
- whether Emacs should flash the
- screen to represent a bell.
- Non-`nil' means yes, `nil'
- means no. This is effective
- only if the Termcap entry for
- the terminal in use has the
- visible bell flag (`vb') set.
-
- File: elisp, Node: Window Systems, Prev: Beeping, Up: Emacs Display
-
- Window Systems
- ==============
-
- Emacs works with several window
- systems, most notably X Windows. Note that both Emacs and the X Window
- System use the term "window", but use it differently. An Emacs frame
- is a single window as far as X Windows is concerned; the individual
- Emacs windows are not known to X Windows at all.
-
- - Variable: window-system
- This variable tells Lisp
- programs what window system
- Emacs is running under. Its
- value should be a symbol such
- as `x' (if Emacs is running
- under X Windows) or `nil' (if
- Emacs is running on an ordinary
- terminal).
-
- - Variable: window-system-version
- This variable distinguishes
- between different versions of
- the X Window System. Its value
- is 10 or 11 when using X
- Windows; `nil' otherwise.
-
- - Variable: window-setup-hook
- This variable is a normal hook
- which Emacs runs after loading
- your `.emacs' file and the
- default initialization file (if
- any), after loading
- terminal-specific Lisp code,
- and after running the hook
- `term-setup-hook'.
-
- This hook is used for internal
- purposes: setting up
- communication with the window
- system, and creating the
- initial window. Users should
- not interfere with it.
-
- File: elisp, Node: Calendar, Next: Tips, Prev: Emacs Display, Up: Top
-
- Customizing the Calendar and Diary
- **********************************
-
- There are many customizations
- that you can use to make the calendar and diary suit your personal
- tastes.
-
- * Menu:
-
- * Calendar Customizing:: Defaults you can set.
- * Holiday Customizing:: Defining your own holidays.
- * Date Display Format:: Changing the format.
- * Time Display Format:: Changing the format.
- * Daylight Savings:: Changing the default.
- * Diary Customizing:: Defaults you can set.
- * Hebrew/Islamic Entries:: How to obtain them.
- * Fancy Diary Display:: Enhancing the diary display, sorting entries.
- * Including Diary Files:: Sharing a common diary file.
- * Sexp Diary Entries:: Fancy things you can do.
- * Appt Customizing:: Customizing appointment reminders.
-
- File: elisp, Node: Calendar Customizing, Next: Holiday Customizing, Up: Calendar
-
- Customizing the Calendar
- ========================
-
- If you set the variable
- `view-diary-entries-initially' to `t', calling up the calendar
- automatically displays the diary entries for the current date as well.
- The diary dates appear only if the current date is visible. If you add
- both of the following lines to your `.emacs' file:
-
- (setq view-diary-entries-initially t)
- (calendar)
-
- they display both the calendar and
- diary windows whenever you start Emacs.
-
- Similarly, if you set the variable
- `view-calendar-holidays-initially' to `t', entering the calendar
- automatically displays a list of holidays for the current three month
- period. The holiday list appears in a separate window.
-
- You can set the variable
- `mark-diary-entries-in-calendar' to `t' in order to place a plus sign
- (`+') beside any dates with diary entries. Whenever the calendar
- window is displayed or redisplayed, the diary entries are automatically
- marked for holidays.
-
- Similarly, setting the variable
- `mark-holidays-in-calendar' to `t' places an asterisk (`*') after all
- holiday dates visible in the calendar window.
-
- There are many customizations
- that you can make with the hooks provided. For example, the variable
- `calendar-load-hook', whose default value is `nil', is a normal hook
- run when the calendar package is first loaded (before actually starting
- to display the calendar).
-
- The variable
- `initial-calendar-window-hook', whose default value is `nil', is a
- normal hook run the first time the calendar window is displayed. The
- function is invoked only when you first enter Calendar mode, not when
- you redisplay an existing Calendar window. But if you leave the
- calendar with the `q' command and reenter it, the hook runs again.
-
- The variable
- `today-visible-calendar-hook', whose default value is `nil', is a
- normal hook run after the calendar buffer has been prepared with the
- calendar when the current date is visible in the window. One use of
- this hook is to replace today's date with asterisks; a function
- `calendar-star-date' is included for this purpose. In your `.emacs'
- file, put:
-
- (setq today-visible-calendar-hook 'calendar-star-date)
-
- Another standard hook function adds
- asterisks around the current date. Here's how to use it:
-
- (setq today-visible-calendar-hook 'calendar-mark-today)
-
- A corresponding variable,
- `today-invisible-calendar-hook', whose default value is `nil', is a
- normal hook run after the calendar buffer text has been prepared, if
- the current date is *not* visible in the window.
-
- File: elisp, Node: Holiday Customizing, Next: Date Display Format, Prev: Calendar Customizing, Up: Calendar
-
- Customizing the Holidays
- ========================
-
- Emacs knows about holidays
- defined by entries on one of several lists. You can customize theses
- lists of holidays to your own needs, adding holidays or deleting lists
- of holidays. The lists of holidays that Emacs uses are for general
- holidays (`general-holidays'), local holidays (`local-holidays'),
- Christian holidays (`christian-holidays'), Hebrew (Jewish) holidays
- (`hebrew-holidays'), Islamic (Moslem) holidays (`islamic-holidays'),
- and other holidays (`other-holidays').
-
- The general holidays are, by
- default, holidays common throughout the United States. To eliminate
- these holidays, set `general-holidays' to `nil'.
-
- There are no default local
- holidays (but sites may supply some). You can set the variable
- `local-holidays' to any list of holidays, as described below.
-
- By default, Emacs does not
- consider all the holidays of these religions, only those commonly found
- in secular calendars. For a more extensive collection of religious
- holidays, you can set any (or all) of the variables
- `all-christian-calendar-holidays', `all-hebrew-calendar-holidays', or
- `all-islamic-calendar-holidays' to `t'. If you want to eliminate the
- religious holidays, set any or all of the corresponding variables
- `christian-holidays', `hebrew-holidays', and `islamic-holidays' to
- `nil'.
-
- You can set the variable
- `other-holidays' to any list of holidays. This list, normally empty,
- is intended for your use.
-
- Each of the lists
- (`general-holidays'), (`local-holidays'), (`christian-holidays'),
- (`hebrew-holidays'), (`islamic-holidays'),and (`other-holidays') is a
- list of "holiday forms", each holiday form describing a holiday (or
- sometimes a list of holidays). Holiday forms may have the following
- formats:
-
- `(fixed MONTH DAY STRING)'
- A fixed date on the Gregorian
- calendar. MONTH and DAY are
- numbers, STRING is the name of
- the holiday.
-
- `(float MONTH DAYNAME K STRING)'
- The Kth DAYNAME in MONTH on the
- Gregorian calendar (DAYNAME=0
- for Sunday, and so on);
- negative K means count back
- from the end of the month.
- sTRING is the name of the
- holiday.
-
- `(hebrew MONTH DAY STRING)'
- A fixed date on the Hebrew
- calendar. MONTH and DAY are
- numbers, STRING is the name of
- the holiday.
-
- `(islamic MONTH DAY STRING)'
- A fixed date on the Islamic
- calendar. MONTH and DAY are
- numbers, STRING is the name of
- the holiday.
-
- `(julian MONTH DAY STRING)'
- A fixed date on the Julian
- calendar. MONTH and DAY are
- numbers, STRING is the name of
- the holiday.
-
- `(sexp SEXP STRING)'
- SEXP is a Lisp expression that
- should use the variable `year'
- to compute the date of a
- holiday, or `nil' if the
- holiday doesn't happen this
- year. The value represents the
- date as a list of the form
- `(MONTH DAY YEAR)'. STRING is
- the name of the holiday.
-
- `(if BOOLEAN HOLIDAY-FORM &optional HOLIDAY-FORM)'
- A choice between two holidays
- based on the value of BOOLEAN.
-
- `(FUNCTION &optional ARGS)'
- Dates requiring special
- computation; ARGS, if any, are
- passed in a list to the
- function
-
-
-
-
-
- `calendar-holiday-function-function'.
-
- For example, suppose you want to
- add Bastille Day, celebrated in France on July 14. You can do this by
- adding the following line to your `.emacs' file:
-
- (setq other-holidays '((fixed 7 14 "Bastille Day")))
-
- The holiday form `(fixed 7 14
- "Bastille Day")' specifies the fourteenth day of the seventh month
- (July).
-
- Many holidays occur on a specific
- day of the week, at a specific time of month. Here is a holiday form
- describing Hurricane Supplication Day, celebrated in the Virgin Islands
- on the fourth Monday in August:
-
- (float 8 1 4 "Hurricane Supplication Day")
-
- Here the 8 specifies August, the 1
- specifies Monday (Sunday is 0, Tuesday is 2, and so on), and the 4
- specifies the fourth occurrence in the month (1 specifies the first
- occurrence, 2 the second occurrence, -1 the last occurrence, -2 the
- second-to-last occurrence, and so on).
-
- You can specify holidays that
- occur on fixed days of the Hebrew, Islamic, and Julian calendars too.
- For example,
-
- (setq other-holidays
- '((hebrew 10 2 "Last day of Hanukkah")
- (islamic 3 12 "Mohammed's Birthday")
- (julian 4 2 "Jefferson's Birthday")))
-
- adds the last day of Hanukkah (since
- the Hebrew months are numbered with 1 starting from Nisan), the Islamic
- feast celebrating Mohammed's birthday (since the Islamic months are
- numbered from 1 starting with Muharram), and Thomas Jefferson's
- birthday, which is 2 April 1743 on the Julian calendar.
-
- To include a holiday
- conditionally, use either the `if' or the `sexp' form. For example,
- American presidential elections occur on the first Tuesday after the
- first Monday in November of years divisible by 4:
-
- (sexp (if (= 0 (% year 4))
- (calendar-gregorian-from-absolute
- (1+ (calendar-dayname-on-or-before
- 1 (+ 6 (calendar-absolute-from-gregorian
- (list 11 1 year))))))
- "US Presidential Election"))
-
- or
-
- (if (= 0 (% displayed-year 4))
- (fixed 11
- (extract-calendar-day
- (calendar-gregorian-from-absolute
- (1+ (calendar-dayname-on-or-before
- 1 (+ 6 (calendar-absolute-from-gregorian
- (list 11 1 displayed-year)))))))
- "US Presidential Election"))
-
- Some holidays just don't fit into
- any of these forms because special calculations are involved in their
- determination. In such cases you must write a Lisp function to do the
- calculation. The function should return a (possibly empty) list of the
- relevant Gregorian dates among the range visible in the calendar
- window, with descriptive strings, like this:
-
- (((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
-
- File: elisp, Node: Date Display Format, Next: Time Display Format, Prev: Holiday Customizing, Up: Calendar
-
- Date Display Format
- ===================
-
- You can customize the manner of
- displaying dates in the diary, in mode lines, and in messages by setting
- `calendar-date-display-form'. This variable is a list of expressions
- that can involve the variables `month', `day', and `year', all numbers
- in string form, and `monthname' and `dayname', both alphabetic strings.
- In the American style, the default value of this list is as follows:
-
- ((if dayname (concat dayname ", ")) monthname " " day ", " year)
-
- while in the European style this
- value is the default:
-
- ((if dayname (concat dayname ", ")) day " " monthname " " year)
-
- The ISO standard date
- representation is this:
-
- (year "-" month "-" day)
-
- This specifies a typical American
- format:
-
- (month "/" day "/" (substring year -2))
-
- File: elisp, Node: Time Display Format, Next: Daylight Savings, Prev: Date Display Format, Up: Calendar
-
- Time Display Format
- ===================
-
- In the calendar, diary, and
- related buffers, Emacs displays times of day in the conventional
- American style with the hours from 1 through 12, minutes, and either
- `am' or `pm'. If you prefer the "military" (European) style of writing
- times--in which the hours go from 00 to 23--you can alter the variable
- `calendar-time-display-form'. This variable is a list of expressions
- that can involve the variables `12-hours', `24-hours', and `minutes',
- all numbers in string form, and `am-pm' and `time-zone', both
- alphabetic strings. The default definition of
- `calendar-time-display-form' is as follows:
-
- (12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")"))
-
- Setting
- `calendar-time-display-form' to
-
- (24-hours ":" minutes (if time-zone " (") time-zone (if time-zone ")"))
-
- gives military-style times like
- `21:07 (UT)' if time zone names are defined, and times like `21:07' if
- they are not.
-
- File: elisp, Node: Daylight Savings, Next: Diary Customizing, Prev: Time Display Format, Up: Calendar
-
- Daylight Savings Time
- =====================
-
- Emacs understands the difference
- between standard time and daylight savings time--the times given for
- sunrise, sunset, solstices, equinoxes, and the phases of the moon take
- that into account. The default starting and stopping dates for
- daylight savings time are the present-day American rules of the first
- Sunday in April until the last Sunday in October, but you can specify
- whatever rules you want by setting `calendar-daylight-savings-starts'
- and `calendar-daylight-savings-ends'. Their values should be Lisp
- expressions that refer to the variable `year', and evaluate to the
- Gregorian date on which daylight savings time starts or (respectively)
- ends, in the form of a list `(MONTH DAY YEAR)'.
-
- Emacs uses these expressions to
- determine the starting date of daylight savings time for the holiday
- list and for correcting times of day in the solar and lunar
- calculations.
-
- The default value of
- `calendar-daylight-savings-starts' is this,
-
- (calendar-nth-named-day 1 0 4 year)
-
- which computes the first 0th day
- (Sunday) of the fourth month (April) in the year specified by `year'.
- If daylight savings time were changed to start on October 1, you would
- set `calendar-daylight-savings-starts' to
-
- (list 10 1 year)
-
- For a more complex example,
- suppose daylight savings time begins on the first of Nisan on the
- Hebrew calendar. You would set `calendar-daylight-savings-starts' to
-
- (calendar-gregorian-from-absolute
- (calendar-absolute-from-hebrew
- (list 1 1 (+ year 3760))))
-
- because Nisan is the first month in
- the Hebrew calendar and the Hebrew year differs from the Gregorian year
- by 3760 at Nisan.
-
- If there is no daylight savings
- time at your location, or if you want all times in standard time, set
- `calendar-daylight-savings-starts' and `calendar-daylight-savings-ends'
- to `nil'.
-
- File: elisp, Node: Diary Customizing, Next: Hebrew/Islamic Entries, Prev: Daylight Savings, Up: Calendar
-
- Customizing the Diary
- =====================
-
- Ordinarily, the mode line of the
- diary buffer window indicates any holidays that fall on the date of the
- diary entries. The process of checking for holidays can take several
- seconds, so including holiday information delays the display of the
- diary buffer noticeably. If you'd prefer to have a faster display of
- the diary buffer but without the holiday information, set the variable
- `holidays-in-diary-buffer' to `nil'.
-
- The variable
- `number-of-diary-entries' controls the number of days of diary entries
- to be displayed at one time. It affects the initial display when
- `view-diary-entries-initially' is `t', as well as the command `M-x
- diary'. For example, the default value is 1, which says to display
- only the current day's diary entries. If the value is 2, both the
- current day's and the next day's entries are displayed. The value can
- also be a vector of seven elements: if the value is `[0 2 2 2 2 4 1]'
- then no diary entries appear on Sunday, the current date's and the next
- day's diary entries appear Monday through Thursday, Friday through
- Monday's entries appear on Friday, while on Saturday only that day's
- entries appear.
-
- The variable
- `print-diary-entries-hook' is a normal hook run after preparation of a
- temporary buffer containing just the diary entries currently visible in
- the diary buffer. (The other, irrelevant diary entries are really
- absent from the temporary buffer; in the diary buffer, they are merely
- hidden.) The default value of this hook does the printing with the
- command `lpr-buffer'. If you want to use a different command to do the
- printing, just change the value of this hook. Other uses might
- include, for example, rearranging the lines into order by day and time.
-
- You can customize the form of
- dates in your diary file, if neither the standard American nor European
- styles suits your needs, by setting the variable `diary-date-forms'.
- This variable is a list of forms of dates recognized in the diary file.
- Each form is a list of regular expressions (*note Syntax of Regular
- Expressions: Rexgexps.) and the variables `month', `day', `year',
- `monthname', and `dayname'. The variable `monthname' matchs the name
- of the month, capitalized or not, or its three-letter abbreviation,
- followed by a period or not; it matches `*'. Similarly, `dayname'
- matchs the name of the day, capitalized or not, or its three-letter
- abbreviation, followed by a period or not. The variables `month',
- `day', and `year' match those numerical values, preceded by arbitrarily
- many zeros; they also match `*'. The default value of
- `diary-date-forms' in the American style is
-
- ((month "/" day "[^/0-9]")
- (month "/" day "/" year "[^0-9]")
- (monthname " *" day "[^,0-9]")
- (monthname " *" day ", *" year "[^0-9]")
- (dayname "\\W"))
-
- Emacs matches of the diary entries
- with the date forms is done with the standard syntax table from
- Fundamental mode (*note Syntax::.), but with the `*' changed so that it
- is a word constituent.
-
- The forms on the list must be
- *mutually exclusive* and must not match any portion of the diary entry
- itself, just the date. If, to be mutually exclusive, the pattern must
- match a portion of the diary entry itself, the first element of the
- form *must* be `backup'. This causes the date recognizer to back up to
- the beginning of the current word of the diary entry. Even if you use
- `backup', the form must absolutely not match more than a portion of the
- first word of the diary entry. The default value of `diary-date-forms'
- in the European style is this list:
-
- ((day "/" month "[^/0-9]")
- (day "/" month "/" year "[^0-9]")
- (backup day " *" monthname "\\W+\\<[^*0-9]")
- (day " *" monthname " *" year "[^0-9]")
- (dayname "\\W"))
-
- Notice the use of `backup' in the
- middle form because part of the diary entry must be matched to
- distinguish this form from the following one.
-
- File: elisp, Node: Hebrew/Islamic Entries, Next: Fancy Diary Display, Prev: Diary Customizing, Up: Calendar
-
- Hebrew- and Islamic-Date Diary Entries
- ======================================
-
- Your diary file can have entries
- based on Hebrew or Islamic dates, as well as entries based on our usual
- Gregorian calendar. However, because the processing of such entries is
- time-consuming and most people don't need them, you must customize the
- processing of your diary file to specify that you want such entries
- recognized. If you want Hebrew-date diary entries, for example, you
- must include these lines in your `.emacs' file:
-
- (setq nongregorian-diary-listing-hook 'list-hebrew-diary-entries)
- (setq nongregorian-diary-marking-hook 'mark-hebrew-diary-entries)
-
- If you want Islamic-date entries,
- include these lines in your `.emacs' file:
-
- (setq nongregorian-diary-listing-hook 'list-islamic-diary-entries)
- (setq nongregorian-diary-marking-hook 'mark-islamic-diary-entries)
-
- If you want both Hebrew- and
- Islamic-date entries, include these lines:
-
- (setq nongregorian-diary-listing-hook
- '(list-hebrew-diary-entries list-islamic-diary-entries))
- (setq nongregorian-diary-marking-hook
- '(mark-hebrew-diary-entries mark-islamic-diary-entries))
-
- Hebrew- and Islamic-date diary
- entries have the same formats as Gregorian-date diary entries, except
- that the date must be preceded with an `H' for Hebrew dates and an `I'
- for Islamic dates. Moreover, because the Hebrew and Islamic month
- names are not uniquely specified by the first three letters, you may
- not abbreviate them. For example, a diary entry for the Hebrew date
- Heshvan 25 could look like
-
- HHeshvan 25 Happy Hebrew birthday!
-
- and would appear in the diary for
- any date that corresponds to Heshvan 25 on the Hebrew calendar.
- Similarly, an Islamic-date diary entry might be
-
- IDhu al-Qada 25 Happy Islamic birthday!
-
- and would appear in the diary for
- any date that corresponds to Dhu al-Qada 25 on the Islamic calendar.
-
- As with Gregorian-date diary
- entries, Hebrew- and Islamic-date entries are nonmarking if they are
- preceded with an ampersand (`&').
-
- There are commands to help you in
- making Hebrew- and Islamic-date entries to your diary:
-
- `i h d'
- Add a diary entry for the
- Hebrew date corresponding to
- the selected date
- (`insert-hebrew-diary-entry').
-
- `i h m'
- Add a diary entry for the day
- of the Hebrew month
- corresponding to the selected
- date
-
-
-
-
-
-
- (`insert-monthly-hebrew-diary-entry').
-
- `i h y'
- Add a diary entry for the day
- of the Hebrew year
- corresponding to the selected
- date
-
-
-
-
-
- (`insert-yearly-hebrew-diary-entry').
-
- `i i d'
- Add a diary entry for the
- Islamic date corresponding to
- the selected date
- (`insert-islamic-diary-entry').
-
- `i i m'
- Add a diary entry for the day
- of the Islamic month
- corresponding to the selected
- date
-
-
-
-
-
-
-
- (`insert-monthly-islamic-diary-entry').
-
- `i i y'
- Add a diary entry for the day
- of the Islamic year
- corresponding to the selected
- date
-
-
-
-
-
-
- (`insert-yearly-islamic-diary-entry').
-
- These commands work exactly like
- the corresponding commands for ordinary diary entries: Move point to a
- date in the calendar window and the above commands insert the Hebrew or
- Islamic date (corresponding to the date indicated by point) at the end
- of your diary file and you can then type the diary entry. If you want
- the diary entry to be nonmarking, give a numeric argument to the
- command.
-
- File: elisp, Node: Fancy Diary Display, Next: Including Diary Files, Prev: Hebrew/Islamic Entries, Up: Calendar
-
- Fancy Diary Display
- ===================
-
- Diary display works by preparing
- the diary buffer and then running the hook `diary-display-hook'. The
- default value of this hook hides the irrelevant diary entries and then
- displays the buffer (`simple-diary-display'). However, if you specify
- the hook as follows,
-
- (add-hook 'diary-display-hook 'fancy-diary-display)
-
- then fancy mode displays diary
- entries and holidays by copying them into a special buffer that exists
- only for display. Copying provides an opportunity to change the
- displayed text to make it prettier--for example, to sort the entries by
- the dates they apply to.
-
- As with simple diary display, you
- can print a hard copy of the buffer with `print-diary-entries'. To
- print a hard copy of a day-by-day diary for a week by positioning point
- on Sunday of that week, type `7 d' and then do `M-x
- print-diary-entries'. As usual, the inclusion of the holidays slows
- down the display slightly; you can speed things up by setting the
- variable `holidays-in-diary-buffer' to `nil'.
-
- Ordinarily, the fancy diary
- buffer does not show days for which there are no diary entries, even if
- that day is a holiday. If you want such days to be shown in the fancy
- diary buffer, set the variable `diary-list-include-blanks' to `t'.
-
- If you use the fancy diary
- display, you can use the normal hook `list-diary-entries-hook' to sort
- each day's diary entries by their time of day. Add this line to your
- `.emacs' file:
-
- (add-hook 'list-diary-entries-hook 'sort-diary-entries)
-
- For each day, this sorts diary
- entries that begin with a recognizable time of day according to their
- times. Diary entries without times come first within each day.
-
- File: elisp, Node: Included Diary Files
-
- Included Diary Files
- ====================
-
- If you use the fancy diary
- display, you can have diary entries from other files included with your
- own by an "include" mechanism. This facility makes possible the
- sharing of common diary files among groups of users. Lines in the
- diary file of this form:
-
- #include "FILENAME"
-
- includes the diary entries from the
- file FILENAME in the fancy diary buffer (because the ordinary diary
- buffer is just the buffer associated with your diary file, you cannot
- use the include mechanism unless you use the fancy diary buffer). The
- include mechanism is recursive, by the way, so that included files can
- include other files, and so on; you must be careful not to have a cycle
- of inclusions, of course. To enable the include facility, add lines as
- follows to your `.emacs' file:
-
- (add-hook 'list-diary-entries-hook 'include-other-diary-files)
- (add-hook 'mark-diary-entries-hook 'mark-included-diary-files)
-
-