Commit 328b4b70 authored by Michael Kifer's avatar Michael Kifer
Browse files

new version

parent 9645c179
......@@ -59,6 +59,11 @@ to a shell that you are not using or, better, fix your shell's startup file."
:type 'string
:group 'ediff-diff)
(defcustom ediff-cmp-program "cmp"
"*Utility to use to determine if two files are identical.
It must return code 0, if its arguments are identical files."
:type 'string
:group 'ediff-diff)
(defcustom ediff-diff-program "diff"
"*Program to use for generating the differential of the two files."
......@@ -1235,6 +1240,11 @@ argument to `skip-chars-forward'."
(funcall fwd-word-fun))
(point))))
(defun ediff-same-file-contents (f1 f2)
"T if F1 and F2 have identical contents."
(let ((res (call-process ediff-cmp-program nil nil nil f1 f2)))
(and (numberp res) (eq res 0))))
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
......
......@@ -126,10 +126,11 @@
))
;; put these menus before Object-Oriented-Browser in Tools menu
(add-hook 'before-init-hook 'ediff-xemacs-init-menus)
(if (not purify-flag)
(ediff-xemacs-init-menus))
)
;; (add-hook 'before-init-hook 'ediff-xemacs-init-menus)
;; (if (not purify-flag)
;; (ediff-xemacs-init-menus))
;; )
(ediff-xemacs-init-menus))
;; Emacs--only if menu-bar is loaded
((featurep 'menu-bar)
......
......@@ -346,6 +346,21 @@ that Ediff doesn't know about.")
(error "%S: This command runs in Ediff Control Buffer only!"
this-command)))
(defgroup ediff-highlighting nil
"Hilighting of difference regions in Ediff"
:prefix "ediff-"
:group 'ediff)
(defgroup ediff-merge nil
"Merging utilities"
:prefix "ediff-"
:group 'ediff)
(defgroup ediff-hook nil
"Hooks called by Ediff"
:prefix "ediff-"
:group 'ediff)
;; Hook variables
(defcustom ediff-before-setup-windows-hook nil
......@@ -353,74 +368,74 @@ that Ediff doesn't know about.")
This can be used to save the previous window config, which can be restored
on ediff-quit or ediff-suspend."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-after-setup-windows-hook nil
"*Hooks to run after Ediff sets its window configuration.
This can be used to set up control window or icon in a desired place."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-before-setup-control-frame-hook nil
"*Hooks run before setting up the frame to display Ediff Control Panel.
Can be used to change control frame parameters to position it where it
is desirable."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-after-setup-control-frame-hook nil
"*Hooks run after setting up the frame to display Ediff Control Panel.
Can be used to move the frame where it is desired."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-startup-hook nil
"*Hooks to run in the control buffer after Ediff has been set up."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-select-hook nil
"*Hooks to run after a difference has been selected."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-unselect-hook nil
"*Hooks to run after a difference has been unselected."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-prepare-buffer-hook nil
"*Hooks called after buffers A, B, and C are set up."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-load-hook nil
"*Hook run after Ediff is loaded. Can be used to change defaults."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-mode-hook nil
"*Hook run just after ediff-mode is set up in the control buffer.
This is done before any windows or frames are created. One can use it to
set local variables that determine how the display looks like."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-keymap-setup-hook nil
"*Hook run just after the default bindings in Ediff keymap are set up."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-display-help-hook nil
"*Hooks run after preparing the help message."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-suspend-hook (list 'ediff-default-suspend-function)
"*Hooks to run in the Ediff control buffer when Ediff is suspended."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-quit-hook (list 'ediff-cleanup-mess)
"*Hooks to run in the Ediff control buffer after finishing Ediff."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
(defcustom ediff-cleanup-hook nil
"*Hooks to run on exiting Ediff but before killing the control buffer.
This is a place to do various cleanups, such as deleting the variant buffers.
Ediff provides a function, `ediff-janitor', as one such possible hook."
:type 'hook
:group 'ediff)
:group 'ediff-hook)
;; Error messages
(defconst ediff-KILLED-VITAL-BUFFER
......@@ -847,10 +862,6 @@ appropriate symbol: `rcs', `pcl-cvs', or `generic-sc' if you so desire."
(if (and (ediff-has-face-support-p) ediff-emacs-p)
(add-to-list 'facemenu-unlisted-faces face)))
(defgroup ediff-highlighting nil
"Hilighting of difference regions in Ediff"
:prefix "ediff-"
:group 'ediff)
;;(defvar ediff-current-diff-face-A
;; (if (ediff-has-face-support-p)
......@@ -1523,11 +1534,14 @@ This property can be toggled interactively."
;; if nil, this silences some messages
(defconst ediff-verbose-p t)
(ediff-defvar-local ediff-autostore-merges 'group-jobs-only
(defcustom ediff-autostore-merges 'group-jobs-only
"*Save the results of merge jobs automatically.
Nil means don't save automatically. t means always save. Anything but nil or t
means save automatically only if the merge job is part of a group of jobs, such
as `ediff-merge-directory' or `ediff-merge-directory-revisions'.")
as `ediff-merge-directory' or `ediff-merge-directory-revisions'."
:type '(choice (const nil) (const t) (const group-jobs-only))
:group 'ediff-merge)
(make-variable-buffer-local 'ediff-autostore-merges)
;; file where the result of the merge is to be saved. used internally
(ediff-defvar-local ediff-merge-store-file nil "")
......@@ -1538,7 +1552,7 @@ Instead, C-h would jump to previous difference."
:type 'boolean
:group 'ediff)
(defvar ediff-temp-file-prefix
(defcustom ediff-temp-file-prefix
(let ((env (or (getenv "TMPDIR")
(getenv "TMP")
(getenv "TEMP")))
......@@ -1549,20 +1563,26 @@ Instead, C-h would jump to previous difference."
((eq system-type 'ms-dos) "c:/")
(t "/tmp"))))
;; The following is to make sure we get something to which we can
;; add directory levels on VMS.
;; add directory levels under VMS.
(setq d (file-name-as-directory (directory-file-name d)))
)
"*Prefix to put on Ediff temporary file names.
Do not start with `~/' or `~user-name/'.")
Do not start with `~/' or `~user-name/'."
:type 'string
:group 'ediff)
(defvar ediff-temp-file-mode 384 ; u=rw only
"*Mode for Ediff temporary files.")
(defcustom ediff-temp-file-mode 384 ; u=rw only
"*Mode for Ediff temporary files."
:type 'integer
:group 'ediff)
;; Metacharacters that have to be protected from the shell when executing
;; a diff/diff3 command.
(defvar ediff-metachars "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]"
"Characters that must be quoted with \\ when used in a shell command line.
More precisely, a regexp to match any one such character.")
(defcustom ediff-metachars "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]"
"Regexp that matches characters that must be quoted with `\\' in shell command line.
This default should work without changes."
:type 'string
:group 'ediff)
;; needed to simulate frame-char-width in XEmacs.
(defvar ediff-H-glyph (if ediff-xemacs-p (make-glyph "H")))
......
......@@ -25,12 +25,6 @@
(provide 'ediff-merg)
(defgroup ediff-merge nil
"Merging utilities"
:prefix "ediff-"
:group 'ediff)
;; compiler pacifier
(defvar ediff-window-A)
(defvar ediff-window-B)
......@@ -138,7 +132,6 @@ skiped over. Nil means show all regions.")
))
(defun ediff-set-merge-mode ()
;; by Stig@hackvan.com
(normal-mode t)
(remove-hook 'local-write-file-hooks 'ediff-set-merge-mode))
......
This diff is collapsed.
......@@ -178,7 +178,7 @@ to invocation.")
(define-key ediff-mode-map "E" 'ediff-documentation)
(define-key ediff-mode-map "?" 'ediff-toggle-help)
(define-key ediff-mode-map "!" 'ediff-update-diffs)
(define-key ediff-mode-map "M" 'ediff-show-meta-buffer)
(define-key ediff-mode-map "M" 'ediff-show-current-session-meta-buffer)
(define-key ediff-mode-map "R" 'ediff-show-registry)
(or ediff-word-mode
(define-key ediff-mode-map "*" 'ediff-make-or-kill-fine-diffs))
......@@ -251,7 +251,8 @@ to invocation.")
;; STARTUP-HOOKS, but these parameters are set in the new control buffer right
;; after this buf is created and before any windows are set and such.
(defun ediff-setup (buffer-A file-A buffer-B file-B buffer-C file-C
startup-hooks setup-parameters)
startup-hooks setup-parameters
&optional merge-buffer-file)
;; ediff-convert-standard-filename puts file names in the form appropriate
;; for the OS at hand.
(setq file-A (ediff-convert-standard-filename (expand-file-name file-A)))
......@@ -259,6 +260,21 @@ to invocation.")
(if (stringp file-C)
(setq file-C
(ediff-convert-standard-filename (expand-file-name file-C))))
(if (stringp merge-buffer-file)
(progn
(setq merge-buffer-file
(ediff-convert-standard-filename
(expand-file-name merge-buffer-file)))
;; check the directory exists
(or (file-exists-p (file-name-directory merge-buffer-file))
(error "Directory %s given as place to save the merge doesn't exist."
(abbreviate-file-name
(file-name-directory merge-buffer-file))))
(if (and (file-exists-p merge-buffer-file)
(file-directory-p merge-buffer-file))
(error "The merge buffer file %s must not be a directory"
(abbreviate-file-name merge-buffer-file)))
))
(let* ((control-buffer-name
(ediff-unique-buffer-name "*Ediff Control Panel" "*"))
(control-buffer (ediff-with-current-buffer buffer-A
......@@ -327,7 +343,6 @@ to invocation.")
(set-buffer buffer-C)
(insert-buffer buf)
(funcall (ediff-with-current-buffer buf major-mode))
;; after Stig@hackvan.com
(add-hook 'local-write-file-hooks 'ediff-set-merge-mode nil t)
)))
(setq buffer-read-only nil
......@@ -489,13 +504,16 @@ to invocation.")
(ediff-visible-region)
(run-hooks 'startup-hooks)
(ediff-arrange-autosave-in-merge-jobs merge-buffer-file)
(ediff-refresh-mode-lines)
(setq buffer-read-only t)
(setq ediff-session-registry
(cons control-buffer ediff-session-registry))
(ediff-update-registry)
(if (ediff-buffer-live-p ediff-meta-buffer)
(ediff-update-meta-buffer ediff-meta-buffer))
(ediff-update-meta-buffer
ediff-meta-buffer nil ediff-meta-session-number))
(run-hooks 'ediff-startup-hook)
) ; eval in control-buffer
control-buffer))
......@@ -536,7 +554,25 @@ to invocation.")
(goto-char (point-min))
(skip-chars-forward ediff-whitespace)))
;; This executes in control buffer and sets auto-save, visited file name, etc,
;; in the merge buffer
(defun ediff-arrange-autosave-in-merge-jobs (merge-buffer-file)
(if (not ediff-merge-job)
()
(if (stringp merge-buffer-file)
(setq ediff-autostore-merges t
ediff-merge-store-file merge-buffer-file))
(if (stringp ediff-merge-store-file)
(progn
;; save before leaving ctl buffer
(setq merge-buffer-file ediff-merge-store-file)
(ediff-with-current-buffer ediff-buffer-C
(set-visited-file-name merge-buffer-file))))
(ediff-with-current-buffer ediff-buffer-C
(setq buffer-offer-save t) ; ask before killing buffer
;; make sure the contents is auto-saved
(auto-save-mode 1))
))
;;; Commands for working with Ediff
......@@ -1330,13 +1366,15 @@ Used in ediff-windows/regions only."
'C ediff-visible-bounds))
)
(ediff-with-current-buffer ediff-buffer-A
(narrow-to-region
(ediff-overlay-start overl-A) (ediff-overlay-end overl-A)))
(if (ediff-overlay-buffer overl-A)
(narrow-to-region
(ediff-overlay-start overl-A) (ediff-overlay-end overl-A))))
(ediff-with-current-buffer ediff-buffer-B
(narrow-to-region
(ediff-overlay-start overl-B) (ediff-overlay-end overl-B)))
(if (ediff-overlay-buffer overl-B)
(narrow-to-region
(ediff-overlay-start overl-B) (ediff-overlay-end overl-B))))
(if ediff-3way-job
(if (and ediff-3way-job (ediff-overlay-buffer overl-C))
(ediff-with-current-buffer ediff-buffer-C
(narrow-to-region
(ediff-overlay-start overl-C) (ediff-overlay-end overl-C))))
......@@ -2291,6 +2329,7 @@ temporarily reverses the meaning of this variable."
;; restore buffer mode line id's in buffer-A/B/C
(let ((control-buffer ediff-control-buffer)
(meta-buffer ediff-meta-buffer)
(session-number ediff-meta-session-number)
;; suitable working frame
(warp-frame (if (and (ediff-window-display-p) (eq ediff-grab-mouse t))
(cond ((window-live-p ediff-window-A)
......@@ -2355,7 +2394,7 @@ temporarily reverses the meaning of this variable."
(or ediff-keep-variants (ediff-janitor 'ask)))
(run-hooks 'ediff-quit-hook)
(ediff-cleanup-meta-buffer meta-buffer)
(ediff-update-meta-buffer meta-buffer nil session-number)
;; warp mouse into a working window
(setq warp-frame ; if mouse is over a reasonable frame, use it
......@@ -2368,7 +2407,7 @@ temporarily reverses the meaning of this variable."
2 1))
(if (ediff-buffer-live-p meta-buffer)
(ediff-show-meta-buffer meta-buffer))
(ediff-show-meta-buffer meta-buffer session-number))
))
;; Returns frame under mouse, if this frame is not a minibuffer
......@@ -2391,11 +2430,11 @@ temporarily reverses the meaning of this variable."
(defun ediff-delete-temp-files ()
(if (stringp ediff-temp-file-A)
(if (and (stringp ediff-temp-file-A) (file-exists-p ediff-temp-file-A))
(delete-file ediff-temp-file-A))
(if (stringp ediff-temp-file-B)
(if (and (stringp ediff-temp-file-B) (file-exists-p ediff-temp-file-B))
(delete-file ediff-temp-file-B))
(if (stringp ediff-temp-file-C)
(if (and (stringp ediff-temp-file-C) (file-exists-p ediff-temp-file-C))
(delete-file ediff-temp-file-C)))
......@@ -2538,6 +2577,7 @@ only if this merge job is part of a group, i.e., was invoked from within
(if show-file
(progn
(message "Merge buffer saved in: %s" file)
(set-buffer-modified-p nil)
(sit-for 2)))
(if (and
(not save-and-continue)
......
......@@ -146,7 +146,8 @@
;;; Merge with Version Control
(defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev &optional startup-hooks)
(defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev
&optional startup-hooks merge-buffer-file)
;; If ANCESTOR-REV non-nil, merge with ancestor
(let (buf1 buf2 ancestor-buf)
(save-excursion
......@@ -175,12 +176,14 @@
(if ancestor-rev
(ediff-merge-buffers-with-ancestor
buf1 buf2 ancestor-buf
startup-hooks 'ediff-merge-revisions-with-ancestor)
(ediff-merge-buffers buf1 buf2 startup-hooks 'ediff-merge-revisions))
startup-hooks 'ediff-merge-revisions-with-ancestor merge-buffer-file)
(ediff-merge-buffers
buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))
))
(defun ediff-rcs-merge-internal (rev1 rev2 ancestor-rev
&optional startup-hooks)
&optional
startup-hooks merge-buffer-file)
;; If ANCESTOR-REV non-nil, merge with ancestor
(let (buf1 buf2 ancestor-buf)
(setq buf1 (rcs-ediff-view-revision rev1)
......@@ -196,11 +199,13 @@
(if ancestor-rev
(ediff-merge-buffers-with-ancestor
buf1 buf2 ancestor-buf
startup-hooks 'ediff-merge-revisions-with-ancestor)
(ediff-merge-buffers buf1 buf2 startup-hooks 'ediff-merge-revisions))))
startup-hooks 'ediff-merge-revisions-with-ancestor merge-buffer-file)
(ediff-merge-buffers
buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))))
(defun ediff-generic-sc-merge-internal (rev1 rev2 ancestor-rev
&optional startup-hooks)
&optional
startup-hooks merge-buffer-file)
;; If ANCESTOR-REV non-nil, merge with ancestor
(let (buf1 buf2 ancestor-buf)
(save-excursion
......@@ -220,8 +225,9 @@
(if ancestor-rev
(ediff-merge-buffers-with-ancestor
buf1 buf2 ancestor-buf
startup-hooks 'ediff-merge-revisions-with-ancestor)
(ediff-merge-buffers buf1 buf2 startup-hooks 'ediff-merge-revisions))))
startup-hooks 'ediff-merge-revisions-with-ancestor merge-buffer-file)
(ediff-merge-buffers
buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))))
;; PCL-CVS.el support
......@@ -254,7 +260,8 @@
;; Works like with other interfaces: runs ediff on versions of the file in the
;; current buffer.
(defun ediff-pcl-cvs-merge-internal (rev1 rev2 ancestor-rev
&optional startup-hooks)
&optional
startup-hooks merge-buffer-file)
;; Ediff-merge appropriate revisions of the selected file.
;; If REV1 is "" then use the latest revision.
;; If REV2 is "" then merge current buffer's file with REV1.
......@@ -292,9 +299,9 @@
(if ancestor-buf
(ediff-merge-buffers-with-ancestor
buf1 buf2 ancestor-buf startup-hooks
'ediff-merge-revisions-with-ancestor)
'ediff-merge-revisions-with-ancestor merge-buffer-file)
(ediff-merge-buffers
buf1 buf2 startup-hooks 'ediff-merge-revisions))
buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))
))
(defun ediff-pcl-cvs-view-revision (file rev)
......@@ -324,7 +331,7 @@
(defun cvs-run-ediff-on-file-descriptor (tin)
;; This is a replacement for cvs-emerge-mode
;; Run after cvs-update.
;; Runs after cvs-update.
;; Ediff-merge appropriate revisions of the selected file.
(let* ((fileinfo (tin-cookie cvs-cookie-handle tin))
(type (cvs-fileinfo->type fileinfo))
......
......@@ -6,8 +6,8 @@
;; Created: February 2, 1994
;; Keywords: comparing, merging, patching, version control.
(defconst ediff-version "2.671" "The current version of Ediff")
(defconst ediff-date "September 23, 1997" "Date of last update")
(defconst ediff-version "2.69" "The current version of Ediff")
(defconst ediff-date "October 10, 1997" "Date of last update")
;; This file is part of GNU Emacs.
......@@ -314,7 +314,9 @@
(ediff-verify-file-buffer))))
(set file-var file)))
(defun ediff-files-internal (file-A file-B file-C startup-hooks job-name)
;; MERGE-BUFFER-FILE is the file to be associated with the merge buffer
(defun ediff-files-internal (file-A file-B file-C startup-hooks job-name
&optional merge-buffer-file)
(let (buf-A buf-B buf-C)
(message "Reading file %s ... " file-A)
;;(sit-for 0)
......@@ -335,7 +337,8 @@
buf-B file-B
buf-C file-C
startup-hooks
(list (cons 'ediff-job-name job-name)))))
(list (cons 'ediff-job-name job-name))
merge-buffer-file)))
;;;###autoload
......@@ -394,7 +397,9 @@
(defun ediff-buffers-internal (buf-A buf-B buf-C startup-hooks job-name)
;; MERGE-BUFFER-FILE is the file to be associated with the merge buffer
(defun ediff-buffers-internal (buf-A buf-B buf-C startup-hooks job-name
&optional merge-buffer-file)
(let* ((buf-A-file-name (buffer-file-name (get-buffer buf-A)))
(buf-B-file-name (buffer-file-name (get-buffer buf-B)))
(buf-C-is-alive (ediff-buffer-live-p buf-C))
......@@ -432,7 +437,7 @@
))
startup-hooks)
(list (cons 'ediff-job-name job-name))
)))
merge-buffer-file)))
;;; Directory and file group operations
......@@ -938,8 +943,7 @@ Continue anyway? (y/n) "))
(list (cons 'ediff-word-mode word-mode)
(cons 'ediff-narrow-bounds (list overl-A overl-B))
(cons 'ediff-job-name job-name))
setup-parameters)
)
setup-parameters))
))
......@@ -954,7 +958,10 @@ Continue anyway? (y/n) "))
(set-buffer-modified-p nil)))
;;;###autoload
(defun ediff-merge-files (file-A file-B &optional startup-hooks)
(defun ediff-merge-files (file-A file-B
;; MERGE-BUFFER-FILE is the file to be
;; associated with the merge buffer
&optional startup-hooks merge-buffer-file)
"Merge two files without ancestor."
(interactive
(let ((dir-A (if ediff-use-last-dir
......@@ -986,11 +993,17 @@ Continue anyway? (y/n) "))
file-B)
nil ; file-C
startup-hooks
'ediff-merge-files))
'ediff-merge-files
merge-buffer-file))
;;;###autoload
(defun ediff-merge-files-with-ancestor (file-A file-B file-ancestor
&optional startup-hooks)
&optional
startup-hooks
;; MERGE-BUFFER-FILE is the file
;; to be associated with the
;; merge buffer
merge-buffer-file)
"Merge two files with ancestor."
(interactive
(let ((dir-A (if ediff-use-last-dir
......@@ -1036,13 +1049,18 @@ Continue anyway? (y/n) "))
file-B)
file-ancestor
startup-hooks
'ediff-merge-files-with-ancestor))
'ediff-merge-files-with-ancestor
merge-buffer-file))
;;;###autoload
(defalias 'ediff-merge-with-ancestor 'ediff-merge-files-with-ancestor)
;;;###autoload
(defun ediff-merge-buffers (buffer-A buffer-B &optional startup-hooks job-name)
(defun ediff-merge-buffers (buffer-A buffer-B
&optional
;; MERGE-BUFFER-FILE is the file to be
;; associated with the merge buffer
startup-hooks job-name merge-buffer-file)
"Merge buffers without ancestor."
(interactive
(let (bf)
......@@ -1059,12 +1077,17 @@ Continue anyway? (y/n) "))
(setq startup-hooks (cons 'ediff-merge-on-startup startup-hooks))
(or job-name (setq job-name 'ediff-merge-buffers))
(ediff-buffers-internal
buffer-A buffer-B nil startup-hooks job-name))
buffer-A buffer-B nil startup-hooks job-name merge-buffer-file))
;;;###autoload
(defun ediff-merge-buffers-with-ancestor (buffer-A
buffer-B buffer-ancestor
&optional startup-hooks job-name)
(defun ediff-merge-buffers-with-ancestor (buffer-A buffer-B buffer-ancestor
&optional
startup-hooks
job-name
;; MERGE-BUFFER-FILE is the
;; file to be associated
;; with the merge buffer
merge-buffer-file)
"Merge buffers with ancestor."
(interactive
(let (bf bff)
......@@ -1089,11 +1112,12 @@ Continue anyway? (y/n) "))
(setq startup-hooks (cons 'ediff-merge-on-startup startup-hooks))
(or job-name (setq job-name 'ediff-merge-buffers-with-ancestor))
(ediff-buffers-internal
buffer-A buffer-B buffer-ancestor startup-hooks job-name))
buffer-A buffer-B buffer-ancestor startup-hooks job-name merge-buffer-file))
;;;###autoload
(defun ediff-merge-revisions (&optional file startup-hooks)
(defun ediff-merge-revisions (&optional file startup-hooks merge-buffer-file)
;; MERGE-BUFFER-FILE is the file to be associated with the merge buffer
"Run Ediff by merging two revisions of a file.
The file is the optional FILE argument or the file visited by the current
buffer."
......@@ -1116,11 +1140,16 @@ buffer."