- Merge Big5 code points.
[chise/xemacs-chise.git-] / info / xemacs.info-15
index d9656f6..e790bcd 100644 (file)
@@ -30,6 +30,171 @@ versions, except that the sections entitled "The GNU Manifesto",
 translation approved by the author instead of in the original English.
 
 \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.
+
+\1f
 File: xemacs.info,  Node: Calendar Customization,  Prev: Diary,  Up: Calendar/Diary
 
 Customizing the Calendar and Diary
@@ -61,14 +226,14 @@ 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:
+date is visible.  If you add both of the following lines to your init
+file:
 
      (setq view-diary-entries-initially t)
      (calendar)
 
 this displays both the calendar and diary windows whenever you start
-Emacs.
+Emacs.  *Note Init File::.
 
    Similarly, if you set the variable
 `view-calendar-holidays-initially' to `t', entering the calendar
@@ -207,10 +372,12 @@ a string.
 
    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:
+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).
 
@@ -603,10 +770,12 @@ such days to be shown in the fancy diary buffer, set the variable
 
    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:
+time of day.  Add this line to your init file:
 
      (add-hook 'list-diary-entries-hook 'sort-diary-entries t)
 
+   *Note Init File::.
+
 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.
@@ -978,229 +1147,9 @@ variable when you start XEmacs.  If the file name does not specify a
 directory, the directories in the list `exec-path' are searched; this
 list is initialized based on the `PATH' environment variable when you
 start XEmacs.  You can override either or both of these default
