Selective Browsing Customization Narrowing
The following variables control the way Ediff highlights difference regions:
ediff-before-flag-bol
ediff-after-flag-eol
ediff-before-flag-mol
ediff-after-flag-mol
|
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-current-diff-face-A
ediff-current-diff-face-B
ediff-current-diff-face-C
|
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 ` |
ediff-fine-diff-face-A
ediff-fine-diff-face-B
ediff-fine-diff-face-C
|
Ediff uses these faces to show the fine differences between the current differences regions in buffers A, B, and C, respectively. |
ediff-even-diff-face-A
ediff-even-diff-face-B
ediff-even-diff-face-C
ediff-odd-diff-face-A
ediff-odd-diff-face-B
ediff-odd-diff-face-C
|
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-force-faces
|
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 |
ediff-highlight-all-diffs
|
Indicates whether---on a windowind 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
should set 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-force-faces
and
ediff-highlight-all-diffs
, you must do it before Ediff is
loaded.
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 fase 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 (function (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))))
Note: it is not recommended to use internal-get-face
when defining Ediff's faces, since this may cause problems when there
are several frames with different font sizes. Instead, use
copy-face
or set/make-face-...
as shown above.