X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=info%2Fxemacs.info-16;h=60c77c2da58bd09f4e333ee54f30c29d50702be2;hb=2779fcb5d524d6b7de5a6ef9ebfd6662433a4a07;hp=8058de27c1a5457757ed64d5632b2fa1f737186b;hpb=dd8f4c0e5ff27909836e7478df6b17d816a0db28;p=chise%2Fxemacs-chise.git- diff --git a/info/xemacs.info-16 b/info/xemacs.info-16 index 8058de2..60c77c2 100644 --- a/info/xemacs.info-16 +++ b/info/xemacs.info-16 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0 from +This is ../info/xemacs.info, produced by makeinfo version 4.0b from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor @@ -30,1144 +30,1178 @@ versions, except that the sections entitled "The GNU Manifesto", translation approved by the author instead of in the original English.  -File: xemacs.info, Node: Term Mode, Next: Paging in Term, Prev: Terminal emulator, Up: Shell +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") ... ) -Term Mode ---------- + +File: xemacs.info, Node: Date Display Format, Next: Time Display Format, Prev: Holiday Customizing, Up: Calendar Customization - 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'. +Date Display Format +................... - To switch between line and char mode, use these commands: - findex term-char-mode + 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 holds a list of expressions that can involve the variables +`month', `day', and `year', which are all numbers in string form, and +`monthname' and `dayname', which are both alphabetic strings. In the +American style, the default value of this list is as follows: -`C-c C-k' - Switch to line mode. Do nothing if already in line mode. + ((if dayname (concat dayname ", ")) monthname " " day ", " year) -`C-c C-j' - Switch to char mode. Do nothing if already in char mode. +while in the European style this value is the default: - The following commands are only available in Char mode: -`C-c C-c' - Send a literal to the sub-shell. + ((if dayname (concat dayname ", ")) day " " monthname " " year) -`C-c C-x' - A prefix command to conveniently access the global commands. - For example, `C-c C-x o' invokes the global binding of `C-x o', - which is normally `other-window'. + + The ISO standard date representation is this: + + (year "-" month "-" day) + +This specifies a typical American format: + + (month "/" day "/" (substring year -2))  -File: xemacs.info, Node: Paging in Term, Prev: Term Mode, Up: Shell +File: xemacs.info, Node: Time Display Format, Next: Daylight Savings, Prev: Date Display Format, Up: Calendar Customization -Paging in the terminal emulator -------------------------------- +Time Display Format +................... - Term mode has a pager feature. When the pager is enabled, term mode -will pause at the end of each screenful. + The calendar and diary by default display 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 European style, also known +in the US as military, 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', which are all numbers in string form, and +`am-pm' and `time-zone', which are both alphabetic strings. The +default value of `calendar-time-display-form' is as follows: -`C-c C-q' - Toggles the pager feature: Disables the pager if it is enabled, - and vice versa. This works in both line and char modes. If the - pager enabled, the mode-line contains the word `page'. + (12-hours ":" minutes am-pm + (if time-zone " (") time-zone (if time-zone ")")) - If the pager is enabled, and Term receives more than a screenful of -output since your last input, Term will enter More break mode. This is -indicated by `**MORE**' in the mode-line. Type a `Space' to display -the next screenful of output. Type `?' to see your other options. The -interface is similar to the Unix `more' program. +Here is a value that provides European style times: + + (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: xemacs.info, Node: Narrowing, Next: Hardcopy, Prev: Shell, Up: Top +File: xemacs.info, Node: Daylight Savings, Next: Diary Customizing, Prev: Time Display Format, Up: Calendar Customization + +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 rules +for daylight savings time vary from place to place and have also varied +historically from year to year. To do the job properly, Emacs needs to +know which rules to use. + + Some operating systems keep track of the rules that apply to the +place where you are; on these systems, Emacs gets the information it +needs from the system automatically. If some or all of this +information is missing, Emacs fills in the gaps with the rules +currently used in Cambridge, Massachusetts. If the resulting rules are +not what you want, you can tell Emacs the rules to use by setting +certain variables. + + If the default choice of rules is not appropriate for your location, +you can tell Emacs the rules to use by setting the variables +`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)'. The values should be +`nil' if your area does not use daylight savings time. + + 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 values for Cambridge, Massachusetts are as follows: + + (calendar-nth-named-day 1 0 4 year) + (calendar-nth-named-day -1 0 10 year) + +That is, the first 0th day (Sunday) of the fourth month (April) in the +year specified by `year', and the last Sunday of the tenth month +(October) of that year. If daylight savings time were changed to start +on October 1, you would set `calendar-daylight-savings-starts' to this: + + (list 10 1 year) + + For a more complex example, suppose daylight savings time begins on +the first of Nisan on the Hebrew calendar. You should set +`calendar-daylight-savings-starts' to this value: + + (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'. + + The variable `calendar-daylight-time-offset' specifies the +difference between daylight savings time and standard time, measured in +minutes. The value for Cambridge, Massachusetts is 60. + + The two variables `calendar-daylight-savings-starts-time' and +`calendar-daylight-savings-ends-time' specify the number of minutes +after midnight local time when the transition to and from daylight +savings time should occur. For Cambridge, Massachusetts both variables' +values are 120. -Narrowing -========= + +File: xemacs.info, Node: Diary Customizing, Next: Hebrew/Islamic Entries, Prev: Daylight Savings, Up: Calendar Customization + +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: for example, 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 patterns +for recognizing a date. Each date pattern is a list whose elements may +be regular expressions (*note Regexps::) or the symbols `month', `day', +`year', `monthname', and `dayname'. All these elements serve as +patterns that match certain kinds of text in the diary file. In order +for the date pattern, as a whole, to match, all of its elements must +match consecutively. + + A regular expression in a date pattern matches in its usual fashion, +using the standard syntax table altered so that `*' is a word +constituent. + + The symbols `month', `day', `year', `monthname', and `dayname' match +the month number, day number, year number, month name, and day name of +the date being considered. The symbols that match numbers allow +leading zeros; those that match names allow three-letter abbreviations +and capitalization. All the symbols can match `*'; since `*' in a +diary entry means "any day", "any month", and so on, it should match +regardless of the date being considered. + + The default value of `diary-date-forms' in the American style is +this: + + ((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 Tables: +(lispref)Syntax Tables.), but with the `*' changed so that it is a word +constituent. + + The date patterns in the list must be _mutually exclusive_ and must +not match any portion of the diary entry itself, just the date and one +character of whitespace. If, to be mutually exclusive, the pattern +must match a portion of the diary entry text--beyond the whitespace +that ends the date--then the first element of the date pattern _must_ +be `backup'. This causes the date recognizer to back up to the +beginning of the current word of the diary entry, after finishing the +match. Even if you use `backup', the date pattern 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 third pattern, because it needs to +match part of a word beyond the date itself to distinguish it from the +fourth pattern. - "Narrowing" means focusing in on some portion of the buffer, making -the rest temporarily invisible and inaccessible. Cancelling the -narrowing and making the entire buffer once again visible is called -"widening". The amount of narrowing in effect in a buffer at any time -is called the buffer's "restriction". + +File: xemacs.info, Node: Hebrew/Islamic Entries, Next: Fancy Diary Display, Prev: Diary Customizing, Up: Calendar Customization -`C-x n n' - Narrow down to between point and mark (`narrow-to-region'). +Hebrew- and Islamic-Date Diary Entries +...................................... -`C-x n w' - Widen to make the entire buffer visible again (`widen'). + Your diary file can have entries based on Hebrew or Islamic dates, as +well as entries based on the world-standard Gregorian calendar. +However, because recognition of such entries is time-consuming and most +people don't use them, you must explicitly enable their use. If you +want the diary to recognize Hebrew-date diary entries, for example, you +must do this: - Narrowing sometimes makes it easier to concentrate on a single -subroutine or paragraph by eliminating clutter. It can also be used to -restrict the range of operation of a replace command or repeating -keyboard macro. The word `Narrow' appears in the mode line whenever -narrowing is in effect. When you have narrowed to a part of the -buffer, that part appears to be all there is. You can't see the rest, -can't move into it (motion commands won't go outside the visible part), -and can't change it in any way. However, the invisible text is not -gone; if you save the file, it will be saved. + (add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries) + (add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries) - The primary narrowing command is `C-x n n' (`narrow-to-region'). It -sets the current buffer's restrictions so that the text in the current -region remains visible but all text before the region or after the -region is invisible. Point and mark do not change. +If you want Islamic-date entries, do this: - Because narrowing can easily confuse users who do not understand it, -`narrow-to-region' is normally a disabled command. Attempting to use -this command asks for confirmation and gives you the option of enabling -it; once you enable the command, confirmation will no longer be -required. *Note Disabling::. + (add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries) + (add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries) - To undo narrowing, use `C-x n w' (`widen'). This makes all text in -the buffer accessible again. + Hebrew- and Islamic-date diary entries have the same formats as +Gregorian-date diary entries, except that `H' precedes a Hebrew date +and `I' precedes an Islamic date. 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 this: - Use the `C-x =' command to get information on what part of the -buffer you narrowed down. *Note Position Info::. + HHeshvan 25 Happy Hebrew birthday! - -File: xemacs.info, Node: Hardcopy, Next: Recursive Edit, Prev: Narrowing, Up: Top +and would appear in the diary for any date that corresponds to Heshvan +25 on the Hebrew calendar. And here is Islamic-date diary entry that +matches Dhu al-Qada 25: -Hardcopy Output -=============== + IDhu al-Qada 25 Happy Islamic birthday! - The XEmacs commands for making hardcopy derive their names from the -Unix commands `print' and `lpr'. +and would appear in the diary for any date that corresponds to Dhu +al-Qada 25 on the Islamic calendar. -`M-x print-buffer' - Print hardcopy of current buffer using Unix command `print' - (`lpr -p'). This command adds page headings containing the file - name and page number. + As with Gregorian-date diary entries, Hebrew- and Islamic-date +entries are nonmarking if they are preceded with an ampersand (`&'). -`M-x lpr-buffer' - Print hardcopy of current buffer using Unix command `lpr'. This - command does not add page headings. + Here is a table of commands used in the calendar to create diary +entries that match the selected date and other dates that are similar +in the Hebrew or Islamic calendar: -`M-x print-region' - Like `print-buffer', but prints only the current region. +`i h d' + Add a diary entry for the Hebrew date corresponding to the + selected date (`insert-hebrew-diary-entry'). -`M-x lpr-region' - Like `lpr-buffer', but prints only the current region. +`i h m' + Add a diary entry for the day of the Hebrew month corresponding to + the selected date (`insert-monthly-hebrew-diary-entry'). This + diary entry matches any date that has the same Hebrew + day-within-month as the selected date. - All the hardcopy commands pass extra switches to the `lpr' program -based on the value of the variable `lpr-switches'. Its value should be -a list of strings, each string a switch starting with `-'. For -example, the value could be `("-Pfoo")' to print on printer `foo'. +`i h y' + Add a diary entry for the day of the Hebrew year corresponding to + the selected date (`insert-yearly-hebrew-diary-entry'). This diary + entry matches any date which has the same Hebrew month and + day-within-month as the selected date. - -File: xemacs.info, Node: Recursive Edit, Next: Dissociated Press, Prev: Hardcopy, Up: Top - -Recursive Editing Levels -======================== - - A "recursive edit" is a situation in which you are using XEmacs -commands to perform arbitrary editing while in the middle of another -XEmacs command. For example, when you type `C-r' inside a -`query-replace', you enter a recursive edit in which you can change the -current buffer. When you exit from the recursive edit, you go back to -the `query-replace'. - - "Exiting" a recursive edit means returning to the unfinished -command, which continues execution. For example, exiting the recursive -edit requested by `C-r' in `query-replace' causes query replacing to -resume. Exiting is done with `C-M-c' (`exit-recursive-edit'). - - You can also "abort" a recursive edit. This is like exiting, but -also quits the unfinished command immediately. Use the command `C-]' -(`abort-recursive-edit') for this. *Note Quitting::. - - The mode line shows you when you are in a recursive edit by -displaying square brackets around the parentheses that always surround -the major and minor mode names. Every window's mode line shows the -square brackets, since XEmacs as a whole, rather than any particular -buffer, is in a recursive edit. - - It is possible to be in recursive edits within recursive edits. For -example, after typing `C-r' in a `query-replace', you might type a -command that entered the debugger. In such a case, two or more sets of -square brackets appear in the mode line(s). Exiting the inner -recursive edit (here with the debugger `c' command) resumes the -query-replace command where it called the debugger. After the end of -the query-replace command, you would be able to exit the first -recursive edit. Aborting exits only one level of recursive edit; it -returns to the command level of the previous recursive edit. You can -then abort that one as well. - - The command `M-x top-level' aborts all levels of recursive edits, -returning immediately to the top level command reader. - - The text you edit inside the recursive edit need not be the same text -that you were editing at top level. If the command that invokes the -recursive edit selects a different buffer first, that is the buffer you -will edit recursively. You can switch buffers within the recursive edit -in the normal manner (as long as the buffer-switching keys have not been -rebound). While you could theoretically do the rest of your editing -inside the recursive edit, including visiting files, this could have -surprising effects (such as stack overflow) from time to time. It is -best if you always exit or abort a recursive edit when you no longer -need it. - - In general, XEmacs tries to avoid using recursive edits. It is -usually preferable to allow users to switch among the possible editing -modes in any order they like. With recursive edits, the only way to get -to another state is to go "back" to the state that the recursive edit -was invoked from. +`i i d' + Add a diary entry for the Islamic date corresponding to the + selected date (`insert-islamic-diary-entry'). - -File: xemacs.info, Node: Dissociated Press, Next: CONX, Prev: Recursive Edit, Up: Top - -Dissociated Press -================= - - `M-x dissociated-press' is a command for scrambling a file of text -either word by word or character by character. Starting from a buffer -of straight English, it produces extremely amusing output. The input -comes from the current XEmacs buffer. Dissociated Press writes its -output in a buffer named `*Dissociation*', and redisplays that buffer -after every couple of lines (approximately) to facilitate reading it. - - `dissociated-press' asks every so often whether to continue -operating. Answer `n' to stop it. You can also stop at any time by -typing `C-g'. The dissociation output remains in the `*Dissociation*' -buffer for you to copy elsewhere if you wish. - - Dissociated Press operates by jumping at random from one point in the -buffer to another. In order to produce plausible output rather than -gibberish, it insists on a certain amount of overlap between the end of -one run of consecutive words or characters and the start of the next. -That is, if it has just printed out `president' and then decides to -jump to a different point in the file, it might spot the `ent' in -`pentagon' and continue from there, producing `presidentagon'. Long -sample texts produce the best results. - - A positive argument to `M-x dissociated-press' tells it to operate -character by character, and specifies the number of overlap characters. -A negative argument tells it to operate word by word and specifies the -number of overlap words. In this mode, whole words are treated as the -elements to be permuted, rather than characters. No argument is -equivalent to an argument of two. For your againformation, the output -goes only into the buffer `*Dissociation*'. The buffer you start with -is not changed. - - Dissociated Press produces nearly the same results as a Markov chain -based on a frequency table constructed from the sample text. It is, -however, an independent, ignoriginal invention. Dissociated Press -techniquitously copies several consecutive characters from the sample -between random choices, whereas a Markov chain would choose randomly for -each word or character. This makes for more plausible sounding results -and runs faster. - - It is a mustatement that too much use of Dissociated Press can be a -developediment to your real work. Sometimes to the point of outragedy. -And keep dissociwords out of your documentation, if you want it to be -well userenced and properbose. Have fun. Your buggestions are welcome. +`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 much like the corresponding commands for ordinary +diary entries: they apply to the date that point is on in the calendar +window, and what they do is insert just the date portion of a diary +entry at the end of your diary file. You must then insert the rest of +the diary entry.  -File: xemacs.info, Node: CONX, Next: Amusements, Prev: Dissociated Press, Up: Top +File: xemacs.info, Node: Fancy Diary Display, Next: Included Diary Files, Prev: Hebrew/Islamic Entries, Up: Calendar Customization + +Fancy Diary Display +................... -CONX -==== + Diary display works by preparing the diary buffer and then running +the hook `diary-display-hook'. The default value of this hook +(`simple-diary-display') hides the irrelevant diary entries and then +displays the buffer. However, if you specify the hook as follows, - Besides producing a file of scrambled text with Dissociated Press, -you can generate random sentences by using CONX. + (add-hook 'diary-display-hook 'fancy-diary-display) -`M-x conx' - Generate random sentences in the `*conx*' buffer. +this enables fancy diary display. It displays diary entries and +holidays by copying them into a special buffer that exists only for the +sake of display. Copying to a separate buffer provides an opportunity +to change the displayed text to make it prettier--for example, to sort +the entries by the dates they apply to. -`M-x conx-buffer' - Absorb the text in the current buffer into the `conx' database. + 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'. -`M-x conx-init' - Forget the current word-frequency tree. + 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'. -`M-x conx-load' - Load a `conx' database that has been previously saved with `M-x - conx-save'. + 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 init file: -`M-x conx-region' - Absorb the text in the current buffer into the `conx' database. + (add-hook 'list-diary-entries-hook 'sort-diary-entries t) -`M-x conx-save' - Save the current `conx' database to a file for future retrieval. + *Note Init File::. - Copy text from a buffer using `M-x conx-buffer' or `M-x conx-region' -and then type `M-x conx'. Output is continuously generated until you -type <^G>. You can save the `conx' database to a file with `M-x -conx-save', which you can retrieve with `M-x conx-load'. To clear the -database, use `M-x conx-init'. +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: xemacs.info, Node: Amusements, Next: Emulation, Prev: CONX, Up: Top +File: xemacs.info, Node: Included Diary Files, Next: Sexp Diary Entries, Prev: Fancy Diary Display, Up: Calendar Customization + +Included Diary Files +.................... + + Fancy diary display also has the ability to process included diary +files. This permits a group of people to share a diary file for events +that apply to all of them. Lines in the diary file of this form: -Other Amusements -================ + #include "FILENAME" - If you are a little bit bored, you can try `M-x hanoi'. If you are -considerably bored, give it a numeric argument. If you are very, very -bored, try an argument of 9. Sit back and watch. +includes the diary entries from the file FILENAME in the fancy diary +buffer. The include mechanism is recursive, so that included files can +include other files, and so on; you must be careful not to have a cycle +of inclusions, of course. Here is how to enable the include facility: - When you are frustrated, try the famous Eliza program. Just do `M-x -doctor'. End each input by typing `RET' twice. + (add-hook 'list-diary-entries-hook 'include-other-diary-files) + (add-hook 'mark-diary-entries-hook 'mark-included-diary-files) - When you are feeling strange, type `M-x yow'. + The include mechanism works only with the fancy diary display, +because ordinary diary display shows the entries directly from your +diary file.  -File: xemacs.info, Node: Emulation, Next: Customization, Prev: Amusements, Up: Top +File: xemacs.info, Node: Sexp Diary Entries, Next: Appt Customizing, Prev: Included Diary Files, Up: Calendar Customization -Emulation -========= +Sexp Entries and the Fancy Diary Display +........................................ - XEmacs can be programmed to emulate (more or less) most other -editors. Standard facilities can emulate these: + Sexp diary entries allow you to do more than just have complicated +conditions under which a diary entry applies. If you use the fancy +diary display, sexp entries can generate the text of the entry depending +on the date itself. For example, an anniversary diary entry can insert +the number of years since the anniversary date into the text of the +diary entry. Thus the `%d' in this dairy entry: -Viper (a vi emulator) - In XEmacs, Viper is the preferred emulation of vi within XEmacs. - Viper is designed to allow you to take advantage of the best - features of XEmacs while still doing your basic editing in a - familiar, vi-like fashion. Viper provides various different - levels of vi emulation, from a quite complete emulation that - allows almost no access to native XEmacs commands, to an "expert" - mode that combines the most useful vi commands with the most - useful XEmacs commands. + %%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old) - To start Viper, put the command +gets replaced by the age, so on October 31, 1990 the entry appears in +the fancy diary buffer like this: - (viper-mode) + Arthur's birthday (42 years old) - in your init file. *Note Init File::. +If the diary file instead contains this entry: - Viper comes with a separate manual that is provided standard with - the XEmacs distribution. + %%(diary-anniversary 10 31 1948) Arthur's %d%s birthday -EDT (DEC VMS editor) - Turn on EDT emulation with `M-x edt-emulation-on'. `M-x - edt-emulation-off' restores normal Emacs command bindings. +the entry in the fancy diary buffer for October 31, 1990 appears like +this: - Most of the EDT emulation commands are keypad keys, and most - standard Emacs key bindings are still available. The EDT - emulation rebindings are done in the global keymap, so there is no - problem switching buffers or major modes while in EDT emulation. + Arthur's 42nd birthday -Gosling Emacs - Turn on emulation of Gosling Emacs (aka Unipress Emacs) with `M-x - set-gosmacs-bindings'. This redefines many keys, mostly on the - `C-x' and `ESC' prefixes, to work as they do in Gosmacs. `M-x - set-gnu-bindings' returns to normal XEmacs by rebinding the same - keys to the definitions they had at the time `M-x - set-gosmacs-bindings' was done. + Similarly, cyclic diary entries can interpolate the number of +repetitions that have occurred: - It is also possible to run Mocklisp code written for Gosling Emacs. - *Note Mocklisp::. + %%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time) - -File: xemacs.info, Node: Customization, Next: Quitting, Prev: Emulation, Up: Top +looks like this: -Customization -************* + Renew medication (5th time) - This chapter talks about various topics relevant to adapting the -behavior of Emacs in minor ways. +in the fancy diary display on September 8, 1990. - All kinds of customization affect only the particular Emacs job that -you do them in. They are completely lost when you kill the Emacs job, -and have no effect on other Emacs jobs you may run at the same time or -later. The only way an Emacs job can affect anything outside of it is -by writing a file; in particular, the only way to make a customization -`permanent' is to put something in your init file or other appropriate -file to do the customization in each session. *Note Init File::. + The generality of sexp diary entries lets you specify any diary entry +that you can describe algorithmically. A sexp diary entry contains an +expression that computes whether the entry applies to any given date. +If its value is non-`nil', the entry applies to that date; otherwise, +it does not. The expression can use the variable `date' to find the +date being considered; its value is a list (MONTH DAY YEAR) that refers +to the Gregorian calendar. -* Menu: + Suppose you get paid on the 21st of the month if it is a weekday, and +on the Friday before if the 21st is on a weekend. Here is how to write +a sexp diary entry that matches those dates: -* Minor Modes:: Each minor mode is one feature you can turn on - independently of any others. -* Variables:: Many Emacs commands examine Emacs variables - to decide what to do; by setting variables, - you can control their functioning. -* Keyboard Macros:: A keyboard macro records a sequence of keystrokes - to be replayed with a single command. -* Key Bindings:: The keymaps say what command each key runs. - By changing them, you can "redefine keys". -* Syntax:: The syntax table controls how words and expressions - are parsed. -* Init File:: How to write common customizations in the init file. -* Audible Bell:: Changing how Emacs sounds the bell. -* Faces:: Changing the fonts and colors of a region of text. -* Frame Components:: Controlling the presence and positions of the - menubar, toolbars, and gutters. -* X Resources:: X resources controlling various aspects of the - behavior of XEmacs. + &%%(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 - -File: xemacs.info, Node: Minor Modes, Next: Variables, Up: Customization - -Minor Modes -=========== - - Minor modes are options which you can use or not. For example, Auto -Fill mode is a minor mode in which breaks lines between words as -you type. All the minor modes are independent of each other and of the -selected major mode. Most minor modes inform you in the mode line when -they are on; for example, `Fill' in the mode line means that Auto Fill -mode is on. - - Append `-mode' to the name of a minor mode to get the name of a -command function that turns the mode on or off. Thus, the command to -enable or disable Auto Fill mode is called `M-x auto-fill-mode'. These -commands are usually invoked with `M-x', but you can bind keys to them -if you wish. With no argument, the function turns the mode on if it was -off and off if it was on. This is known as "toggling". A positive -argument always turns the mode on, and an explicit zero argument or a -negative argument always turns it off. - - Auto Fill mode allows you to enter filled text without breaking lines -explicitly. Emacs inserts newlines as necessary to prevent lines from -becoming too long. *Note Filling::. - - Overwrite mode causes ordinary printing characters to replace -existing text instead of moving it to the right. For example, if point -is in front of the `B' in `FOOBAR', and you type a `G' in Overwrite -mode, it changes to `FOOGAR', instead of `FOOGBAR'. - - Abbrev mode allows you to define abbreviations that automatically -expand as you type them. For example, `amd' might expand to `abbrev -mode'. *Note Abbrevs::, for full information. +applies 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 expression is `t', the entry applies to +that date. If the expression evaluates to `nil', the entry does _not_ +apply to that date. - -File: xemacs.info, Node: Variables, Next: Keyboard Macros, Prev: Minor Modes, Up: Customization + The following sexp diary entries take advantage of the ability (in +the fancy diary display) to concoct diary entries whose text varies +based on the date: -Variables -========= +`%%(diary-sunrise-sunset)' + Make a diary entry for the local times of today's sunrise and + sunset. - A "variable" is a Lisp symbol which has a value. Variable names can -contain any characters, but by convention they are words separated by -hyphens. A variable can also have a documentation string, which -describes what kind of value it should have and how the value will be -used. - - Lisp allows any variable to have any kind of value, but most -variables that Emacs uses require a value of a certain type. Often the -value has to be a string or a number. Sometimes we say that a certain -feature is turned on if a variable is "non-`nil'," meaning that if the -variable's value is `nil', the feature is off, but the feature is on -for any other value. The conventional value to turn on the -feature--since you have to pick one particular value when you set the -variable--is `t'. - - Emacs uses many Lisp variables for internal recordkeeping, as any -Lisp program must, but the most interesting variables for you are the -ones that exist for the sake of customization. Emacs does not -(usually) change the values of these variables; instead, you set the -values, and thereby alter and control the behavior of certain Emacs -commands. These variables are called "options". Most options are -documented in this manual and appear in the Variable Index (*note -Variable Index::). - - One example of a variable which is an option is `fill-column', which -specifies the position of the right margin (as a number of characters -from the left margin) to be used by the fill commands (*note Filling::). +`%%(diary-phases-of-moon)' + Make a diary entry for the phases (quarters) of the moon. -* Menu: +`%%(diary-day-of-year)' + Make a diary entry with today's day number in the current year and + the number of days remaining in the current year. -* Examining:: Examining or setting one variable's value. -* Easy Customization:: Convenient and easy customization of variables. -* Edit Options:: Examining or editing list of all variables' values. -* Locals:: Per-buffer values of variables. -* File Variables:: How files can specify variable values. +`%%(diary-iso-date)' + Make a diary entry with today's equivalent ISO commercial date. - -File: xemacs.info, Node: Examining, Next: Easy Customization, Up: Variables +`%%(diary-julian-date)' + Make a diary entry with today's equivalent date on the Julian + calendar. -Examining and Setting Variables -------------------------------- +`%%(diary-astro-day-number)' + Make a diary entry with today's equivalent astronomical (Julian) + day number. + +`%%(diary-hebrew-date)' + Make a diary entry with today's equivalent date on the Hebrew + calendar. + +`%%(diary-islamic-date)' + Make a diary entry with today's equivalent date on the Islamic + calendar. -`C-h v' -`M-x describe-variable' - Print the value and documentation of a variable. +`%%(diary-french-date)' + Make a diary entry with today's equivalent date on the French + Revolutionary calendar. -`M-x set-variable' - Change the value of a variable. +`%%(diary-mayan-date)' + Make a diary entry with today's equivalent date on the Mayan + calendar. - To examine the value of a single variable, use `C-h v' -(`describe-variable'), which reads a variable name using the -minibuffer, with completion. It prints both the value and the -documentation of the variable. +Thus including the diary entry - C-h v fill-column + &%%(diary-hebrew-date) -prints something like: +causes every day's diary display to contain the equivalent date on the +Hebrew calendar, if you are using the fancy diary display. (With simple +diary display, the line `&%%(diary-hebrew-date)' appears in the diary +for any date, but does nothing particularly useful.) - fill-column's value is 75 - - Documentation: - *Column beyond which automatic line-wrapping should happen. - Automatically becomes local when set in any fashion. + These functions can be used to construct sexp diary entries based on +the Hebrew calendar in certain standard ways: -The star at the beginning of the documentation indicates that this -variable is an option. `C-h v' is not restricted to options; it allows -any variable name. +`%%(diary-rosh-hodesh)' + Make a diary entry that tells the occurrence and ritual + announcement of each new Hebrew month. - If you know which option you want to set, you can use `M-x -set-variable' to set it. This prompts for the variable name in the -minibuffer (with completion), and then prompts for a Lisp expression -for the new value using the minibuffer a second time. For example, +`%%(diary-parasha)' + Make a Saturday diary entry that tells the weekly synagogue + scripture reading. - M-x set-variable fill-column 75 +`%%(diary-sabbath-candles)' + Make a Friday diary entry that tells the _local time_ of Sabbath + candle lighting. -sets `fill-column' to 75, as if you had executed the Lisp expression -`(setq fill-column 75)'. +`%%(diary-omer)' + Make a diary entry that gives the omer count, when appropriate. - Setting variables in this way, like all means of customizing Emacs -except where explicitly stated, affects only the current Emacs session. +`%%(diary-yahrzeit MONTH DAY YEAR) NAME' + Make a diary entry marking the anniversary of a date of death. + The date is the _Gregorian_ (civil) date of death. The diary + entry appears on the proper Hebrew calendar anniversary and on the + day before. (In the European style, the order of the parameters + is changed to DAY, MONTH, YEAR.)  -File: xemacs.info, Node: Easy Customization, Next: Edit Options, Prev: Examining, Up: Variables +File: xemacs.info, Node: Appt Customizing, Prev: Sexp Diary Entries, Up: Calendar Customization -Easy Customization Interface ----------------------------- +Customizing Appointment Reminders +................................. - A convenient way to find the user option variables that you want to -change, and then change them, is with `M-x customize'. This command -creates a "customization buffer" with which you can browse through the -Emacs user options in a logically organized structure, then edit and -set their values. You can also use the customization buffer to save -settings permanently. (Not all Emacs user options are included in this -structure as of yet, but we are adding the rest.) + You can specify exactly how Emacs reminds you of an appointment, and +how far in advance it begins doing so, by setting these variables: -* Menu: +`appt-message-warning-time' + The time in minutes before an appointment that the reminder + begins. The default is 10 minutes. -* Groups: Customization Groups. - How options are classified in a structure. -* Changing an Option:: How to edit a value and set an option. -* Face Customization:: How to edit the attributes of a face. -* Specific Customization:: Making a customization buffer for specific - options, faces, or groups. +`appt-audible' + If this is `t' (the default), Emacs rings the terminal bell for + appointment reminders. - -File: xemacs.info, Node: Customization Groups, Next: Changing an Option, Up: Easy Customization +`appt-visible' + If this is `t' (the default), Emacs displays the appointment + message in echo area. -Customization Groups -.................... +`appt-display-mode-line' + If this is `t' (the default), Emacs displays the number of minutes + to the appointment on the mode line. - For customization purposes, user options are organized into "groups" -to help you find them. Groups are collected into bigger groups, all -the way up to a master group called `Emacs'. - - `M-x customize' creates a customization buffer that shows the -top-level `Emacs' group and the second-level groups immediately under -it. It looks like this, in part: - - /- Emacs group: ---------------------------------------------------\ - [State]: visible group members are all at standard settings. - Customization of the One True Editor. - See also [Manual]. - - [Open] Editing group - Basic text editing facilities. - - [Open] External group - Interfacing to external utilities. - - MORE SECOND-LEVEL GROUPS - - \- Emacs group end ------------------------------------------------/ - -This says that the buffer displays the contents of the `Emacs' group. -The other groups are listed because they are its contents. But they -are listed differently, without indentation and dashes, because _their_ -contents are not included. Each group has a single-line documentation -string; the `Emacs' group also has a `[State]' line. - - Most of the text in the customization buffer is read-only, but it -typically includes some "editable fields" that you can edit. There are -also "active fields"; this means a field that does something when you -"invoke" it. To invoke an active field, either click on it with -`Mouse-1', or move point to it and type . - - For example, the phrase `[Open]' that appears in a second-level -group is an active field. Invoking the `[Open]' field for a group -opens up a new customization buffer, which shows that group and its -contents. This field is a kind of hypertext link to another group. - - The `Emacs' group does not include any user options itself, but -other groups do. By examining various groups, you will eventually find -the options and faces that belong to the feature you are interested in -customizing. Then you can use the customization buffer to set them. - - You can view the structure of customization groups on a larger scale -with `M-x customize-browse'. This command creates a special kind of -customization buffer which shows only the names of the groups (and -options and faces), and their structure. - - In this buffer, you can show the contents of a group by invoking -`[+]'. When the group contents are visible, this button changes to -`[-]'; invoking that hides the group contents. - - Each group, option or face name in this buffer has an active field -which says `[Group]', `[Option]' or `[Face]'. Invoking that active -field creates an ordinary customization buffer showing just that group -and its contents, just that option, or just that face. This is the way -to set values in it. +`appt-msg-window' + If this is `t' (the default), Emacs displays the appointment + message in another window. - -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 . 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-' (`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, and `S-', are useful for moving -through the customization buffer. (`widget-forward') moves -forward to the next active or editable field; `S-' -(`widget-backward') moves backward to the previous active or editable -field. - - Typing on an editable field also moves forward, just like -. The reason for this is that people have a tendency to type - 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 init file so as to set the option variable -again each time you start Emacs. *Note Init File::. 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. +`appt-display-duration' + The number of seconds an appointment message is displayed. The + default is 5 seconds.  -File: xemacs.info, Node: Face Customization, Next: Specific Customization, Prev: Changing an Option, Up: Easy Customization - -Customizing Faces -................. - - In addition to user options, some customization groups also include -faces. When you show the contents of a group, both the user options and -the faces in the group appear in the customization buffer. Here is an -example of how a face looks: - - Custom Changed Face: (sample) - [State]: this face is unchanged from its standard setting. - Face used when the customize item has been changed. - Parent groups: [Custom Magic Faces] - Attributes: [ ] Bold: [Toggle] off (nil) - [ ] Italic: [Toggle] off (nil) - [ ] Underline: [Toggle] off (nil) - [ ] Foreground: white (sample) - [ ] Background: blue (sample) - [ ] Inverse: [Toggle] off (nil) - [ ] Stipple: - [ ] Font Family: - [ ] Size: - [ ] Strikethru: off - - Each face attribute has its own line. The `[X]' field before the -attribute name indicates whether the attribute is "enabled"; `X' means -that it is. You can enable or disable the attribute by invoking that -field. When the attribute is enabled, you can change the attribute -value in the usual ways. - - Setting, saving and resetting a face work like the same operations -for options (*note Changing an Option::). - - A face can specify different appearances for different types of -display. For example, a face can make text red on a color display, but -use a bold font on a monochrome display. To specify multiple -appearances for a face, select `Show Display Types' in the menu you get -from invoking `[State]'. +File: xemacs.info, Node: Sorting, Next: Shell, Prev: Calendar/Diary, Up: Top + +Sorting Text +============ + + XEmacs provides several commands for sorting text in a buffer. All +operate on the contents of the region (the text between point and the +mark). They divide the text of the region into many "sort records", +identify a "sort key" for each record, and then reorder the records +using the order determined by the sort keys. The records are ordered so +that their keys are in alphabetical order, or, for numerical sorting, in +numerical order. In alphabetical sorting, all upper-case letters `A' +through `Z' come before lower-case `a', in accordance with the ASCII +character sequence. + + The sort commands differ in how they divide the text into sort +records and in which part of each record they use as the sort key. +Most of the commands make each line a separate sort record, but some +commands use paragraphs or pages as sort records. Most of the sort +commands use each entire sort record as its own sort key, but some use +only a portion of the record as the sort key. + +`M-x sort-lines' + Divide the region into lines and sort by comparing the entire text + of a line. A prefix argument means sort in descending order. + +`M-x sort-paragraphs' + Divide the region into paragraphs and sort by comparing the entire + text of a paragraph (except for leading blank lines). A prefix + argument means sort in descending order. + +`M-x sort-pages' + Divide the region into pages and sort by comparing the entire text + of a page (except for leading blank lines). A prefix argument + means sort in descending order. + +`M-x sort-fields' + Divide the region into lines and sort by comparing the contents of + one field in each line. Fields are defined as separated by + whitespace, so the first run of consecutive non-whitespace + characters in a line constitutes field 1, the second such run + constitutes field 2, etc. + + You specify which field to sort by with a numeric argument: 1 to + sort by field 1, etc. A negative argument means sort in descending + order. Thus, minus 2 means sort by field 2 in reverse-alphabetical + order. + +`M-x sort-numeric-fields' + Like `M-x sort-fields', except the specified field is converted to + a number for each line and the numbers are compared. `10' comes + before `2' when considered as text, but after it when considered + as a number. + +`M-x sort-columns' + Like `M-x sort-fields', except that the text within each line used + for comparison comes from a fixed range of columns. An explanation + is given below. + + For example, if the buffer contains: + + On systems where clash detection (locking of files being edited) is + implemented, XEmacs also checks the first time you modify a buffer + whether the file has changed on disk since it was last visited or + saved. If it has, you are asked to confirm that you want to change + the buffer. + +then if you apply `M-x sort-lines' to the entire buffer you get: + + On systems where clash detection (locking of files being edited) is + implemented, XEmacs also checks the first time you modify a buffer + saved. If it has, you are asked to confirm that you want to change + the buffer. + whether the file has changed on disk since it was last visited or + +where the upper case `O' comes before all lower case letters. If you +apply instead `C-u 2 M-x sort-fields' you get: + + saved. If it has, you are asked to confirm that you want to change + implemented, XEmacs also checks the first time you modify a buffer + the buffer. + On systems where clash detection (locking of files being edited) is + whether the file has changed on disk since it was last visited or + +where the sort keys were `If', `XEmacs', `buffer', `systems', and `the'. + + `M-x sort-columns' requires more explanation. You specify the +columns by putting point at one of the columns and the mark at the other +column. Because this means you cannot put point or the mark at the +beginning of the first line to sort, this command uses an unusual +definition of `region': all of the line point is in is considered part +of the region, and so is all of the line the mark is in. + + For example, to sort a table by information found in columns 10 to +15, you could put the mark on column 10 in the first line of the table, +and point on column 15 in the last line of the table, and then use this +command. Or you could put the mark on column 15 in the first line and +point on column 10 in the last line. + + This can be thought of as sorting the rectangle specified by point +and the mark, except that the text on each line to the left or right of +the rectangle moves along with the text inside the rectangle. *Note +Rectangles::.  -File: xemacs.info, Node: Specific Customization, Prev: Face Customization, Up: Easy Customization +File: xemacs.info, Node: Shell, Next: Narrowing, Prev: Sorting, Up: Top + +Running Shell Commands from XEmacs +================================== -Customizing Specific Items -.......................... + XEmacs has commands for passing single command lines to inferior +shell processes; it can also run a shell interactively with input and +output to an XEmacs buffer `*shell*'. - Instead of finding the options you want to change by moving down -through the structure of groups, you can specify the particular option, -face or group that you want to customize. +`M-!' + Run a specified shell command line and display the output + (`shell-command'). -`M-x customize-option OPTION ' - Set up a customization buffer with just one option, OPTION. +`M-|' + Run a specified shell command line with region contents as input; + optionally replace the region with the output + (`shell-command-on-region'). -`M-x customize-face FACE ' - Set up a customization buffer with just one face, FACE. +`M-x shell' + Run a subshell with input and output through an XEmacs buffer. + You can then give commands interactively. -`M-x customize-group GROUP ' - Set up a customization buffer with just one group, GROUP. +`M-x term' + Run a subshell with input and output through an XEmacs buffer. + You can then give commands interactively. Full terminal emulation + is available. -`M-x customize-apropos REGEXP ' - Set up a customization buffer with all the options, faces and - groups that match REGEXP. +* Menu: -`M-x customize-saved' - Set up a customization buffer containing all options and faces - that you have saved with customization buffers. +* Single Shell:: How to run one shell command and return. +* Interactive Shell:: Permanent shell taking input via XEmacs. +* Shell Mode:: Special XEmacs commands used with permanent shell. +* Terminal emulator:: An XEmacs window as a terminal emulator. +* Term Mode:: Special XEmacs commands used in Term mode. +* Paging in Term:: Paging in the terminal emulator. -`M-x customize-customized' - Set up a customization buffer containing all options and faces - that you have customized but not saved. + +File: xemacs.info, Node: Single Shell, Next: Interactive Shell, Prev: Shell, Up: Shell + +Single Shell Commands +--------------------- + + `M-!' (`shell-command') reads a line of text using the minibuffer +and creates an inferior shell to execute the line as a command. +Standard input from the command comes from the null device. If the +shell command produces any output, the output goes to an XEmacs buffer +named `*Shell Command Output*', which is displayed in another window +but not selected. A numeric argument, as in `M-1 M-!', directs this +command to insert any output into the current buffer. In that case, +point is left before the output and the mark is set after the output. + + `M-|' (`shell-command-on-region') is like `M-!' but passes the +contents of the region as input to the shell command, instead of no +input. If a numeric argument is used to direct output to the current +buffer, then the old region is deleted first and the output replaces it +as the contents of the region. + + Both `M-!' and `M-|' use `shell-file-name' to specify the shell to +use. This variable is initialized based on your `SHELL' environment +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 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. - If you want to alter a particular user option variable with the -customization buffer, and you know its name, you can use the command -`M-x customize-option' and specify the option name. This sets up the -customization buffer with just one option--the one that you asked for. -Editing, setting and saving the value work as described above, but only -for the specified option. + +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 +. + + 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 , the previous shell input is inserted into the +buffer before point. Immediately typing again deletes that input +and inserts the one before it. By repeating you can move +backward through your commands until you find one you want to repeat. +You may then edit the command before typing if you wish. +moves forward through the command history, in case you moved backward +past the one you wanted while using . If you type the first few +characters of a previous command and then type , 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. - Likewise, you can modify a specific face, chosen by name, using `M-x -customize-face'. + +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: + +`' + 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'). - You can also set up the customization buffer with a specific group, -using `M-x customize-group'. The immediate contents of the chosen -group, including option variables, faces, and other groups, all appear -as well. However, these subgroups' own contents start out hidden. You -can show their contents in the usual way, by invoking `[Show]'. +`C-c C-c' + Interrupt the shell or its current subjob if any + (`interrupt-shell-subjob'). - To control more precisely what to customize, you can use `M-x -customize-apropos'. You specify a regular expression as argument; then -all options, faces and groups whose names match this regular expression -are set up in the customization buffer. If you specify an empty regular -expression, this includes _all_ groups, options and faces in the -customization buffer (but that takes a long time). +`C-c C-z' + Stop the shell or its current subjob if any (`stop-shell-subjob'). - If you change option values and then decide the change was a mistake, -you can use two special commands to revisit your previous changes. Use -`customize-saved' to look at the options and faces that you have saved. -Use `M-x customize-customized' to look at the options and faces that -you have set but not saved. +`C-c C-\' + Send quit signal to the shell or its current subjob if any + (`quit-shell-subjob'). - -File: xemacs.info, Node: Edit Options, Next: Locals, Prev: Easy Customization, Up: Variables - -Editing Variable Values ------------------------ - -`M-x list-options' - Display a buffer listing names, values, and documentation of all - options. - -`M-x edit-options' - Change option values by editing a list of options. - - `M-x list-options' displays a list of all Emacs option variables in -an Emacs buffer named `*List Options*'. Each option is shown with its -documentation and its current value. Here is what a portion of it might -look like: - - ;; exec-path: - ("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc") - *List of directories to search programs to run in subprocesses. - Each element is a string (directory name) - or nil (try the default directory). - ;; - ;; fill-column: - 75 - *Column beyond which automatic line-wrapping should happen. - Automatically becomes local when set in any fashion. - ;; - - `M-x edit-options' goes one step further and immediately selects the -`*List Options*' buffer; this buffer uses the major mode Options mode, -which provides commands that allow you to point at an option and change -its value: - -`s' - Set the variable point is in or near to a new value read using the - minibuffer. - -`x' - Toggle the variable point is in or near: if the value was `nil', - it becomes `t'; otherwise it becomes `nil'. - -`1' - Set the variable point is in or near to `t'. - -`0' - Set the variable point is in or near to `nil'. - -`n' -`p' - Move to the next or previous variable. +`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 + . + +`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 + quickly and go past the desired command + (`comint-next-input'). + +`' + Complete the file name preceding point (`comint-dynamic-complete').  -File: xemacs.info, Node: Locals, Next: File Variables, Prev: Edit Options, Up: Variables - -Local Variables ---------------- - -`M-x make-local-variable' - Make a variable have a local value in the current buffer. - -`M-x kill-local-variable' - Make a variable use its global value in the current buffer. - -`M-x make-variable-buffer-local' - Mark a variable so that setting it will make it local to the - buffer that is current at that time. - - You can make any variable "local" to a specific Emacs buffer. This -means that the variable's value in that buffer is independent of its -value in other buffers. A few variables are always local in every -buffer. All other Emacs variables have a "global" value which is in -effect in all buffers that have not made the variable local. - - Major modes always make the variables they set local to the buffer. -This is why changing major modes in one buffer has no effect on other -buffers. - - `M-x make-local-variable' reads the name of a variable and makes it -local to the current buffer. Further changes in this buffer will not -affect others, and changes in the global value will not affect this -buffer. - - `M-x make-variable-buffer-local' reads the name of a variable and -changes the future behavior of the variable so that it automatically -becomes local when it is set. More precisely, once you have marked a -variable in this way, the usual ways of setting the variable will -automatically invoke `make-local-variable' first. We call such -variables "per-buffer" variables. - - Some important variables have been marked per-buffer already. They -include `abbrev-mode', `auto-fill-function', `case-fold-search', -`comment-column', `ctl-arrow', `fill-column', `fill-prefix', -`indent-tabs-mode', `left-margin', -`mode-line-format', `overwrite-mode', `selective-display-ellipses', -`selective-display', `tab-width', and `truncate-lines'. Some other -variables are always local in every buffer, but they are used for -internal purposes. - - Note: the variable `auto-fill-function' was formerly named -`auto-fill-hook'. - - If you want a variable to cease to be local to the current buffer, -call `M-x kill-local-variable' and provide the name of a variable to -the prompt. The global value of the variable is again in effect in -this buffer. Setting the major mode kills all the local variables of -the buffer. - - To set the global value of a variable, regardless of whether the -variable has a local value in the current buffer, you can use the Lisp -function `setq-default'. It works like `setq'. If there is a local -value in the current buffer, the local value is not affected by -`setq-default'; thus, the new global value may not be visible until you -switch to another buffer, as in the case of: - - (setq-default fill-column 75) - -`setq-default' is the only way to set the global value of a variable -that has been marked with `make-variable-buffer-local'. - - Programs can look at a variable's default value with `default-value'. -This function takes a symbol as an argument and returns its default -value. The argument is evaluated; usually you must quote it -explicitly, as in the case of: - - (default-value 'fill-column) +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.  -File: xemacs.info, Node: File Variables, Prev: Locals, Up: Variables - -Local Variables in Files ------------------------- - - A file can contain a "local variables list", which specifies the -values to use for certain Emacs variables when that file is edited. -Visiting the file checks for a local variables list and makes each -variable in the list local to the buffer in which the file is visited, -with the value specified in the file. - - A local variables list goes near the end of the file, in the last -page. (It is often best to put it on a page by itself.) The local -variables list starts with a line containing the string `Local -Variables:', and ends with a line containing the string `End:'. In -between come the variable names and values, one set per line, as -`VARIABLE: VALUE'. The VALUEs are not evaluated; they are used -literally. - - The line which starts the local variables list does not have to say -just `Local Variables:'. If there is other text before `Local -Variables:', that text is called the "prefix", and if there is other -text after, that is called the "suffix". If a prefix or suffix are -present, each entry in the local variables list should have the prefix -before it and the suffix after it. This includes the `End:' line. The -prefix and suffix are included to disguise the local variables list as -a comment so the compiler or text formatter will ignore it. If you do -not need to disguise the local variables list as a comment in this way, -there is no need to include a prefix or a suffix. - - Two "variable" names are special in a local variables list: a value -for the variable `mode' sets the major mode, and a value for the -variable `eval' is simply evaluated as an expression and the value is -ignored. These are not real variables; setting them in any other -context does not have the same effect. If `mode' is used in a local -variables list, it should be the first entry in the list. - - Here is an example of a local variables list: - ;;; Local Variables: *** - ;;; mode:lisp *** - ;;; comment-column:0 *** - ;;; comment-start: ";;; " *** - ;;; comment-end:"***" *** - ;;; End: *** - - Note that the prefix is `;;; ' and the suffix is ` ***'. Note also -that comments in the file begin with and end with the same strings. -Presumably the file contains code in a language which is enough like -Lisp for Lisp mode to be useful but in which comments start and end -differently. The prefix and suffix are used in the local variables -list to make the list look like several lines of comments when the -compiler or interpreter for that language reads the file. - - The start of the local variables list must be no more than 3000 -characters from the end of the file, and must be in the last page if the -file is divided into pages. Otherwise, Emacs will not notice it is -there. The purpose is twofold: a stray `Local Variables:' not in the -last page does not confuse Emacs, and Emacs never needs to search a -long file that contains no page markers and has no local variables list. - - You may be tempted to turn on Auto Fill mode with a local variable -list. That is inappropriate. Whether you use Auto Fill mode or not is -a matter of personal taste, not a matter of the contents of particular -files. If you want to use Auto Fill, set up major mode hooks with your -file file to turn it on (when appropriate) for you alone (*note Init -File::). Don't try to use a local variable list that would impose your -taste on everyone working with the file. - - XEmacs allows you to specify local variables in the first line of a -file, in addition to specifying them in the `Local Variables' section -at the end of a file. - - If the first line of a file contains two occurrences of ``-*-'', -XEmacs uses the information between them to determine what the major -mode and variable settings should be. For example, these are all legal: - - ;;; -*- mode: emacs-lisp -*- - ;;; -*- mode: postscript; version-control: never -*- - ;;; -*- tags-file-name: "/foo/bar/TAGS" -*- - - For historical reasons, the syntax ``-*- modename -*-'' is allowed -as well; for example, you can use: - - ;;; -*- emacs-lisp -*- - - The variable `enable-local-variables' controls the use of local -variables lists in files you visit. The value can be `t', `nil', or -something else. A value of `t' means local variables lists are obeyed; -`nil' means they are ignored; anything else means query. - - The command `M-x normal-mode' always obeys local variables lists and -ignores this variable. +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 to the sub-shell. + +`C-c C-x' + A prefix command to conveniently access the global commands. + For example, `C-c C-x o' invokes the global binding of `C-x o', + which is normally `other-window'.  -File: xemacs.info, Node: Keyboard Macros, Next: Key Bindings, Prev: Variables, Up: Customization +File: xemacs.info, Node: Paging in Term, Prev: Term Mode, Up: Shell -Keyboard Macros -=============== +Paging in the terminal emulator +------------------------------- - A "keyboard macro" is a command defined by the user to abbreviate a -sequence of keys. For example, if you discover that you are about to -type `C-n C-d' forty times, you can speed your work by defining a -keyboard macro to invoke `C-n C-d' and calling it with a repeat count -of forty. + Term mode has a pager feature. When the pager is enabled, term mode +will pause at the end of each screenful. -`C-x (' - Start defining a keyboard macro (`start-kbd-macro'). +`C-c C-q' + Toggles the pager feature: Disables the pager if it is enabled, + and vice versa. This works in both line and char modes. If the + pager enabled, the mode-line contains the word `page'. + + If the pager is enabled, and Term receives more than a screenful of +output since your last input, Term will enter More break mode. This is +indicated by `**MORE**' in the mode-line. Type a `Space' to display +the next screenful of output. Type `?' to see your other options. The +interface is similar to the Unix `more' program. -`C-x )' - End the definition of a keyboard macro (`end-kbd-macro'). + +File: xemacs.info, Node: Narrowing, Next: Hardcopy, Prev: Shell, Up: Top -`C-x e' - Execute the most recent keyboard macro (`call-last-kbd-macro'). +Narrowing +========= -`C-u C-x (' - Re-execute last keyboard macro, then add more keys to its - definition. + "Narrowing" means focusing in on some portion of the buffer, making +the rest temporarily invisible and inaccessible. Cancelling the +narrowing and making the entire buffer once again visible is called +"widening". The amount of narrowing in effect in a buffer at any time +is called the buffer's "restriction". -`C-x q' - When this point is reached during macro execution, ask for - confirmation (`kbd-macro-query'). +`C-x n n' + Narrow down to between point and mark (`narrow-to-region'). -`M-x name-last-kbd-macro' - Give a command name (for the duration of the session) to the most - recently defined keyboard macro. +`C-x n w' + Widen to make the entire buffer visible again (`widen'). -`M-x insert-kbd-macro' - Insert in the buffer a keyboard macro's definition, as Lisp code. + Narrowing sometimes makes it easier to concentrate on a single +subroutine or paragraph by eliminating clutter. It can also be used to +restrict the range of operation of a replace command or repeating +keyboard macro. The word `Narrow' appears in the mode line whenever +narrowing is in effect. When you have narrowed to a part of the +buffer, that part appears to be all there is. You can't see the rest, +can't move into it (motion commands won't go outside the visible part), +and can't change it in any way. However, the invisible text is not +gone; if you save the file, it will be saved. - Keyboard macros differ from other Emacs commands in that they are -written in the Emacs command language rather than in Lisp. This makes -it easier for the novice to write them and makes them more convenient as -temporary hacks. However, the Emacs command language is not powerful -enough as a programming language to be useful for writing anything -general or complex. For such things, Lisp must be used. + The primary narrowing command is `C-x n n' (`narrow-to-region'). It +sets the current buffer's restrictions so that the text in the current +region remains visible but all text before the region or after the +region is invisible. Point and mark do not change. - You define a keyboard macro by executing the commands which are its -definition. Put differently, as you are defining a keyboard macro, the -definition is being executed for the first time. This way, you see -what the effects of your commands are, and don't have to figure them -out in your head. When you are finished, the keyboard macro is defined -and also has been executed once. You can then execute the same set of -commands again by invoking the macro. + Because narrowing can easily confuse users who do not understand it, +`narrow-to-region' is normally a disabled command. Attempting to use +this command asks for confirmation and gives you the option of enabling +it; once you enable the command, confirmation will no longer be +required. *Note Disabling::. -* Menu: + To undo narrowing, use `C-x n w' (`widen'). This makes all text in +the buffer accessible again. -* Basic Kbd Macro:: Defining and running keyboard macros. -* Save Kbd Macro:: Giving keyboard macros names; saving them in files. -* Kbd Macro Query:: Keyboard macros that do different things each use. + Use the `C-x =' command to get information on what part of the +buffer you narrowed down. *Note Position Info::.  -File: xemacs.info, Node: Basic Kbd Macro, Next: Save Kbd Macro, Up: Keyboard Macros +File: xemacs.info, Node: Hardcopy, Next: Recursive Edit, Prev: Narrowing, Up: Top -Basic Use ---------- +Hardcopy Output +=============== + + The XEmacs commands for making hardcopy derive their names from the +Unix commands `print' and `lpr'. + +`M-x print-buffer' + Print hardcopy of current buffer using Unix command `print' + (`lpr -p'). This command adds page headings containing the file + name and page number. - To start defining a keyboard macro, type `C-x (' -(`start-kbd-macro'). From then on, anything you type continues to be -executed, but also becomes part of the definition of the macro. `Def' -appears in the mode line to remind you of what is going on. When you -are finished, the `C-x )' command (`end-kbd-macro') terminates the -definition, without becoming part of it. - - For example, - - C-x ( M-f foo C-x ) - -defines a macro to move forward a word and then insert `foo'. - - You can give `C-x )' a repeat count as an argument, in which case it -repeats the macro that many times right after defining it, but defining -the macro counts as the first repetition (since it is executed as you -define it). If you give `C-x )' an argument of 4, it executes the -macro immediately 3 additional times. An argument of zero to `C-x e' -or `C-x )' means repeat the macro indefinitely (until it gets an error -or you type `C-g'). - - Once you have defined a macro, you can invoke it again with the `C-x -e' command (`call-last-kbd-macro'). You can give the command a repeat -count numeric argument to execute the macro many times. - - To repeat an operation at regularly spaced places in the text, -define a macro and include as part of the macro the commands to move to -the next place you want to use it. For example, if you want to change -each line, you should position point at the start of a line, and define -a macro to change that line and leave point at the start of the next -line. Repeating the macro will then operate on successive lines. - - After you have terminated the definition of a keyboard macro, you -can add to the end of its definition by typing `C-u C-x ('. This is -equivalent to plain `C-x (' followed by retyping the whole definition -so far. As a consequence it re-executes the macro as previously -defined. +`M-x lpr-buffer' + Print hardcopy of current buffer using Unix command `lpr'. This + command does not add page headings. + +`M-x print-region' + Like `print-buffer', but prints only the current region. + +`M-x lpr-region' + Like `lpr-buffer', but prints only the current region. + + All the hardcopy commands pass extra switches to the `lpr' program +based on the value of the variable `lpr-switches'. Its value should be +a list of strings, each string a switch starting with `-'. For +example, the value could be `("-Pfoo")' to print on printer `foo'.