This file documents Ediff, a comprehensive visual interface to Unix diff
and patch utilities.
-Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
+under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
@findex ediff
Compare two files.
+@item ediff-backup
+@findex ediff-backup
+Compare a file with its backup. If there are several numerical backups, use
+the latest. If the file is itself a backup, then compare it with its
+original.
+
@item ediff-buffers
@findex ediff-buffers
Compare two buffers.
@kindex h
Cycles between full highlighting, the mode where fine differences are not
highlighted (but computed), and the mode where highlighting is done with
-ASCII strings. The latter is not really recommended, unless on a dumb TTY.
+@acronym{ASCII} strings. The latter is not really recommended, unless on a dumb TTY.
@item r
@kindex r
one of them by typing the region number and then `j'. Typing @kbd{##}
again puts Ediff back in the original state.
+@item #c
+@kindex #c
+@vindex ediff-ignore-case-option
+@vindex ediff-ignore-case-option3
+@vindex ediff-ignore-case
+Toggle case sensitivity in the diff program. All diffs are recomputed.
+Case sensitivity is controlled by the variables
+@code{ediff-ignore-case-option}, @code{ediff-ignore-case-option3},
+and @code{ediff-ignore-case}, which are explained elsewhere.
+
@item #h
@itemx #f
@kindex #f
@vindex ediff-autostore-merges
For group sessions created to merge files, Ediff can store all merges
automatically in a directory. The user is asked to specify such directory
-if the value of @code{ediff-autostore-merges} is non-nil. If the value is
+if the value of @code{ediff-autostore-merges} is non-@code{nil}. If the value is
@code{nil}, nothing is done to the merge buffers---it will be the user's
responsibility to save them. If the value is @code{t}, the user will be
asked where to save the merge buffers in all merge jobs, even those that do
many ways to create diff output, and it is easier to handle by running
Ediff on the inactive sessions.
-Last, but not least, by typing @kbd{=}, you can quickly find out which
-sessions have identical files, so you won't have to run Ediff on those
+Last, but not least, by typing @kbd{==}, you can quickly find out which
+sessions have identical entries, so you won't have to run Ediff on those
sessions. This, however, works only on local, uncompressed files.
For compressed or remote files, this command won't report anything.
+Likewise, you can use @kbd{=h} to mark sessions with identical entries
+for hiding or, with @kbd{=m}, for further operations.
+
+The comparison operations @kbd{==}, @kbd{=h}, and @kbd{=m} can recurse into
+subdirectories to see if they have identical contents (so the user will not
+need to descend into those subdirectories manually). These commands ask the
+user whether or not to do a recursive descent.
+
@node Remote and Compressed Files, Customization, Session Groups, Top
via the command @kbd{##}.
@end table
-@strong{Note:} In order for this feature to work, auto-refining of
+@strong{Please note:} in order for this feature to work, auto-refining of
difference regions must be on, since otherwise Ediff won't know if there
are fine differences between regions. On devices where Emacs can display
faces, auto-refining is a default, but it is not turned on by default on
differences of all intermediate regions. This delay does not indicate any
problem.
+@vindex ediff-ignore-case-option
+@vindex ediff-ignore-case-option3
+@vindex ediff-ignore-case
+Finally, Ediff can be told to ignore the case of the letters. This behavior
+can be toggled with @kbd{#c} and it is controlled with three variables:
+Toggle case sensitivity in the diff program. All diffs are recomputed.
+Case sensitivity is controlled by the variables
+@code{ediff-ignore-case-option}, @code{ediff-ignore-case-option3}, and
+@code{ediff-ignore-case}.
+
+The variable @code{ediff-ignore-case-option} specifies the option to pass
+to the diff program for comparing two files or buffers. For GNU
+@code{diff}, this option is @code{"-i"}. The variable
+@code{ediff-ignore-case-option3} specifies the option to pass to the
+@code{diff3} program in order to make it case-insensitive. GNU @code{diff3}
+does not have such an option, so when merging or comparing three files with
+this program, ignoring the letter case is not supported.
+
+The variable @code{ediff-ignore-case} controls whether Ediff starts out by
+ignoring letter case or not. It can be set in @file{.emacs} using
+@code{setq-default}.
+
@node Highlighting Difference Regions, Narrowing, Selective Browsing, Customization
@section Highlighting Difference Regions
ediff-current-diff-face-B)))
@end smallexample
-@strong{Note:} To set Ediff's faces, use only @code{copy-face} or
-@code{set/make-face-@dots{}} as shown above. Emacs' low-level
+@strong{Please note:} to set Ediff's faces, use only @code{copy-face}
+or @code{set/make-face-@dots{}} as shown above. Emacs' low-level
face-manipulation functions should be avoided.
@node Narrowing, Refinement of Difference Regions, Highlighting Difference Regions, Customization
@item ediff-make-buffers-readonly-at-startup nil
@vindex ediff-make-buffers-readonly-at-startup
-If t, all variant buffers are made read-only at Ediff startup.
+If @code{t}, all variant buffers are made read-only at Ediff startup.
@item ediff-keep-variants
@vindex @code{ediff-keep-variants}
@item ediff-buffer-C
In three-way comparisons, this is the third buffer being compared.
In merging, this is the merge buffer.
-In two-way comparison, this variable is nil.
+In two-way comparison, this variable is @code{nil}.
@item ediff-window-A
The window displaying buffer A. If buffer A is not visible, this variable
-is nil or it may be a dead window.
+is @code{nil} or it may be a dead window.
@item ediff-window-B
The window displaying buffer B.
The window displaying buffer C, if any.
@item ediff-control-frame
-A dedicated frame displaying the control buffer, if it exists.
-It is non-nil only if Ediff uses the multiframe display, i.e., when the
-control buffer is in its own frame.
+A dedicated frame displaying the control buffer, if it exists. It is
+non-@code{nil} only if Ediff uses the multiframe display, i.e., when
+the control buffer is in its own frame.
@end table
@node Credits, Index, Customization, Top
@example
Adrian Aichner (aichner@@ecf.teradyne.com),
+Drew Adams (drew.adams@@oracle.com),
Steve Baur (steve@@xemacs.org),
Neal Becker (neal@@ctd.comsat.com),
E.@: Jay Berkenbilt (ejb@@ql.org),
Xavier Fornari (xavier@@europe.cma.fr),
Eric Freudenthal (freudent@@jan.ultra.nyu.edu),
Job Ganzevoort (Job.Ganzevoort@@cwi.nl),
+Felix Heinrich Gatzemeier (felix.g@@tzemeier.info),
Boris Goldowsky (boris@@cs.rochester.edu),
Allan Gottlieb (gottlieb@@allan.ultra.nyu.edu),
Aaron Gross (aaron@@bfr.co.il),
Thorbjoern Hansen (thorbjoern.hansen@@mchp.siemens.de),
Marcus Harnisch (marcus_harnisch@@mint-tech.com),
+Steven E. Harris (seh@@panix.com),
+Aaron S. Hawley (Aaron.Hawley@@uvm.edu),
Xiaoli Huang (hxl@@epic.com),
Andreas Jaeger (aj@@suse.de),
Lars Magne Ingebrigtsen (larsi@@ifi.uio.no),
Erik Naggum (erik@@naggum.no),
Eyvind Ness (Eyvind.Ness@@hrp.no),
Ray Nickson (nickson@@cs.uq.oz.au),
+Dan Nicolaescu (dann@@ics.uci.edu),
David Petchey (petchey_david@@jpmorgan.com),
Benjamin Pierce (benjamin.pierce@@cl.cam.ac.uk),
Francois Pinard (pinard@@iro.umontreal.ca),