-\1f
-File: xemacs.info, Node: Specify Coding, Prev: Recognize Coding, Up: Mule
-
-Specifying a Coding System
-==========================
-
- In cases where XEmacs does not automatically choose the right coding
-system, you can use these commands to specify one:
-
-`C-x <RET> f CODING <RET>'
- Use coding system CODING for the visited file in the current
- buffer.
-
-`C-x <RET> c CODING <RET>'
- Specify coding system CODING for the immediately following command.
-
-`C-x <RET> k CODING <RET>'
- Use coding system CODING for keyboard input.
-
-`C-x <RET> t CODING <RET>'
- Use coding system CODING for terminal output.
-
-`C-x <RET> p CODING <RET>'
- Use coding system CODING for subprocess input and output in the
- current buffer.
-
- The command `C-x RET f' (`set-buffer-file-coding-system') specifies
-the file coding system for the current buffer--in other words, which
-coding system to use when saving or rereading the visited file. You
-specify which coding system using the minibuffer. Since this command
-applies to a file you have already visited, it affects only the way the
-file is saved.
-
- Another way to specify the coding system for a file is when you visit
-the file. First use the command `C-x <RET> c'
-(`universal-coding-system-argument'); this command uses the minibuffer
-to read a coding system name. After you exit the minibuffer, the
-specified coding system is used for _the immediately following command_.
-
- So if the immediately following command is `C-x C-f', for example,
-it reads the file using that coding system (and records the coding
-system for when the file is saved). Or if the immediately following
-command is `C-x C-w', it writes the file using that coding system.
-Other file commands affected by a specified coding system include `C-x
-C-i' and `C-x C-v', as well as the other-window variants of `C-x C-f'.
-
- In addition, if you run some file input commands with the precedent
-`C-u', you can specify coding system to read from minibuffer. So if
-the immediately following command is `C-x C-f', for example, it reads
-the file using that coding system (and records the coding system for
-when the file is saved). Other file commands affected by a specified
-coding system include `C-x C-i' and `C-x C-v', as well as the
-other-window variants of `C-x C-f'.
-
- The variable `default-buffer-file-coding-system' specifies the
-choice of coding system to use when you create a new file. It applies
-when you find a new file, and when you create a buffer and then save it
-in a file. Selecting a language environment typically sets this
-variable to a good choice of default coding system for that language
-environment.
-
- The command `C-x <RET> t' (`set-terminal-coding-system') specifies
-the coding system for terminal output. If you specify a character code
-for terminal output, all characters output to the terminal are
-translated into that coding system.
-
- This feature is useful for certain character-only terminals built to
-support specific languages or character sets--for example, European
-terminals that support one of the ISO Latin character sets.
-
- By default, output to the terminal is not translated at all.
-
- The command `C-x <RET> k' (`set-keyboard-coding-system') specifies
-the coding system for keyboard input. Character-code translation of
-keyboard input is useful for terminals with keys that send non-ASCII
-graphic characters--for example, some terminals designed for ISO
-Latin-1 or subsets of it.
-
- By default, keyboard input is not translated at all.
-
- There is a similarity between using a coding system translation for
-keyboard input, and using an input method: both define sequences of
-keyboard input that translate into single characters. However, input
-methods are designed to be convenient for interactive use by humans, and
-the sequences that are translated are typically sequences of ASCII
-printing characters. Coding systems typically translate sequences of
-non-graphic characters.
-
- The command `C-x <RET> p' (`set-buffer-process-coding-system')
-specifies the coding system for input and output to a subprocess. This
-command applies to the current buffer; normally, each subprocess has its
-own buffer, and thus you can use this command to specify translation to
-and from a particular subprocess by giving the command in the
-corresponding buffer.
-
- By default, process input and output are not translated at all.
-
- The variable `file-name-coding-system' specifies a coding system to
-use for encoding file names. If you set the variable to a coding
-system name (as a Lisp symbol or a string), XEmacs encodes file names
-using that coding system for all file operations. This makes it
-possible to use non-Latin-1 characters in file names--or, at least,
-those non-Latin-1 characters which the specified coding system can
-encode. By default, this variable is `nil', which implies that you
-cannot use non-Latin-1 characters in file names.
-
-\1f
-File: xemacs.info, Node: Major Modes, Next: Indentation, Prev: Mule, Up: Top
-
-Major Modes
-***********
-
- Emacs has many different "major modes", each of which customizes
-Emacs for editing text of a particular sort. The major modes are
-mutually exclusive; at any time, each buffer has one major mode. The
-mode line normally contains the name of the current major mode in
-parentheses. *Note Mode Line::.
-
- The least specialized major mode is called "Fundamental mode". This
-mode has no mode-specific redefinitions or variable settings. Each
-Emacs command behaves in its most general manner, and each option is in
-its default state. For editing any specific type of text, such as Lisp
-code or English text, you should switch to the appropriate major mode,
-such as Lisp mode or Text mode.
-
- Selecting a major mode changes the meanings of a few keys to become
-more specifically adapted to the language being edited. <TAB>, <DEL>,
-and <LFD> are changed frequently. In addition, commands which handle
-comments use the mode to determine how to delimit comments. Many major
-modes redefine the syntactical properties of characters appearing in
-the buffer. *Note Syntax::.
-
- The major modes fall into three major groups. Lisp mode (which has
-several variants), C mode, and Muddle mode are for specific programming
-languages. Text mode, Nroff mode, TeX mode, and Outline mode are for
-editing English text. The remaining major modes are not intended for
-use on users' files; they are used in buffers created by Emacs for
-specific purposes and include Dired mode for buffers made by Dired
-(*note Dired::), Mail mode for buffers made by `C-x m' (*note Sending
-Mail::), and Shell mode for buffers used for communicating with an
-inferior shell process (*note Interactive Shell::).
-
- Most programming language major modes specify that only blank lines
-separate paragraphs. This is so that the paragraph commands remain
-useful. *Note Paragraphs::. They also cause Auto Fill mode to use the
-definition of <TAB> to indent the new lines it creates. This is
-because most lines in a program are usually indented. *Note
-Indentation::.
-
-* Menu:
-
-* Choosing Modes:: How major modes are specified or chosen.
-
-\1f
-File: xemacs.info, Node: Choosing Modes, Prev: Major Modes, Up: Major Modes
-
-Choosing Major Modes
-====================
-
- You can select a major mode explicitly for the current buffer, but
-most of the time Emacs determines which mode to use based on the file
-name or some text in the file.
-
- Use a `M-x' command to explicitly select a new major mode. Add
-`-mode' to the name of a major mode to get the name of a command to
-select that mode. For example, to enter Lisp mode, execute `M-x
-lisp-mode'.
-
- When you visit a file, Emacs usually chooses the right major mode
-based on the file's name. For example, files whose names end in `.c'
-are edited in C mode. The variable `auto-mode-alist' controls the
-correspondence between file names and major mode. Its value is a list
-in which each element has the form:
-
- (REGEXP . MODE-FUNCTION)
-
-For example, one element normally found in the list has the form
-`("\\.c$" . c-mode)'. It is responsible for selecting C mode for files
-whose names end in `.c'. (Note that `\\' is needed in Lisp syntax to
-include a `\' in the string, which is needed to suppress the special
-meaning of `.' in regexps.) The only practical way to change this
-variable is with Lisp code.
-
- You can specify which major mode should be used for editing a certain
-file by a special sort of text in the first non-blank line of the file.
-The mode name should appear in this line both preceded and followed by
-`-*-'. Other text may appear on the line as well. For example,
-
- ;-*-Lisp-*-
-
-tells Emacs to use Lisp mode. Note how the semicolon is used to make
-Lisp treat this line as a comment. Such an explicit specification
-overrides any default mode based on the file name.
-
- Another format of mode specification is:
-
- -*-Mode: MODENAME;-*-
-
-which allows other things besides the major mode name to be specified.
-However, Emacs does not look for anything except the mode name.
-
- The major mode can also be specified in a local variables list.
-*Note File Variables::.
-
- When you visit a file that does not specify a major mode to use, or
-when you create a new buffer with `C-x b', Emacs uses the major mode
-specified by the variable `default-major-mode'. Normally this value is
-the symbol `fundamental-mode', which specifies Fundamental mode. If
-`default-major-mode' is `nil', the major mode is taken from the
-previously selected buffer.
-
-\1f
-File: xemacs.info, Node: Indentation, Next: Text, Prev: Major Modes, Up: Top
-
-Indentation
-***********
-
-`<TAB>'
- Indent current line "appropriately" in a mode-dependent fashion.
-
-`<LFD>'
- Perform <RET> followed by <TAB> (`newline-and-indent').
-
-`M-^'
- Merge two lines (`delete-indentation'). This would cancel out the
- effect of <LFD>.
-
-`C-M-o'
- Split line at point; text on the line after point becomes a new
- line indented to the same column that it now starts in
- (`split-line').
-
-`M-m'
- Move (forward or back) to the first non-blank character on the
- current line (`back-to-indentation').
-
-`C-M-\'
- Indent several lines to same column (`indent-region').
-
-`C-x <TAB>'
- Shift block of lines rigidly right or left (`indent-rigidly').
-
-`M-i'
- Indent from point to the next prespecified tab stop column
- (`tab-to-tab-stop').
-
-`M-x indent-relative'
- Indent from point to under an indentation point in the previous
- line.
-
- Most programming languages have some indentation convention. For
-Lisp code, lines are indented according to their nesting in
-parentheses. The same general idea is used for C code, though details
-differ.
-
- Use the <TAB> command to indent a line whatever the language. Each
-major mode defines this command to perform indentation appropriate for
-the particular language. In Lisp mode, <TAB> aligns a line according
-to its depth in parentheses. No matter where in the line you are when
-you type <TAB>, it aligns the line as a whole. In C mode, <TAB>
-implements a subtle and sophisticated indentation style that knows
-about many aspects of C syntax.
-
- In Text mode, <TAB> runs the command `tab-to-tab-stop', which
-indents to the next tab stop column. You can set the tab stops with
-`M-x edit-tab-stops'.
-
-* Menu:
-
-* Indentation Commands:: Various commands and techniques for indentation.
-* Tab Stops:: You can set arbitrary "tab stops" and then
- indent to the next tab stop when you want to.
-* Just Spaces:: You can request indentation using just spaces.
-
-\1f
-File: xemacs.info, Node: Indentation Commands, Next: Tab Stops, Prev: Indentation, Up: Indentation
-
-Indentation Commands and Techniques
-===================================
-
- If you just want to insert a tab character in the buffer, you can
-type `C-q <TAB>'.
-
- To move over the indentation on a line, type `Meta-m'
-(`back-to-indentation'). This command, given anywhere on a line,
-positions point at the first non-blank character on the line.
-
- To insert an indented line before the current line, type `C-a C-o
-<TAB>'. To make an indented line after the current line, use `C-e
-<LFD>'.
-
- `C-M-o' (`split-line') moves the text from point to the end of the
-line vertically down, so that the current line becomes two lines.
-`C-M-o' first moves point forward over any spaces and tabs. Then it
-inserts after point a newline and enough indentation to reach the same
-column point is on. Point remains before the inserted newline; in this
-regard, `C-M-o' resembles `C-o'.
-
- To join two lines cleanly, use the `Meta-^' (`delete-indentation')
-command to delete the indentation at the front of the current line, and
-the line boundary as well. Empty spaces are replaced by a single
-space, or by no space if at the beginning of a line, before a close
-parenthesis, or after an open parenthesis. To delete just the
-indentation of a line, go to the beginning of the line and use `Meta-\'
-(`delete-horizontal-space'), which deletes all spaces and tabs around
-the cursor.
-
- There are also commands for changing the indentation of several
-lines at once. `Control-Meta-\' (`indent-region') gives each line which
-begins in the region the "usual" indentation by invoking <TAB> at the
-beginning of the line. A numeric argument specifies the column to
-indent to. Each line is shifted left or right so that its first
-non-blank character appears in that column. `C-x <TAB>'
-(`indent-rigidly') moves all the lines in the region right by its
-argument (left, for negative arguments). The whole group of lines moves
-rigidly sideways, which is how the command gets its name.
-
- `M-x indent-relative' indents at point based on the previous line
-(actually, the last non-empty line.) It inserts whitespace at point,
-moving point, until it is underneath an indentation point in the
-previous line. An indentation point is the end of a sequence of
-whitespace or the end of the line. If point is farther right than any
-indentation point in the previous line, the whitespace before point is
-deleted and the first indentation point then applicable is used. If no
-indentation point is applicable even then, `tab-to-tab-stop' is run
-(see next section).
-
- `indent-relative' is the definition of <TAB> in Indented Text mode.
-*Note Text::.
-
-\1f
-File: xemacs.info, Node: Tab Stops, Next: Just Spaces, Prev: Indentation Commands, Up: Indentation
-
-Tab Stops
-=========
-
- For typing in tables, you can use Text mode's definition of <TAB>,
-`tab-to-tab-stop'. This command inserts indentation before point,
-enough to reach the next tab stop column. Even if you are not in Text
-mode, this function is associated with `M-i' anyway.
-
- You can arbitrarily set the tab stops used by `M-i'. They are
-stored as a list of column-numbers in increasing order in the variable
-`tab-stop-list'.
-
- The convenient way to set the tab stops is using `M-x
-edit-tab-stops', which creates and selects a buffer containing a
-description of the tab stop settings. You can edit this buffer to
-specify different tab stops, and then type `C-c C-c' to make those new
-tab stops take effect. In the tab stop buffer, `C-c C-c' runs the
-function `edit-tab-stops-note-changes' rather than the default
-`save-buffer'. `edit-tab-stops' records which buffer was current when
-you invoked it, and stores the tab stops in that buffer. Normally all
-buffers share the same tab stops and changing them in one buffer
-affects all. If you make `tab-stop-list' local in one buffer
-`edit-tab-stops' in that buffer edits only the local settings.
-
- Below is the text representing ordinary tab stops every eight
-columns:
-
- : : : : : :
- 0 1 2 3 4
- 0123456789012345678901234567890123456789012345678
- To install changes, type C-c C-c
-
- The first line contains a colon at each tab stop. The remaining
-lines help you see where the colons are and tell you what to do.
-
- Note that the tab stops that control `tab-to-tab-stop' have nothing
-to do with displaying tab characters in the buffer. *Note Display
-Vars::, for more information on that.
-
-\1f
-File: xemacs.info, Node: Just Spaces, Prev: Tab Stops, Up: Indentation
-
-Tabs vs. Spaces
-===============
-
- Emacs normally uses both tabs and spaces to indent lines. If you
-prefer, all indentation can be made from spaces only. To request this,
-set `indent-tabs-mode' to `nil'. This is a per-buffer variable;
-altering the variable affects only the current buffer, but there is a
-default value which you can change as well. *Note Locals::.
-
- There are also commands to convert tabs to spaces or vice versa,
-always preserving the columns of all non-blank text. `M-x tabify'
-scans the region for sequences of spaces, and converts sequences of at
-least three spaces to tabs if that is possible without changing
-indentation. `M-x untabify' changes all tabs in the region to
-corresponding numbers of spaces.
-
-\1f
-File: xemacs.info, Node: Text, Next: Programs, Prev: Indentation, Up: Top
-
-Commands for Human Languages
-****************************
-
- The term "text" has two widespread meanings in our area of the
-computer field. One is data that is a sequence of characters. In this
-sense of the word any file that you edit with Emacs is text. The other
-meaning is more restrictive: a sequence of characters in a human
-language for humans to read (possibly after processing by a text
-formatter), as opposed to a program or commands for a program.
-
- Human languages have syntactic and stylistic conventions that editor
-commands should support or use to advantage: conventions involving
-words, sentences, paragraphs, and capital letters. This chapter
-describes Emacs commands for all these things. There are also commands
-for "filling", or rearranging paragraphs into lines of approximately
-equal length. The commands for moving over and killing words,
-sentences, and paragraphs, while intended primarily for editing text,
-are also often useful for editing programs.
-
- Emacs has several major modes for editing human language text. If a
-file contains plain text, use Text mode, which customizes Emacs in
-small ways for the syntactic conventions of text. For text which
-contains embedded commands for text formatters, Emacs has other major
-modes, each for a particular text formatter. Thus, for input to TeX,
-you can use TeX mode; for input to nroff, Nroff mode.
-
-* Menu:
-
-* Text Mode:: The major modes for editing text files.
-* Nroff Mode:: The major mode for editing input to the formatter nroff.
-* TeX Mode:: The major modes for editing input to the formatter TeX.
-* Outline Mode:: The major mode for editing outlines.
-* Words:: Moving over and killing words.
-* Sentences:: Moving over and killing sentences.
-* Paragraphs:: Moving over paragraphs.
-* Pages:: Moving over pages.
-* Filling:: Filling or justifying text
-* Case:: Changing the case of text
-
-\1f
-File: xemacs.info, Node: Text Mode, Next: Words, Prev: Text, Up: Text
-
-Text Mode
-=========
-
- You should use Text mode--rather than Fundamental or Lisp mode--to
-edit files of text in a human language. Invoke `M-x text-mode' to
-enter Text mode. In Text mode, <TAB> runs the function
-`tab-to-tab-stop', which allows you to use arbitrary tab stops set with
-`M-x edit-tab-stops' (*note Tab Stops::). Features concerned with
-comments in programs are turned off unless they are explicitly invoked.
-The syntax table is changed so that periods are not considered part of a
-word, while apostrophes, backspaces and underlines are.
-
- A similar variant mode is Indented Text mode, intended for editing
-text in which most lines are indented. This mode defines <TAB> to run
-`indent-relative' (*note Indentation::), and makes Auto Fill indent the
-lines it creates. As a result, a line made by Auto Filling, or by
-<LFD>, is normally indented just like the previous line. Use `M-x
-indented-text-mode' to select this mode.
-
- Entering Text mode or Indented Text mode calls the value of the
-variable `text-mode-hook' with no arguments, if that value exists and
-is not `nil'. This value is also called when modes related to Text
-mode are entered; this includes Nroff mode, TeX mode, Outline mode, and
-Mail mode. Your hook can look at the value of `major-mode' to see
-which of these modes is actually being entered.
-
- Two modes similar to Text mode are of use for editing text that is to
-be passed through a text formatter before achieving its final readable
-form.
-
-* Menu:
-
-* Nroff Mode:: The major mode for editing input to the formatter nroff.
-* TeX Mode:: The major modes for editing input to the formatter TeX.
-
-
- Another similar mode is used for editing outlines. It allows you
-to view the text at various levels of detail. You can view either
-the outline headings alone or both headings and text; you can also
-hide some of the headings at lower levels from view to make the high
-level structure more visible.
-
-
-* Outline Mode:: The major mode for editing outlines.
-
-\1f
-File: xemacs.info, Node: Nroff Mode, Next: TeX Mode, Prev: Text Mode, Up: Text Mode
-
-Nroff Mode
-----------
-
- Nroff mode is a mode like Text mode but modified to handle nroff
-commands present in the text. Invoke `M-x nroff-mode' to enter this
-mode. Nroff mode differs from Text mode in only a few ways. All nroff
-command lines are considered paragraph separators, so that filling never
-garbles the nroff commands. Pages are separated by `.bp' commands.
-Comments start with backslash-doublequote. There are also three special
-commands that are not available in Text mode:
-
-`M-n'
- Move to the beginning of the next line that isn't an nroff command
- (`forward-text-line'). An argument is a repeat count.
-
-`M-p'
- Like `M-n' but move up (`backward-text-line').
-
-`M-?'
- Prints in the echo area the number of text lines (lines that are
- not nroff commands) in the region (`count-text-lines').
-
- The other feature of Nroff mode is Electric Nroff newline mode.
-This is a minor mode that you can turn on or off with `M-x
-electric-nroff-mode' (*note Minor Modes::). When the mode is on and
-you use <RET> to end a line containing an nroff command that opens a
-kind of grouping, Emacs automatically inserts the matching nroff
-command to close that grouping on the following line. For example, if
-you are at the beginning of a line and type `.(b <RET>', the matching
-command `.)b' will be inserted on a new line following point.
-
- Entering Nroff mode calls the value of the variable `text-mode-hook'
-with no arguments, if that value exists and is not `nil'; then it does
-the same with the variable `nroff-mode-hook'.
-
-\1f
-File: xemacs.info, Node: TeX Mode, Next: Outline Mode, Prev: Nroff Mode, Up: Text Mode
-
-TeX Mode
---------
-
- TeX is a powerful text formatter written by Donald Knuth; like GNU
-Emacs, it is free. LaTeX is a simplified input format for TeX,
-implemented by TeX macros. It is part of TeX.
-
- Emacs has a special TeX mode for editing TeX input files. It
-provides facilities for checking the balance of delimiters and for
-invoking TeX on all or part of the file.
-
- TeX mode has two variants, Plain TeX mode and LaTeX mode, which are
-two distinct major modes that differ only slightly. These modes are
-designed for editing the two different input formats. The command `M-x
-tex-mode' looks at the contents of a buffer to determine whether it
-appears to be LaTeX input or not; it then selects the appropriate mode.
-If it can't tell which is right (e.g., the buffer is empty), the
-variable `tex-default-mode' controls which mode is used.
-
- The commands `M-x plain-tex-mode' and `M-x latex-mode' explicitly
-select one of the variants of TeX mode. Use these commands when `M-x
-tex-mode' does not guess right.
-
-* Menu:
-
-* Editing: TeX Editing. Special commands for editing in TeX mode.
-* Printing: TeX Print. Commands for printing part of a file with TeX.
-
- TeX for Unix systems can be obtained from the University of
-Washington for a distribution fee.
-
- To order a full distribution, send $140.00 for a 1/2 inch 9-track
-tape, $165.00 for two 4-track 1/4 inch cartridge tapes (foreign sites
-$150.00, for 1/2 inch, $175.00 for 1/4 inch, to cover the extra
-postage) payable to the University of Washington to:
-
- The Director
- Northwest Computer Support Group, DW-10
- University of Washington
- Seattle, Washington 98195
-
-Purchase orders are acceptable, but there is an extra charge of $10.00
-to pay for processing charges. (The total cost comes to $150 for
-domestic sites, $175 for foreign sites).
-
- The normal distribution is a tar tape, blocked 20, 1600 bpi, on an
-industry standard 2400 foot half-inch reel. The physical format for
-the 1/4 inch streamer cartridges uses QIC-11, 8000 bpi, 4-track
-serpentine recording for the SUN. Also, SystemV tapes can be written
-in cpio format, blocked 5120 bytes, ASCII headers.
-