Homepage: https://www.gnu.org/software/emacs
Author: Michael Kifer
A comprehensive visual interface to diff & patch
Never read that diff output again! Apply patch interactively! Merge with ease! This package provides a convenient way of simultaneous browsing through the differences between a pair (or a triple) of files or buffers. The files being compared, file-A, file-B, and file-C (if applicable) are shown in separate windows (side by side, one above the another, or in separate frames), and the differences are highlighted as you step through them. You can also copy difference regions from one buffer to another (and recover old differences if you change your mind). Ediff also supports merging operations on files and buffers, including merging using ancestor versions. Both comparison and merging operations can be performed on directories, i.e., by pairwise comparison of files in those directories. In addition, Ediff can apply a patch to a file and then let you step though both files, the patched and the original one, simultaneously, difference-by-difference. You can even apply a patch right out of a mail buffer, i.e., patches received by mail don't even have to be saved. Since Ediff lets you copy differences between buffers, you can, in effect, apply patches selectively (i.e., you can copy a difference region from file_orig to file, thereby undoing any particular patch that you don't like). Ediff is aware of version control, which lets the user compare files with their older versions. Ediff can also work with remote and compressed files. Details are given below. Finally, Ediff supports directory-level comparison, merging and patching. See the Ediff manual for details. This package builds upon the ideas borrowed from emerge.el and several Ediff's functions are adaptations from emerge.el. Much of the functionality Ediff provides is also influenced by emerge.el. The present version of Ediff supersedes Emerge. It provides a superior user interface and has numerous major features not found in Emerge. In particular, it can do patching, and 2-way and 3-way file comparison, merging, and directory operations.