X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=info%2Fxemacs.info-9;h=0d949e6d46bfe92ecd3369260d0ca19ee2731e30;hb=44c65ee44bea23429db50ca999ea7c70d0351c55;hp=fd04303d59c0a63cafe51aded2e8b311a49ab5ba;hpb=1d9bc86590766427e2431876a50d78206a99edd5;p=chise%2Fxemacs-chise.git- diff --git a/info/xemacs.info-9 b/info/xemacs.info-9 index fd04303..0d949e6 100644 --- a/info/xemacs.info-9 +++ b/info/xemacs.info-9 @@ -30,6 +30,573 @@ versions, except that the sections entitled "The GNU Manifesto", translation approved by the author instead of in the original English.  +File: xemacs.info, Node: Dired Deletion, Next: Dired Immed, Prev: Dired Edit, Up: Dired + +Deleting Files With Dired +------------------------- + + The primary use of Dired is to flag files for deletion and then +delete them. + +`d' + Flag this file for deletion. + +`u' + Remove deletion-flag on this line. + +`' + Remove deletion-flag on previous line, moving point to that line. + +`x' + Delete the files that are flagged for deletion. + +`#' + Flag all auto-save files (files whose names start and end with `#') + for deletion (*note Auto Save::). + +`~' + Flag all backup files (files whose names end with `~') for deletion + (*note Backup::). + +`. (Period)' + Flag excess numeric backup files for deletion. The oldest and + newest few backup files of any one file are exempt; the middle + ones are flagged. + + You can flag a file for deletion by moving to the line describing the +file and typing `d' or `C-d'. The deletion flag is visible as a `D' at +the beginning of the line. Point is moved to the beginning of the next +line, so that repeated `d' commands flag successive files. + + The files are flagged for deletion rather than deleted immediately to +avoid the danger of deleting a file accidentally. Until you direct +Dired to delete the flagged files, you can remove deletion flags using +the commands `u' and . `u' works just like `d', but removes flags +rather than making flags. moves upward, removing flags; it is +like `u' with numeric argument automatically negated. + + To delete the flagged files, type `x'. This command first displays a +list of all the file names flagged for deletion, and requests +confirmation with `yes'. Once you confirm, all the flagged files are +deleted, and their lines are deleted from the text of the Dired buffer. +The shortened Dired buffer remains selected. If you answer `no' or +quit with `C-g', you return immediately to Dired, with the deletion +flags still present and no files actually deleted. + + The `#', `~', and `.' commands flag many files for deletion, based +on their names. These commands are useful precisely because they do +not actually delete any files; you can remove the deletion flags from +any flagged files that you really wish to keep. + + `#' flags for deletion all files that appear to have been made by +auto-saving (that is, files whose names begin and end with `#'). `~' +flags for deletion all files that appear to have been made as backups +for files that were edited (that is, files whose names end with `~'). + + `.' (Period) flags just some of the backup files for deletion: only +numeric backups that are not among the oldest few nor the newest few +backups of any one file. Normally `dired-kept-versions' (not +`kept-new-versions'; that applies only when saving) specifies the +number of newest versions of each file to keep, and `kept-old-versions' +specifies the number of oldest versions to keep. Period with a +positive numeric argument, as in `C-u 3 .', specifies the number of +newest versions to keep, overriding `dired-kept-versions'. A negative +numeric argument overrides `kept-old-versions', using minus the value +of the argument to specify the number of oldest versions of each file +to keep. + + +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. + + +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 to scroll forward one window, +or 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'. + + +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. + + +File: xemacs.info, Node: Select Buffer, Next: List Buffers, Prev: Buffers, Up: Buffers + +Creating and Selecting Buffers +============================== + +`C-x b BUFFER ' + Select or create a buffer named BUFFER (`switch-to-buffer'). + +`C-x 4 b BUFFER ' + 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 '. 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 ', 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::. + + +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. + + +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::. + + +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 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'. + + +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' before 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. + +`' + 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. + + +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. + + +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. + + +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'). + + File: xemacs.info, Node: Other Window, Next: Pop Up Window, Prev: Split Window, Up: Windows Using Other Windows @@ -575,576 +1142,3 @@ 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::). - -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 f CODING ' - Use coding system CODING for the visited file in the current - buffer. - -`C-x c CODING ' - Specify coding system CODING for the immediately following command. - -`C-x k CODING ' - Use coding system CODING for keyboard input. - -`C-x t CODING ' - Use coding system CODING for terminal output. - -`C-x p CODING ' - 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 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 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 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 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. - - -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. , , -and 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 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. - - -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. - - -File: xemacs.info, Node: Indentation, Next: Text, Prev: Major Modes, Up: Top - -Indentation -*********** - -`' - Indent current line "appropriately" in a mode-dependent fashion. - -`' - Perform followed by (`newline-and-indent'). - -`M-^' - Merge two lines (`delete-indentation'). This would cancel out the - effect of . - -`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 ' - 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 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, aligns a line according -to its depth in parentheses. No matter where in the line you are when -you type , it aligns the line as a whole. In C mode, -implements a subtle and sophisticated indentation style that knows -about many aspects of C syntax. - - In Text mode, 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. - - -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 '. - - 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 -'. To make an indented line after the current line, use `C-e -'. - - `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 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 ' -(`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 in Indented Text mode. -*Note Text::. - - -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-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. - - -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. - - -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 - - -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, 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 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 -, 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. - - -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 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 ', 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'. - - -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. -