home *** CD-ROM | disk | FTP | other *** search
/ Dream 49 / Amiga_Dream_49.iso / beos / emacs / emacs-19.34-bin / emacs-19 / info / ediff-2 < prev    next >
Encoding:
GNU Info File  |  1997-09-17  |  31.9 KB  |  656 lines

  1. This is Info file ../info/ediff, produced by Makeinfo-1.63 from the
  2. input file ediff.texi.
  3.  
  4.    This file documents Ediff, a comprehensive visual interface to Unix
  5. diff and patch utilities.
  6.  
  7.    Permission is granted to make and distribute verbatim copies of this
  8. manual provided the copyright notice and this permission notice are
  9. preserved on all copies.
  10.  
  11. 
  12. File: ediff,  Node: Patch and Diff Programs,  Next: Merging and diff3,  Prev: Refinement of Difference Regions,  Up: Customization
  13.  
  14. Patch and Diff Programs
  15. =======================
  16.  
  17.    This section describes variables that specify the programs to be
  18. used for applying patches and for computing the main difference regions
  19. (not the fine difference regions):
  20.  
  21. `ediff-patch-program'
  22. `ediff-diff-program'
  23. `ediff-diff3-program'
  24.      These variables specify the programs to use to produce differences
  25.      and do patching.
  26.  
  27. `ediff-patch-options'
  28. `ediff-diff-options'
  29. `ediff-diff3-options'
  30.      These variables specify the options to pass to the above utilities.
  31.  
  32.      In `ediff-diff-options', it may be useful to specify options such
  33.      as `-w' that ignore certain kinds of changes.  However, Ediff does
  34.      not let you use the option `-c', as it doesn't recognize this
  35.      format yet.
  36.  
  37. `ediff-custom-diff-program'
  38. `ediff-custom-diff-options'
  39.      Because Ediff limits the options you may want to pass to the `diff'
  40.      program, it partially makes up for this drawback by letting you
  41.      save the output from `diff' in your preferred format, which is
  42.      specified via the above two variables.
  43.  
  44.      The output generated by `ediff-custom-diff-program' (which doesn't
  45.      even have to be a standard-style `diff'!) is not used by Ediff. It
  46.      is provided exclusively so that you can refer to it later, send it
  47.      over email, etc.  For instance, after reviewing the differences,
  48.      you may want to send context differences to a colleague.  Since
  49.      Ediff ignores the `-c' option in `ediff-diff-program', you would
  50.      have to run `diff -c' separately just to produce the list of
  51.      differences. Fortunately, `ediff-custom-diff-program' and
  52.      `ediff-custom-diff-options' eliminate this nuisance by keeping a
  53.      copy of a difference list in the desired format in a buffer that
  54.      can be displayed via the command `D'.
  55.  
  56. `ediff-patch-default-directory'
  57.      Specifies the default directory to look for patches.
  58.  
  59. *Warning:* Ediff does not support the output format of VMS `diff'.
  60. Instead, make sure to use some implementation of POSIX `diff', such as
  61. `gnudiff'.
  62.  
  63. 
  64. File: ediff,  Node: Merging and diff3,  Next: Support for Version Control,  Prev: Patch and Diff Programs,  Up: Customization
  65.  
  66. Merging and diff3
  67. =================
  68.  
  69.    Ediff supports three-way comparison via the functions `ediff-files3'
  70. and `ediff-buffers3'.  The interface is the same as for two-way
  71. comparison.  In three-way comparison and merging, Ediff reports if any
  72. two difference regions are identical.  For instance, if the current
  73. region in buffer A is the same as the region in buffer C, then the mode
  74. line of buffer A will display `[=diff(C)]' and the mode line of buffer
  75. C will display `[=diff(A)]'.
  76.  
  77.    Merging is done according to the following algorithm.
  78.  
  79.    If a difference region in one of the buffers, say B, differs from
  80. the ancestor file while the region in the other buffer, A, doesn't,
  81. then the merge buffer, C, gets B's region.  Similarly when buffer A's
  82. region differs from the ancestor and B's doesn't, A's region is used.
  83.  
  84.    If both regions in buffers A and B differ from the ancestor file,
  85. Ediff chooses the region according to the value of the variable
  86. `ediff-default-variant'.  If its value is `default-A' then A's region
  87. is chosen.  If it is `default-B' then B's region is chosen.  If it is
  88. `combined' then the region in buffer C will look like this:
  89.  
  90.      #ifdef NEW  /* variant A */
  91.      difference region from buffer A
  92.      #else  /* variant B */
  93.      difference region from buffer B
  94.      #endif  /* NEW */
  95.  
  96.    The actual strings that separate the regions copied from buffer A
  97. and B are controlled by the variable `ediff-combination-pattern'.  Its
  98. value should be a list of three strings.  The first is inserted before
  99. the difference region of buffer A; the second string goes between the
  100. regions; the third goes after region B, as shown in the above example.
  101.  
  102.    In addition to the state of the difference, during merging Ediff
  103. displays the state of the merge for each region. If a difference came
  104. from buffer A by default (because both regions A and B were different
  105. from the ancestor and `ediff-default-variant' was set to `default-A')
  106. then `[=diff(A) default-A]' is displayed in the mode line.  If the
  107. difference in buffer C came, say, from buffer B because the difference
  108. region in that buffer differs from the ancestor, but the region in
  109. buffer A does not (if merging with an ancestor) then `[=diff(B)
  110. prefer-B]' is displayed.  The indicators default-A/B and prefer-A/B are
  111. inspired by Emerge and have the same meaning.
  112.  
  113.    Another indicator of the state of merge is `combined'.  It appears
  114. with any difference region in buffer C that was obtained by combining
  115. the difference regions in buffers A and B as explained above.
  116.  
  117.    In addition to state of merge and difference indicator, while
  118. merging with an ancestor file or buffer, Ediff informs the user when
  119. the current difference region in the (normally invisible) ancestor
  120. buffer is empty via the *AncestorEmpty* indicator. This helps determine
  121. if the changes made to the original in variants A and B represent pure
  122. insertion or deletion of text: if the mode line shows *AncestorEmpty*
  123. and the corresponding region in buffers A or B is not empty, this means
  124. that new text was inserted. If this indicator is not present and the
  125. difference regions in buffers A or B are non-empty, this means that
  126. text was modified. Otherwise, the original text was deleted.
  127.  
  128.    Although the ancestor buffer is normally invisible, Ediff maintains
  129. difference regions there and advances the current difference region
  130. accordingly. All highlighting of difference regions is provided in the
  131. ancestor buffer, except for the fine differences.  Therefore, if
  132. desired, the user can put the ancestor buffer in a separate frame and
  133. watch it there. However, on a TTY, only one frame can be visible at any
  134. given time, and Ediff doesn't support any single-frame window
  135. configuration where all buffers, including the ancestor buffer, would
  136. be visible. However, the ancestor buffer can be displayed by typing `/'
  137. to the control window. (Type `C-l' to hide it again.)
  138.  
  139.    Note that the state-of-difference indicators `=diff(A)' and
  140. `=diff(B)' above are not redundant, even in the presence of a
  141. state-of-merge indicator.  In fact, the two serve different purposes.
  142.  
  143.    For instance, if the mode line displays `=diff(B) prefer(B)' and you
  144. copy a difference region from buffer A to buffer C then `=diff(B)' will
  145. change to `diff-A' and the mode line will display `=diff(A) prefer-B'.
  146. This indicates that the difference region in buffer C is identical to
  147. that in buffer A, but originally buffer C's region came from buffer B.
  148. This is useful to know because you can recover the original difference
  149. region in buffer C by typing `r'.
  150.  
  151.    Ediff never changes the state-of-merge indicator, except in response
  152. to the `!' command (see below), in which case the indicator is lost.
  153. On the other hand, the state-of-difference indicator is changed
  154. automatically by the copying/recovery commands, `a', `b', `r', `+'.
  155.  
  156.    The `!' command loses the information about origins of the regions
  157. in the merge buffer (default-A, prefer-B, or combined).  This is because
  158. recomputing differences in this case means running `diff3' on buffers
  159. A, B, and the merge buffer, not on the ancestor buffer.  (It makes no
  160. sense to recompute differences using the ancestor file, since in the
  161. merging mode Ediff assumes that you have not edited buffers A and B,
  162. but that you may have edited buffer C, and these changes are to be
  163. preserved.)  Since some difference regions may disappear as a result of
  164. editing buffer C and others may arise, there is generally no simple way
  165. to tell where the various regions in the merge buffer came from.
  166.  
  167.    In three-way comparison, Ediff tries to disregard regions that
  168. consist entirely of white space.  For instance, if, say, the current
  169. region in buffer A consists of the white space only (or if it is
  170. empty), Ediff will not take it into account for the purpose of
  171. computing fine differences. The result is that Ediff can provide a
  172. better visual information regarding the actual fine differences in the
  173. non-white regions in buffers B and C. Moreover, if the regions in
  174. buffers B and C differ in the white space only, then a message to this
  175. effect will be displayed.
  176.  
  177.    In the merge mode, the share of the split between window C (the
  178. window displaying the merge-buffer) and the windows displaying buffers
  179. A and B is controlled by the variable `ediff-merge-window-share'.  Its
  180. default value is 0.5.  To make the merge-buffer window smaller, reduce
  181. this amount.
  182.  
  183.    We don't recommend increasing the size of the merge-window to more
  184. than half the frame (i.e., to increase the value of
  185. `ediff-merge-window-share') to more than 0.5, since it would be hard to
  186. see the contents of buffers A and B.
  187.  
  188.    You can temporarily shrink the merge window to just one line by
  189. typing `s'.  This change is temporary, until Ediff finds a reason to
  190. redraw the screen.  Typing `s' again restores the original window size.
  191.  
  192.    With a positive prefix argument, the `s' command will make the merge
  193. window slightly taller.  This change is persistent.  With ``-'' or with
  194. a negative prefix argument, the command `s' makes the merge window
  195. slightly shorter.  This change also persistent.
  196.  
  197.    Ediff lets you automatically ignore the regions where only one of the
  198. buffers A and B disagrees with the ancestor.  To do this, set the
  199. variable `ediff-show-clashes-only' to non-`nil'.
  200.  
  201.    You can toggle this feature interactively by typing `$'.
  202.  
  203.    Note that this variable controls only how Ediff chooses the
  204. next/previous difference to show.  You can still jump directly to any
  205. difference using the command `j' (with a prefix argument specifying the
  206. difference number).
  207.  
  208. 
  209. File: ediff,  Node: Support for Version Control,  Next: Customizing the Mode Line,  Prev: Merging and diff3,  Up: Customization
  210.  
  211. Support for Version Control
  212. ===========================
  213.  
  214.    Ediff supports version control and lets you compare versions of files
  215. visited by Emacs buffers via the function `ediff-revision'. This
  216. feature is controlled by the following variables:
  217.  
  218. `ediff-version-control-package'
  219.      A symbol. The default is `vc'.
  220.  
  221.      If you are like most Emacs users, Ediff will use VC as the version
  222.      control package. This is the standard Emacs interface to RCS, CVS,
  223.      and SCCS.
  224.  
  225.      However, if your needs are better served by other interfaces, you
  226.      will have to tell Ediff which version control package you are
  227.      using, e.g.,
  228.           (setq ediff-version-control-package 'rcs)
  229.  
  230.      Apart from the standard `vc.el', Ediff supports three other
  231.      interfaces to version control: `rcs.el', `pcl-cvs.el', and
  232.      `generic-sc.el'.  The package `rcs.el' is written by Sebastian
  233.      Kremer <sk@thp.Uni-Koeln.DE> and is available as
  234.           `ftp.cs.buffalo.edu:pub/Emacs/rcs.tar.Z'
  235.           `ftp.uni-koeln.de:/pub/gnu/emacs/rcs.tar.Z'
  236.      The packages `pcl-cvs.el' and `generic-sc.el' are found in XEmacs
  237.      distribution.
  238.  
  239.    Ediff's interface to the above packages allows the user to compare
  240. the versions of the current buffer or to merge them (with or without an
  241. ancestor-version). These operations can also be performed on directories
  242. containing files under version control.
  243.  
  244.    In case of `pcl-cvs.el', Ediff can also be invoked via the function
  245. `run-ediff-from-cvs-buffer'--see the documentation string for this
  246. function.
  247.  
  248. 
  249. File: ediff,  Node: Customizing the Mode Line,  Next: Miscellaneous,  Prev: Support for Version Control,  Up: Customization
  250.  
  251. Customizing the Mode Line
  252. =========================
  253.  
  254.    When Ediff is running, the mode line of `Ediff Control Panel' buffer
  255. shows the current difference number and the total number of difference
  256. regions in the two files.
  257.  
  258.    The mode line of the buffers being compared displays the type of the
  259. buffer (`A:', `B:', or `C:') and (usually) the file name.  Ediff tries
  260. to be intelligent in choosing the mode line buffer identification.  In
  261. particular, it works well with the `uniquify.el' and `mode-line.el'
  262. packages (which improve on the default way in which Emacs displays
  263. buffer identification).  If you don't like the way Ediff changes the
  264. mode line, you can use `ediff-prepare-buffer-hook' to modify the mode
  265. line.
  266.  
  267. 
  268. File: ediff,  Node: Miscellaneous,  Next: Notes on Heavy-duty Customization,  Prev: Customizing the Mode Line,  Up: Customization
  269.  
  270. Miscellaneous
  271. =============
  272.  
  273.    Here are a few other variables for customizing Ediff:
  274.  
  275. `ediff-split-window-function'
  276.      Controls the way you want the window be split between file-A and
  277.      file-B (and file-C, if applicable).  It defaults to the vertical
  278.      split (`split-window-vertically', but you can set it to
  279.      `split-window-horizontally', if you so wish.  Ediff also lets you
  280.      switch from vertical to horizontal split and back interactively.
  281.  
  282.      Note that if Ediff detects that all the buffers it compares are
  283.      displayed in separate frames, it assumes that the user wants them
  284.      to be so displayed and stops splitting windows.  Instead, it
  285.      arranges for each buffer to be displayed in a separate frame. You
  286.      can switch to the one-frame mode by hiding one of the buffers
  287.      A/B/C.
  288.  
  289.      You can also swap the windows where buffers are displayed by typing
  290.      `~'.
  291.  
  292. `ediff-merge-split-window-function'
  293.      Controls how windows are split between buffers A and B in the
  294.      merge mode.  This variable is like `ediff-split-window-function',
  295.      but it defaults to `split-window-horizontally' instead of
  296.      `split-window-vertically'.
  297.  
  298. `ediff-make-wide-display-function'
  299.      The value is a function to be called to widen the frame for
  300.      displaying the Ediff buffers.  See the on-line documentation for
  301.      `ediff-make-wide-display-function' for details.  It is also
  302.      recommended to look into the source of the default function
  303.      `ediff-make-wide-display'.
  304.  
  305.      You can toggle wide/regular display by typing `m'.  In the wide
  306.      display mode, buffers A, B (and C, when applicable) are displayed
  307.      in a single frame that is as wide as the entire workstation
  308.      screen.  This is useful when files are compared side-by-side.  By
  309.      default, the display is widened without changing its height.
  310.  
  311. `ediff-use-last-dir'
  312.      Controls the way Ediff presents the default directory when it
  313.      prompts the user for files to compare.  If `nil', Ediff uses the
  314.      default directory of the current buffer when it prompts the user
  315.      for file names.  Otherwise, it will use the directories it had
  316.      previously used for files A, B, or C, respectively.
  317.  
  318. `ediff-no-emacs-help-in-control-buffer'
  319.      If `t', makes `C-h' behave like the DEL key, i.e., it will move
  320.      you back to the previous difference rather than invoking help.
  321.      This is useful when, in an xterm window or a text-only terminal,
  322.      the Backspace key is bound to `C-h' and is positioned more
  323.      conveniently than the DEL key.
  324.  
  325. `ediff-toggle-read-only-function'
  326.      This variable's value is a function that Ediff uses to toggle the
  327.      read-only property in its buffers.
  328.  
  329.      The default function that Ediff uses simply toggles the read-only
  330.      property, unless the file is under version control.  For a
  331.      checked-in file under version control, Ediff first tries to check
  332.      the file out.
  333.  
  334. `ediff-keep-variants'
  335.      The default is `t', meaning that the buffers being compared or
  336.      merged will be preserved when Ediff quits. Setting this to `nil'
  337.      causes Ediff to offer the user a chance to delete these buffers
  338.      (if they are not modified).  Supplying a prefix argument to the
  339.      quit command (`q') temporarily reverses the meaning of this
  340.      variable. This is convenient when the user prefers one of the
  341.      behaviors most of the time, but occasionally needs the other
  342.      behavior.
  343.  
  344.      However, Ediff temporarily resets this variable to `t' if it is
  345.      invoked via one of the "buffer" jobs, such as `ediff-buffers'.
  346.      This is because it is all too easy to loose day's work otherwise.
  347.      Besides, in a "buffer" job, the variant buffers have already been
  348.      loaded prior to starting Ediff, so Ediff just preserves status quo
  349.      here.
  350.  
  351.      Using `ediff-cleanup-hook', one can make Ediff delete the variants
  352.      unconditionally (e.g., by making `ediff-janitor' into one of these
  353.      hooks).
  354.  
  355. `ediff-grab-mouse'
  356.      Default is `t'.  Normally, Ediff grabs mouse and puts it in its
  357.      control frame.  This is useful since the user can be sure that
  358.      when he needs to type an Ediff command the focus will be in an
  359.      appropriate Ediff's frame.  However, some users prefer to move the
  360.      mouse by themselves.  The above variable, if set to `maybe', will
  361.      prevent Ediff from grabbing the mouse in many situations, usually
  362.      after commands that may take more time than usual. In other
  363.      situation, Ediff will continue grabbing the mouse and putting it
  364.      where it believes is appropriate.  If the value is `nil', then
  365.      mouse is entirely user's responsibility.  Try different settings
  366.      and see which one is for you.
  367.  
  368. 
  369. File: ediff,  Node: Notes on Heavy-duty Customization,  Prev: Miscellaneous,  Up: Customization
  370.  
  371. Notes on Heavy-duty Customization
  372. =================================
  373.  
  374.    Some users need to customize Ediff in rather sophisticated ways,
  375. which requires different defaults for different kinds of files (e.g.,
  376. SGML, etc.).  Ediff supports this kind of customization in several
  377. ways.  First, most customization variables are buffer-local. Those that
  378. aren't are usually accessible from within Ediff Control Panel, so one
  379. can make them local to the panel by calling make-local-variable from
  380. within `ediff-startup-hook'.
  381.  
  382.    Second, the function `ediff-setup' accepts an optional sixth
  383. argument which has the form `((VAR-NAME-1 . VAL-1) (VAR-NAME-2 . VAL-2)
  384. ...)'.  The function `ediff-setup' sets the variables in the list to
  385. the respective values, locally in the Ediff control buffer.  This is an
  386. easy way to throw in custom variables (which usually should be
  387. buffer-local) that can then be tested in various hooks.
  388.  
  389.    Make sure the variable `ediff-job-name' and `ediff-word-mode' are set
  390. properly in this case, as some things in Ediff depend on this.
  391.  
  392.    Finally, if you want custom-tailored help messages, you can set the
  393. variables `ediff-brief-help-message-function' and
  394. `ediff-long-help-message-function' to functions that return help
  395. strings.
  396.  
  397.    When customizing Ediff, some other variables are useful, although
  398. they are not user-definable. They are local to the Ediff control
  399. buffer, so this buffer must be current when you access these variables.
  400. The control buffer is accessible via the variable
  401. `ediff-control-buffer', which is also local to that buffer. It is
  402. usually used for checking if the current buffer is also the control
  403. buffer.
  404.  
  405.    Other variables of interest are:
  406. `ediff-buffer-A'
  407.      The first of the data buffers being compared.
  408.  
  409. `ediff-buffer-B'
  410.      The second of the data buffers being compared.
  411.  
  412. `ediff-buffer-C'
  413.      In three-way comparisons, this is the third buffer being compared.
  414.      In merging, this is the merge buffer.  In two-way comparison, this
  415.      variable is nil.
  416.  
  417. `ediff-window-A'
  418.      The window displaying buffer A. If buffer A is not visible, this
  419.      variable is nil or it may be a dead window.
  420.  
  421. `ediff-window-B'
  422.      The window displaying buffer B.
  423.  
  424. `ediff-window-C'
  425.      The window displaying buffer C, if any.
  426.  
  427. `ediff-control-frame'
  428.      A dedicated frame displaying the control buffer, if it exists.  It
  429.      is non-nil only if Ediff uses the multiframe display, i.e., when
  430.      the control buffer is in its own frame.
  431.  
  432. 
  433. File: ediff,  Node: Credits,  Next: Index,  Prev: Customization,  Up: Top
  434.  
  435. Credits
  436. *******
  437.  
  438.    Ediff was written by Michael Kifer <kifer@cs.sunysb.edu>. It was
  439. inspired by emerge.el written by Dale R. Worley <drw@math.mit.edu>.  An
  440. idea due to Boris Goldowsky <boris@cs.rochester.edu> made it possible
  441. to highlight fine differences in Ediff buffers. Alastair Burt
  442. <burt@dfki.uni-kl.de> ported Ediff to XEmacs, and Eric Freudenthal
  443. <freudent@jan.ultra.nyu.edu> made it work with VC.
  444.  
  445.    Many people provided help with bug reports, patches, and advice.
  446. Without them, Ediff would not be nearly as useful as it is today.  Here
  447. is a full list of contributors (I hope I didn't miss anyone):
  448.  
  449.      Neal Becker (neal@ctd.comsat.com),
  450.      Alastair Burt (burt@dfki.uni-kl.de), Paul Bibilo (peb@delcam.co.uk),
  451.      Kevin Broadey (KevinB@bartley.demon.co.uk),
  452.      Harald Boegeholz (hwb@machnix.mathematik.uni-stuttgart.de),
  453.      Bradley A. Bosch (brad@lachman.com),
  454.      Michael D. Carney  (carney@ltx-tr.com),
  455.      Jin S. Choi (jin@atype.com),
  456.      Albert Dvornik (bert@mit.edu),
  457.      Eric Eide (eeide@asylum.cs.utah.edu),
  458.      Kevin Esler (esler@ch.hp.com), Robert Estes (estes@ece.ucdavis.edu),
  459.      Xavier Fornari (xavier@europe.cma.fr),
  460.      Eric Freudenthal (freudent@jan.ultra.nyu.edu),
  461.      Job Ganzevoort (Job.Ganzevoort@cwi.nl),
  462.      Boris Goldowsky (boris@cs.rochester.edu),
  463.      Allan Gottlieb (gottlieb@allan.ultra.nyu.edu), Xiaoli Huang (hxl@epic.com),
  464.      Larry Gouge (larry@itginc.com), Karl Heuer (kwzh@gnu.ai.mit.edu),
  465.      (irvine@lks.csi.com), (jaffe@chipmunk.cita.utoronto.ca),
  466.      David Karr (dkarr@nmo.gtegsc.com),
  467.      Norbert Kiesel (norbert@i3.informatik.rwth-aachen.de),
  468.      Leigh L Klotz (klotz@adoc.xerox.com), Fritz Knabe (Fritz.Knabe@ecrc.de),
  469.      Heinz Knutzen (hk@informatik.uni-kiel.d400.de),
  470.      Andrew Koenig (ark@research.att.com),
  471.      Ken Laprade (laprade@dw3f.ess.harris.com), Will C Lauer (wcl@cadre.com),
  472.      Richard Levitte (levitte@e.kth.se), Mike Long (mike.long@analog.com),
  473.      Martin Maechler (maechler@stat.math.ethz.ch),
  474.      Simon Marshall (Simon.Marshall@mail.esrin.esa.it),
  475.      Richard Mlynarik (mly@adoc.xerox.com),
  476.      Chris Murphy (murphycm@sun.aston.ac.uk),
  477.      Erik Naggum (erik@naggum.no),
  478.      Eyvind Ness (Eyvind.Ness@hrp.no), Ray Nickson (nickson@cs.uq.oz.au),
  479.      David Petchey (petchey_david@jpmorgan.com),
  480.      Benjamin Pierce (benjamin.pierce@cl.cam.ac.uk),
  481.      Tibor Polgar (tlp00@spg.amdahl.com),
  482.      David Prince (dave0d@fegs.co.uk),
  483.      Paul Raines (raines@slac.stanford.edu),
  484.      C.S. Roberson (roberson@aur.alcatel.com),
  485.      Kevin Rodgers (kevin.rodgers@ihs.com),
  486.      Sandy Rutherford (sandy@ibm550.sissa.it),
  487.      Heribert Schuetz (schuetz@ecrc.de), Andy Scott (ascott@pcocd2.intel.com),
  488.      Axel Seibert (axel@tumbolia.ppp.informatik.uni-muenchen.de),
  489.      Richard Stallman (rms@gnu.ai.mit.edu),
  490.      Richard Stanton (stanton@haas.berkeley.edu),
  491.      Ake Stenhoff (etxaksf@aom.ericsson.se), Stig (stig@hackvan.com),
  492.      Peter Stout (Peter_Stout@cs.cmu.edu), Chuck Thompson (cthomp@cs.uiuc.edu),
  493.      Ray Tomlinson (tomlinso@bbn.com),
  494.      Raymond Toy (toy@rtp.ericsson.se),
  495.      Ben Wing (wing@666.com),
  496.      Ilya Zakharevich (ilya@math.ohio-state.edu),
  497.      Eli Zaretskii (eliz@is.elta.co.il)
  498.  
  499. 
  500. File: ediff,  Node: Index,  Prev: Credits,  Up: Top
  501.  
  502. Index
  503. *****
  504.  
  505. * Menu:
  506.  
  507. * ediff-grab-mouse:                     Miscellaneous.
  508. * ediff-keep-variants:                  Miscellaneous.
  509. * ediff-use-last-dir:                   Major Entry Points.
  510. * generic-sc.el:                        Support for Version Control.
  511. * mode-line.el:                         Customizing the Mode Line.
  512. * pcl-cvs.el:                           Support for Version Control.
  513. * rcs.el:                               Support for Version Control.
  514. * uniquify.el:                          Customizing the Mode Line.
  515. * vc.el:                                Support for Version Control.
  516. * Comparing files and buffers:          Introduction.
  517. * ediff:                                Major Entry Points.
  518. * ediff-after-flag-eol:                 Highlighting Difference Regions.
  519. * ediff-after-flag-mol:                 Highlighting Difference Regions.
  520. * ediff-after-setup-control-frame-hook: Hooks.
  521. * ediff-after-setup-windows-hook:       Hooks.
  522. * ediff-auto-refine:                    Refinement of Difference Regions.
  523. * ediff-auto-refine-limit:              Refinement of Difference Regions.
  524. * ediff-before-flag-bol:                Highlighting Difference Regions.
  525. * ediff-before-flag-mol:                Highlighting Difference Regions.
  526. * ediff-before-setup-control-frame-hook: Hooks.
  527. * ediff-before-setup-windows-hook:      Hooks.
  528. * ediff-brief-help-message-function:    Notes on Heavy-duty Customization.
  529. * ediff-buffers:                        Major Entry Points.
  530. * ediff-buffers3:                       Major Entry Points.
  531. * ediff-cleanup-hook:                   Hooks.
  532. * ediff-combination-pattern:            Merging and diff3.
  533. * ediff-control-buffer:                 Quick Help.
  534. * ediff-control-frame-parameters:       Window and Frame Configuration.
  535. * ediff-control-frame-position-function: Window and Frame Configuration.
  536. * ediff-control-frame-upward-shift:     Window and Frame Configuration.
  537. * ediff-current-diff-face-A:            Highlighting Difference Regions.
  538. * ediff-current-diff-face-B:            Highlighting Difference Regions.
  539. * ediff-current-diff-face-C:            Highlighting Difference Regions.
  540. * ediff-custom-diff-options:            Patch and Diff Programs.
  541. * ediff-custom-diff-program:            Patch and Diff Programs.
  542. * ediff-default-variant:                Merging and diff3.
  543. * ediff-diff-options:                   Patch and Diff Programs.
  544. * ediff-diff-program <1>:               Patch and Diff Programs.
  545. * ediff-diff-program:                   Refinement of Difference Regions.
  546. * ediff-diff3-options:                  Patch and Diff Programs.
  547. * ediff-diff3-program:                  Patch and Diff Programs.
  548. * ediff-directories:                    Major Entry Points.
  549. * ediff-directories3:                   Major Entry Points.
  550. * ediff-directory-revisions:            Major Entry Points.
  551. * ediff-display-help-hook:              Hooks.
  552. * ediff-even-diff-face-A:               Highlighting Difference Regions.
  553. * ediff-even-diff-face-B:               Highlighting Difference Regions.
  554. * ediff-even-diff-face-C:               Highlighting Difference Regions.
  555. * ediff-files:                          Major Entry Points.
  556. * ediff-files3:                         Major Entry Points.
  557. * ediff-fine-diff-face-A:               Highlighting Difference Regions.
  558. * ediff-fine-diff-face-B:               Highlighting Difference Regions.
  559. * ediff-fine-diff-face-C:               Highlighting Difference Regions.
  560. * ediff-force-faces:                    Highlighting Difference Regions.
  561. * ediff-forward-word:                   Refinement of Difference Regions.
  562. * ediff-forward-word-function:          Refinement of Difference Regions.
  563. * ediff-help-message:                   Quick Help.
  564. * ediff-highlight-all-diffs:            Highlighting Difference Regions.
  565. * ediff-ignore-similar-regions:         Selective Browsing.
  566. * ediff-janitor:                        Hooks.
  567. * ediff-job-name:                       Notes on Heavy-duty Customization.
  568. * ediff-keymap-setup-hook:              Hooks.
  569. * ediff-load-hook:                      Hooks.
  570. * ediff-long-help-message-function:     Notes on Heavy-duty Customization.
  571. * ediff-make-frame-position:            Window and Frame Configuration.
  572. * ediff-make-wide-display-function:     Miscellaneous.
  573. * ediff-merge:                          Major Entry Points.
  574. * ediff-merge-buffers:                  Major Entry Points.
  575. * ediff-merge-buffers-with-ancestor:    Major Entry Points.
  576. * ediff-merge-directories:              Major Entry Points.
  577. * ediff-merge-directories-with-ancestor: Major Entry Points.
  578. * ediff-merge-directory-revisions:      Major Entry Points.
  579. * ediff-merge-directory-revisions-with-ancestor: Major Entry Points.
  580. * ediff-merge-files:                    Major Entry Points.
  581. * ediff-merge-files-with-ancestor:      Major Entry Points.
  582. * ediff-merge-revisions:                Major Entry Points.
  583. * ediff-merge-revisions-with-ancestor:  Major Entry Points.
  584. * ediff-merge-split-window-function:    Miscellaneous.
  585. * ediff-merge-window-share:             Merging and diff3.
  586. * ediff-merge-with-ancestor:            Major Entry Points.
  587. * ediff-mode-hook:                      Hooks.
  588. * ediff-narrow-control-frame-leftward-shift: Window and Frame Configuration.
  589. * ediff-no-emacs-help-in-control-buffer: Miscellaneous.
  590. * ediff-odd-diff-face-A:                Highlighting Difference Regions.
  591. * ediff-odd-diff-face-B:                Highlighting Difference Regions.
  592. * ediff-odd-diff-face-C:                Highlighting Difference Regions.
  593. * ediff-patch-buffer:                   Major Entry Points.
  594. * ediff-patch-default-directory:        Patch and Diff Programs.
  595. * ediff-patch-file:                     Major Entry Points.
  596. * ediff-patch-options:                  Patch and Diff Programs.
  597. * ediff-patch-program:                  Patch and Diff Programs.
  598. * ediff-prefer-iconified-control-frame: Window and Frame Configuration.
  599. * ediff-prepare-buffer-hook <1>:        Customizing the Mode Line.
  600. * ediff-prepare-buffer-hook:            Hooks.
  601. * ediff-profile:                        Commands.
  602. * ediff-quit-hook:                      Hooks.
  603. * ediff-quit-widened:                   Narrowing.
  604. * ediff-regions-linewise:               Major Entry Points.
  605. * ediff-regions-wordwise:               Major Entry Points.
  606. * ediff-registry-setup-hook:            Hooks.
  607. * ediff-revert-buffers-then-recompute-diffs: Commands.
  608. * ediff-revision:                       Major Entry Points.
  609. * ediff-save-buffer:                    Patch and Diff Programs.
  610. * ediff-select-hook:                    Hooks.
  611. * ediff-session-group-setup-hook:       Hooks.
  612. * ediff-setup:                          Notes on Heavy-duty Customization.
  613. * ediff-setup-windows:                  Window and Frame Configuration.
  614. * ediff-setup-windows-multiframe:       Window and Frame Configuration.
  615. * ediff-setup-windows-plain:            Window and Frame Configuration.
  616. * ediff-show-clashes-only:              Merging and diff3.
  617. * ediff-show-registry:                  Commands.
  618. * ediff-split-window-function:          Miscellaneous.
  619. * ediff-start-narrowed:                 Narrowing.
  620. * ediff-startup-hook <1>:               Notes on Heavy-duty Customization.
  621. * ediff-startup-hook <1>:               Quick Help.
  622. * ediff-startup-hook:                   Hooks.
  623. * ediff-suspend-hook:                   Hooks.
  624. * ediff-toggle-multiframe <1>:          Window and Frame Configuration.
  625. * ediff-toggle-multiframe:              Commands.
  626. * ediff-toggle-read-only-function:      Miscellaneous.
  627. * ediff-unselect-hook:                  Hooks.
  628. * ediff-use-last-dir:                   Miscellaneous.
  629. * ediff-use-long-help-message:          Quick Help.
  630. * ediff-version-control-package:        Support for Version Control.
  631. * ediff-wide-control-frame-rightward-shift: Window and Frame Configuration.
  632. * ediff-window-setup-function:          Window and Frame Configuration.
  633. * ediff-windows-linewise:               Major Entry Points.
  634. * ediff-windows-wordwise:               Major Entry Points.
  635. * ediff-word-1:                         Refinement of Difference Regions.
  636. * ediff-word-2:                         Refinement of Difference Regions.
  637. * ediff-word-3:                         Refinement of Difference Regions.
  638. * ediff-word-4:                         Refinement of Difference Regions.
  639. * ediff-word-mode:                      Notes on Heavy-duty Customization.
  640. * ediff3:                               Major Entry Points.
  641. * edir-merge-revisions:                 Major Entry Points.
  642. * edir-merge-revisions-with-ancestor:   Major Entry Points.
  643. * edir-revisions:                       Major Entry Points.
  644. * edirs:                                Major Entry Points.
  645. * edirs-merge:                          Major Entry Points.
  646. * edirs-merge-with-ancestor:            Major Entry Points.
  647. * edirs3:                               Major Entry Points.
  648. * epatch:                               Major Entry Points.
  649. * eregistry:                            Commands.
  650. * Finding differences:                  Introduction.
  651. * Merging files and buffers:            Introduction.
  652. * Multi-file patches:                   Session Groups.
  653. * Patching files and buffers:           Introduction.
  654.  
  655.  
  656.