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

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