Annotation of GNUtools/emacs/info/emacs-14, revision 1.1.1.1

1.1       root        1: This is Info file ../info/emacs, produced by Makeinfo-1.49 from the
                      2: input file emacs.texi.
                      3: 
                      4:    This file documents the GNU Emacs editor.
                      5: 
                      6:    Copyright (C) 1985, 1986, 1988, 1992 Richard M. Stallman.
                      7: 
                      8:    Permission is granted to make and distribute verbatim copies of this
                      9: manual provided the copyright notice and this permission notice are
                     10: preserved on all copies.
                     11: 
                     12:    Permission is granted to copy and distribute modified versions of
                     13: this manual under the conditions for verbatim copying, provided also
                     14: that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
                     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
                     20: manual into another language, under the above conditions for modified
                     21: versions, except that the sections entitled "The GNU Manifesto",
                     22: "Distribution" and "GNU General Public License" may be included in a
                     23: translation approved by the author instead of in the original English.
                     24: 
                     25: 
                     26: File: emacs,  Node: Concepts of VC,  Next: Editing with VC,  Up: Version Control
                     27: 
                     28: Concepts of Version Control
                     29: ---------------------------
                     30: 
                     31:    When a file is under version control, we also say that it is
                     32: "registered" in the version control system.  Each registered file has a
                     33: corresponding "master file" which represents the file's present state
                     34: plus its change history, so that you can reconstruct from it either the
                     35: current version or any specified earlier version.  Usually the master
                     36: file also records a change comment for each version.
                     37: 
                     38:    The file that is maintained under version control is sometimes called
                     39: the "work file" corresponding to its master file.
                     40: 
                     41:    To examine a file, you "check it out".  This extracts a version of
                     42: the file (typically, the most recent) from the master.  If you want to
                     43: edit the file, you must check it out "locked".  Only one user can do
                     44: this at a time for any given source file.  When you are done with your
                     45: editing, you must "check in" the new version.  This records the new
                     46: version in the master file, and unlocks the source file so that other
                     47: people can lock it and thus modify it.
                     48: 
                     49:    These are the basic operations of version control. Checking in and
                     50: checking out both use the single Emacs command `C-x C-q'
                     51: (`vc-toggle-read-only').
                     52: 
                     53: 
                     54: File: emacs,  Node: Editing with VC,  Next: Variables for Check-in/out,  Prev: Concepts of VC,  Up: Version Control
                     55: 
                     56: Editing with Version Control
                     57: ----------------------------
                     58: 
                     59:    When you visit a file that is maintained using version control, the
                     60: mode line displays `RCS' or `SCCS' to inform you that version control
                     61: is in use, and also (in case you care) which low-level system the file
                     62: is actually stored in.  Normally, such a source file is read-only, and
                     63: the mode line indicates this with `%%'.)
                     64: 
                     65:    These are the commands that you use to edit a file maintained with
                     66: version control:
                     67: 
                     68: `C-x C-q'
                     69:      Check the visited file in or out.
                     70: 
                     71: `C-x v u'
                     72:      Revert the buffer and the file to the last checked in version.
                     73: 
                     74: `C-x v c'
                     75:      Remove the last-entered change from the master for the visited
                     76:      file. This undoes your last check-in.
                     77: 
                     78: `C-x v i'
                     79:      Register the visited file in version control.
                     80: 
                     81: (`C-x v' is the prefix key for version control commands; all of these
                     82: commands except for `C-x C-q' start with `C-x v'.)
                     83: 
                     84:    If you want to edit the file, type `C-x C-q'
                     85: (`vc-toggle-read-only').  This "checks out" and locks the file, so that
                     86: you can edit it.  The file is writable after check-out, but only for
                     87: you, not for anyone else.
                     88: 
                     89:    Emacs does not save backup files for source files that are maintained
                     90: with version control.  If you want to make backup files despite version
                     91: control, set the variable `vc-make-backups' to a non-`nil' value.
                     92: 
                     93:    When you are finished editing the file, type `C-x C-q' again. When
                     94: used on a file that is checked out, this command checks the file in. 
                     95: But check-in does not start immediately; first, you must enter a "log
                     96: entry"--a description of the changes in the new version. `C-x C-q' pops
                     97: up a buffer for you to enter this in.  When you are finished typing in
                     98: the log entry, type `C-c C-c' to terminate it; this is when actual
                     99: check-in takes place.
                    100: 
                    101:    Once you have checked in your changes, the file is unlocked, so that
                    102: other users can lock it and modify it.
                    103: 
                    104:    Normally the work file exists all the time, whether it is locked or
                    105: not.  If you set `vc-keep-workfiles' to `nil', then checking in a new
                    106: version with `C-x C-q' deletes the work file; but any attempt to visit
                    107: the file with Emacs creates it again.
                    108: 
                    109:    Actually, it is not impossible to lock a file that someone else has
                    110: locked.  If you try to check out a file that is locked, `C-x C-q' asks
                    111: you whether you want to "steal the lock."  If you say yes, the file
                    112: becomes locked by you, but a message is sent to the person who had
                    113: formerly locked the file, to inform him or her of what has happened.
                    114: 
                    115:    If you want to discard your current set of changes and revert to the
                    116: last version checked in, use `C-x v u' (`vc-revert-buffer'). This
                    117: cancels your last check-out, leaving the file unlocked.  If you want to
                    118: make a different set of changes, you must first check the file out
                    119: again.  `C-x v u' requies confirmation, unless it sees that you haven't
                    120: made any changes since the last checked-in version.
                    121: 
                    122:    `C-x v u' is also the command to use if you lock a file and then
                    123: don't actually change it.
                    124: 
                    125:    You can even cancel a change after checking it in, with `C-x v c'
                    126: (`vc-cancel-version').  Normally, `C-x v c' reverts your workfile and
                    127: buffer to the previous version (the one that precedes the version that
                    128: is deleted), but you can prevent the reversion by giving the command a
                    129: prefix argument.  Then the buffer does not change.
                    130: 
                    131:    This command with a prefix argument is useful when you have checked
                    132: in a change and then discover a trivial error in it; you can cancel the
                    133: erroneous check-in, fix the error, and repeat the check-in.
                    134: 
                    135:    Be careful when invoking `C-x v c', as it is easy to throw away a
                    136: lot of work with it.  To help you be careful, this command always asks
                    137: for confirmation with `yes'.
                    138: 
                    139:    You can register the visited file for version control using
                    140: `C-x v i' (`vc-register').  This uses RCS if RCS is installed on your
                    141: system; otherwise, it uses SCCS.
                    142: 
                    143:    By default, the initial version number is 1.1.  If you want to use a
                    144: different number, give `C-x v i' a prefix argument; then it reads the
                    145: initial version number using the minibuffer.
                    146: 
                    147:    After `C-x v i', the file is unlocked and read-only.  Type `C-x C-q'
                    148: if you wish to edit it.
                    149: 
                    150:    If `vc-initial-comment' is non-`nil', `C-x v i' reads an initial
                    151: comment (much like a log entry) to describe the purpose of this source
                    152: file.
                    153: 
                    154: 
                    155: File: emacs,  Node: Variables for Check-in/out,  Next: Comparing Versions,  Prev: Editing with VC,  Up: Version Control
                    156: 
                    157: Variables Affecting Check-in and Check-out
                    158: ------------------------------------------
                    159: 
                    160:    If `vc-suppress-confirm' is non-`nil', then `C-x C-q' and `C-x v i'
                    161: can save the current buffer without asking, and `C-x v u' also operates
                    162: without asking for confirmation. (This variable does not affect `C-x v
                    163: c'; that is so drastic that it should always ask for confirmation.)
                    164: 
                    165:    VC mode does much of its work by running the shell commands for RCS
                    166: and SCCS.  If `vc-command-messages' is non-`nil', VC displays messages
                    167: to indicate which shell commands it runs, and additional messages when
                    168: the commands finish.
                    169: 
                    170:    Normally, VC assumes that it can deduce the locked/unlocked state of
                    171: files by looking at the file permissions of the work file; this is
                    172: fast.  However, if the `RCS' or `SCCS' subdirectory is actually a
                    173: symbolic link, then VC does not trust the file permissions to reflect
                    174: this status.
                    175: 
                    176:    You can specify the criterion for whether to trust the file
                    177: permissions by setting the variable `vc-mistrust-permissions'.  Its
                    178: value may be `t' (always mistrust the file permissions and check the
                    179: master file), `nil' (always trust the file permissions), or a function
                    180: of one argument which makes the decision.  The argument is the directory
                    181: name of the `RCS' or `SCCS' subdirectory.  A non-`nil' value from the
                    182: function says to mistrust the file permissions.
                    183: 
                    184:    If you find that the file permissions of work files are changed
                    185: erroneously, then you can set `vc-mistrust-permissions' to `t' so that
                    186: VC always checks the master file.
                    187: 
                    188: 
                    189: File: emacs,  Node: Log Entries,  Next: Change Logs and VC,  Prev: Snapshots,  Up: Version Control
                    190: 
                    191: Log Entries
                    192: -----------
                    193: 
                    194:    When you're editing an initial or change comment for inclusion in a
                    195: master file, finish your entry by typing `C-c C-c'.
                    196: 
                    197: `C-c C-c'
                    198:      Finish the comment edit normally (`vc-finish-logentry'). This
                    199:      finishes check-in.
                    200: 
                    201:    To abort check-in, just don't type `C-c C-c' in that buffer.  You
                    202: can switch buffers and do other editing.  As long as you don't try to
                    203: check in another file, the comment you were editing remains in its
                    204: buffer, and you can go back to that buffer at any time to complete the
                    205: check-in.
                    206: 
                    207:    If you change several source files for the same reason, it is often
                    208: convenient to specify the same log entry for many of the files.  To do
                    209: this, use the history of previous log entries.  The commands `M-n',
                    210: `M-p', `M-s' and `M-r' for doing this work just like the minibuffer
                    211: history commands (except that they don't use the minibuffer).
                    212: 
                    213:    The history of previous log entries is actually stored in previous
                    214: pages of the log entry editing buffer; they are normally hidden by
                    215: narrowing.
                    216: 
                    217:    Each time you check in a file, the log entry buffer is put into VC
                    218: Log mode, which involves running two hook variables: `text-mode-hook'
                    219: and `vc-log-mode-hook'.
                    220: 
                    221: 
                    222: File: emacs,  Node: Change Logs and VC,  Next: Version Headers,  Prev: Log Entries,  Up: Version Control
                    223: 
                    224: Change Logs and VC
                    225: ------------------
                    226: 
                    227:    Emacs users often record brief summaries of program changes in a file
                    228: called `ChangeLog', which is kept in the same directory as the source
                    229: files, and is usually meant to be distributed along with the source
                    230: files.  You can maintain `ChangeLog' from the version control logs with
                    231: the following command.
                    232: 
                    233: `C-x v a'
                    234:      Visit the current directory's change log file and create new
                    235:      entries for versions checked in since the most recent entry in the
                    236:      change log file (`vc-update-change-log').
                    237: 
                    238:      This command works with RCS only; it does not work with SCCS.
                    239: 
                    240:    For example, suppose the first line of `ChangeLog' is dated 10 April
                    241: 1992, and suppose the only check-in since then was by Nathaniel
                    242: Bowditch to `rcs2log' on 8 May 1992 with log text `Ignore log messages
                    243: that start with `#'.'.  Then `C-x v a' visits `ChangeLog' and inserts
                    244: text like this:
                    245: 
                    246:      Fri May  8 21:45:00 1992  Nathaniel Bowditch  ([email protected])
                    247:      
                    248:              * rcs2log: Ignore log messages that start with `#'.
                    249: 
                    250: You can then further edit as you wish.
                    251: 
                    252:    A log entry whose text begins with `#' is not copied to `ChangeLog'.
                    253:  For example, if you merely fix some misspellings in comments, you can
                    254: log the change with an entry beginning with `#' to avoid putting such
                    255: trivia into `ChangeLog'.
                    256: 
                    257:    When `C-x v a' adds several change log entries at once, it groups
                    258: related log entries together if they all are checked in by the same
                    259: author at nearly the same time.  If the log entries for several such
                    260: files all have the same text, it coalesces them into a single entry.
                    261: For example, suppose the most recent check-ins have the following log
                    262: entries:
                    263: 
                    264: For `vc.texinfo':
                    265:      Fix expansion typos.
                    266: For `vc.el':
                    267:      Don't call expand-file-name.
                    268: For `vc-hooks.el':
                    269:      Don't call expand-file-name.
                    270: 
                    271:    They appear like this in `ChangeLog':
                    272: 
                    273:      Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  ([email protected])
                    274:      
                    275:              * vc.texinfo: Fix expansion typos.
                    276:      
                    277:              * vc.el, vc-hooks.el: Don't call expand-file-name.
                    278: 
                    279:    Normally, `C-x v a' separates log entries by a blank line, but you
                    280: can mark several related log entries to be clumped together (without an
                    281: intervening blank line) by starting the text of each related log entry
                    282: with a label of the form `{CLUMPNAME} '.  The label itself is not
                    283: copied to `ChangeLog'.  For example, suppose the log entries are:
                    284: 
                    285: For `vc.texinfo':
                    286:      {expand} Fix expansion typos.
                    287: For `vc.el':
                    288:      {expand} Don't call expand-file-name.
                    289: For `vc-hooks.el':
                    290:      {expand} Don't call expand-file-name.
                    291: 
                    292:    Then the text in `ChangeLog' looks like this:
                    293: 
                    294:      Wed Apr  1 08:57:59 1992  Nathaniel Bowditch  ([email protected])
                    295:      
                    296:              * vc.texinfo: Fix expansion typos.
                    297:              * vc.el, vc-hooks.el: Don't call expand-file-name.
                    298: 
                    299:    Normally, the log entry for file `foo' is displayed as `* foo: TEXT
                    300: OF LOG ENTRY'.  But by convention, the `:' after `foo' is omitted if
                    301: the text of the log entry starts with `(FUNCTIONNAME): '.  For example,
                    302: if the log entry for `vc.el' is `(vc-do-command): Check call-process
                    303: status.', then the text in `ChangeLog' looks like this:
                    304: 
                    305:      Wed May  6 10:53:00 1992  Nathaniel Bowditch  ([email protected])
                    306:      
                    307:              * vc.el (vc-do-command): Check call-process status.
                    308: 
                    309: 
                    310: File: emacs,  Node: Comparing Versions,  Next: VC Status,  Prev: Variables for Check-in/out,  Up: Version Control
                    311: 
                    312: Comparing Versions
                    313: ------------------
                    314: 
                    315:    To compare two versions of a file, use `C-x v =' (`vc-diff').
                    316: 
                    317:    Plain `C-x v =' compares the current buffer contents (saving them in
                    318: the file if necessary) with the last checked-in version of the file.
                    319: With a prefix argument, `C-x v =' reads a filename and two version
                    320: numbers, and compares those versions of the file you specify.
                    321: 
                    322:    If you supply a directory name instead of the name of a work file,
                    323: this command compares the two specified versions of all registered files
                    324: in that directory and its subdirectories.  You can also specify a
                    325: snapshot name (*note Snapshots::.) instead of one or both version
                    326: numbers.
                    327: 
                    328:    You can specify a checked-in version by its number; you can specify
                    329: the most recent checked-in version with `-'; and you can specify the
                    330: current buffer contents with `+'.  Thus, you can compare two checked-in
                    331: versions, or compare a checked-in version with the text you are editing.
                    332: 
                    333:    This command works by running the `diff' utility, getting the
                    334: options from the variable `diff-switches'.  It displays the output in a
                    335: special buffer in another window.
                    336: 
                    337: 
                    338: File: emacs,  Node: VC Status,  Next: Renaming and VC,  Prev: Comparing Versions,  Up: Version Control
                    339: 
                    340: VC Status Commands
                    341: ------------------
                    342: 
                    343:    To get the detailed version control status of one file, type `C-x v
                    344: l' (`vc-print-log').  It displays the history of changes to the current
                    345: file, including the text of the log entries.  The output appears in a
                    346: separate window.
                    347: 
                    348:    When you are working on a large program, it's often useful to find
                    349: all the files that are currently locked, or all the files maintained in
                    350: version control at all.  You can do so using these commands, both of
                    351: which operate on the branch of the file system starting at the current
                    352: directory.
                    353: 
                    354:    You can use `C-x v d' (`vc-directory') to show all the locked files
                    355: in or beneath the current directory.  This includes all files that are
                    356: locked by any user.
                    357: 
                    358:    With a prefix argument, `C-x v d' shows all the version control
                    359: activity in the current directory--it lists all files in or beneath the
                    360: current directory that are maintained with version control.
                    361: 
                    362: 
                    363: File: emacs,  Node: Renaming and VC,  Next: Snapshots,  Prev: VC Status,  Up: Version Control
                    364: 
                    365: Renaming VC Work Files and Master Files
                    366: ---------------------------------------
                    367: 
                    368:    When you rename a registered file, you must also rename its master
                    369: file correspondingly to get proper results.  Use `vc-rename-file' to
                    370: rename the source file as you specify, and rename its master file
                    371: accordingly.  It also updates any snapshots (*note Snapshots::.) that
                    372: mention the file, so that they use the new name; despite this, the
                    373: snapshot thus modified may not completely work (*note Snapshot
                    374: Caveats::.).
                    375: 
                    376:    You cannot use `vc-rename-file' on a file that is locked by someone
                    377: else.
                    378: 
                    379:    `vc-rename-file' is not bound to a key because it's not likely to be
                    380: used frequently.
                    381: 
                    382: 
                    383: File: emacs,  Node: Snapshots,  Next: Log Entries,  Prev: Renaming and VC,  Up: Version Control
                    384: 
                    385: Snapshots
                    386: ---------
                    387: 
                    388:    A "snapshot" is a named set of file versions (one for each
                    389: registered file) that you can treat as a unit.  One important kind of
                    390: snapshot is a "release", a (theoretically) stable version of the system
                    391: that is ready for distribution to users.
                    392: 
                    393: * Menu:
                    394: 
                    395: * Making Snapshots::           The snapshot facilities.
                    396: * Snapshot Caveats::           Things to be careful of, when using snapshots.
                    397: 
                    398: 
                    399: File: emacs,  Node: Making Snapshots,  Next: Snapshot Caveats,  Up: Snapshots
                    400: 
                    401: Making and Using Snapshots
                    402: ..........................
                    403: 
                    404:    There are two basic commands for snapshots; one makes a snapshot
                    405: with a given name, the other retrieves a named snapshot.
                    406: 
                    407: `C-x v s NAME RET'
                    408:      Define the last saved versions of every registered file in or
                    409:      under the current directory as a snapshot named NAME
                    410:      (`vc-create-snapshot').
                    411: 
                    412: `C-x v r NAME RET'
                    413:      Check out all registered files at or below the current directory
                    414:      level using whatever versions correspond to the snapshot NAME
                    415:      (`vc-retrieve-snapshot').
                    416: 
                    417:      This function reports an error if any files are locked at or below
                    418:      the current directory, without changing anything; this is to avoid
                    419:      overwriting work in progress.
                    420: 
                    421:    You shouldn't need to use `vc-retrieve-snapshot' very often; you can
                    422: get difference reports between two snapshots without retrieving either
                    423: one, using `C-x =' (*note Comparing Versions::.).  Thus, retrieving a
                    424: snapshot is only necessary if you need to study or compile portions of
                    425: the snapshot.
                    426: 
                    427:    A snapshot uses a very small amount of resources--just enough to
                    428: record the list of file names and which version belongs to the
                    429: snapshot.  Thus, you need not hesitate to create snapshots whenever
                    430: they are useful.
                    431: 
                    432:    You can give a snapshot name as an argument to `C-x v =' (*note
                    433: Comparing Versions::.).  Thus, you can use it to compare a snapshot
                    434: against the current files, or two snapshots against each other, or a
                    435: snapshot against a named version.
                    436: 
                    437: 
                    438: File: emacs,  Node: Snapshot Caveats,  Prev: Making Snapshots,  Up: Snapshots
                    439: 
                    440: Snapshot Caveats
                    441: ................
                    442: 
                    443:    VC's snapshot facilities are modeled on RCS's named-configuration
                    444: support.  They use RCS's native facilities for this, so under VC
                    445: snapshots made using RCS are visible even when you bypass VC.
                    446: 
                    447:    For SCCS, VC implements snapshots itself.  The files it uses contain
                    448: name/file/version-number triples.  These snapshots are visible only
                    449: through VC.
                    450: 
                    451:    File renaming and deletion can create some difficulties with
                    452: snapshots. This is not a VC-specific problem, but a general design
                    453: issue in version control systems that no one has solved very well yet.
                    454: 
                    455:    If you rename a registered file, you need to rename its master along
                    456: with it (the function `vc-rename-file' does this automatically). If you
                    457: are using SCCS, you must also update the records of the snapshot, to
                    458: mention the file by its new name (`vc-rename-file' does this, too). 
                    459: This makes the snapshot remain valid for retrieval, but it does not
                    460: solve all problems.
                    461: 
                    462:    For example, some of the files in the program probably refer to
                    463: others by name.  At the very least, the makefile probably mentions the
                    464: file that you renamed.  If you retrieve an old snapshot, the renamed
                    465: file is retrieved under its new name, which is not the name that the
                    466: makefile expects.  So the program won't really work.
                    467: 
                    468:    If you use snapshots, don't rename either work files or master files
                    469: except by means of `vc-rename-file'.  It knows how to update snapshots
                    470: so that you can still retrieve them.  An old snapshot that refers to a
                    471: master file that no longer exists under the recorded name is invalid;
                    472: VC can no longer retrieve it.  It would be beyond the scope of this
                    473: manual to explain enough about RCS and SCCS to teach the reader how to
                    474: update the snapshots by hand.
                    475: 
                    476: 
                    477: File: emacs,  Node: Version Headers,  Prev: Change Logs and VC,  Up: Version Control
                    478: 
                    479: Inserting Version Control Headers
                    480: ---------------------------------
                    481: 
                    482:    Sometimes it is convenient to put version identification strings
                    483: directly into working files.  Certain special strings called "version
                    484: headers" are replaced in each successive version by the number of that
                    485: version.
                    486: 
                    487:    You can use the `C-x v h' command (`vc-insert-headers') to insert a
                    488: suitable header string.
                    489: 
                    490: `C-x v h'
                    491:      Insert headers in a file for use with your version-control system.
                    492: 
                    493:    The default header string is `$ld$' for RCS and `%W%' for SCCS.  You
                    494: can specify other headers to insert by setting the variable
                    495: `vc-header-string'.  Its value (if non-`nil') should be the string to
                    496: be inserted.  You can also specify a list of strings; then each string
                    497: in the list is inserted as a separate header on a line of its own.  (It
                    498: is often important to use "superfluous" backslashes when writing a Lisp
                    499: string constant for this use, to prevent the string in the constant
                    500: from being interpreted as a header itself if the Emacs Lisp file
                    501: containing it is maintained with version control.)
                    502: 
                    503:    Each header is inserted surrounded by tabs, inside comment
                    504: delimiters, on a new line at the start of the buffer.  Normally the
                    505: ordinary comment start and comment end strings of the current mode are
                    506: used, but for certain modes, there are special comment delimiters for
                    507: this purpose; the variable `vc-comment-alist' specifies them.  Each
                    508: element of this list has the form `(MODE STARTER ENDER)'.
                    509: 
                    510:    `vc-static-header-alist' is consulted to add further strings based
                    511: on the name of the buffer.  Its value should be a list of dotted pairs;
                    512: the CAR of each pair is a regular expression that should match the
                    513: buffer name, and the CDR is the format to use on each header.  A string
                    514: is inserted for each file name pattern that matches the buffer name,
                    515: and for each header taken from `vc-header-string'.  The default value
                    516: for `vc-static-header-alist' is:
                    517: 
                    518:      (("\\.c$" .
                    519:        "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
                    520:      #endif /* lint */\n"))
                    521: 
                    522: which specifies insertion of a string of this form:
                    523: 
                    524: 
                    525:      #ifndef lint
                    526:      static char vcid[] = "HEADER-STRING";
                    527:      #endif /* lint */
                    528: 
                    529: 
                    530: File: emacs,  Node: Emerge,  Next: Debuggers,  Prev: Version Control,  Up: Version 19
                    531: 
                    532: Emerge
                    533: ======
                    534: 
                    535:    It's not unusual for programmers to get their signals crossed and
                    536: modify the same program in two different directions.  To recover from
                    537: this confusion, you need to merge the two versions.  Emerge makes this
                    538: easier.
                    539: 
                    540: * Menu:
                    541: 
                    542: * Overview of Emerge::
                    543: * Submodes of Emerge::
                    544: * State of Difference::
                    545: * Merge Commands::
                    546: * Exiting Emerge::
                    547: * Combining in Emerge::
                    548: * Fine Points of Emerge::
                    549: 
                    550: 
                    551: File: emacs,  Node: Overview of Emerge,  Next: Submodes of Emerge,  Up: Emerge
                    552: 
                    553: Overview of Emerge
                    554: ------------------
                    555: 
                    556:    To start Emerge, run one of these four commands:
                    557: 
                    558: `M-x emerge-files'
                    559:      Merge two specified files.
                    560: 
                    561: `M-x emerge-files-with-ancestor'
                    562:      Merge two specified files, with reference to a common ancestor.
                    563: 
                    564: `M-x emerge-buffers'
                    565:      Merge two buffers (the currently accessible portions).
                    566: 
                    567: `M-x emerge-buffers-with-ancestor'
                    568:      Merge two buffers (the currently accessible portions) with
                    569:      reference to a common ancestor in another buffer.
                    570: 
                    571:    The Emerge commands compare two texts, and display the results in
                    572: three buffers: one for each input text (the "A buffer" and the "B
                    573: buffer"), and one (the "merge buffer") where merging takes place. The
                    574: merge buffer does not show just the differences.  Rather, it shows you
                    575: the full text, but wherever the input texts differ, you can choose
                    576: which one of them to include in the merge buffer.
                    577: 
                    578:    If a common ancestor version is available, from which the two texts
                    579: to be merged were both derived, Emerge can use it to guess which
                    580: alternative is right.  Wherever one current version agrees with the
                    581: ancestor, Emerge presumes that the other current version is a deliberate
                    582: change which should be kept in the merged version.  Use the
                    583: "with-ancestor" commands if you want to specify a common ancestor text.
                    584:  These commands read three file or buffer names--variant A, variant B,
                    585: and the common ancestor.
                    586: 
                    587:    After the comparison is done and the buffers are prepared, the actual
                    588: merging starts.  You control the merging interactively by editing the
                    589: merge buffer.  The merge buffer shows you a full merged text, not just
                    590: differences.  For each point where the input texts differ, you can
                    591: choose which one of them to include in the merge buffer.
                    592: 
                    593:    The merge buffer has a special major mode, Emerge mode, with commands
                    594: for making these choices.  But you can also edit the buffer with
                    595: ordinary Emacs commands.
                    596: 
                    597:    At any given time, the attention of Emerge is focused on one
                    598: particular difference, called the "selected" difference.  This
                    599: difference is marked off in the three buffers by
                    600: 
                    601:      vvvvvvvvvvvvvvvvvvvv
                    602: 
                    603: above and
                    604: 
                    605:      ^^^^^^^^^^^^^^^^^^^^
                    606: 
                    607: below.  Emerge numbers all the differences sequentially and the mode
                    608: line always shows the number of the selected difference.
                    609: 
                    610:    Normally, the merge buffer starts out with the A version of the text.
                    611: But when the A version of a part of the buffer agrees with the common
                    612: ancestor, then the B version is preferred for that part.
                    613: 
                    614:    Normally, Emerge stores the merged output in place of the first input
                    615: text (the A file or buffer).  If you give a prefix argument to
                    616: `emerge-files' or `emerge-files-with-ancestor', it reads the name of
                    617: the output file using the minibuffer.  (This is the last file name
                    618: those commands read.)
                    619: 
                    620:    If you abort Emerge with `C-u q', the output is not saved.
                    621: 
                    622: 
                    623: File: emacs,  Node: Submodes of Emerge,  Next: State of Difference,  Prev: Overview of Emerge,  Up: Emerge
                    624: 
                    625: Submodes of Emerge
                    626: ------------------
                    627: 
                    628:    You can choose between two modes for giving merge commands: Fast mode
                    629: and Edit mode.  In Fast mode, basic Emerge commands are single
                    630: characters, but ordinary Emacs commands are disabled.  This is
                    631: convenient if you use only Emerge commands.
                    632: 
                    633:    In Edit mode, all Emerge commands start with the prefix character
                    634: `C-c', and the normal Emacs commands are also available.  This allows
                    635: editing the merge buffer, but slows down Emerge operations.
                    636: 
                    637:    Use `e' to switch to Edit mode, and `f' to switch to Fast mode. The
                    638: mode line indicates Edit and Fast modes with `E' and `F'.
                    639: 
                    640:    Emerge has two additional submodes that affect how particular merge
                    641: commands work: Auto Advance mode and Skip Prefers mode.
                    642: 
                    643:    If Auto Advance mode is in effect, the `a' and `b' commands advance
                    644: to the next difference.  This lets you go through the merge faster
                    645: doing ordinary things.  The mode line indicates Auto Advance mode with
                    646: `A'.
                    647: 
                    648:    If Skip Prefers mode is in effect, the `n' and `p' commands skip
                    649: over differences in states prefer-A and prefer-B.  Thus you will only
                    650: see differences for which neither version is presumed "correct".  The
                    651: mode line indicates Skip Prefers mode with `S'.
                    652: 
                    653:    Use the command `emerge-auto-advance-mode' to set or clear Auto
                    654: Advance mode.  Use `emerge-skip-prefers-mode' to set or clear Skip
                    655: Prefers mode.  A positive argument turns the mode on, a nonpositive
                    656: argument turns it off, and no argument toggles it.
                    657: 
                    658: 
                    659: File: emacs,  Node: State of Difference,  Next: Merge Commands,  Prev: Submodes of Emerge,  Up: Emerge
                    660: 
                    661: State of a Difference
                    662: ---------------------
                    663: 
                    664:    In the merge buffer, a difference is marked `vvvvvvvvvvvvvvvvvvvv'
                    665: above and `^^^^^^^^^^^^^^^^^^^^' below.  Such a difference can have one
                    666: of seven states:
                    667: 
                    668: A
                    669:      The difference is showing the A version.  The `a' command always
                    670:      produces this state; the mode line indicates it with `A'.
                    671: 
                    672: B
                    673:      The difference is showing the B version.  The `b' command always
                    674:      produces this state; the mode line indicates it with `B'.
                    675: 
                    676: default-A
                    677: default-B
                    678:      The difference is showing the A or the B state by default, because
                    679:      you haven't made a choice.  All differences start in the default-A
                    680:      state (and thus the merge buffer is a copy of the A buffer),
                    681:      except those for which one alternative is "preferred" (see below).
                    682: 
                    683:      When you select a difference, its state changes from default-A or
                    684:      default-B to plain A or B.  Thus, the selected difference never has
                    685:      state default-A or default-B, and these states are never displayed
                    686:      in the mode line.
                    687: 
                    688:      The command `d a' chooses default-A as the default state, and `d
                    689:      b' chooses default-B.  This chosen default applies to all
                    690:      differences which you haven't selected and for which no
                    691:      alternative is preferred. If you are moving through the merge
                    692:      sequentially, the differences you haven't selected are those
                    693:      following the selected one.  Thus, while moving sequentially, you
                    694:      can effectively make the A version the default for some sections
                    695:      of the merge buffer and the B version the default for others by
                    696:      using `d a' and `d b' at the end of each section.
                    697: 
                    698: prefer-A
                    699: prefer-B
                    700:      The difference is showing the A or B state because it is
                    701:      "preferred".  This means that you haven't made an explicit choice,
                    702:      but one alternative seems likely to be right because the other
                    703:      alternative agrees with the common ancestor.  Thus, where the A
                    704:      buffer agrees with the common ancestor, the B version is
                    705:      preferred, because chances are it is the one that was actually
                    706:      changed.
                    707: 
                    708:      These two states are displayed in the mode line as `A*' and `B*'.
                    709: 
                    710: combined
                    711:      The difference is showing a combination of the A and B states, as a
                    712:      result of the `x c' or `x C' commands.
                    713: 
                    714:      Once a difference is in this state, the `a' and `b' commands don't
                    715:      do anything to it unless you give them a prefix argument.
                    716: 
                    717:      The mode line displays this state as `comb'.
                    718: 
                    719: 
                    720: File: emacs,  Node: Merge Commands,  Next: Exiting Emerge,  Prev: State of Difference,  Up: Emerge
                    721: 
                    722: Merge Commands
                    723: --------------
                    724: 
                    725:    Here are the Merge commands for Fast mode; in Edit mode, precede
                    726: these with `C-c' and turn all the letters into control characters.
                    727: 
                    728: `p'
                    729:      Select the previous difference.
                    730: 
                    731: `n'
                    732:      Select the next difference.
                    733: 
                    734: `a'
                    735:      Choose the A version of this difference.
                    736: 
                    737: `b'
                    738:      Choose the B version of this difference.
                    739: 
                    740: `j'
                    741:      Select a particular difference; specify the sequence number of that
                    742:      difference as a prefix argument.
                    743: 
                    744: `M-x emerge-select-difference'
                    745:      Select the run of differences containing the current location. 
                    746:      You can use this command in the merge buffer or in the A or B
                    747:      buffer.
                    748: 
                    749: `q'
                    750:      Quit--finish the merge.  With an argument, abort the merge.
                    751: 
                    752: `f'
                    753:      Go into fast mode.
                    754: 
                    755: `e'
                    756:      Go into edit mode.
                    757: 
                    758: `l'
                    759:      Recenter (like `C-l') all three windows.
                    760: 
                    761: `-'
                    762:      Specify part of a prefix numeric argument.
                    763: 
                    764: `DIGIT'
                    765:      Also specify part of a prefix numeric argument.
                    766: 
                    767: `d a'
                    768:      Choose the A version as the default from here down in the merge
                    769:      buffer.
                    770: 
                    771: `d b'
                    772:      Choose the B version as the default from here down in the merge
                    773:      buffer.
                    774: 
                    775: `c a'
                    776:      Copy the A version of this difference into the kill ring.
                    777: 
                    778: `c b'
                    779:      Copy the B version of this difference into the kill ring.
                    780: 
                    781: `i a'
                    782:      Insert the A version of this difference at the point.
                    783: 
                    784: `i b'
                    785:      Insert the B version of this difference at the point.
                    786: 
                    787: `m'
                    788:      Put the point and mark around the difference region.
                    789: 
                    790: `^'
                    791:      Scroll all three windows down (like `M-v').
                    792: 
                    793: `v'
                    794:      Scroll all three windows up (like `C-v').
                    795: 
                    796: `<'
                    797:      Scroll all three windows left (like `C-x <').
                    798: 
                    799: `>'
                    800:      Scroll all three windows right (like `C-x >').
                    801: 
                    802: `|'
                    803:      Reset horizontal scroll on all three windows.
                    804: 
                    805: `x 1'
                    806:      Shrink the merge window to one line.  (Use `C-u l' to restore it
                    807:      to full size.)
                    808: 
                    809: `x c'
                    810:      Combine the two versions of this difference.
                    811: 
                    812: `x f'
                    813:      Show the files/buffers Emerge is operating on in Help window. (Use
                    814:      `C-u l' to restore windows.)
                    815: 
                    816: `x j'
                    817:      Join this difference with the following one. (`C-u x j' joins this
                    818:      difference with the previous one.)
                    819: 
                    820: `x s'
                    821:      Split this difference into two differences.  Before you use this
                    822:      command, position point in each of the three buffers to the place
                    823:      where you want to split the difference.
                    824: 
                    825: `x t'
                    826:      Trim identical lines off top and bottom of the difference. Such
                    827:      lines occur when the A and B versions are identical but differ
                    828:      from the ancestor version.
                    829: 
                    830: 
                    831: File: emacs,  Node: Exiting Emerge,  Next: Combining in Emerge,  Prev: Merge Commands,  Up: Emerge
                    832: 
                    833: Exiting Emerge
                    834: --------------
                    835: 
                    836:    The `q' (`emerge-quit') command finishes the merge, storing the
                    837: results into the output file.  It restores the A and B buffers to their
                    838: proper contents, or kills them if they were created by Emerge.  It also
                    839: disables the Emerge commands in the merge buffer, since executing them
                    840: later could damage the contents of the various buffers.
                    841: 
                    842:    `C-u q' aborts the merge.  Aborting means that Emerge does not write
                    843: the output file.
                    844: 
                    845:    If Emerge was called from another Lisp program, then its return value
                    846: is `t' or `nil' to indicate success or failure.
                    847: 
                    848: 
                    849: File: emacs,  Node: Combining in Emerge,  Next: Fine Points of Emerge,  Prev: Exiting Emerge,  Up: Emerge
                    850: 
                    851: Combining the Two Versions
                    852: --------------------------
                    853: 
                    854:    Sometimes you want to keep *both* alternatives for a particular
                    855: locus.  To do this, use `x c', which edits the merge buffer like this:
                    856: 
                    857:      #ifdef NEW
                    858:      VERSION FROM A FILE
                    859:      #else /* NEW */
                    860:      VERSION FROM B FILE
                    861:      #endif /* NEW */
                    862: 
                    863:    While this example shows C preprocessor conditionals delimiting the
                    864: two alternative versions, you can specify the strings you want by
                    865: setting the variable `emerge-combine-template' to a list of three
                    866: strings. The default setting, which produces the results shown above,
                    867: looks like this:
                    868: 
                    869:      ("#ifdef NEW\n"
                    870:       "#else /* NEW */\n"
                    871:       "#endif /* NEW */\n")
                    872: 
                    873: 
                    874: File: emacs,  Node: Fine Points of Emerge,  Prev: Combining in Emerge,  Up: Emerge
                    875: 
                    876: Fine Points of Emerge
                    877: ---------------------
                    878: 
                    879:    You can have any number of merges going at once--just don't use any
                    880: one buffer as input to more than one merge at once, since that will
                    881: cause the read-only/modified/auto-save status save-and-restore to screw
                    882: up.
                    883: 
                    884:    Starting Emerge can take a long time because it needs to compare the
                    885: files.  Emacs can't do anything else until `diff' finishes.  Perhaps in
                    886: the future someone will change Emerge to do the comparison in the
                    887: background when the input files are large--then you could keep on doing
                    888: other things with Emacs until Emerge gets ready to accept commands.
                    889: 
                    890:    After the merge has been set up, Emerge runs the hooks in
                    891: `emerge-startup-hook'.
                    892: 
                    893:    During the merge, you musn't try to edit the A and B buffers
                    894: yourself. Emerge modifies them temporarily, but ultimately puts them
                    895: back the way they were.
                    896: 
                    897: 
                    898: File: emacs,  Node: Debuggers,  Next: Other New Modes,  Prev: Emerge,  Up: Version 19
                    899: 
                    900: Running Debuggers Under Emacs
                    901: =============================
                    902: 
                    903:    The GUD (Grand Unified Debugger) library provides an interface to
                    904: various symbolic debuggers from within Emacs.  We recommend the
                    905: debugger GDB, which is free software, but you can also run DBX or SDB
                    906: if you have them.
                    907: 
                    908: * Menu:
                    909: 
                    910: * Starting GUD::       How to start a debugger subprocess.
                    911: * Debugger Operation:: Connection between the debugger and source buffers.
                    912: * Commands of GUD::    Keybindings for common commands.
                    913: * GUD Customization::  Defining your own commands for GUD.
                    914: 
                    915: 
                    916: File: emacs,  Node: Starting GUD,  Next: Debugger Operation,  Up: Debuggers
                    917: 
                    918: Starting GUD
                    919: ------------
                    920: 
                    921:    There are three commands for starting a debugger.  Each corresponds
                    922: to a particular debugger program.
                    923: 
                    924: `M-x gdb RET FILE RET'
                    925: `M-x dbx RET FILE RET'
                    926:      Run GDB or DBX in a subprocess of Emacs.  Both of these commands
                    927:      select the buffer used for input and output to the debugger.
                    928: 
                    929: `M-x sdb RET FILE RET'
                    930:      Run SDB in a subprocess of Emacs.  SDB's messages do not mention
                    931:      file names, so the Emacs interface to SDB depends on having a tags
                    932:      table (*note Tags::.) to find which file each function is in.  If
                    933:      you have not visited a tags table or the tags table doesn't list
                    934:      one of the functions, you get a message saying `The sdb support
                    935:      requires a valid tags table to work'.  If this happens, generate a
                    936:      valid tags table in the working directory and try again.
                    937: 
                    938:    You can only run one debugger process at a time.
                    939: 
                    940: 
                    941: File: emacs,  Node: Debugger Operation,  Next: Commands of GUD,  Prev: Starting GUD,  Up: Debuggers
                    942: 
                    943: Debugger Operation
                    944: ------------------
                    945: 
                    946:    When you run a debugger with GUD, the debugger displays source files
                    947: via Emacs--Emacs finds the source file and moves point to the line
                    948: where the program is executing.  An arrow (`=>') indicates the current
                    949: execution line, and it stays put even if you move the cursor.
                    950: 
                    951:    You can start editing the file at any time.  The arrow is not part of
                    952: the file's text; it appears only on the screen.  If you do modify a
                    953: source file, keep in mind that inserting or deleting lines will throw
                    954: off the arrow's positioning; GUD has no way of figuring out which line
                    955: corresponded before your changes to the line number in a debugger
                    956: message.  Also, you'll typically have to recompile and restart the
                    957: program for your changes to be reflected in the debugger's tables.
                    958: 
                    959:    If you wish, you can control your debugger process entirely through
                    960: the debugger buffer, which uses a variant of Shell mode.  All the usual
                    961: commands for your debugger are available, and you can use the Shell mode
                    962: history commands to repeat them.
                    963: 
                    964: 
                    965: File: emacs,  Node: Commands of GUD,  Next: GUD Customization,  Prev: Debugger Operation,  Up: Debuggers
                    966: 
                    967: Commands of GUD
                    968: ---------------
                    969: 
                    970:    GUD provides a command available in all buffers for setting
                    971: breakpoints.  This command is defined globally because you need to use
                    972: it in the source files' buffers.
                    973: 
                    974: `C-x SPC'
                    975:      Set a breakpoint on the line that point is on.
                    976: 
                    977:    The debugger buffer has a number of keybindings for invoking common
                    978: debugging commands quickly:
                    979: 
                    980: `C-c C-l'
                    981:      Display in another window the last line referred to in the GUD
                    982:      buffer (that is, the line indicated in the last location message).
                    983:      This runs the command `gud-refresh'.
                    984: 
                    985: `C-c C-s'
                    986:      Execute a single line of code (`gud-step').  If the code contains
                    987:      a function call, execution stops after entering the called
                    988:      function.
                    989: 
                    990: `C-c C-n'
                    991:      Execute a single line of code, stepping across entire function
                    992:      calls at full speed (`gud-next').
                    993: 
                    994: `C-c C-i'
                    995:      Execute a single machine instruction (`gud-stepi').
                    996: 
                    997: `C-c C-c'
                    998:      Continue execution until the next breakpoint, or other event that
                    999:      would normally stop the program (`gud-cont').
                   1000: 
                   1001:    The above commands are common to all supported debuggers.  If you are
                   1002: using GDB or (some versions of) DBX, these additional commands are
                   1003: available:
                   1004: 
                   1005: `C-c <'
                   1006:      Select the next enclosing stack frame (`gud-up').  This is
                   1007:      equivalent to the `up' command.
                   1008: 
                   1009: `C-c >'
                   1010:      Select the next inner stack frame (`gud-down').  This is
                   1011:      equivalent to the `down' command.
                   1012: 
                   1013:    If you are using GDB, two additional keybindings are available:
                   1014: 
                   1015: `C-c C-f'
                   1016:      Run the program until the selected stack frame returns (or until it
                   1017:      stops for some other reason).
                   1018: 
                   1019: `TAB'
                   1020:      Complete the symbol in the buffer before point, using the set of
                   1021:      all symbols known to GDB.
                   1022: 
                   1023:    These commands interpret a prefix argument as a repeat count, when
                   1024: that makes sense.
                   1025: 
                   1026:    After each command that changes the program counter, GUD displays the
                   1027: new current source line, and updates the location of the arrow.
                   1028: 
                   1029: 
                   1030: File: emacs,  Node: GUD Customization,  Prev: Commands of GUD,  Up: Debuggers
                   1031: 
                   1032: GUD Customization
                   1033: -----------------
                   1034: 
                   1035:    On startup, GUD executes one of the following hooks:
                   1036: `gdb-mode-hook', if you are using GDB; `dbx-mode-hook', if you are
                   1037: using DBX; and `sdb-mode-hook', if you are using SDB.  You can use
                   1038: these hooks to define custom keybindings for the debugger interaction
                   1039: buffer.
                   1040: 
                   1041:    Here is a convenient way to define a command that sends a particular
                   1042: command string to the debugger, and set up a key binding for it in the
                   1043: debugger interaction buffer:
                   1044: 
                   1045:      (gud-def FUNCTION CMDSTRING BINDING DOCSTRING)
                   1046: 
                   1047:    This defines a command named FUNCTION which sends CMDSTRING to the
                   1048: debugger process, with documentation string DOCSTRING, and binds it to
                   1049: BINDING in the debugger buffer's mode.  (If BINDING is `nil', this
                   1050: defines the command but does not make a binding for it; you can make a
                   1051: binding explicitly, perhaps using one of the above hooks.)
                   1052: 
                   1053:    Commands defined with `gud-def' handle prefix arguments by passing
                   1054: them to the debugger, appended to end of CMDSTRING with a space in
                   1055: between.  (This use of prefix arguments works with GDB and DBX, but not
                   1056: with SDB.)
                   1057: 
                   1058:    You can also set up commands that you can send to the debugger while
                   1059: in another buffer, such as a source file.  Set the variable
                   1060: `gud-commands' to a list of strings containing debugger commands you
                   1061: might want to send.
                   1062: 
                   1063: `C-x &'
                   1064:      Send a custom command to the debugger process
                   1065:      (`send-gud-command').  Normally, send the CAR of the
                   1066:      `gud-commands' list; a prefix argument specifies which element of
                   1067:      that list to use (counting from 0).
                   1068: 
                   1069:      If the string contains `%s', `C-x &' substitutes a numeric value
                   1070:      found in the buffer at or near point.  It looks for decimal,
                   1071:      octal, or hexadecimal numbers, with `0x' allowed.  This lets you
                   1072:      define commands to chase pointers whose numeric values have been
                   1073:      displayed.
                   1074: 
                   1075: 
                   1076: File: emacs,  Node: Other New Modes,  Next: Key Sequence Changes,  Prev: Debuggers,  Up: Version 19
                   1077: 
                   1078: Other New Modes
                   1079: ===============
                   1080: 
                   1081:    There is now a Perl mode for editing Perl programs and an Icon mode
                   1082: for editing Icon programs.
                   1083: 
                   1084:    C++ mode is like C mode, except that it understands C++ comment
                   1085: syntax and certain other differences between C and C++.  It also has a
                   1086: command `fill-c++-comment' which fills a paragraph made of comment
                   1087: lines. The command `comment-region' is useful in C++ mode for commenting
                   1088: out several consecutive lines, or removing the commenting out of such
                   1089: lines.
                   1090: 
                   1091:    WordStar emulation is available--type `M-x wordstar-mode'. For more
                   1092: information, type `C-h f wordstar-mode RET'.
                   1093: 
                   1094:    The command `C-o' in Buffer Menu mode now displays the current
                   1095: line's buffer in another window but does not select it.  This is like
                   1096: the existing command `o' which selects the current line's buffer in
                   1097: another window.
                   1098: 
                   1099: * Menu:
                   1100: 
                   1101: * Asm Mode::           A major mode for editing assembler files.
                   1102: * Edebug Mode::                A new Lisp debugger.
                   1103: * Editing Binary Files::Hexl mode lets you edit a binary file as numbers.
                   1104: 
                   1105: 
                   1106: File: emacs,  Node: Asm Mode,  Next: Edebug Mode,  Up: Other New Modes
                   1107: 
                   1108: Asm Mode
                   1109: --------
                   1110: 
                   1111:    Asm mode is a new major mode for editing files of assembler code. It
                   1112: defines these commands:
                   1113: 
                   1114: `TAB'
                   1115:      `tab-to-tab-stop'.
                   1116: 
                   1117: `LFD'
                   1118:      Insert a newline and then indent using `tab-to-tab-stop'.
                   1119: 
                   1120: `:'
                   1121:      Insert a colon and then remove the indentation from before the
                   1122:      label preceding colon.  Then do `tab-to-tab-stop'.
                   1123: 
                   1124: `;'
                   1125:      Insert or align a comment.
                   1126: 
                   1127: 
                   1128: File: emacs,  Node: Edebug Mode,  Next: Editing Binary Files,  Prev: Asm Mode,  Up: Other New Modes
                   1129: 
                   1130: Edebug Mode
                   1131: -----------
                   1132: 
                   1133:    Edebug is a new source-level debugger for Emacs Lisp programs.
                   1134: 
                   1135:    To use Edebug, use the command `M-x edebug-defun' to "evaluate" a
                   1136: function definition in an Emacs Lisp file.  We put "evaluate" in
                   1137: quotation marks because it doesn't just evaluate the function, it also
                   1138: inserts additional information to support source-level debugging.
                   1139: 
                   1140:    You must also do this:
                   1141: 
                   1142:      (setq debugger 'edebug-debug)
                   1143: 
                   1144: to cause errors and single-stepping to use Edebug instead of the usual
                   1145: Emacs Lisp debugger.
                   1146: 
                   1147:    For more information, see `The Emacs Extensions Manual', which
                   1148: should be included in the Emacs 19 distribution.
                   1149: 
                   1150: 
                   1151: File: emacs,  Node: Editing Binary Files,  Prev: Edebug Mode,  Up: Other New Modes
                   1152: 
                   1153: Editing Binary Files
                   1154: --------------------
                   1155: 
                   1156:    There is a new major mode for editing binary files: Hexl mode.  To
                   1157: use it, use `M-x hexl-find-file' instead of `C-x C-f' to visit the
                   1158: file.  This command converts the file's contents to hexadecimal and lets
                   1159: you edit the translation.  When you save the file, it is converted
                   1160: automatically back to binary.
                   1161: 
                   1162:    You can also use `M-x hexl-mode' to translate an existing buffer
                   1163: into hex.  This is useful if you visit a file normally and discover it
                   1164: is a binary file.
                   1165: 
                   1166:    Hexl mode has a few other commands:
                   1167: 
                   1168: `C-M-d'
                   1169:      Insert a byte with a code typed in decimal.
                   1170: 
                   1171: `C-M-o'
                   1172:      Insert a byte with a code typed in octal.
                   1173: 
                   1174: `C-M-x'
                   1175:      Insert a byte with a code typed in hex.
                   1176: 
                   1177: `C-x ['
                   1178:      Move to the beginning of a 1k-byte "page".
                   1179: 
                   1180: `C-x ]'
                   1181:      Move to the end of a 1k-byte "page".
                   1182: 
                   1183: `M-g'
                   1184:      Move to an address specified in hex.
                   1185: 
                   1186: `M-j'
                   1187:      Move to an address specified in decimal.
                   1188: 
                   1189: `C-c C-c'
                   1190:      Leave Hexl mode, going back to the major mode this buffer had
                   1191:      before you invoked `hexl-mode'.
                   1192: 
                   1193: 
                   1194: File: emacs,  Node: Key Sequence Changes,  Next: Hook Changes,  Prev: Other New Modes,  Up: Version 19
                   1195: 
                   1196: Changes in Key Sequences
                   1197: ========================
                   1198: 
                   1199:    In Emacs 18, a key sequence was a sequence of characters, which
                   1200: represented keyboard input.
                   1201: 
                   1202:    In Emacs 19, you can still use a sequence of characters as a key
                   1203: sequence, but you aren't limited to characters.  You can also use Lisp
                   1204: symbols which represent terminal function keys or mouse buttons.  If the
                   1205: function key has a word as its label, then that word is also the name of
                   1206: the symbol which represents the function key.  Other function keys are
                   1207: assigned Lisp names as follows:
                   1208: 
                   1209: `kp-add', `kp-decimal', `kp-divide', ...
                   1210:      Keypad keys (to the right of the regular keyboard), with names or
                   1211:      punctuation
                   1212: 
                   1213: `kp-0', `kp-1', ...
                   1214:      Keypad keys with digits
                   1215: 
                   1216: `kp-f1', `kp-f2', `kp-f3', `kp-f4'
                   1217:      Keypad PF keys
                   1218: 
                   1219: `left', `up', `right', `down'
                   1220:      Cursor arrow keys
                   1221: 
                   1222:    A key sequence which contains non-characters must be a vector rather
                   1223: than a string.
                   1224: 
                   1225:    Thus, to bind function key `f1' to `rmail', write the following:
                   1226: 
                   1227:      (global-set-key [f1] 'rmail)
                   1228: 
                   1229: (To find the name of a key, type `C-h k' and then the key.)
                   1230: 
                   1231:    To bind the right-arrow key to the command `forward-char', you can
                   1232: use this expression:
                   1233: 
                   1234:      (global-set-key [right] 'forward-char)
                   1235: 
                   1236: using the Lisp syntax for a vector containing the symbol `right'.
                   1237: 
                   1238:    And this is how to make `C-x RIGHTARROW' move forward a page:
                   1239: 
                   1240:      (global-set-key [?\C-x right] 'forward-page)
                   1241: 
                   1242: where `?\C-x' is the Lisp syntax for an integer whose value is the code
                   1243: for the character `C-x'.
                   1244: 
                   1245:    You can use modifier keys such as CTRL, META and SHIFT with function
                   1246: keys.  To represent these modifiers, prepend the strings `C-', `M-' and
                   1247: `S-' to the symbol name.  Thus, here is how to make `M-RIGHTARROW' move
                   1248: forward a word:
                   1249: 
                   1250:      (global-set-key [M-right] 'forward-word)
                   1251: 
                   1252:    Emacs uses symbols to designate mouse buttons, too. The ordinary
                   1253: mouse events in Emacs are "click" events; these happen when you press a
                   1254: button and release it without moving the mouse. You can also get "drag"
                   1255: events, when you move the mouse while holding the button down.  Drag
                   1256: events happen when you finally let go of the button.
                   1257: 
                   1258:    The symbols for basic click events are `mouse-1' for the leftmost
                   1259: button, `mouse-2' for the next, and so on.  Here is how you can
                   1260: redefine the second mouse button to split the current window:
                   1261: 
                   1262:      (global-set-key [mouse-2] 'split-window-vertically)
                   1263: 
                   1264:    The symbols for drag events are similar, but have the prefix `drag-'
                   1265: before the word `mouse'.  For example, dragging the left button
                   1266: generates a `drag-mouse-1' event.
                   1267: 
                   1268:    You can also request events when the mouse button is pressed down.
                   1269: These events start with `down-' instead of `drag-'.  Such events are
                   1270: generated only if they have key bindings.  When you get a button-down
                   1271: event, a corresponding click or drag event will always follow.
                   1272: 
                   1273:    The symbols for mouse events also indicate the status of the modifier
                   1274: keys, with the usual prefixes `C-', `M-' and `S-'. These always follow
                   1275: `drag-' or `down-'.
                   1276: 
                   1277:    When mouse events occur in special parts of a frame or window, such
                   1278: as a mode line or a scroll bar, the event symbol shows nothing special.
                   1279:  The information about the special part is implicit in other data (the
                   1280: screen location of the event).  But `read-key-sequence' figures out this
                   1281: aspect of the event, and encodes it with make-believe prefix keys, all
                   1282: of which are symbols: `mode-line', `vertical-line',
                   1283: `horizontal-scrollbar' and `vertical-scrollbar'.  Thus, to define the
                   1284: command for clicking the left button in a mode line, you could use this
                   1285: key sequence:
                   1286: 
                   1287:      [mode-line mouse-1]
                   1288: 
                   1289:    You are not limited to defining individual function keys or mouse
                   1290: buttons; these can appear anywhere in a key sequence, just as characters
                   1291: can.  You can even mix together all three kinds of inputs in one key
                   1292: sequence--but mixing mouse buttons with keyboard inputs is probably not
                   1293: convenient for actual use.
                   1294: 
                   1295: 
                   1296: File: emacs,  Node: Hook Changes,  Prev: Key Sequence Changes,  Up: Version 19
                   1297: 
                   1298: Changes Regarding Hooks
                   1299: =======================
                   1300: 
                   1301:    A "hook variable" is a variable that exists so that you can store in
                   1302: it functions for Emacs to call on certain occasions.  (The functions
                   1303: that you put in hook variables are called "hook functions".)  Emacs 19
                   1304: has a new convention for naming hook variables that indicates more
                   1305: reliably how to use them.
                   1306: 
                   1307:    All the variables whose names end in `-hook' are "normal hooks";
                   1308: their values are lists of functions to be called with no arguments. 
                   1309: You can use `add-hook' (see below) to install hook functions in these
                   1310: hooks.  We have made all Emacs hooks into normal hooks except when
                   1311: there is some reason this won't work.
                   1312: 
                   1313:    A few hook-like variables are "abnormal"--they don't use the normal
                   1314: convention.  This is either because the user-supplied functions receive
                   1315: arguments, or because their return values matter.  These variables have
                   1316: names that end in `-function' (if the value is a single function) or
                   1317: `-functions' (if the value is a list of functions).
                   1318: 
                   1319:    Thus, you can always tell from the variable's name precisely how to
                   1320: install a new hook function in the variable.  If the name indicates a
                   1321: normal hook, then you also know how to write your hook function.
                   1322: 
                   1323:    To add a hook function to a normal hook, use `add-hook'.  It takes
                   1324: care of adding a new hook function to any functions already installed in
                   1325: a given hook.  It takes two arguments, the hook symbol and the function
                   1326: to add.  For example,
                   1327: 
                   1328:      (add-hook 'text-mode-hook 'my-text-hook-function)
                   1329: 
                   1330: is how to arrange to call `my-text-hook-function' when entering Text
                   1331: mode or related modes. Two new hooks are worth noting here.  Expansion
                   1332: of an abbrev first runs the hook `pre-abbrev-expand-hook'.
                   1333: `kill-buffer-hook' now runs whenever a buffer is killed.
                   1334: 
                   1335: 

unix.superglobalmegacorp.com

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