--- /dev/null
+This is Info file ../../info/xemacs.info, produced by Makeinfo version
+1.68 from the input file xemacs.texi.
+
+INFO-DIR-SECTION XEmacs Editor
+START-INFO-DIR-ENTRY
+* XEmacs: (xemacs). XEmacs Editor.
+END-INFO-DIR-ENTRY
+
+ This file documents the XEmacs editor.
+
+ Copyright (C) 1985, 1986, 1988 Richard M. Stallman. Copyright (C)
+1991, 1992, 1993, 1994 Lucid, Inc. Copyright (C) 1993, 1994 Sun
+Microsystems, Inc. Copyright (C) 1995 Amdahl Corporation.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided also
+that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
+General Public License" are included exactly as in the original, and
+provided that the entire resulting derived work is distributed under the
+terms of a permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that the sections entitled "The GNU Manifesto",
+"Distribution" and "GNU General Public License" may be included in a
+translation approved by the author instead of in the original English.
+
+\1f
+File: xemacs.info, Node: Dired Immed, Prev: Dired Deletion, Up: Dired
+
+Immediate File Operations in Dired
+----------------------------------
+
+ Some file operations in Dired take place immediately when they are
+requested.
+
+`C'
+ Copies the file described on the current line. You must supply a
+ file name to copy to, using the minibuffer.
+
+`f'
+ Visits the file described on the current line. It is just like
+ typing `C-x C-f' and supplying that file name. If the file on
+ this line is a subdirectory, `f' actually causes Dired to be
+ invoked on that subdirectory. *Note Visiting::.
+
+`o'
+ Like `f', but uses another window to display the file's buffer.
+ The Dired buffer remains visible in the first window. This is
+ like using `C-x 4 C-f' to visit the file. *Note Windows::.
+
+`R'
+ Renames the file described on the current line. You must supply a
+ file name to rename to, using the minibuffer.
+
+`v'
+ Views the file described on this line using `M-x view-file'.
+ Viewing a file is like visiting it, but is slanted toward moving
+ around in the file conveniently and does not allow changing the
+ file. *Note View File: Misc File Ops. Viewing a file that is a
+ directory runs Dired on that directory.
+
+\1f
+File: xemacs.info, Node: Misc File Ops, Prev: Dired, Up: Files
+
+Miscellaneous File Operations
+=============================
+
+ Emacs has commands for performing many other operations on files.
+All operate on one file; they do not accept wildcard file names.
+
+ You can use the command `M-x add-name-to-file' to add a name to an
+existing file without removing the old name. The new name must belong
+on the file system that the file is on.
+
+ `M-x append-to-file' adds the text of the region to the end of the
+specified file.
+
+ `M-x copy-file' reads the file OLD and writes a new file named NEW
+with the same contents. Confirmation is required if a file named NEW
+already exists, because copying overwrites the old contents of the file
+NEW.
+
+ `M-x delete-file' deletes a specified file, like the `rm' command in
+the shell. If you are deleting many files in one directory, it may be
+more convenient to use Dired (*note Dired::.).
+
+ `M-x insert-file' inserts a copy of the contents of a specified file
+into the current buffer at point, leaving point unchanged before the
+contents and the mark after them. *Note Mark::.
+
+ `M-x make-symbolic-link' reads two file names OLD and LINKNAME, and
+then creates a symbolic link named LINKNAME and pointing at OLD.
+Future attempts to open file LINKNAME will then refer to the file named
+OLD at the time the opening is done, or will result in an error if the
+name OLD is not in use at that time. Confirmation is required if you
+create the link while LINKNAME is in use. Note that not all systems
+support symbolic links.
+
+ `M-x rename-file' reads two file names OLD and NEW using the
+minibuffer, then renames file OLD as NEW. If a file named NEW already
+exists, you must confirm with `yes' or renaming is not done; this is
+because renaming causes the previous meaning of the name NEW to be
+lost. If OLD and NEW are on different file systems, the file OLD is
+copied and deleted.
+
+ `M-x view-file' allows you to scan or read a file by sequential
+screenfuls. It reads a file name argument using the minibuffer. After
+reading the file into an Emacs buffer, `view-file' reads and displays
+one windowful. You can then type <SPC> to scroll forward one window,
+or <DEL> to scroll backward. Various other commands are provided for
+moving around in the file, but none for changing it; type `C-h' while
+viewing a file for a list of them. Most commands are the default Emacs
+cursor motion commands. To exit from viewing, type `C-c'.
+
+\1f
+File: xemacs.info, Node: Buffers, Next: Windows, Prev: Files, Up: Top
+
+Using Multiple Buffers
+**********************
+
+ Text you are editing in Emacs resides in an object called a
+"buffer". Each time you visit a file, Emacs creates a buffer to hold
+the file's text. Each time you invoke Dired, Emacs creates a buffer to
+hold the directory listing. If you send a message with `C-x m', a
+buffer named `*mail*' is used to hold the text of the message. When
+you ask for a command's documentation, it appears in a buffer called
+`*Help*'.
+
+ At any time, one and only one buffer is "selected". It is also
+called the "current buffer". Saying a command operates on "the buffer"
+really means that the command operates on the selected buffer, as most
+commands do.
+
+ When Emacs creates multiple windows, each window has a chosen buffer
+which is displayed there, but at any time only one of the windows is
+selected and its chosen buffer is the selected buffer. Each window's
+mode line displays the name of the buffer the window is displaying
+(*note Windows::.).
+
+ Each buffer has a name which can be of any length but is
+case-sensitive. You can select a buffer using its name. Most buffers
+are created when you visit files; their names are derived from the
+files' names. You can also create an empty buffer with any name you
+want. A newly started Emacs has a buffer named `*scratch*' which you
+can use for evaluating Lisp expressions in Emacs.
+
+ Each buffer records what file it is visiting, whether it is
+modified, and what major mode and minor modes are in effect in it
+(*note Major Modes::.). Any Emacs variable can be made "local to" a
+particular buffer, meaning its value in that buffer can be different
+from the value in other buffers. *Note Locals::.
+
+* Menu:
+
+* Select Buffer:: Creating a new buffer or reselecting an old one.
+* List Buffers:: Getting a list of buffers that exist.
+* Misc Buffer:: Renaming; changing read-onliness; copying text.
+* Kill Buffer:: Killing buffers you no longer need.
+* Several Buffers:: How to go through the list of all buffers
+ and operate variously on several of them.
+
+\1f
+File: xemacs.info, Node: Select Buffer, Next: List Buffers, Prev: Buffers, Up: Buffers
+
+Creating and Selecting Buffers
+==============================
+
+`C-x b BUFFER <RET>'
+ Select or create a buffer named BUFFER (`switch-to-buffer').
+
+`C-x 4 b BUFFER <RET>'
+ Similar, but select a buffer named BUFFER in another window
+ (`switch-to-buffer-other-window').
+
+`M-x switch-to-other-buffer N'
+ Switch to the previous buffer.
+
+ To select a buffer named BUFNAME, type `C-x b BUFNAME <RET>'. This
+is the command `switch-to-buffer' with argument BUFNAME. You can use
+completion on an abbreviation for the buffer name you want (*note
+Completion::.). An empty argument to `C-x b' specifies the most
+recently selected buffer that is not displayed in any window.
+
+ Most buffers are created when you visit files, or use Emacs commands
+that display text. You can also create a buffer explicitly by typing
+`C-x b BUFNAME <RET>', which creates a new, empty buffer that is not
+visiting any file, and selects it for editing. The new buffer's major
+mode is determined by the value of `default-major-mode' (*note Major
+Modes::.). Buffers not visiting files are usually used for making
+notes to yourself. If you try to save one, you are asked for the file
+name to use.
+
+ The function `switch-to-buffer-other-frame' is similar to
+`switch-to-buffer' except that it creates a new frame in which to
+display the selected buffer.
+
+ Use `M-x switch-to-other-buffer' to visit the previous buffer. If
+you supply a positive integer N, the Nth most recent buffer is
+displayed. If you supply an argument of 0, the current buffer is moved
+to the bottom of the buffer stack.
+
+ Note that you can also use `C-x C-f' and any other command for
+visiting a file to switch buffers. *Note Visiting::.
+
+\1f
+File: xemacs.info, Node: List Buffers, Next: Misc Buffer, Prev: Select Buffer, Up: Buffers
+
+Listing Existing Buffers
+========================
+
+`C-x C-b'
+ List the existing buffers (`list-buffers').
+
+ To print a list of all existing buffers, type `C-x C-b'. Each line
+in the list shows one buffer's name, major mode, and visited file. A
+`*' at the beginning of a line indicates the buffer has been
+"modified". If several buffers are modified, it may be time to save
+some with `C-x s' (*note Saving::.). A `%' indicates a read-only
+buffer. A `.' marks the selected buffer. Here is an example of a
+buffer list:
+
+ MR Buffer Size Mode File
+ -- ------ ---- ---- ----
+ .* emacs.tex 383402 Texinfo /u2/emacs/man/emacs.tex
+ *Help* 1287 Fundamental
+ files.el 23076 Emacs-Lisp /u2/emacs/lisp/files.el
+ % RMAIL 64042 RMAIL /u/rms/RMAIL
+ *% man 747 Dired /u2/emacs/man/
+ net.emacs 343885 Fundamental /u/rms/net.emacs
+ fileio.c 27691 C /u2/emacs/src/fileio.c
+ NEWS 67340 Text /u2/emacs/etc/NEWS
+ *scratch* 0 Lisp Interaction
+
+Note that the buffer `*Help*' was made by a help request; it is not
+visiting any file. The buffer `man' was made by Dired on the directory
+`/u2/emacs/man/'.
+
+ As you move the mouse over the `*Buffer List*' buffer, the lines are
+highlighted. This visual cue indicates that clicking the right mouse
+button (`button3') will pop up a menu of commands on the buffer
+represented by this line. This menu duplicates most of those commands
+which are bound to keys in the `*Buffer List*' buffer.
+
+\1f
+File: xemacs.info, Node: Misc Buffer, Next: Kill Buffer, Prev: List Buffers, Up: Buffers
+
+Miscellaneous Buffer Operations
+===============================
+
+`C-x C-q'
+ Toggle read-only status of buffer (`toggle-read-only').
+
+`M-x rename-buffer'
+ Change the name of the current buffer.
+
+`M-x view-buffer'
+ Scroll through a buffer.
+
+ A buffer can be "read-only", which means that commands to change its
+text are not allowed. Normally, read-only buffers are created by
+subsystems such as Dired and Rmail that have special commands to operate
+on the text. Emacs also creates a read-only buffer if you visit a file
+that is protected. To make changes in a read-only buffer, use the
+command `C-x C-q' (`toggle-read-only'). It makes a read-only buffer
+writable, and makes a writable buffer read-only. This works by setting
+the variable `buffer-read-only', which has a local value in each buffer
+and makes a buffer read-only if its value is non-`nil'.
+
+ `M-x rename-buffer' changes the name of the current buffer,
+prompting for the new name in the minibuffer. There is no default. If
+you specify a name that is used by a different buffer, an error is
+signalled and renaming is not done.
+
+ `M-x view-buffer' is similar to `M-x view-file' (*note Misc File
+Ops::.), but it examines an already existing Emacs buffer. View mode
+provides convenient commands for scrolling through the buffer but not
+for changing it. When you exit View mode, the resulting value of point
+remains in effect.
+
+ To copy text from one buffer to another, use the commands `M-x
+append-to-buffer' and `M-x insert-buffer'. *Note Accumulating Text::.
+
+\1f
+File: xemacs.info, Node: Kill Buffer, Next: Several Buffers, Prev: Misc Buffer, Up: Buffers
+
+Killing Buffers
+===============
+
+ After using Emacs for a while, you may accumulate a large number of
+buffers and may want to eliminate the ones you no longer need. There
+are several commands for doing this.
+
+`C-x k'
+ Kill a buffer, specified by name (`kill-buffer').
+
+`M-x kill-some-buffers'
+ Offer to kill each buffer, one by one.
+
+ `C-x k' (`kill-buffer') kills one buffer, whose name you specify in
+the minibuffer. If you type just <RET> in the minibuffer, the default,
+killing the current buffer, is used. If the current buffer is killed,
+the buffer that has been selected recently but does not appear in any
+window now is selected. If the buffer being killed contains unsaved
+changes, you are asked to confirm with `yes' before the buffer is
+killed.
+
+ The command `M-x kill-some-buffers' asks about each buffer, one by
+one. An answer of `y' means to kill the buffer. Killing the current
+buffer or a buffer containing unsaved changes selects a new buffer or
+asks for confirmation just like `kill-buffer'.
+
+\1f
+File: xemacs.info, Node: Several Buffers, Prev: Kill Buffer, Up: Buffers
+
+Operating on Several Buffers
+============================
+
+ The "buffer-menu" facility is like a "Dired for buffers"; it allows
+you to request operations on various Emacs buffers by editing a buffer
+containing a list of them. You can save buffers, kill them (here
+called "deleting" them, for consistency with Dired), or display them.
+
+`M-x buffer-menu'
+ Begin editing a buffer listing all Emacs buffers.
+
+ The command `buffer-menu' writes a list of all Emacs buffers into
+the buffer `*Buffer List*', and selects that buffer in Buffer Menu
+mode. The buffer is read-only. You can only change it using the
+special commands described in this section. Most of the commands are
+graphic characters. You can use Emacs cursor motion commands in the
+`*Buffer List*' buffer. If the cursor is on a line describing a
+buffer, the following special commands apply to that buffer:
+
+`d'
+ Request to delete (kill) the buffer, then move down. A `D' before
+ the buffer name on a line indicates a deletion request. Requested
+ deletions actually take place when you use the `x' command.
+
+`k'
+ Synonym for `d'.
+
+`C-d'
+ Like `d' but move up afterwards instead of down.
+
+`s'
+ Request to save the buffer. An `S' befor the buffer name on a line
+ indicates the request. Requested saves actually take place when
+ you use the `x' command. You can request both saving and deletion
+ for the same buffer.
+
+`~'
+ Mark buffer "unmodified". The command `~' does this immediately
+ when typed.
+
+`x'
+ Perform previously requested deletions and saves.
+
+`u'
+ Remove any request made for the current line, and move down.
+
+`<DEL>'
+ Move to previous line and remove any request made for that line.
+
+ All commands that add or remove flags to request later operations
+also move down a line. They accept a numeric argument as a repeat
+count, unless otherwise specified.
+
+ There are also special commands to use the buffer list to select
+another buffer, and to specify one or more other buffers for display in
+additional windows.
+
+`1'
+ Select the buffer in a full-frame window. This command takes
+ effect immediately.
+
+`2'
+ Immediately set up two windows, with this buffer in one and the
+ buffer selected before `*Buffer List*' in the other.
+
+`f'
+ Immediately select the buffer in place of the `*Buffer List*'
+ buffer.
+
+`o'
+ Immediately select the buffer in another window as if by `C-x 4 b',
+ leaving `*Buffer List*' visible.
+
+`q'
+ Immediately select this buffer, and display any buffers previously
+ flagged with the `m' command in other windows. If there are no
+ buffers flagged with `m', this command is equivalent to `1'.
+
+`m'
+ Flag this buffer to be displayed in another window if the `q'
+ command is used. The request shows as a `>' at the beginning of
+ the line. The same buffer may not have both a delete request and a
+ display request.
+
+ Going back between a `buffer-menu' buffer and other Emacs buffers is
+easy. You can, for example, switch from the `*Buffer List*' buffer to
+another Emacs buffer, and edit there. You can then reselect the
+`buffer-menu' buffer and perform operations already requested, or you
+can kill that buffer or pay no further attention to it. All that
+`buffer-menu' does directly is create and select a suitable buffer, and
+turn on Buffer Menu mode. All the other capabilities of the buffer
+menu are implemented by special commands provided in Buffer Menu mode.
+
+ The only difference between `buffer-menu' and `list-buffers' is that
+`buffer-menu' selects the `*Buffer List*' buffer and `list-buffers'
+does not. If you run `list-buffers' (that is, type `C-x C-b') and
+select the buffer list manually, you can use all the commands described
+here.
+
+\1f
+File: xemacs.info, Node: Windows, Next: Mule, Prev: Buffers, Up: Top
+
+Multiple Windows
+****************
+
+ Emacs can split the frame into two or many windows, which can display
+parts of different buffers or different parts of one buffer. If you are
+running XEmacs under X, that means you can have the X window that
+contains the Emacs frame have multiple subwindows.
+
+* Menu:
+
+* Basic Window:: Introduction to Emacs windows.
+* Split Window:: New windows are made by splitting existing windows.
+* Other Window:: Moving to another window or doing something to it.
+* Pop Up Window:: Finding a file or buffer in another window.
+* Change Window:: Deleting windows and changing their sizes.
+
+\1f
+File: xemacs.info, Node: Basic Window, Next: Split Window, Prev: Windows, Up: Windows
+
+Concepts of Emacs Windows
+=========================
+
+ When Emacs displays multiple windows, each window has one Emacs
+buffer designated for display. The same buffer may appear in more than
+one window; if it does, any changes in its text are displayed in all
+the windows that display it. Windows showing the same buffer can show
+different parts of it, because each window has its own value of point.
+
+ At any time, one window is the "selected window"; the buffer
+displayed by that window is the current buffer. The cursor shows the
+location of point in that window. Each other window has a location of
+point as well, but since the terminal has only one cursor, it cannot
+show the location of point in the other windows.
+
+ Commands to move point affect the value of point for the selected
+Emacs window only. They do not change the value of point in any other
+Emacs window, including those showing the same buffer. The same is
+true for commands such as `C-x b' to change the selected buffer in the
+selected window; they do not affect other windows at all. However,
+there are other commands such as `C-x 4 b' that select a different
+window and switch buffers in it. Also, all commands that display
+information in a window, including (for example) `C-h f'
+(`describe-function') and `C-x C-b' (`list-buffers'), work by switching
+buffers in a non-selected window without affecting the selected window.
+
+ Each window has its own mode line, which displays the buffer name,
+modification status, and major and minor modes of the buffer that is
+displayed in the window. *Note Mode Line::, for details on the mode
+line.
+
+\1f
+File: xemacs.info, Node: Split Window, Next: Other Window, Prev: Basic Window, Up: Windows
+
+Splitting Windows
+=================
+
+`C-x 2'
+ Split the selected window into two windows, one above the other
+ (`split-window-vertically').
+
+`C-x 3'
+ Split the selected window into two windows positioned side by side
+ (`split-window-horizontally').
+
+`C-x 6'
+ Save the current window configuration in register REG (a letter).
+
+`C-x 7'
+ Restore (make current) the window configuration in register REG (a
+ letter). Use with a register previously set with `C-x 6'.
+
+ The command `C-x 2' (`split-window-vertically') breaks the selected
+window into two windows, one above the other. Both windows start out
+displaying the same buffer, with the same value of point. By default
+each of the two windows gets half the height of the window that was
+split. A numeric argument specifies how many lines to give to the top
+window.
+
+ `C-x 3' (`split-window-horizontally') breaks the selected window
+into two side-by-side windows. A numeric argument specifies how many
+columns to give the one on the left. A line of vertical bars separates
+the two windows. Windows that are not the full width of the frame have
+truncated mode lines which do not always appear in inverse video,
+because Emacs display routines cannot display a region of inverse video
+that is only part of a line on the screen.
+
+ When a window is less than the full width, many text lines are too
+long to fit. Continuing all those lines might be confusing. Set the
+variable `truncate-partial-width-windows' to non-`nil' to force
+truncation in all windows less than the full width of the frame,
+independent of the buffer and its value for `truncate-lines'. *Note
+Continuation Lines::.
+
+ Horizontal scrolling is often used in side-by-side windows. *Note
+Display::.
+
+ You can resize a window and store that configuration in a register by
+supplying a REGISTER argument to `window-configuration-to-register'
+(`C-x 6'). To return to the window configuration established with
+`window-configuration-to-register', use `jump-to-register' (`C-x j').
+
+\1f
+File: xemacs.info, Node: Other Window, Next: Pop Up Window, Prev: Split Window, Up: Windows
+
+Using Other Windows
+===================
+
+`C-x o'
+ Select another window (`other-window'). That is the letter `o',
+ not zero.
+
+`M-C-v'
+ Scroll the next window (`scroll-other-window').
+
+`M-x compare-windows'
+ Find the next place where the text in the selected window does not
+ match the text in the next window.
+
+`M-x other-window-any-frame N'
+ Select the Nth different window on any frame.
+
+ To select a different window, use `C-x o' (`other-window'). That is
+an `o', for `other', not a zero. When there are more than two windows,
+the command moves through all the windows in a cyclic order, generally
+top to bottom and left to right. From the rightmost and bottommost
+window, it goes back to the one at the upper left corner. A numeric
+argument, N, moves several steps in the cyclic order of windows. A
+negative numeric argument moves around the cycle in the opposite order.
+If the optional second argument ALL-FRAMES is non-`nil', the function
+cycles through all frames. When the minibuffer is active, the
+minibuffer is the last window in the cycle; you can switch from the
+minibuffer window to one of the other windows, and later switch back
+and finish supplying the minibuffer argument that is requested. *Note
+Minibuffer Edit::.
+
+ The command `M-x other-window-any-frame' also selects the window N
+steps away in the cyclic order. However, unlike `other-window', this
+command selects a window on the next or previous frame instead of
+wrapping around to the top or bottom of the current frame, when there
+are no more windows.
+
+ The usual scrolling commands (*note Display::.) apply to the selected
+window only. `M-C-v' (`scroll-other-window') scrolls the window that
+`C-x o' would select. Like `C-v', it takes positive and negative
+arguments.
+
+ The command `M-x compare-windows' compares the text in the current
+window with the text in the next window. Comparison starts at point in
+each window. Point moves forward in each window, a character at a time,
+until the next set of characters in the two windows are different.
+Then the command is finished.
+
+ A prefix argument IGNORE-WHITESPACE means ignore changes in
+whitespace. The variable `compare-windows-whitespace' controls how
+whitespace is skipped.
+
+ If `compare-ignore-case' is non-`nil', changes in case are also
+ignored.
+
+\1f
+File: xemacs.info, Node: Pop Up Window, Next: Change Window, Prev: Other Window, Up: Windows
+
+Displaying in Another Window
+============================
+
+ `C-x 4' is a prefix key for commands that select another window
+(splitting the window if there is only one) and select a buffer in that
+window. Different `C-x 4' commands have different ways of finding the
+buffer to select.
+
+`C-x 4 b BUFNAME <RET>'
+ Select buffer BUFNAME in another window. This runs
+ `switch-to-buffer-other-window'.
+
+`C-x 4 f FILENAME <RET>'
+ Visit file FILENAME and select its buffer in another window. This
+ runs `find-file-other-window'. *Note Visiting::.
+
+`C-x 4 d DIRECTORY <RET>'
+ Select a Dired buffer for directory DIRECTORY in another window.
+ This runs `dired-other-window'. *Note Dired::.
+
+`C-x 4 m'
+ Start composing a mail message in another window. This runs
+ `mail-other-window', and its same-window version is `C-x m' (*note
+ Sending Mail::.).
+
+`C-x 4 .'
+ Find a tag in the current tag table in another window. This runs
+ `find-tag-other-window', the multiple-window variant of `M-.'
+ (*note Tags::.).
+
+ If the variable `display-buffer-function' is non-`nil', its value is
+the function to call to handle `display-buffer'. It receives two
+arguments, the buffer and a flag that if non-`nil' means that the
+currently selected window is not acceptable. Commands such as
+`switch-to-buffer-other-window' and `find-file-other-window' work using
+this function.
+
+\1f
+File: xemacs.info, Node: Change Window, Prev: Pop Up Window, Up: Windows
+
+Deleting and Rearranging Windows
+================================
+
+`C-x 0'
+ Get rid of the selected window (`delete-window'). That is a zero.
+ If there is more than one Emacs frame, deleting the sole remaining
+ window on that frame deletes the frame as well. If the current
+ frame is the only frame, it is not deleted.
+
+`C-x 1'
+ Get rid of all windows except the selected one
+ (`delete-other-windows').
+
+`C-x ^'
+ Make the selected window taller, at the expense of the other(s)
+ (`enlarge-window').
+
+`C-x }'
+ Make the selected window wider (`enlarge-window-horizontally').
+
+ To delete a window, type `C-x 0' (`delete-window'). (That is a
+zero.) The space occupied by the deleted window is distributed among
+the other active windows (but not the minibuffer window, even if that
+is active at the time). Once a window is deleted, its attributes are
+forgotten; there is no automatic way to make another window of the same
+shape or showing the same buffer. The buffer continues to exist, and
+you can select it in any window with `C-x b'.
+
+ `C-x 1' (`delete-other-windows') is more powerful than `C-x 0'; it
+deletes all the windows except the selected one (and the minibuffer).
+The selected window expands to use the whole frame except for the echo
+area.
+
+ To readjust the division of space among existing windows, use `C-x
+^' (`enlarge-window'). It makes the currently selected window longer
+by one line or as many lines as a numeric argument specifies. With a
+negative argument, it makes the selected window smaller. `C-x }'
+(`enlarge-window-horizontally') makes the selected window wider by the
+specified number of columns. The extra screen space given to a window
+comes from one of its neighbors, if that is possible; otherwise, all
+the competing windows are shrunk in the same proportion. If this makes
+some windows too small, those windows are deleted and their space is
+divided up. Minimum window size is specified by the variables
+`window-min-height' and `window-min-width'.
+
+ You can also resize windows within a frame by clicking the left mouse
+button on a modeline, and dragging.
+
+ Clicking the right button on a mode line pops up a menu of common
+window manager operations. This menu contains the following options:
+
+Delete Window
+ Remove the window above this modeline from the frame.
+
+Delete Other Windows
+ Delete all windows on the frame except for the one above this
+ modeline.
+
+Split Window
+ Split the window above the mode line in half, creating another
+ window.
+
+Split Window Horizontally
+ Split the window above the mode line in half horizontally, so that
+ there will be two windows side-by-side.
+
+Balance Windows
+ Readjust the sizes of all windows on the frame until all windows
+ have roughly the same number of lines.
+
+\1f
+File: xemacs.info, Node: Mule, Next: Major Modes, Prev: Windows, Up: Top
+
+World Scripts Support
+*********************
+
+ If you compile XEmacs with mule option, it supports a wide variety of
+world scripts, including Latin script, as well as Arabic script,
+Simplified Chinese script (for mainland of China), Traditional Chinese
+script (for Taiwan and Hong-Kong), Greek script, Hebrew script, IPA
+symbols, Japanese scripts (Hiragana, Katakana and Kanji), Korean scripts
+(Hangul and Hanja) and Cyrillic script (for Beylorussian, Bulgarian,
+Russian, Serbian and Ukrainian). These features have been merged from
+the modified version of Emacs known as MULE (for "MULti-lingual
+Enhancement to GNU Emacs").
+
+* Menu:
+
+* Mule Intro:: Basic concepts of Mule.
+* Language Environments:: Setting things up for the language you use.
+* Input Methods:: Entering text characters not on your keyboard.
+* Select Input Method:: Specifying your choice of input methods.
+* Coding Systems:: Character set conversion when you read and
+ write files, and so on.
+* Recognize Coding:: How XEmacs figures out which conversion to use.
+* Specify Coding:: Various ways to choose which conversion to use.
+
+\1f
+File: xemacs.info, Node: Mule Intro, Next: Language Environments, Prev: Mule, Up: Mule
+
+Introduction to world scripts
+=============================
+
+ The users of these scripts have established many more-or-less
+standard coding systems for storing files. XEmacs translates between
+the internal character encoding and various other coding systems when
+reading and writing files, when exchanging data with subprocesses, and
+(in some cases) in the `C-q' command (see below).
+
+ The command `C-h h' (`view-hello-file') displays the file
+`etc/HELLO', which shows how to say "hello" in many languages. This
+illustrates various scripts.
+
+ Keyboards, even in the countries where these character sets are used,
+generally don't have keys for all the characters in them. So XEmacs
+supports various "input methods", typically one for each script or
+language, to make it convenient to type them.
+
+ The prefix key `C-x <RET>' is used for commands that pertain to
+world scripts, coding systems, and input methods.
+
+\1f
+File: xemacs.info, Node: Language Environments, Next: Input Methods, Prev: Mule Intro, Up: Mule
+
+Language Environments
+=====================
+
+ All supported character sets are supported in XEmacs buffers if it is
+compile with mule; there is no need to select a particular language in
+order to display its characters in an XEmacs buffer. However, it is
+important to select a "language environment" in order to set various
+defaults. The language environment really represents a choice of
+preferred script (more or less) rather that a choice of language.
+
+ The language environment controls which coding systems to recognize
+when reading text (*note Recognize Coding::.). This applies to files,
+incoming mail, netnews, and any other text you read into XEmacs. It may
+also specify the default coding system to use when you create a file.
+Each language environment also specifies a default input method.
+
+ The command to select a language environment is `M-x
+set-language-environment'. It makes no difference which buffer is
+current when you use this command, because the effects apply globally to
+the XEmacs session. The supported language environments include:
+
+ Chinese-BIG5, Chinese-CNS, Chinese-GB, Cyrillic-ISO, English,
+ Ethiopic, Greek, Japanese, Korean, Latin-1, Latin-2, Latin-3,
+ Latin-4, Latin-5.
+
+ Some operating systems let you specify the language you are using by
+setting locale environment variables. XEmacs handles one common special
+case of this: if your locale name for character types contains the
+string `8859-N', XEmacs automatically selects the corresponding
+language environment.
+
+ To display information about the effects of a certain language
+environment LANG-ENV, use the command `C-h L LANG-ENV <RET>'
+(`describe-language-environment'). This tells you which languages this
+language environment is useful for, and lists the character sets,
+coding systems, and input methods that go with it. It also shows some
+sample text to illustrate scripts used in this language environment.
+By default, this command describes the chosen language environment.
+
+\1f
+File: xemacs.info, Node: Input Methods, Next: Select Input Method, Prev: Language Environments, Up: Mule
+
+Input Methods
+=============
+
+ An "input method" is a kind of character conversion designed
+specifically for interactive input. In XEmacs, typically each language
+has its own input method; sometimes several languages which use the same
+characters can share one input method. A few languages support several
+input methods.
+
+ The simplest kind of input method works by mapping ASCII letters into
+another alphabet. This is how the Greek and Russian input methods work.
+
+ A more powerful technique is composition: converting sequences of
+characters into one letter. Many European input methods use composition
+to produce a single non-ASCII letter from a sequence that consists of a
+letter followed by accent characters. For example, some methods convert
+the sequence `'a' into a single accented letter.
+
+ The input methods for syllabic scripts typically use mapping followed
+by composition. The input methods for Thai and Korean work this way.
+First, letters are mapped into symbols for particular sounds or tone
+marks; then, sequences of these which make up a whole syllable are
+mapped into one syllable sign.
+
+ Chinese and Japanese require more complex methods. In Chinese input
+methods, first you enter the phonetic spelling of a Chinese word (in
+input method `chinese-py', among others), or a sequence of portions of
+the character (input methods `chinese-4corner' and `chinese-sw', and
+others). Since one phonetic spelling typically corresponds to many
+different Chinese characters, you must select one of the alternatives
+using special XEmacs commands. Keys such as `C-f', `C-b', `C-n',
+`C-p', and digits have special definitions in this situation, used for
+selecting among the alternatives. <TAB> displays a buffer showing all
+the possibilities.
+
+ In Japanese input methods, first you input a whole word using
+phonetic spelling; then, after the word is in the buffer, XEmacs
+converts it into one or more characters using a large dictionary. One
+phonetic spelling corresponds to many differently written Japanese
+words, so you must select one of them; use `C-n' and `C-p' to cycle
+through the alternatives.
+
+ Sometimes it is useful to cut off input method processing so that the
+characters you have just entered will not combine with subsequent
+characters. For example, in input method `latin-1-postfix', the
+sequence `e '' combines to form an `e' with an accent. What if you
+want to enter them as separate characters?
+
+ One way is to type the accent twice; that is a special feature for
+entering the separate letter and accent. For example, `e ' '' gives
+you the two characters `e''. Another way is to type another letter
+after the `e'--something that won't combine with that--and immediately
+delete it. For example, you could type `e e <DEL> '' to get separate
+`e' and `''.
+
+ Another method, more general but not quite as easy to type, is to use
+`C-\ C-\' between two characters to stop them from combining. This is
+the command `C-\' (`toggle-input-method') used twice. *Note Select
+Input Method::.
+
+ `C-\ C-\' is especially useful inside an incremental search, because
+stops waiting for more characters to combine, and starts searching for
+what you have already entered.
+
+ The variables `input-method-highlight-flag' and
+`input-method-verbose-flag' control how input methods explain what is
+happening. If `input-method-highlight-flag' is non-`nil', the partial
+sequence is highlighted in the buffer. If `input-method-verbose-flag'
+is non-`nil', the list of possible characters to type next is displayed
+in the echo area (but not when you are in the minibuffer).
+
+\1f
+File: xemacs.info, Node: Select Input Method, Next: Coding Systems, Prev: Input Methods, Up: Mule
+
+Selecting an Input Method
+=========================
+
+`C-\'
+ Enable or disable use of the selected input method.
+
+`C-x <RET> C-\ METHOD <RET>'
+ Select a new input method for the current buffer.
+
+`C-h I METHOD <RET>'
+`C-h C-\ METHOD <RET>'
+ Describe the input method METHOD (`describe-input-method'). By
+ default, it describes the current input method (if any).
+
+`M-x list-input-methods'
+ Display a list of all the supported input methods.
+
+ To choose an input method for the current buffer, use `C-x <RET>
+C-\' (`select-input-method'). This command reads the input method name
+with the minibuffer; the name normally starts with the language
+environment that it is meant to be used with. The variable
+`current-input-method' records which input method is selected.
+
+ Input methods use various sequences of ASCII characters to stand for
+non-ASCII characters. Sometimes it is useful to turn off the input
+method temporarily. To do this, type `C-\' (`toggle-input-method').
+To reenable the input method, type `C-\' again.
+
+ If you type `C-\' and you have not yet selected an input method, it
+prompts for you to specify one. This has the same effect as using `C-x
+<RET> C-\' to specify an input method.
+
+ Selecting a language environment specifies a default input method for
+use in various buffers. When you have a default input method, you can
+select it in the current buffer by typing `C-\'. The variable
+`default-input-method' specifies the default input method (`nil' means
+there is none).
+
+ Some input methods for alphabetic scripts work by (in effect)
+remapping the keyboard to emulate various keyboard layouts commonly used
+for those scripts. How to do this remapping properly depends on your
+actual keyboard layout. To specify which layout your keyboard has, use
+the command `M-x quail-set-keyboard-layout'.
+
+ To display a list of all the supported input methods, type `M-x
+list-input-methods'. The list gives information about each input
+method, including the string that stands for it in the mode line.
+
+\1f
+File: xemacs.info, Node: Coding Systems, Next: Recognize Coding, Prev: Select Input Method, Up: Mule
+
+Coding Systems
+==============
+
+ Users of various languages have established many more-or-less
+standard coding systems for representing them. XEmacs does not use
+these coding systems internally; instead, it converts from various
+coding systems to its own system when reading data, and converts the
+internal coding system to other coding systems when writing data.
+Conversion is possible in reading or writing files, in sending or
+receiving from the terminal, and in exchanging data with subprocesses.
+
+ XEmacs assigns a name to each coding system. Most coding systems are
+used for one language, and the name of the coding system starts with the
+language name. Some coding systems are used for several languages;
+their names usually start with `iso'. There are also special coding
+systems `binary' and `no-conversion' which do not convert printing
+characters at all.
+
+ In addition to converting various representations of non-ASCII
+characters, a coding system can perform end-of-line conversion. XEmacs
+handles three different conventions for how to separate lines in a file:
+newline, carriage-return linefeed, and just carriage-return.
+
+`C-h C CODING <RET>'
+ Describe coding system CODING.
+
+`C-h C <RET>'
+ Describe the coding systems currently in use.
+
+`M-x list-coding-systems'
+ Display a list of all the supported coding systems.
+
+ The command `C-h C' (`describe-coding-system') displays information
+about particular coding systems. You can specify a coding system name
+as argument; alternatively, with an empty argument, it describes the
+coding systems currently selected for various purposes, both in the
+current buffer and as the defaults, and the priority list for
+recognizing coding systems (*note Recognize Coding::.).
+
+ To display a list of all the supported coding systems, type `M-x
+list-coding-systems'. The list gives information about each coding
+system, including the letter that stands for it in the mode line (*note
+Mode Line::.).
+
+ Each of the coding systems that appear in this list--except for
+`binary', which means no conversion of any kind--specifies how and
+whether to convert printing characters, but leaves the choice of
+end-of-line conversion to be decided based on the contents of each file.
+For example, if the file appears to use carriage-return linefeed between
+lines, that end-of-line conversion will be used.
+
+ Each of the listed coding systems has three variants which specify
+exactly what to do for end-of-line conversion:
+
+`...-unix'
+ Don't do any end-of-line conversion; assume the file uses newline
+ to separate lines. (This is the convention normally used on Unix
+ and GNU systems.)
+
+`...-dos'
+ Assume the file uses carriage-return linefeed to separate lines,
+ and do the appropriate conversion. (This is the convention
+ normally used on Microsoft systems.)
+
+`...-mac'
+ Assume the file uses carriage-return to separate lines, and do the
+ appropriate conversion. (This is the convention normally used on
+ the Macintosh system.)
+
+ These variant coding systems are omitted from the
+`list-coding-systems' display for brevity, since they are entirely
+predictable. For example, the coding system `iso-8859-1' has variants
+`iso-8859-1-unix', `iso-8859-1-dos' and `iso-8859-1-mac'.
+
+ In contrast, the coding system `binary' specifies no character code
+conversion at all--none for non-Latin-1 byte values and none for end of
+line. This is useful for reading or writing binary files, tar files,
+and other files that must be examined verbatim.
+
+ The easiest way to edit a file with no conversion of any kind is with
+the `M-x find-file-literally' command. This uses `binary', and also
+suppresses other XEmacs features that might convert the file contents
+before you see them. *Note Visiting::.
+
+ The coding system `no-conversion' means that the file contains
+non-Latin-1 characters stored with the internal XEmacs encoding. It
+handles end-of-line conversion based on the data encountered, and has
+the usual three variants to specify the kind of end-of-line conversion.
+
+\1f
+File: xemacs.info, Node: Recognize Coding, Next: Specify Coding, Prev: Coding Systems, Up: Mule
+
+Recognizing Coding Systems
+==========================
+
+ Most of the time, XEmacs can recognize which coding system to use for
+any given file-once you have specified your preferences.
+
+ Some coding systems can be recognized or distinguished by which byte
+sequences appear in the data. However, there are coding systems that
+cannot be distinguished, not even potentially. For example, there is no
+way to distinguish between Latin-1 and Latin-2; they use the same byte
+values with different meanings.
+
+ XEmacs handles this situation by means of a priority list of coding
+systems. Whenever XEmacs reads a file, if you do not specify the coding
+system to use, XEmacs checks the data against each coding system,
+starting with the first in priority and working down the list, until it
+finds a coding system that fits the data. Then it converts the file
+contents assuming that they are represented in this coding system.
+
+ The priority list of coding systems depends on the selected language
+environment (*note Language Environments::.). For example, if you use
+French, you probably want XEmacs to prefer Latin-1 to Latin-2; if you
+use Czech, you probably want Latin-2 to be preferred. This is one of
+the reasons to specify a language environment.
+
+ However, you can alter the priority list in detail with the command
+`M-x prefer-coding-system'. This command reads the name of a coding
+system from the minibuffer, and adds it to the front of the priority
+list, so that it is preferred to all others. If you use this command
+several times, each use adds one element to the front of the priority
+list.
+
+ Sometimes a file name indicates which coding system to use for the
+file. The variable `file-coding-system-alist' specifies this
+correspondence. There is a special function
+`modify-coding-system-alist' for adding elements to this list. For
+example, to read and write all `.txt' using the coding system
+`china-iso-8bit', you can execute this Lisp expression:
+
+ (modify-coding-system-alist 'file "\\.txt\\'" 'china-iso-8bit)
+
+The first argument should be `file', the second argument should be a
+regular expression that determines which files this applies to, and the
+third argument says which coding system to use for these files.
+
+ You can specify the coding system for a particular file using the
+`-*-...-*-' construct at the beginning of a file, or a local variables
+list at the end (*note File Variables::.). You do this by defining a
+value for the "variable" named `coding'. XEmacs does not really have a
+variable `coding'; instead of setting a variable, it uses the specified
+coding system for the file. For example, `-*-mode: C; coding:
+iso-8859-1;-*-' specifies use of the iso-8859-1 coding system, as well
+as C mode.
+
+ Once XEmacs has chosen a coding system for a buffer, it stores that
+coding system in `buffer-file-coding-system' and uses that coding
+system, by default, for operations that write from this buffer into a
+file. This includes the commands `save-buffer' and `write-region'. If
+you want to write files from this buffer using a different coding
+system, you can specify a different coding system for the buffer using
+`set-buffer-file-coding-system' (*note Specify Coding::.).
+