The following variables control the way Ediff highlights difference regions:
These variables hold strings that Ediff uses to mark the beginning and the end of the differences found in files A, B, and C on devices where Emacs cannot display faces. Ediff uses different flags to highlight regions that begin/end at the beginning/end of a line or in a middle of a line.
Ediff uses these faces to highlight current differences on devices where Emacs can display faces. These and subsequently described faces can be set either in .emacs or in .Xdefaults. The X resource for Ediff is ‘Ediff’, not ‘emacs’. Please refer to Emacs manual for the information on how to set X resources.
Ediff uses these faces to show the fine differences between the current differences regions in buffers A, B, and C, respectively.
Non-current difference regions are displayed using these alternating faces. The odd and the even faces are actually identical on monochrome displays, because without colors options are limited. So, Ediff uses italics to highlight non-current differences.
Ediff generally can detect when Emacs is running on a device where it can
use highlighting with faces. However, if it fails to determine that faces
can be used, the user can set this variable to
t to make sure that
Ediff uses faces to highlight differences.
Indicates whether—on a windowing display—Ediff should highlight
differences using inserted strings (as on text-only terminals) or using
colors and highlighting. Normally, Ediff highlights all differences, but
the selected difference is highlighted more visibly. One can cycle through
various modes of highlighting by typing h. By default, Ediff starts
in the mode where all difference regions are highlighted. If you prefer to
start in the mode where unselected differences are not highlighted, you
nil. Type h to
restore highlighting for all differences.
Ediff lets you switch between the two modes of highlighting. That is, you can switch interactively from highlighting using faces to highlighting using string flags, and back. Of course, switching has effect only under a windowing system. On a text-only terminal or in an xterm window, the only available option is highlighting with strings.
If you want to change the default settings for
ediff-highlight-all-diffs, you must do it before Ediff is
You can also change the defaults for the faces used to highlight the difference regions. There are two ways to do this. The simplest and the preferred way is to use the customization widget accessible from the menubar. Ediff’s customization group is located under "Tools", which in turn is under "Programming". The faces that are used to highlight difference regions are located in the "Highlighting" subgroup of the Ediff customization group.
The second, much more arcane, method to change default faces is to include some Lisp code in ~/.emacs. For instance,
(setq ediff-current-diff-face-A (copy-face 'bold-italic 'ediff-current-diff-face-A))
would use the pre-defined face
bold-italic to highlight the current
difference region in buffer A (this face is not a good choice, by the way).
If you are unhappy with just some of the aspects of the default
faces, you can modify them when Ediff is being loaded using
ediff-load-hook. For instance:
(add-hook 'ediff-load-hook (lambda () (set-face-foreground ediff-current-diff-face-B "blue") (set-face-background ediff-current-diff-face-B "red") (make-face-italic ediff-current-diff-face-B)))
Please note: to set Ediff’s faces, use only
set/make-face-… as shown above. Emacs’s low-level
face-manipulation functions should be avoided.