-File: xemacs.info, Node: Changing an Option, Next: Face Customization, Prev: Customization Groups, Up: Easy Customization
-
-Changing an Option
-..................
-
- Here is an example of what a user option looks like in the
-customization buffer:
-
- Kill Ring Max: [Hide] 30
- [State]: this option is unchanged from its standard setting.
- Maximum length of kill ring before oldest elements are thrown away.
-
- The text following `[Hide]', `30' in this case, indicates the
-current value of the option. If you see `[Show]' instead of `[Hide]',
-it means that the value is hidden; the customization buffer initially
-hides values that take up several lines. Invoke `[Show]' to show the
-value.
-
- The line after the option name indicates the "customization state"
-of the option: in the example above, it says you have not changed the
-option yet. The word `[State]' at the beginning of this line is
-active; you can get a menu of various operations by invoking it with
-`Mouse-1' or <RET>. These operations are essential for customizing the
-variable.
-
- The line after the `[State]' line displays the beginning of the
-option's documentation string. If there are more lines of
-documentation, this line ends with `[More]'; invoke this to show the
-full documentation string.
-
- To enter a new value for `Kill Ring Max', move point to the value
-and edit it textually. For example, you can type `M-d', then insert
-another number.
-
- When you begin to alter the text, you will see the `[State]' line
-change to say that you have edited the value:
-
- [State]: you have edited the value as text, but not set the option.
-
- Editing the value does not actually set the option variable. To do
-that, you must "set" the option. To do this, invoke the word `[State]'
-and choose `Set for Current Session'.
-
- The state of the option changes visibly when you set it:
-
- [State]: you have set this option, but not saved it for future sessions.
-
- You don't have to worry about specifying a value that is not valid;
-setting the option checks for validity and will not really install an
-unacceptable value.
-
- While editing a value or field that is a file name, directory name,
-command name, or anything else for which completion is defined, you can
-type `M-<TAB>' (`widget-complete') to do completion.
-
- Some options have a small fixed set of possible legitimate values.
-These options don't let you edit the value textually. Instead, an
-active field `[Value Menu]' appears before the value; invoke this field
-to edit the value. For a boolean "on or off" value, the active field
-says `[Toggle]', and it changes to the other value. `[Value Menu]' and
-`[Toggle]' edit the buffer; the changes take effect when you use the
-`Set for Current Session' operation.
-
- Some options have values with complex structure. For example, the
-value of `load-path' is a list of directories. Here is how it appears
-in the customization buffer:
-
- Load Path:
- [INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/site-lisp
- [INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
- [INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/leim
- [INS] [DEL] [Current dir?]: /usr/local/share/emacs/19.34.94/lisp
- [INS] [DEL] [Current dir?]: /build/emacs/e19/lisp
- [INS] [DEL] [Current dir?]: /build/emacs/e19/lisp/gnus
- [INS]
- [State]: this item has been changed outside the customization buffer.
- List of directories to search for files to load....
-
-Each directory in the list appears on a separate line, and each line has
-several editable or active fields.
-
- You can edit any of the directory names. To delete a directory from
-the list, invoke `[DEL]' on that line. To insert a new directory in
-the list, invoke `[INS]' at the point where you want to insert it.
-
- You can also invoke `[Current dir?]' to switch between including a
-specific named directory in the path, and including `nil' in the path.
-(`nil' in a search path means "try the current directory.")
-
- Two special commands, <TAB> and `S-<TAB>', are useful for moving
-through the customization buffer. <TAB> (`widget-forward') moves
-forward to the next active or editable field; `S-<TAB>'
-(`widget-backward') moves backward to the previous active or editable
-field.
-
- Typing <RET> on an editable field also moves forward, just like
-<TAB>. The reason for this is that people have a tendency to type
-<RET> when they are finished editing a field. If you have occasion to
-insert a newline in an editable field, use `C-o' or `C-q C-j',
-
- Setting the option changes its value in the current Emacs session;
-"saving" the value changes it for future sessions as well. This works
-by writing code into your `~/.emacs' file so as to set the option
-variable again each time you start Emacs. To save the option, invoke
-`[State]' and select the `Save for Future Sessions' operation.
-
- You can also restore the option to its standard value by invoking
-`[State]' and selecting the `Reset' operation. There are actually
-three reset operations:
-
-`Reset to Current'
- If you have made some modifications and not yet set the option,
- this restores the text in the customization buffer to match the
- actual value.
-
-`Reset to Saved'
- This restores the value of the option to the last saved value, and
- updates the text accordingly.
-
-`Reset to Standard Settings'
- This sets the option to its standard value, and updates the text
- accordingly. This also eliminates any saved value for the option,
- so that you will get the standard value in future Emacs sessions.
-
- The state of a group indicates whether anything in that group has
-been edited, set or saved. You can select `Set for Current Session',
-`Save for Future Sessions' and the various kinds of `Reset' operation
-for the group; these operations on the group apply to all options in
-the group and its subgroups.
-
- Near the top of the customization buffer there are two lines
-containing several active fields:
-
- [Set] [Save] [Reset] [Done]
-
-Invoking `[Done]' buries this customization buffer. Each of the other
-fields performs an operation--set, save or reset--on each of the items
-in the buffer that could meaningfully be set, saved or reset.
+File: xemacs.info, Node: Holiday Customizing, Next: Date Display Format, Prev: Calendar Customizing, Up: Calendar Customization
+
+Customizing the Holidays
+........................
+
+ Emacs knows about holidays defined by entries on one of several
+lists. You can customize these lists of holidays to your own needs,
+adding or deleting 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 include all the holidays of the religions
+that it knows, 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 individual 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).
+
+ Here is a table of the possible kinds of holiday form. Day numbers
+and month numbers count starting from 1, but "dayname" numbers count
+Sunday as 0. The element STRING is always the name of the holiday, as
+a string.
+
+`(holiday-fixed MONTH DAY STRING)'
+ A fixed date on the Gregorian calendar. MONTH and DAY are
+ numbers, STRING is the name of the holiday.
+
+`(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.
+
+`(holiday-hebrew MONTH DAY STRING)'
+ A fixed date on the Hebrew calendar. MONTH and DAY are numbers,
+ STRING is the name of the holiday.
+
+`(holiday-islamic MONTH DAY STRING)'
+ A fixed date on the Islamic calendar. MONTH and DAY are numbers,
+ STRING is the name of the holiday.
+
+`(holiday-julian MONTH DAY STRING)'
+ A fixed date on the Julian calendar. MONTH and DAY are numbers,
+ STRING is the name of the holiday.
+
+`(holiday-sexp SEXP STRING)'
+ A date calculated by the Lisp expression SEXP. The expression
+ should use the variable `year' to compute and return the date of a
+ holiday, or `nil' if the holiday doesn't happen this year. The
+ value of SEXP must represent the date as a list of the form
+ `(MONTH DAY YEAR)'. STRING is the name of the holiday.
+
+`(if CONDITION HOLIDAY-FORM &optional HOLIDAY-FORM)'
+ A holiday that happens only if CONDITION is true.
+
+`(FUNCTION [ARGS])'
+ A list of dates calculated by the function FUNCTION, called with
+ arguments ARGS.
+
+ 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 init file:
+
+ (setq other-holidays '((holiday-fixed 7 14 "Bastille Day")))
+
+ *Note Init File::.
+
+The holiday form `(holiday-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:
+
+ (holiday-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
+ '((holiday-hebrew 10 2 "Last day of Hanukkah")
+ (holiday-islamic 3 12 "Mohammed's Birthday")
+ (holiday-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 Emacs Lisp's `if' or
+the `holiday-sexp' form. For example, American presidential elections
+occur on the first Tuesday after the first Monday in November of years
+divisible by 4:
+
+ (holiday-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. To include eclipses,
+for example, add `(eclipses)' to `other-holidays' and write an Emacs
+Lisp function `eclipses' that returns 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") ... )