-initializations in your `.emacs' file.
+initializations in your init file. *Note Init File::.
 
    When you use `M-!' and `M-|', XEmacs has to wait until the shell
 command completes.  You can quit with `C-g'; that terminates the shell
 command.
 
-\1f
-File: xemacs.info,  Node: Interactive Shell,  Next: Shell Mode,  Prev: Single Shell,  Up: Shell
-
-Interactive Inferior Shell
---------------------------
-
-   To run a subshell interactively with its typescript in an XEmacs
-buffer, use `M-x shell'.  This creates (or reuses) a buffer named
-`*shell*' and runs a subshell with input coming from and output going
-to that buffer.  That is to say, any "terminal output" from the subshell
-will go into the buffer, advancing point, and any "terminal input" for
-the subshell comes from text in the buffer.  To give input to the
-subshell, go to the end of the buffer and type the input, terminated by
-<RET>.
-
-   XEmacs does not wait for the subshell to do anything.  You can switch
-windows or buffers and edit them while the shell is waiting, or while
-it is running a command.  Output from the subshell waits until XEmacs
-has time to process it; this happens whenever XEmacs is waiting for
-keyboard input or for time to elapse.
-
-   To get multiple subshells, change the name of buffer `*shell*' to
-something different by using `M-x rename-buffer'.  The next use of `M-x
-shell' creates a new buffer `*shell*' with its own subshell.  By
-renaming this buffer as well you can create a third one, and so on.
-All the subshells run independently and in parallel.
-
-   The file name used to load the subshell is the value of the variable
-`explicit-shell-file-name', if that is non-`nil'.  Otherwise, the
-environment variable `ESHELL' is used, or the environment variable
-`SHELL' if there is no `ESHELL'.  If the file name specified is
-relative, the directories in the list `exec-path' are searched (*note
-Single Shell Commands: Single Shell.).
-
-   As soon as the subshell is started, it is sent as input the contents
-of the file `~/.emacs_SHELLNAME', if that file exists, where SHELLNAME
-is the name of the file that the shell was loaded from.  For example,
-if you use `csh', the file sent to it is `~/.emacs_csh'.
-
-   `cd', `pushd', and `popd' commands given to the inferior shell are
-watched by XEmacs so it can keep the `*shell*' buffer's default
-directory the same as the shell's working directory.  These commands
-are recognized syntactically by examining lines of input that are sent.
-If you use aliases for these commands, you can tell XEmacs to
-recognize them also.  For example, if the value of the variable
-`shell-pushd-regexp' matches the beginning of a shell command line,
-that line is regarded as a `pushd' command.  Change this variable when
-you add aliases for `pushd'.  Likewise, `shell-popd-regexp' and
-`shell-cd-regexp' are used to recognize commands with the meaning of
-`popd' and `cd'.
-
-   `M-x shell-resync-dirs' queries the shell and resynchronizes XEmacs'
-idea of what the current directory stack is.  `M-x
-shell-dirtrack-toggle' turns directory tracking on and off.
-
-   XEmacs keeps a history of the most recent commands you have typed in
-the `*shell*' buffer.  If you are at the beginning of a shell command
-line and type <M-p>, the previous shell input is inserted into the
-buffer before point.  Immediately typing <M-p> again deletes that input
-and inserts the one before it.  By repeating <M-p> you can move
-backward through your commands until you find one you want to repeat.
-You may then edit the command before typing <RET> if you wish. <M-n>
-moves forward through the command history, in case you moved backward
-past the one you wanted while using <M-p>.  If you type the first few
-characters of a previous command and then type <M-p>, the most recent
-shell input starting with those characters is inserted.  This can be
-very convenient when you are repeating a sequence of shell commands.
-The variable `input-ring-size' controls how many commands are saved in
-your input history.  The default is 30.
-
-\1f
-File: xemacs.info,  Node: Shell Mode,  Next: Terminal emulator,  Prev: Interactive Shell,  Up: Shell
-
-Shell Mode
-----------
-
-   The shell buffer uses Shell mode, which defines several special keys
-attached to the `C-c' prefix.  They are chosen to resemble the usual
-editing and job control characters present in shells that are not under
-XEmacs, except that you must type `C-c' first.  Here is a list of the
-special key bindings of Shell mode:
-
-`<RET>'
-     At end of buffer send line as input; otherwise, copy current line
-     to end of buffer and send it (`send-shell-input').  When a line is
-     copied, any text at the beginning of the line that matches the
-     variable `shell-prompt-pattern' is left out; this variable's value
-     should be a regexp string that matches the prompts that you use in
-     your subshell.
-
-`C-c C-d'
-     Send end-of-file as input, probably causing the shell or its
-     current subjob to finish (`shell-send-eof').
-
-`C-d'
-     If point is not at the end of the buffer, delete the next
-     character just like most other modes.  If point is at the end of
-     the buffer, send end-of-file as input, instead of generating an
-     error as in other modes (`comint-delchar-or-maybe-eof').
-
-`C-c C-u'
-     Kill all text that has yet to be sent as input
-     (`kill-shell-input').
-
-`C-c C-w'
-     Kill a word before point (`backward-kill-word').
-
-`C-c C-c'
-     Interrupt the shell or its current subjob if any
-     (`interrupt-shell-subjob').
-
-`C-c C-z'
-     Stop the shell or its current subjob if any (`stop-shell-subjob').
-
-`C-c C-\'
-     Send quit signal to the shell or its current subjob if any
-     (`quit-shell-subjob').
-
-`C-c C-o'
-     Delete last batch of output from shell (`kill-output-from-shell').
-
-`C-c C-r'
-     Scroll top of last batch of output to top of window
-     (`show-output-from-shell').
-
-`C-c C-y'
-     Copy the previous bunch of shell input and insert it into the
-     buffer before point (`copy-last-shell-input').  No final newline
-     is inserted, and the input copied is not resubmitted until you type
-     <RET>.
-
-`M-p'
-     Move backward through the input history.  Search for a matching
-     command if you have typed the beginning of a command
-     (`comint-previous-input').
-
-`M-n'
-     Move forward through the input history.  Useful when you are using
-     <M-p> quickly and go past the desired command
-     (`comint-next-input').
-
-`<TAB>'
-     Complete the file name preceding point (`comint-dynamic-complete').
-
-\1f
-File: xemacs.info,  Node: Terminal emulator,  Next: Term Mode,  Prev: Shell Mode,  Up: Shell
-
-Interactive Inferior Shell with Terminal Emulator
--------------------------------------------------
-
-   To run a subshell in a terminal emulator, putting its typescript in
-an XEmacs buffer, use `M-x term'.  This creates (or reuses) a buffer
-named `*term*' and runs a subshell with input coming from your keyboard
-and output going to that buffer.
-
-   All the normal keys that you type are sent without any interpretation
-by XEmacs directly to the subshell, as "terminal input."  Any "echo" of
-your input is the responsibility of the subshell.  (The exception is
-the terminal escape character, which by default is `C-c'. *note Term
-Mode::.)  Any "terminal output" from the subshell goes into the buffer,
-advancing point.
-
-   Some programs (such as XEmacs itself) need to control the appearance
-on the terminal screen in detail.  They do this by sending special
-control codes.  The exact control codes needed vary from terminal to
-terminal, but nowadays most terminals and terminal emulators (including
-xterm) understand the so-called "ANSI escape sequences" (first
-popularized by the Digital's VT100 family of terminal).  The term mode
-also understands these escape sequences, and for each control code does
-the appropriate thing to change the buffer so that the appearance of
-the window will match what it would be on a real terminal.  Thus you
-can actually run XEmacs inside an XEmacs Term window!
-
-   XEmacs does not wait for the subshell to do anything.  You can switch
-windows or buffers and edit them while the shell is waiting, or while
-it is running a command.  Output from the subshell waits until XEmacs
-has time to process it; this happens whenever XEmacs is waiting for
-keyboard input or for time to elapse.
-
-   To make multiple terminal emulators, rename the buffer `*term*' to
-something different using `M-x rename-uniquely', just as with Shell
-mode.
-
-   The file name used to load the subshell is determined the same way
-as for Shell mode.
-
-   Unlike Shell mode, Term mode does not track the current directory by
-examining your input.  Instead, if you use a programmable shell, you
-can have it tell Term what the current directory is.  This is done
-automatically by bash for version 1.15 and later.
-
-\1f
-File: xemacs.info,  Node: Term Mode,  Next: Paging in Term,  Prev: Terminal emulator,  Up: Shell
-
-Term Mode
----------
-
-   Term uses Term mode, which has two input modes: In line mode, Term
-basically acts like Shell mode.  *Note Shell Mode::.  In Char mode,
-each character is sent directly to the inferior subshell, except for
-the Term escape character, normally `C-c'.
-
-   To switch between line and char mode, use these commands:
-     findex term-char-mode
-
-`C-c C-k'
-     Switch to line mode.  Do nothing if already in line mode.
-
-`C-c C-j'
-     Switch to char mode.  Do nothing if already in char mode.
-
-   The following commands are only available in Char mode:
-`C-c C-c'
-     Send a literal <C-c> to the sub-shell.
-
-`C-c C-x'
-     A prefix command to conveniently access the global <C-x> commands.
-     For example, `C-c C-x o' invokes the global binding of `C-x o',
-     which is normally `other-window'.
-