Annotation of 43BSDReno/contrib/emacs-18.55/info/emacs-5, revision 1.1

1.1     ! root        1: Info file emacs, produced by texinfo-format-buffer   -*-Text-*-
        !             2: from file emacs.tex
        !             3: 
        !             4: This file documents the GNU Emacs editor.
        !             5: 
        !             6: Copyright (C) 1985, 1986 Richard M. Stallman.
        !             7: 
        !             8: Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12: Permission is granted to copy and distribute modified versions of this
        !            13: manual under the conditions for verbatim copying, provided also that the
        !            14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs
        !            15: General Public License" are included exactly as in the original, and
        !            16: provided that the entire resulting derived work is distributed under the
        !            17: terms of a permission notice identical to this one.
        !            18: 
        !            19: Permission is granted to copy and distribute translations of this manual
        !            20: into another language, under the above conditions for modified versions,
        !            21: except that the sections entitled "The GNU Manifesto", "Distribution"
        !            22: and "GNU Emacs General Public License" may be included in a translation
        !            23: approved by the author instead of in the original English.
        !            24: 
        !            25: 
        !            26: File: emacs  Node: Reverting, Prev: Saving, Up: Files, Next: Auto Save
        !            27: 
        !            28: Reverting a Buffer
        !            29: ==================
        !            30: 
        !            31:   If you have made extensive changes to a file and then change your mind
        !            32: about them, you can get rid of them by reading in the previous version of
        !            33: the file.  To do this, use `M-x revert-buffer', which operates on the
        !            34: current buffer.  Since this is a very dangerous thing to do, you must
        !            35: confirm it with `yes'.
        !            36: 
        !            37:   If the current buffer has been auto-saved more recently than it has been
        !            38: saved for real, `revert-buffer' offers to read the auto save file
        !            39: instead of the visited file (*Note Auto Save::).  This question comes
        !            40: before the usual request for confirmation, and demands `y' or `n'
        !            41: as an answer.  If you have started to type `yes' for confirmation
        !            42: without realizing that the other question was going to be asked, the
        !            43: `y' will answer that question, but the `es' will not be valid
        !            44: confirmation.  So you will have a chance to cancel the operation with
        !            45: `C-g' and try it again with the answers that you really intend.
        !            46: 
        !            47:   `revert-buffer' keeps point at the same distance (measured in
        !            48: characters) from the beginning of the file.  If the file was edited only
        !            49: slightly, you will be at approximately the same piece of text after
        !            50: reverting as before.  If you have made drastic changes, the same value of
        !            51: point in the old file may address a totally different piece of text.
        !            52: 
        !            53:   A buffer reverted from its visited file is marked "not modified" until
        !            54: another change is made.
        !            55: 
        !            56:   Some kinds of buffers whose contents reflect data bases other than files,
        !            57: such as Dired buffers, can also be reverted.  For them, reverting means
        !            58: recalculating their contents from the appropriate data base.  Buffers
        !            59: created randomly with `C-x b' cannot be reverted; `revert-buffer'
        !            60: reports an error when asked to do so.
        !            61: 
        !            62: 
        !            63: File: emacs  Node: Auto Save, Prev: Reverting, Up: Files, Next: ListDir
        !            64: 
        !            65: Auto-Saving: Protection Against Disasters
        !            66: =========================================
        !            67: 
        !            68:   Emacs saves all the visited files from time to time (based on counting
        !            69: your keystrokes) without being asked.  This is called "auto-saving".
        !            70: It prevents you from losing more than a limited amount of work if the
        !            71: system crashes.
        !            72: 
        !            73:   When Emacs determines that it is time for auto-saving, each buffer is
        !            74: considered, and is auto-saved if auto-saving is turned on for it and it has
        !            75: been changed since the last time it was auto-saved.  If any auto-saving is
        !            76: done, the message `Auto-saving...' is displayed in the echo area until
        !            77: auto-saving is finished.  Errors occurring during auto-saving are caught
        !            78: so that they do not interfere with the execution of commands you have been
        !            79: typing.
        !            80: 
        !            81: * Menu:
        !            82: 
        !            83: * Files: Auto Save Files.
        !            84: * Control: Auto Save Control.
        !            85: * Recover::            Recovering text from auto-save files.
        !            86: 
        !            87: 
        !            88: File: emacs  Node: Auto Save Files, Prev: Auto Save, Up: Auto Save, Next: Auto Save Control
        !            89: 
        !            90: Auto-Save Files
        !            91: ---------------
        !            92: 
        !            93:   Auto-saving does not normally save in the files that you visited, because
        !            94: it can be very undesirable to save a program that is in an inconsistent
        !            95: state when you have made half of a planned change.  Instead, auto-saving
        !            96: is done in a different file called the "auto-save file", and the
        !            97: visited file is changed only when you request saving explicitly (such as
        !            98: with `C-x C-s').
        !            99: 
        !           100:   Normally, the auto-save file name is made by appending `#' to the
        !           101: front and rear of the visited file name.  Thus, a buffer visiting file
        !           102: `foo.c' would be auto-saved in a file `#foo.c#'.  Most buffers
        !           103: that are not visiting files are auto-saved only if you request it
        !           104: explicitly; when they are auto-saved, the auto-save file name is made by
        !           105: appending `#%' to the front and `#' to the rear of buffer name.
        !           106: For example, the `*mail*' buffer in which you compose messages to be
        !           107: sent is auto-saved in a file named `#%*mail*#'.  Auto-save file names
        !           108: are made this way unless you reprogram parts of Emacs to do something
        !           109: different (the functions `make-auto-save-file-name' and
        !           110: `auto-save-file-name-p').  The file name to be used for auto-saving
        !           111: in a buffer is calculated when auto-saving is turned on in that buffer.
        !           112: 
        !           113:   If you want auto-saving to be done in the visited file, set the variable
        !           114: `auto-save-visited-file-name' to be non-`nil'.  In this mode,
        !           115: there is really no difference between auto-saving and explicit saving.
        !           116: 
        !           117:   A buffer's auto-save file is deleted when you save the buffer in its
        !           118: visited file.  To inhibit this, set the variable `delete-auto-save-files'
        !           119: to `nil'.  Changing the visited file name with `C-x C-w' or
        !           120: `set-visited-file-name' renames any auto-save file to go with
        !           121: the new visited name.
        !           122: 
        !           123: 
        !           124: File: emacs  Node: Auto Save Control, Prev: Auto Save Files, Up: Auto Save, Next: Recover
        !           125: 
        !           126: Controlling Auto-Saving
        !           127: -----------------------
        !           128: 
        !           129:   Each time you visit a file, auto-saving is turned on for that file's
        !           130: buffer if the variable `auto-save-default' is non-`nil' (but not
        !           131: in batch mode; *Note Entering Emacs::).  The default for this variable is
        !           132: `t', so auto-saving is the usual practice for file-visiting buffers.
        !           133: Auto-saving can be turned on or off for any existing buffer with the
        !           134: command `M-x auto-save-mode'.  Like other minor mode commands, `M-x
        !           135: auto-save-mode' turns auto-saving on with a positive argument, off with a
        !           136: zero or negative argument; with no argument, it toggles.
        !           137: 
        !           138:   Emacs does auto-saving periodically based on counting how many characters
        !           139: you have typed since the last time auto-saving was done.  The variable
        !           140: `auto-save-interval' specifies how many characters there are between
        !           141: auto-saves.  By default, it is 300.  Emacs also auto-saves whenever you
        !           142: call the function `do-auto-save'.
        !           143: 
        !           144:   Emacs also does auto-saving whenever it gets a fatal error.  This
        !           145: includes killing the Emacs job with a shell command such as `kill
        !           146: %emacs', or disconnecting a phone line or network connection.
        !           147: 
        !           148: 
        !           149: File: emacs  Node: Recover, Prev: Auto Save Control, Up: Auto Save
        !           150: 
        !           151: Recovering Data from Auto-Saves
        !           152: -------------------------------
        !           153: 
        !           154:   The way to use the contents of an auto-save file to recover from a loss
        !           155: of data is with the command `M-x recover-file RET FILE RET'.  This visits
        !           156: FILE and then (after your confirmation) restores the contents from from its
        !           157: auto-save file `#FILE#'.  You can then save with `C-x C-s' to put the
        !           158: recovered text into FILE itself.  For example, to recover file `foo.c' from
        !           159: its auto-save file `#foo.c#', do:
        !           160: 
        !           161:      M-x recover-file RET foo.c RET
        !           162:      C-x C-s
        !           163: 
        !           164:   Before asking for confirmation, `M-x recover-file' displays a
        !           165: directory listing describing the specified file and the auto-save file,
        !           166: so you can compare their sizes and dates.  If the auto-save file
        !           167: is older, `M-x recover-file' does not offer to read it.
        !           168: 
        !           169:   Auto-saving is disabled by `M-x recover-file' because using
        !           170: this command implies that the auto-save file contains valuable data
        !           171: from a past session.  If you save the data in the visited file and
        !           172: then go on to make new changes, you should turn auto-saving back on
        !           173: with `M-x auto-save-mode'.
        !           174: 
        !           175: 
        !           176: File: emacs  Node: ListDir, Prev: Auto Save, Up: Files, Next: Dired
        !           177: 
        !           178: Listing a File Directory
        !           179: ========================
        !           180: 
        !           181:   Files are classified by Unix into "directories".  A "directory
        !           182: listing" is a list of all the files in a directory.  Emacs provides
        !           183: directory listings in brief format (file names only) and verbose format
        !           184: (sizes, dates, and authors included).
        !           185: 
        !           186: `C-x C-d DIR-OR-PATTERN'     
        !           187:      Print a brief directory listing (`list-directory').
        !           188: `C-u C-x C-d DIR-OR-PATTERN'     
        !           189:      Print a verbose directory listing.
        !           190: 
        !           191:   The command to print a directory listing is `C-x C-d' (`list-directory').
        !           192: It reads using the minibuffer a file name which is either a directory to be
        !           193: listed or a wildcard-containing pattern for the files to be listed.  For
        !           194: example,
        !           195: 
        !           196:      C-x C-d /u2/emacs/etc RET
        !           197: 
        !           198: lists all the files in directory `/u2/emacs/etc'.  An example of
        !           199: specifying a file name pattern is
        !           200: 
        !           201:      C-x C-d /u2/emacs/src/*.c RET
        !           202: 
        !           203:   Normally, `C-x C-d' prints a brief directory listing containing just
        !           204: file names.  A numeric argument (regardless of value) tells it to print a
        !           205: verbose listing (like `ls -l').
        !           206: 
        !           207:   The text of a directory listing is obtained by running `ls' in an
        !           208: inferior process.  Two Emacs variables control the switches passed to
        !           209: `ls': `list-directory-brief-switches' is a string giving the
        !           210: switches to use in brief listings (`"-CF"' by default), and
        !           211: `list-directory-verbose-switches' is a string giving the switches to
        !           212: use in a verbose listing (`"-l"' by default).
        !           213: 
        !           214: 
        !           215: File: emacs  Node: Dired, Prev: ListDir, Up: Files, Next: Misc File Ops
        !           216: 
        !           217: Dired, the Directory Editor
        !           218: ===========================
        !           219: 
        !           220:   Dired makes it easy to delete or visit many of the files in a single
        !           221: directory at once.  It makes an Emacs buffer containing a listing of the
        !           222: directory.  You can use the normal Emacs commands to move around in this
        !           223: buffer, and special Dired commands to operate on the files.
        !           224: 
        !           225: * Menu:
        !           226: 
        !           227: * Enter: Dired Enter.         How to invoke Dired.
        !           228: * Edit: Dired Edit.           Editing the Dired buffer.
        !           229: * Deletion: Dired Deletion.   Deleting files with Dired.
        !           230: * Immed: Dired Immed.         Other file operations through Dired.
        !           231: 
        !           232: 
        !           233: File: emacs  Node: Dired Enter, Prev: Dired, Up: Dired, Next: Dired Edit
        !           234: 
        !           235: Entering Dired
        !           236: --------------
        !           237: 
        !           238:   To invoke dired, do `C-x d' or `M-x dired'.  The command reads a
        !           239: directory name or wildcard file name pattern as a minibuffer argument just
        !           240: like the `list-directory' command, `C-x C-d'.  Where `dired'
        !           241: differs from `list-directory' is in naming the buffer after the
        !           242: directory name or the wildcard pattern used for the listing, and putting
        !           243: the buffer into Dired mode so that the special commands of Dired are
        !           244: available in it.  The variable `dired-listing-switches' is a string
        !           245: used as an argument to `ls' in making the directory; this string
        !           246: must contain `-l'.
        !           247: 
        !           248:   To display the Dired buffer in another window rather than in the selected
        !           249: window, use `C-x 4 d' (`dired-other-window)' instead of `C-x d'.
        !           250: 
        !           251: 
        !           252: File: emacs  Node: Dired Edit, Prev: Dired Enter, Up: Dired, Next: Dired Deletion
        !           253: 
        !           254: Editing in Dired
        !           255: ----------------
        !           256: 
        !           257:   Once the Dired buffer exists, you can switch freely between it and other
        !           258: Emacs buffers.  Whenever the Dired buffer is selected, certain special
        !           259: commands are provided that operate on files that are listed.  The Dired
        !           260: buffer is "read-only", and inserting text in it is not useful, so
        !           261: ordinary printing characters such as `d' and `x' are used for Dired
        !           262: commands.  Most Dired commands operate on the file described by the line
        !           263: that point is on.  Some commands perform operations immediately; others
        !           264: "flag" the file to be operated on later.
        !           265: 
        !           266:   Most Dired commands that operate on the current line's file also treat a
        !           267: numeric argument as a repeat count, meaning to act on the files of the
        !           268: next few lines.  A negative argument means to operate on the files of the
        !           269: preceding lines, and leave point on the first of those lines.
        !           270: 
        !           271:   All the usual Emacs cursor motion commands are available in Dired
        !           272: buffers.  Some special purpose commands are also provided.  The keys
        !           273: `C-n' and `C-p' are redefined so that they try to position
        !           274: the cursor at the beginning of the filename on the line, rather than
        !           275: at the beginning of the line.
        !           276: 
        !           277:   For extra convenience, SPC and `n' in Dired are equivalent to `C-n'.  `p'
        !           278: is equivalent to `C-p'.  Moving by lines is done so often in Dired that it
        !           279: deserves to be easy to type.  DEL (move up and unflag) is often useful
        !           280: simply for moving up.
        !           281: 
        !           282:   The `g' command in Dired runs `revert-buffer' to reinitialize
        !           283: the buffer from the actual disk directory and show any changes made in the
        !           284: directory by programs other than Dired.  All deletion flags in the Dired
        !           285: buffer are lost when this is done.
        !           286: 
        !           287: 
        !           288: File: emacs  Node: Dired Deletion, Prev: Dired Edit, Up: Dired, Next: Dired Immed
        !           289: 
        !           290: Deleting Files with Dired
        !           291: -------------------------
        !           292: 
        !           293:   The primary use of Dired is to flag files for deletion and then delete
        !           294: them.
        !           295: 
        !           296: `d'     
        !           297:      Flag this file for deletion.
        !           298: `u'     
        !           299:      Remove deletion-flag on this line.
        !           300: `DEL'     
        !           301:      Remove deletion-flag on previous line, moving point to that line.
        !           302: `x'     
        !           303:      Delete the files that are flagged for deletion.
        !           304: `#'     
        !           305:      Flag all auto-save files (files whose names start and end with `#')
        !           306:      for deletion (*Note Auto Save::).
        !           307: `~'     
        !           308:      Flag all backup files (files whose names end with `~') for deletion
        !           309:      (*Note Backup::).
        !           310: `. (Period)'     
        !           311:      Flag excess numeric backup files for deletion.  The oldest and newest
        !           312:      few backup files of any one file are exempt; the middle ones are flagged.
        !           313: 
        !           314:   You can flag a file for deletion by moving to the line describing the
        !           315: file and typing `d' or `C-d'.  The deletion flag is visible as a
        !           316: `D' at the beginning of the line.  Point is moved to the beginning of
        !           317: the next line, so that repeated `d' commands flag successive files.
        !           318: 
        !           319:   The files are flagged for deletion rather than deleted immediately to
        !           320: avoid the danger of deleting a file accidentally.  Until you direct Dired
        !           321: to delete the flagged files, you can remove deletion flags using the
        !           322: commands `u' and DEL.  `u' works just like `d', but
        !           323: removes flags rather than making flags.  DEL moves upward, removing
        !           324: flags; it is like `u' with numeric argument automatically negated.
        !           325: 
        !           326:   To delete the flagged files, type `x'.  This command first displays a
        !           327: list of all the file names flagged for deletion, and requests confirmation
        !           328: with `yes'.  Once you confirm, all the flagged files are deleted, and their
        !           329: lines are deleted from the text of the Dired buffer.  The shortened Dired
        !           330: buffer remains selected.  If you answer `no' or quit with `C-g', you
        !           331: return immediately to Dired, with the deletion flags still present and no
        !           332: files actually deleted.
        !           333: 
        !           334:   The `#', `~' and `.' commands flag many files for deletion, based on
        !           335: their names.  These commands are useful precisely because they do not
        !           336: actually delete any files; you can remove the deletion flags from any
        !           337: flagged files that you really wish to keep.
        !           338: 
        !           339:   `#' flags for deletion all files that appear to have been made by
        !           340: auto-saving (that is, files whose names begin and end with `#').
        !           341: `~' flags for deletion all files that appear to have been made as
        !           342: backups for files that were edited (that is, files whose names end with
        !           343: `~').
        !           344: 
        !           345:   `.' (Period) flags just some of the backup files for deletion: only
        !           346: numeric backups that are not among the oldest few nor the newest few
        !           347: backups of any one file.  Normally `dired-kept-versions' (not
        !           348: `kept-new-versions'; that applies only when saving) specifies the number of
        !           349: newest versions of each file to keep, and `kept-old-versions' specifies the
        !           350: number of oldest versions to keep.  Period with a positive numeric
        !           351: argument, as in `C-u 3 .', specifies the number of newest versions to keep,
        !           352: overriding `dired-kept-versions'.  A negative numeric argument overrides
        !           353: `kept-old-versions', using minus the value of the argument to specify the
        !           354: number of oldest versions of each file to keep.
        !           355: 
        !           356: 
        !           357: File: emacs  Node: Dired Immed, Prev: Dired Deletion, Up: Dired
        !           358: 
        !           359: Immediate File Operations in Dired
        !           360: ----------------------------------
        !           361: 
        !           362:   Some file operations in Dired take place immediately when they are
        !           363: requested.
        !           364: 
        !           365: `c'     
        !           366:      Copies the file described on the current line.  You must supply a file name
        !           367:      to copy to, using the minibuffer.
        !           368: `f'     
        !           369:      Visits the file described on the current line.  It is just like typing
        !           370:      `C-x C-f' and supplying that file name.  If the file on this line is a
        !           371:      subdirectory, `f' actually causes Dired to be invoked on that
        !           372:      subdirectory.  *Note Visiting::.
        !           373: `o'     
        !           374:      Like `f', but uses another window to display the file's buffer.  The
        !           375:      Dired buffer remains visible in the first window.  This is like using
        !           376:      `C-x 4 C-f' to visit the file.  *Note Windows::.
        !           377: `r'     
        !           378:      Renames the file described on the current line.  You must supply a file
        !           379:      name to rename to, using the minibuffer.
        !           380: `v'     
        !           381:      Views the file described on this line using `M-x view-file'.  Viewing
        !           382:      a file is like visiting it, but is slanted toward moving around in the
        !           383:      file conveniently and does not allow changing the file.  *Note View
        !           384:      File: Misc File Ops.  Viewing a file that is a directory runs Dired on
        !           385:      that directory.
        !           386: 
        !           387: 
        !           388: File: emacs  Node: Misc File Ops, Prev: Dired, Up: Files
        !           389: 
        !           390: Miscellaneous File Operations
        !           391: =============================
        !           392: 
        !           393:   Emacs has commands for performing many other operations on files.
        !           394: All operate on one file; they do not accept wild card file names.
        !           395: 
        !           396:   `M-x view-file' allows you to scan or read a file by sequential
        !           397: screenfuls.  It reads a file name argument using the minibuffer.  After
        !           398: reading the file into an Emacs buffer, `view-file' reads and displays
        !           399: one windowful.  You can then type SPC to scroll forward one windowful,
        !           400: or DEL to scroll backward.  Various other commands are provided for
        !           401: moving around in the file, but none for changing it; type `C-h' while
        !           402: viewing for a list of them.  They are mostly the same as normal Emacs
        !           403: cursor motion commands.  To exit from viewing, type `C-c'.
        !           404: 
        !           405:   `M-x insert-file' inserts a copy of the contents of the specified
        !           406: file into the current buffer at point, leaving point unchanged before the
        !           407: contents and the mark after them.  *Note Mark::.
        !           408: 
        !           409:   `M-x write-region' is the inverse of `M-x insert-file'; it copies
        !           410: the contents of the region into the specified file.  `M-x append-to-file'
        !           411: adds the text of the region to the end of the specified file.
        !           412: 
        !           413:   `M-x delete-file' deletes the specified file, like the `rm'
        !           414: command in the shell.  If you are deleting many files in one directory, it
        !           415: may be more convenient to use Dired (*Note Dired::).
        !           416: 
        !           417:   `M-x rename-file' reads two file names OLD and NEW using
        !           418: the minibuffer, then renames file OLD as NEW.  If a file named
        !           419: NEW already exists, you must confirm with `yes' or renaming is not
        !           420: done; this is because renaming causes the old meaning of the name NEW
        !           421: to be lost.  If OLD and NEW are on different file systems, the
        !           422: file OLD is copied and deleted.
        !           423: 
        !           424:   The similar command `M-x add-name-to-file' is used to add an
        !           425: additional name to an existing file without removing its old name.
        !           426: The new name must belong on the same file system that the file is on.
        !           427: 
        !           428:   `M-x copy-file' reads the file OLD and writes a new file named
        !           429: NEW with the same contents.  Confirmation is required if a file named
        !           430: NEW already exists, because copying has the consequence of overwriting
        !           431: the old contents of the file NEW.
        !           432: 
        !           433:   `M-x make-symbolic-link' reads two file names OLD and LINKNAME,
        !           434: and then creates a symbolic link named LINKNAME and pointing at OLD.
        !           435: The effect is that future attempts to open file LINKNAME will refer
        !           436: to whatever file is named OLD at the time the opening is done, or
        !           437: will get an error if the name OLD is not in use at that time.
        !           438: Confirmation is required when creating the link if LINKNAME is in
        !           439: use.  Note that not all systems support symbolic links.
        !           440: 
        !           441: 
        !           442: File: emacs  Node: Buffers, Prev: Files, Up: Top, Next: Windows
        !           443: 
        !           444: Using Multiple Buffers
        !           445: **********************
        !           446: 
        !           447:   The text you are editing in Emacs resides in an object called a
        !           448: "buffer".  Each time you visit a file, a buffer is created to hold the
        !           449: file's text.  Each time you invoke Dired, a buffer is created to hold the
        !           450: directory listing.  If you send a message with `C-x m', a buffer named
        !           451: `*mail*' is used to hold the text of the message.  When you ask for a
        !           452: command's documentation, that appears in a buffer called `*Help*'.
        !           453: 
        !           454:   At any time, one and only one buffer is "selected".  It is also
        !           455: called the "current buffer".  Often we say that a command operates on
        !           456: "the buffer" as if there were only one; but really this means that the
        !           457: command operates on the selected buffer (most commands do).
        !           458: 
        !           459:   When Emacs makes multiple windows, each window has a chosen buffer which
        !           460: is displayed there, but at any time only one of the windows is selected and
        !           461: its chosen buffer is the selected buffer.  Each window's mode line displays
        !           462: the name of the buffer that the window is displaying (*Note Windows::).
        !           463: 
        !           464:   Each buffer has a name, which can be of any length, and you can select
        !           465: any buffer by giving its name.  Most buffers are made by visiting files,
        !           466: and their names are derived from the files' names.  But you can also create
        !           467: an empty buffer with any name you want.  A newly started Emacs has a buffer
        !           468: named `*scratch*' which can be used for evaluating Lisp expressions in
        !           469: Emacs.  The distinction between upper and lower case matters in buffer
        !           470: names.
        !           471: 
        !           472:   Each buffer records individually what file it is visiting, whether it is
        !           473: modified, and what major mode and minor modes are in effect in it
        !           474: (*Note Major Modes::).  Any Emacs variable can be made "local to" a
        !           475: particular buffer, meaning its value in that buffer can be different from
        !           476: the value in other buffers.  *Note Locals::.
        !           477: 
        !           478: * Menu:
        !           479: 
        !           480: * Select Buffer::   Creating a new buffer or reselecting an old one.
        !           481: * List Buffers::    Getting a list of buffers that exist.
        !           482: * Misc Buffer::     Renaming; changing read-onliness; copying text.
        !           483: * Kill Buffer::     Killing buffers you no longer need.
        !           484: * Several Buffers:: How to go through the list of all buffers
        !           485:                      and operate variously on several of them.
        !           486: 
        !           487: 
        !           488: File: emacs  Node: Select Buffer, Prev: Buffers, Up: Buffers, Next: List Buffers
        !           489: 
        !           490: Creating and Selecting Buffers
        !           491: ==============================
        !           492: 
        !           493: `C-x b BUFFER RET'     
        !           494:      Select or create a buffer named BUFFER (`switch-to-buffer').
        !           495: `C-x 4 b BUFFER RET'     
        !           496:      Similar but select a buffer named BUFFER in another window
        !           497:      (`switch-to-buffer-other-window').
        !           498: 
        !           499:   To select the buffer named BUFNAME, type `C-x b BUFNAME RET'.  This is
        !           500: the command `switch-to-buffer' with argument BUFNAME.  You can use
        !           501: completion on an abbreviation for the buffer name you want (*Note
        !           502: Completion::).  An empty argument to `C-x b' specifies the most recently
        !           503: selected buffer that is not displayed in any window.
        !           504: 
        !           505:   Most buffers are created by visiting files, or by Emacs commands that
        !           506: want to display some text, but you can also create a buffer explicitly by
        !           507: typing `C-x b BUFNAME RET'.  This makes a new, empty buffer which
        !           508: is not visiting any file, and selects it for editing.  Such buffers are
        !           509: used for making notes to yourself.  If you try to save one, you are asked
        !           510: for the file name to use.  The new buffer's major mode is determined by the
        !           511: value of `default-major-mode' (*Note Major Modes::).
        !           512: 
        !           513:   Note that `C-x C-f', and any other command for visiting a file, can
        !           514: also be used to switch buffers.  *Note Visiting::.
        !           515: 
        !           516: 
        !           517: File: emacs  Node: List Buffers, Prev: Select Buffer, Up: Buffers, Next: Misc Buffer
        !           518: 
        !           519: Listing Existing Buffers
        !           520: ========================
        !           521: 
        !           522: `C-x C-b'     
        !           523:      List the existing buffers (`list-buffers').
        !           524: 
        !           525:   To print a list of all the buffers that exist, type `C-x C-b'.  Each line
        !           526: in the list shows one buffer's name, major mode and visited file.  `*' at
        !           527: the beginning of a line indicates the buffer is "modified".  If several
        !           528: buffers are modified, it may be time to save some with `C-x s' (*Note
        !           529: Saving::).  `%' indicates a read-only buffer.  `.'  marks the selected
        !           530: buffer.  Here is an example of a buffer list:
        !           531: 
        !           532:       MR Buffer         Size  Mode           File
        !           533:       -- ------         ----  ----           ----
        !           534:      .*  emacs.tex      383402 Texinfo       /u2/emacs/man/emacs.tex
        !           535:          *Help*         1287  Fundamental      
        !           536:          files.el       23076 Emacs-Lisp     /u2/emacs/lisp/files.el
        !           537:        % RMAIL          64042 RMAIL          /u/rms/RMAIL
        !           538:       *% man            747   Dired            
        !           539:          net.emacs      343885 Fundamental   /u/rms/net.emacs
        !           540:          fileio.c       27691 C              /u2/emacs/src/fileio.c
        !           541:          NEWS           67340 Text           /u2/emacs/etc/NEWS
        !           542:          *scratch*        0     Lisp Interaction 
        !           543: 
        !           544: Note that the buffer `*Help*' was made by a help request; it is not
        !           545: visiting any file.  The buffer `man' was made by Dired on the
        !           546: directory `/u2/emacs/man/'.
        !           547: 
        !           548: 
        !           549: File: emacs  Node: Misc Buffer, Prev: List Buffers, Up: Buffers, Next: Kill Buffer
        !           550: 
        !           551: Miscellaneous Buffer Operations
        !           552: ===============================
        !           553: 
        !           554: `C-x C-q'     
        !           555:      Toggle read-only status of buffer (`toggle-read-only').
        !           556: `M-x rename-buffer'     
        !           557:      Change the name of the current buffer.
        !           558: `M-x view-buffer'     
        !           559:      Scroll through a buffer.
        !           560: 
        !           561:   A buffer can be "read-only", which means that commands to change its
        !           562: text are not allowed.  Normally, read-only buffers are made by subsystems
        !           563: such as Dired and Rmail that have special commands to operate on the text;
        !           564: a read-only buffer is also made if you visit a file that is protected so
        !           565: you cannot write it.  If you wish to make changes in a read-only buffer,
        !           566: use the command `C-x C-q' (`toggle-read-only').  It makes a
        !           567: read-only buffer writable, and makes a writable buffer read-only.  This
        !           568: works by setting the variable `buffer-read-only', which has a local
        !           569: value in each buffer and makes the buffer read-only if its value is
        !           570: non-`nil'.
        !           571: 
        !           572:   `M-x rename-buffer' changes the name of the current buffer.  Specify
        !           573: the new name as a minibuffer argument.  There is no default.  If you
        !           574: specify a name that is in use for some other buffer, an error happens and
        !           575: no renaming is done.
        !           576: 
        !           577:   `M-x view-buffer' is much like `M-x view-file' (*Note Misc File Ops::)
        !           578: except that it examines an already existing Emacs buffer.  View mode
        !           579: provides commands for scrolling through the buffer conveniently but not
        !           580: for changing it. When you exit View mode, the value of point that resulted
        !           581: from your perusal remains in effect.
        !           582: 
        !           583:   The commands `C-x a' (`append-to-buffer') and `M-x insert-buffer' can be
        !           584: used to copy text from one buffer to another.  *Note Accumulating Text::.
        !           585: 
        !           586: 
        !           587: File: emacs  Node: Kill Buffer, Prev: Misc Buffer, Up: Buffers, Next: Several Buffers
        !           588: 
        !           589: Killing Buffers
        !           590: ===============
        !           591: 
        !           592:   After you use Emacs for a while, you may accumulate a large number of
        !           593: buffers.  You may then find it convenient to eliminate the ones you no
        !           594: longer need.  There are several commands provided for doing this.
        !           595: 
        !           596: `C-x k'     
        !           597:      Kill a buffer, specified by name (`kill-buffer').
        !           598: `M-x kill-some-buffers'     
        !           599:      Offer to kill each buffer, one by one.
        !           600: 
        !           601: 
        !           602:   `C-x k' (`kill-buffer') kills one buffer, whose name you specify
        !           603: in the minibuffer.  The default, used if you type just RET in the
        !           604: minibuffer, is to kill the current buffer.  If the current buffer is
        !           605: killed, another buffer is selected; a buffer that has been selected
        !           606: recently but does not appear in any window now is chosen to be selected.
        !           607: If the buffer being killed is modified (has unsaved editing) then you are
        !           608: asked to confirm with `yes' before the buffer is killed.
        !           609: 
        !           610:   The command `M-x kill-some-buffers' asks about each buffer, one by
        !           611: one.  An answer of `y' means to kill the buffer.  Killing the current
        !           612: buffer or a buffer containing unsaved changes selects a new buffer or asks
        !           613: for confirmation just like `kill-buffer'.
        !           614: 
        !           615: 
        !           616: File: emacs  Node: Several Buffers, Prev: Kill Buffer, Up: Buffers
        !           617: 
        !           618: Operating on Several Buffers
        !           619: ============================
        !           620: 
        !           621:   The "buffer-menu" facility is like a "Dired for buffers"; it allows
        !           622: you to request operations on various Emacs buffers by editing an Emacs
        !           623: buffer containing a list of them.  You can save buffers, kill them
        !           624: (here called "deleting" them, for consistency with Dired), or display
        !           625: them.
        !           626: 
        !           627: `M-x buffer-menu'     
        !           628:      Begin editing a buffer listing all Emacs buffers.
        !           629: 
        !           630:   The command `buffer-menu' writes a list of all Emacs buffers into
        !           631: the buffer `*Buffer List*', and selects that buffer in Buffer Menu
        !           632: mode.  The buffer is read-only, and can only be changed through the special
        !           633: commands described in this section.  Most of these commands are graphic
        !           634: characters.  The usual Emacs cursor motion commands can be used in the
        !           635: `*Buffer List*' buffer.  The following special commands apply to the
        !           636: buffer described on the current line.
        !           637: 
        !           638: `d'     
        !           639:      Request to delete (kill) the buffer, then move down.  The request
        !           640:      shows as a `D' on the line, before the buffer name.  Requested
        !           641:      deletions take place when the `x' command is used.
        !           642: `k'     
        !           643:      Synonym for `d'.
        !           644: `C-d'     
        !           645:      Like `d' but move up afterwards instead of down.
        !           646: `s'     
        !           647:      Request to save the buffer.  The request shows as an `S' on the
        !           648:      line.  Requested saves take place when the `x' command is used.
        !           649:      You may request both saving and deletion for the same buffer.
        !           650: `~'     
        !           651:      Mark buffer "unmodified".  The command `~' does this
        !           652:      immediately when typed.
        !           653: `x'     
        !           654:      Perform previously requested deletions and saves.
        !           655: `u'     
        !           656:      Remove any request made for the current line, and move down.
        !           657: `DEL'     
        !           658:      Move to previous line and remove any request made for that line.
        !           659: 
        !           660:   All the commands that put in or remove flags to request later operations
        !           661: also move down a line, and accept a numeric argument as a repeat count,
        !           662: unless otherwise specified.
        !           663: 
        !           664:   There are also special commands to use the buffer list to select another
        !           665: buffer, and to specify one or more other buffers for display in additional
        !           666: windows.
        !           667: 
        !           668: `1'     
        !           669:      Select the buffer in a full-screen window.  This command takes effect
        !           670:      immediately.
        !           671: `2'     
        !           672:      Immediately set up two windows, with this buffer in one, and the
        !           673:      previously selected buffer (aside from the buffer `*Buffer List*')
        !           674:      in the other.
        !           675: `f'     
        !           676:      Immediately select the buffer in place of the `*Buffer List*' buffer.
        !           677: `o'     
        !           678:      Immediately select the buffer in another window as if by `C-x 4 b',
        !           679:      leaving `*Buffer List*' visible.
        !           680: `q'     
        !           681:      Immediately select this buffer, and also display in other windows any
        !           682:      buffers previously flagged with the `m' command.  If there are no
        !           683:      such buffers, this command is equivalent to `1'.
        !           684: `m'     
        !           685:      Flag this buffer to be displayed in another window if the `q'
        !           686:      command is used.  The request shows as a `>' at the beginning of
        !           687:      the line.  The same buffer may not have both a delete request and a
        !           688:      display request.
        !           689: 
        !           690:   All that `buffer-menu' does directly is create and select a suitable
        !           691: buffer, and turn on Buffer Menu mode.  Everything else described above is
        !           692: implemented by the special commands provided in Buffer Menu mode.  One
        !           693: consequence of this is that you can switch from the `*Buffer List*'
        !           694: buffer to another Emacs buffer, and edit there.  You can reselect the
        !           695: `buffer-menu' buffer later, to perform the operations already
        !           696: requested, or you can kill it, or pay no further attention to it.
        !           697: 
        !           698:   The only difference between `buffer-menu' and `list-buffers' is
        !           699: that `buffer-menu' selects the `*Buffer List*' buffer and
        !           700: `list-buffers' does not.  If you run `list-buffers' (that is,
        !           701: type `C-x C-b') and select the buffer list manually, you can use all of
        !           702: the commands described here.
        !           703: 
        !           704: 
        !           705: File: emacs  Node: Windows, Prev: Buffers, Up: Top, Next: Major Modes
        !           706: 
        !           707: Multiple Windows
        !           708: ****************
        !           709: 
        !           710:   Emacs can split the screen into two or many windows, which can display
        !           711: parts of different buffers, or different parts of one buffer.
        !           712: 
        !           713: * Menu:
        !           714: 
        !           715: * Basic Window::     Introduction to Emacs windows.
        !           716: * Split Window::     New windows are made by splitting existing windows.
        !           717: * Other Window::     Moving to another window or doing something to it.
        !           718: * Pop Up Window::    Finding a file or buffer in another window.
        !           719: * Change Window::    Deleting windows and changing their sizes.
        !           720: 
        !           721: 
        !           722: File: emacs  Node: Basic Window, Prev: Windows, Up: Windows, Next: Split Window
        !           723: 
        !           724: Concepts of Emacs Windows
        !           725: =========================
        !           726: 
        !           727:   When multiple windows are being displayed, each window has an Emacs
        !           728: buffer designated for display in it.  The same buffer may appear in more
        !           729: than one window; if it does, any changes in its text are displayed in all
        !           730: the windows where it appears.  But the windows showing the same buffer can
        !           731: show different parts of it, because each window has its own value of point.
        !           732: 
        !           733:   At any time, one of the windows is the "selected window"; the buffer
        !           734: this window is displaying is the current buffer.  The terminal's cursor
        !           735: shows the location of point in this window.  Each other window has a
        !           736: location of point as well, but since the terminal has only one cursor there
        !           737: is no way to show where those locations are.
        !           738: 
        !           739:   Commands to move point affect the value of point for the selected Emacs
        !           740: window only.  They do not change the value of point in any other Emacs
        !           741: window, even one showing the same buffer.  The same is true for commands
        !           742: such as `C-x b' to change the selected buffer in the selected window;
        !           743: they do not affect other windows at all.  However, there are other commands
        !           744: such as `C-x 4 b' that select a different window and switch buffers in
        !           745: it.  Also, all commands that display information in a window, including
        !           746: (for example) `C-h f' (`describe-function') and `C-x C-b'
        !           747: (`list-buffers'), work by switching buffers in a nonselected window
        !           748: without affecting the selected window.
        !           749: 
        !           750:   Each window has its own mode line, which displays the buffer name,
        !           751: modification status and major and minor modes of the buffer that is
        !           752: displayed in the window.  *Note Mode Line::, for full details on the mode
        !           753: line.
        !           754: 
        !           755: 
        !           756: File: emacs  Node: Split Window, Prev: Basic Window, Up: Windows, Next: Other Window
        !           757: 
        !           758: Splitting Windows
        !           759: =================
        !           760: 
        !           761: `C-x 2'     
        !           762:      Split the selected window into two windows, one above the other
        !           763:      (`split-window-vertically').
        !           764: `C-x 5'     
        !           765:      Split the selected window into two windows positioned side by side
        !           766:      (`split-window-horizontally').
        !           767: 
        !           768:   The command `C-x 2' (`split-window-vertically') breaks the
        !           769: selected window into two windows, one above the other.  Both windows start
        !           770: out displaying the same buffer, with the same value of point.  By default
        !           771: the two windows each get half the height of the window that was split; a
        !           772: numeric argument specifies how many lines to give to the top window.
        !           773: 
        !           774:   `C-x 5' (`split-window-horizontally') breaks the selected
        !           775: window into two side-by-side windows.  A numeric argument specifies
        !           776: how many columns to give the one on the left.  A line of vertical bars
        !           777: separates the two windows.  Windows that are not the full width of the
        !           778: screen have mode lines, but they are truncated; also, they do not
        !           779: always appear in inverse video, because, the Emacs display routines
        !           780: have not been taught how to display a region of inverse video that is
        !           781: only part of a line on the screen.
        !           782: 
        !           783:   When a window is less than the full width, text lines too long to fit are
        !           784: frequent.  Continuing all those lines might be confusing.  The variable
        !           785: `truncate-partial-width-windows' can be set non-`nil' to force truncation
        !           786: in all windows less than the full width of the screen, independent of the
        !           787: buffer being displayed and its value for `truncate-lines'.  *Note
        !           788: Continuation Lines::.
        !           789: 
        !           790:   Horizontal scrolling is often used in side-by-side windows.
        !           791: *Note Display::.
        !           792: 
        !           793: 
        !           794: File: emacs  Node: Other Window, Prev: Split Window, Up: Windows, Next: Pop Up Window
        !           795: 
        !           796: Using Other Windows
        !           797: ===================
        !           798: 
        !           799: `C-x o'     
        !           800:      Select another window (`other-window').  That is `o', not zero.
        !           801: `C-M-v'     
        !           802:      Scroll the next window (`scroll-other-window').
        !           803: `M-x compare-windows'     
        !           804:      Find next place where the text in the selected window does not match
        !           805:      the text in the next window.
        !           806: 
        !           807:   To select a different window, use `C-x o' (`other-window').
        !           808: That is an `o', for `other', not a zero.  When there are more than two
        !           809: windows, this command moves through all the windows in a cyclic order,
        !           810: generally top to bottom and left to right.  From the rightmost and
        !           811: bottommost window, it goes back to the one at the upper left corner.  A
        !           812: numeric argument means to move several steps in the cyclic order of
        !           813: windows.  A negative argument moves around the cycle in the opposite order.
        !           814: When the minibuffer is active, the minibuffer is the last window in the
        !           815: cycle; you can switch from the minibuffer window to one of the other
        !           816: windows, and later switch back and finish supplying the minibuffer argument
        !           817: that is requested.  *Note Minibuffer Edit::.
        !           818: 
        !           819:   The usual scrolling commands (*Note Display::) apply to the selected
        !           820: window only, but there is one command to scroll the next window.
        !           821: `C-M-v' (`scroll-other-window') scrolls the window that `C-x o'
        !           822: would select.  It takes arguments, positive and negative, like `C-v'.
        !           823: 
        !           824:   The command `M-x compare-windows' compares the text in the current
        !           825: window with that in the next window.  Comparison starts at point in each
        !           826: window.  Point moves forward in each window, a character at a time in each
        !           827: window, until the next characters in the two windows are different.  Then
        !           828: the command is finished.
        !           829: 
        !           830: 
        !           831: File: emacs  Node: Pop Up Window, Prev: Other Window, Up: Windows, Next: Change Window
        !           832: 
        !           833: Displaying in Another Window
        !           834: ============================
        !           835: 
        !           836:   `C-x 4' is a prefix key for commands that select another window
        !           837: (splitting the window if there is only one) and select a buffer in that
        !           838: window.  Different `C-x 4' commands have different ways of finding the
        !           839: buffer to select.
        !           840: 
        !           841: `C-x 4 b BUFNAME RET'     
        !           842:      Select buffer BUFNAME in another window.  This runs 
        !           843:      `switch-to-buffer-other-window'.
        !           844: `C-x 4 f FILENAME RET'     
        !           845:      Visit file FILENAME and select its buffer in another window.  This
        !           846:      runs `find-file-other-window'.  *Note Visiting::.
        !           847: `C-x 4 d DIRECTORY RET'     
        !           848:      Select a Dired buffer for directory DIRECTORY in another window.
        !           849:      This runs `dired-other-window'.  *Note Dired::.
        !           850: `C-x 4 m'     
        !           851:      Start composing a mail message in another window.  This runs
        !           852:      `mail-other-window', and its same-window version is `C-x m'
        !           853:      (*Note Sending Mail::).
        !           854: `C-x 4 .'     
        !           855:      Find a tag in the current tag table in another window.  This runs
        !           856:      `find-tag-other-window', the multiple-window variant of `M-.'
        !           857:      (*Note Tags::).
        !           858: 
        !           859: 
        !           860: File: emacs  Node: Change Window, Prev: Pop Up Window, Up: Windows
        !           861: 
        !           862: Deleting and Rearranging Windows
        !           863: ================================
        !           864: 
        !           865: `C-x 0'     
        !           866:      Get rid of the selected window (`kill-window').  That is a zero.
        !           867: `C-x 1'     
        !           868:      Get rid of all windows except the selected one (`delete-other-windows').
        !           869: `C-x ^'     
        !           870:      Make the selected window taller, at the expense of the other(s)
        !           871:      (`enlarge-window').
        !           872: `C-x }'     
        !           873:      Make the selected window wider (`enlarge-window-horizontally').
        !           874: 
        !           875:   To delete a window, type `C-x 0' (`delete-window').  (That is a
        !           876: zero.)  The space occupied by the deleted window is distributed among the
        !           877: other active windows (but not the minibuffer window, even if that is active
        !           878: at the time).  Once a window is deleted, its attributes are forgotten;
        !           879: there is no automatic way to make another window of the same shape or
        !           880: showing the same buffer.  But the buffer continues to exist, and you can
        !           881: select it in any window with `C-x b'.
        !           882: 
        !           883:   `C-x 1' (`delete-other-windows') is more powerful than `C-x 0';
        !           884: it deletes all the windows except the selected one (and the minibuffer);
        !           885: the selected window expands to use the whole screen except for the echo
        !           886: area.
        !           887: 
        !           888:   To readjust the division of space among existing windows, use `C-x ^'
        !           889: (`enlarge-window').  It makes the currently selected window get one
        !           890: line bigger, or as many lines as is specified with a numeric argument.
        !           891: With a negative argument, it makes the selected window smaller.  `C-x
        !           892: }' (`enlarge-window-horizontally') makes the selected window wider
        !           893: by the specified number of columns.  The extra screen space given to a
        !           894: window comes from one of its neighbors, if that is possible; otherwise, all
        !           895: the competing windows are shrunk in the same proportion.  If this makes any
        !           896: windows too small, those windows are deleted and their space is divided up.
        !           897: The minimum size is specified by the variables `window-min-height' and
        !           898: `window-min-width'.
        !           899: 
        !           900: 
        !           901: File: emacs  Node: Major Modes, Prev: Windows, Up: Top, Next: Indentation
        !           902: 
        !           903: Major Modes
        !           904: ***********
        !           905: 
        !           906:   Emacs has many different "major modes", each of which customizes
        !           907: Emacs for editing text of a particular sort.  The major modes are mutually
        !           908: exclusive, and each buffer has one major mode at any time.  The mode line
        !           909: normally contains the name of the current major mode, in parentheses.
        !           910: *Note Mode Line::.
        !           911: 
        !           912:   The least specialized major mode is called "Fundamental mode".  This
        !           913: mode has no mode-specific redefinitions or variable settings, so that each
        !           914: Emacs command behaves in its most general manner, and each option is in its
        !           915: default state.  For editing any specific type of text, such as Lisp code or
        !           916: English text, you should switch to the appropriate major mode, such as Lisp
        !           917: mode or Text mode.
        !           918: 
        !           919:   Selecting a major mode changes the meanings of a few keys to become more
        !           920: specifically adapted to the language being edited.  The ones which are
        !           921: changed frequently are TAB, DEL, and LFD.  In addition,
        !           922: the commands which handle comments use the mode to determine how comments
        !           923: are to be delimited.  Many major modes redefine the syntactical properties
        !           924: of characters appearing in the buffer.  *Note Syntax::.
        !           925: 
        !           926:   The major modes fall into three major groups.  Lisp mode (which has
        !           927: several variants), C mode and Muddle mode are for specific programming
        !           928: languages.  Text mode, Nroff mode, TeX mode and Outline mode are for
        !           929: editing English text.  The remaining major modes are not intended for use
        !           930: on users' files; they are used in buffers created for specific purposes by
        !           931: Emacs, such as Dired mode for buffers made by Dired (*Note Dired::), and
        !           932: Mail mode for buffers made by `C-x m' (*Note Sending Mail::), and Shell
        !           933: mode for buffers used for communicating with an inferior shell process
        !           934: (*Note Interactive Shell::).
        !           935: 
        !           936:   Most programming language major modes specify that only blank lines
        !           937: separate paragraphs.  This is so that the paragraph commands remain useful.
        !           938: *Note Paragraphs::.  They also cause Auto Fill mode to use the definition of
        !           939: TAB to indent the new lines it creates.  This is because most lines
        !           940: in a program are usually indented.  *Note Indentation::.
        !           941: 
        !           942: * Menu:
        !           943: 
        !           944: * Choosing Modes::     How major modes are specified or chosen.
        !           945: 
        !           946: 
        !           947: File: emacs  Node: Choosing Modes, Prev: Major Modes, Up: Major Modes
        !           948: 
        !           949: How Major Modes are Chosen
        !           950: ==========================
        !           951: 
        !           952:   You can select a major mode explicitly for the current buffer, but
        !           953: most of the time Emacs determines which mode to use based on the file
        !           954: name or some text in the file.
        !           955: 
        !           956:   Explicit selection of a new major mode is done with a `M-x' command.
        !           957: From the name of a major mode, add `-mode' to get the name of a
        !           958: command to select that mode.  Thus, you can enter Lisp mode by executing
        !           959: `M-x lisp-mode'.
        !           960: 
        !           961:   When you visit a file, Emacs usually chooses the right major mode based
        !           962: on the file's name.  For example, files whose names end in `.c' are
        !           963: edited in C mode.  The correspondence between file names and major mode is
        !           964: controlled by the variable `auto-mode-alist'.  Its value is a list in
        !           965: which each element has the form
        !           966: 
        !           967:      (REGEXP . MODE-FUNCTION)
        !           968: 
        !           969: For example, one element normally found in the list has the form
        !           970: `("\\.c$" . c-mode)', and it is responsible for selecting C mode
        !           971: for files whose names end in `.c'.  (Note that `\\' is needed in
        !           972: Lisp syntax to include a `\' in the string, which is needed to
        !           973: suppress the special meaning of `.' in regexps.)  The only practical
        !           974: way to change this variable is with Lisp code.
        !           975: 
        !           976:   You can specify which major mode should be used for editing a certain
        !           977: file by a special sort of text in the first nonblank line of the file.  The
        !           978: mode name should appear in this line both preceded and followed by
        !           979: `-*-'.  Other text may appear on the line as well.  For example,
        !           980: 
        !           981:      ;-*-Lisp-*-
        !           982: 
        !           983: tells Emacs to use Lisp mode.  Note how the semicolon is used to make Lisp
        !           984: treat this line as a comment.  Such an explicit specification overrides any
        !           985: defaulting based on the file name.
        !           986: 
        !           987:   Another format of mode specification is
        !           988: 
        !           989:      -*-Mode: MODENAME;-*-
        !           990: 
        !           991: which allows other things besides the major mode name to be specified.
        !           992: However, Emacs does not look for anything except the mode name.
        !           993: 
        !           994: The major mode can also be specified in a local variables list.
        !           995: *Note File Variables::.
        !           996: 
        !           997:   When a file is visited that does not specify a major mode to use, or when
        !           998: a new buffer is created with `C-x b', the major mode used is that
        !           999: specified by the variable `default-major-mode'.  Normally this value
        !          1000: is the symbol `fundamental-mode', which specifies Fundamental mode.
        !          1001: If `default-major-mode' is `nil', the major mode is taken from
        !          1002: the previously selected buffer.
        !          1003: 
        !          1004: 
        !          1005: File: emacs  Node: Indentation, Prev: Major Modes, Up: Top, Next: Text
        !          1006: 
        !          1007: Indentation
        !          1008: ***********
        !          1009: 
        !          1010: `TAB'     
        !          1011:      Indent current line "appropriately" in a mode-dependent fashion.
        !          1012: `LFD'     
        !          1013:      Perform RET followed by TAB (`newline-and-indent').
        !          1014: `M-^'     
        !          1015:      Merge two lines (`delete-indentation').  This would cancel out
        !          1016:      the effect of LFD.
        !          1017: `C-M-o'     
        !          1018:      Split line at point; text on the line after point becomes a new line
        !          1019:      indented to the same column that it now starts in (`split-line').
        !          1020: `M-m'     
        !          1021:      Move (forward or back) to the first nonblank character on the current
        !          1022:      line (`back-to-indentation').
        !          1023: `C-M-\'     
        !          1024:      Indent several lines to same column (`indent-region').
        !          1025: `C-x TAB'     
        !          1026:      Shift block of lines rigidly right or left (`indent-rigidly').
        !          1027: `M-i'     
        !          1028:      Indent from point to the next prespecified tab stop column
        !          1029:      (`tab-to-tab-stop').
        !          1030: `M-x indent-relative'     
        !          1031:      Indent from point to under an indentation point in the previous line.
        !          1032: 
        !          1033:   Most programming languages have some indentation convention.  For Lisp
        !          1034: code, lines are indented according to their nesting in parentheses.  The
        !          1035: same general idea is used for C code, though many details are different.
        !          1036: 
        !          1037:   Whatever the language, to indent a line, use the TAB command.  Each
        !          1038: major mode defines this command to perform the sort of indentation
        !          1039: appropriate for the particular language.  In Lisp mode, TAB aligns
        !          1040: the line according to its depth in parentheses.  No matter where in the
        !          1041: line you are when you type TAB, it aligns the line as a whole.  In C
        !          1042: mode, TAB implements a subtle and sophisticated indentation style that
        !          1043: knows about many aspects of C syntax.
        !          1044: 
        !          1045:   In Text mode, TAB runs the command `tab-to-tab-stop', which
        !          1046: indents to the next tab stop column.  You can set the tab stops with
        !          1047: `M-x edit-tab-stops'.
        !          1048: 
        !          1049: * Menu:
        !          1050: 
        !          1051: * Indentation Commands:: Various commands and techniques for indentation.
        !          1052: * Tab Stops::            You can set arbitrary "tab stops" and then
        !          1053:                          indent to the next tab stop when you want to.
        !          1054: * Just Spaces::          You can request indentation using just spaces.
        !          1055: 
        !          1056: 
        !          1057: File: emacs  Node: Indentation Commands, Prev: Indentation, Up: Indentation, Next: Tab Stops
        !          1058: 
        !          1059: Indentation Commands and Techniques
        !          1060: ===================================
        !          1061: 
        !          1062:   If you just want to insert a tab character in the buffer, you can type
        !          1063: `C-q TAB'.
        !          1064: 
        !          1065:   To move over the indentation on a line, do `Meta-m'
        !          1066: (`back-to-indentation').  This command, given anywhere on a line,
        !          1067: positions point at the first nonblank character on the line.
        !          1068: 
        !          1069:   To insert an indented line before the current line, do `C-a C-o
        !          1070: TAB'.  To make an indented line after the current line, use `C-e
        !          1071: LFD'.
        !          1072: 
        !          1073:   `C-M-o' (`split-line') moves the text from point to the end of
        !          1074: the line vertically down, so that the current line becomes two lines.
        !          1075: `C-M-o' first moves point forward over any spaces and tabs.  Then it
        !          1076: inserts after point a newline and enough indentation to reach the same
        !          1077: column point is on.  Point remains before the inserted newline; in this
        !          1078: regard, `C-M-o' resembles `C-o'.
        !          1079: 
        !          1080:   To join two lines cleanly, use the `Meta-^' (`delete-indentation')
        !          1081: command to delete the indentation at the front of the current line, and the
        !          1082: line boundary as well.  They are replaced by a single space, or by no space
        !          1083: if at the beginning of a line or before a `)' or after a `('.  To
        !          1084: delete just the indentation of a line, go to the beginning of the line and
        !          1085: use `Meta-\' (`delete-horizontal-space'), which deletes all spaces
        !          1086: and tabs around the cursor.
        !          1087: 
        !          1088:   There are also commands for changing the indentation of several lines at
        !          1089: once.  `Control-Meta-\' (`indent-region') gives each line which begins in
        !          1090: the region the "usual" indentation by invoking TAB at the beginning of the
        !          1091: line.  A numeric argument specifies the column to indent to, and each line
        !          1092: is shifted left or right so that its first nonblank character appears in
        !          1093: that column.  `C-x TAB' (`indent-rigidly') moves all of the lines in the
        !          1094: region right by its argument (left, for negative arguments).  The whole
        !          1095: group of lines moves rigidly sideways, which is how the command gets its
        !          1096: name.
        !          1097: 
        !          1098:   `M-x indent-relative' indents at point based on the previous line
        !          1099: (actually, the last nonempty line.)  It inserts whitespace at point, moving
        !          1100: point, until it is underneath an indentation point in the previous line.
        !          1101: An indentation point is the end of a sequence of whitespace or the end of
        !          1102: the line.  If point is farther right than any indentation point in the
        !          1103: previous line, the whitespace before point is deleted and the first
        !          1104: indentation point then applicable is used.  If no indentation point is
        !          1105: applicable even then, `tab-to-tab-stop' is run (see next section).
        !          1106: 
        !          1107:   `indent-relative' is the definition of TAB in Indented Text
        !          1108: mode.  *Note Text::.
        !          1109: 
        !          1110: 
        !          1111: File: emacs  Node: Tab Stops, Prev: Indentation Commands, Up: Indentation, Next: Just Spaces
        !          1112: 
        !          1113: Tab Stops
        !          1114: =========
        !          1115: 
        !          1116:   For typing in tables, you can use Text mode's definition of TAB,
        !          1117: `tab-to-tab-stop'.  This command inserts indentation before point,
        !          1118: enough to reach the next tab stop column.  If you are not in Text mode,
        !          1119: this function can be found on `M-i' anyway.
        !          1120: 
        !          1121:   The tab stops used by `M-i' can be set arbitrarily by the user.
        !          1122: They are stored in a variable called `tab-stop-list', as a list of
        !          1123: column-numbers in increasing order.
        !          1124: 
        !          1125:   The convenient way to set the tab stops is using `M-x edit-tab-stops',
        !          1126: which creates and selects a buffer containing a description of the tab stop
        !          1127: settings.  You can edit this buffer to specify different tab stops, and
        !          1128: then type `C-c C-c' to make those new tab stops take effect.  In the
        !          1129: tab stop buffer, `C-c C-c' runs the function
        !          1130: `edit-tab-stops-note-changes' rather than its usual definition
        !          1131: `save-buffer'.  `edit-tab-stops' records which buffer was current
        !          1132: when you invoked it, and stores the tab stops back in that buffer; normally
        !          1133: all buffers share the same tab stops and changing them in one buffer
        !          1134: affects all, but if you happen to make `tab-stop-list' local in one
        !          1135: buffer then `edit-tab-stops' in that buffer will edit the local
        !          1136: settings.
        !          1137: 
        !          1138:   Here is what the text representing the tab stops looks like for ordinary
        !          1139: tab stops every eight columns.
        !          1140: 
        !          1141:              :       :       :       :       :       :
        !          1142:      0         1         2         3         4        
        !          1143:      0123456789012345678901234567890123456789012345678
        !          1144:      To install changes, type C-c C-c
        !          1145: 
        !          1146:   The first line contains a colon at each tab stop.  The remaining lines
        !          1147: are present just to help you see where the colons are and know what to do.
        !          1148: 
        !          1149:   Note that the tab stops that control `tab-to-tab-stop' have nothing
        !          1150: to do with displaying tab characters in the buffer.  *Note Display Vars::,
        !          1151: for more information on that.
        !          1152: 
        !          1153: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.