Commit 92c51e07 authored by Michael Kifer's avatar Michael Kifer
Browse files

*** empty log message ***

parent f49e1445
......@@ -140,31 +140,45 @@ one optional arguments, diff-number to refine.")
;; Run the diff program on FILE1 and FILE2 and put the output in DIFF-BUFFER
;; Return the size of DIFF-BUFFER
(defun ediff-make-diff2-buffer (diff-buffer file1 file2)
(cond ((< (ediff-file-size file1) 0)
(message "Can't diff remote files: %s"
(ediff-abbreviate-file-name file1))
(sit-for 2)
;; 1 is an error exit code
1)
((< (ediff-file-size file2) 0)
(message "Can't diff remote file: %s"
(ediff-abbreviate-file-name file2))
(sit-for 2)
(message "")
;; 1 is an error exit code
1)
(t (message "Computing differences between %s and %s ..."
(file-name-nondirectory file1)
(file-name-nondirectory file2))
;; this erases the diff buffer automatically
(ediff-exec-process ediff-diff-program
diff-buffer
'synchronize
ediff-diff-options file1 file2)
;;(message "Computing differences ... done")
(let ((file1-size (ediff-file-size file1))
(file2-size (ediff-file-size file2)))
(cond ((not (numberp file1-size))
(message "Can't find file: %s"
(ediff-abbreviate-file-name file1))
(sit-for 2)
;; 1 is an error exit code
1)
((not (numberp file2-size))
(message "Can't find file: %s"
(ediff-abbreviate-file-name file2))
(sit-for 2)
;; 1 is an error exit code
1)
((< file1-size 0)
(message "Can't diff remote files: %s"
(ediff-abbreviate-file-name file1))
(sit-for 2)
;; 1 is an error exit code
1)
((< file2-size 0)
(message "Can't diff remote file: %s"
(ediff-abbreviate-file-name file2))
(sit-for 2)
(message "")
(ediff-eval-in-buffer diff-buffer
(buffer-size)))))
;; 1 is an error exit code
1)
(t (message "Computing differences between %s and %s ..."
(file-name-nondirectory file1)
(file-name-nondirectory file2))
;; this erases the diff buffer automatically
(ediff-exec-process ediff-diff-program
diff-buffer
'synchronize
ediff-diff-options file1 file2)
;;(message "Computing differences ... done")
(message "")
(ediff-eval-in-buffer diff-buffer
(buffer-size))))))
......@@ -1187,6 +1201,7 @@ argument to `skip-chars-forward'."
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
;;; End:
(provide 'ediff-diff)
......
......@@ -299,7 +299,7 @@
;; misc
(autoload 'ediff-show-registry
"ediff-meta"
"ediff-mult"
"Display the registry of active Ediff sessions."
t)
(autoload 'ediff-documentation
......
This diff is collapsed.
......@@ -264,6 +264,12 @@ Combining is done according to the specifications in variable
)))
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
;;; End:
(provide 'ediff-merg)
;; ediff-merg.el ends here
This diff is collapsed.
......@@ -32,7 +32,25 @@
(defvar ediff-backup-extension
(if (memq system-type '(vax-vms axp-vms emx ms-dos windows-nt windows-95))
"_orig" ".orig")
"Default backup extension for the patch program.")
"Backup extension used by the patch program.
See also `ediff-backup-specs'.")
(defvar ediff-backup-specs (format "-b %s" ediff-backup-extension)
"*Backup directives to pass to the patch program.
Ediff requires that the old version of the file \(before applying the patch\)
is saved in a file named `the-patch-file.extension'. Usually `extension' is
`.orig', but this can be changed by the user and may depend on the system.
Therefore, Ediff needs to know the backup extension used by the patch program.
Some versions of the patch program let you specify `-b backup-extension'.
Other versions only permit `-b', which assumes some canned extension
\(usually `.orig'\).
Note that both `ediff-backup-extension' and `ediff-backup-specs'
must be properly set. If your patch program takes the option `-b',
but not `-b extension', the variable `ediff-backup-extension' must
still be set so Ediff will know which extension to use.")
(defvar ediff-patch-default-directory nil
"*Default directory to look for patches.")
......@@ -46,9 +64,16 @@
"*Regexp matching filename 2-liners at the start of each context diff.")
(defvar ediff-patch-program "patch"
"*Name of the program that applies patches.")
(defvar ediff-patch-options ""
"*Options to pass to ediff-patch-program.")
"*Name of the program that applies patches.
It is recommended to use GNU-compatible versions.")
(defvar ediff-patch-options "-f"
"*Options to pass to ediff-patch-program.
Note: the `-b' option should be specified in `ediff-backup-specs'.
It is recommended to pass the `-f' option to the patch program, so it won't ask
questions. However, some implementations don't accept this option, in which
case the default value for this variable should be changed.")
;; The buffer of the patch file. Local to control buffer.
(ediff-defvar-local ediff-patchbufer nil "")
......@@ -113,9 +138,9 @@
(setq mark2 (move-marker (make-marker) (match-beginning 0))
mark2-end (match-end 0)
beg1 (or (match-beginning 2) (match-beginning 4))
end1 (or (match-end 2) (match-end 4))
beg2 (or (match-beginning 3) (match-beginning 5))
end2 (or (match-end 3) (match-end 5)))
end1 (or (match-end 2) (match-end 4))
beg2 (or (match-beginning 3) (match-beginning 5))
end2 (or (match-end 3) (match-end 5)))
;; possible-file-names is holding the new file names until we
;; insert the old file name in the patch map
;; It is a pair (filename from 1st header line . fn from 2nd line)
......@@ -199,6 +224,7 @@
(princ
(format "
The patch file contains a context diff for
%s
%s
......@@ -320,7 +346,8 @@ Else, read patch file into a new buffer."
(current-buffer) 'must-match)))
(setq patch-buf
(find-file-noselect
(read-file-name "Which file contains the patch? " dir))))
(read-file-name "Which file contains the patch? "
dir nil 'must-match))))
(ediff-eval-in-buffer patch-buf
(goto-char (point-min))
......@@ -406,15 +433,7 @@ Else, read patch file into a new buffer."
&optional startup-hooks)
(setq source-filename (expand-file-name source-filename))
(let* ((backup-extension
;; if the user specified a -b option, extract the backup
;; extension from there; else use ediff-backup-extension
(substring ediff-patch-options
(if (string-match "-b[ \t]+" ediff-patch-options)
(match-end 0) 0)
(if (string-match "-b[ \t]+[^ \t]+" ediff-patch-options)
(match-end 0) 0)))
(shell-file-name ediff-shell)
(let* ((shell-file-name ediff-shell)
(patch-diagnostics (get-buffer-create "*ediff patch diagnostics*"))
;; ediff-find-file may use a temp file to do the patch
;; so, we save source-filename and true-source-filename as a var
......@@ -422,12 +441,9 @@ Else, read patch file into a new buffer."
;; file for the purpose of patching.
(true-source-filename source-filename)
(target-filename source-filename)
target-buf buf-to-patch file-name-magic-p ctl-buf backup-style)
target-buf buf-to-patch file-name-magic-p
patch-return-code ctl-buf backup-style aux-wind)
;; if the user didn't specify a backup extension, use
;; ediff-backup-extension
(if (string= backup-extension "")
(setq backup-extension ediff-backup-extension))
(if (string-match "-V" ediff-patch-options)
(error
"Ediff doesn't take the -V option in `ediff-patch-options'--sorry"))
......@@ -457,14 +473,21 @@ Else, read patch file into a new buffer."
;; fix environment for gnu patch, so it won't make numbered extensions
(setq backup-style (getenv "VERSION_CONTROL"))
(setenv "VERSION_CONTROL" nil)
;; always pass patch the -f option, so it won't ask any questions
(shell-command-on-region
(point-min) (point-max)
(format "%s -f %s -b %s %s"
ediff-patch-program ediff-patch-options
backup-extension
(expand-file-name true-source-filename))
t)
(setq patch-return-code
(call-process-region
(point-min) (point-max)
shell-file-name
t ; delete region (which contains the patch
t ; insert output (patch diagnostics) in current buffer
nil ; don't redisplay
shell-command-switch ; usually -c
(format "%s %s %s %s"
ediff-patch-program
ediff-patch-options
ediff-backup-specs
(expand-file-name true-source-filename))
))
;; restore environment for gnu patch
(setenv "VERSION_CONTROL" backup-style))
......@@ -474,9 +497,46 @@ Else, read patch file into a new buffer."
(switch-to-buffer patch-diagnostics)
(sit-for 0) ; synchronize - let the user see diagnostics
(or (file-exists-p (concat true-source-filename backup-extension))
(error "Patch appears to have failed"))
(or (and (eq patch-return-code 0) ; patch reported success
(file-exists-p
(concat true-source-filename ediff-backup-extension)))
(progn
(with-output-to-temp-buffer ediff-msg-buffer
(princ (format "
Patch has failed OR the backup version of the patched file was not created by
the patch program.
A possible reason is that the values of the variables
ediff-patch-options = %S
ediff-backup-extension = %S
ediff-backup-specs = %S
are not appropriate for the program specified in the variable
ediff-patch-program = %S
See Ediff on-line manual for more details on these variables.
\(Or use a GNU-compatible patch program and stay out of trouble.\)
Type any key to continue... "
ediff-patch-options
ediff-backup-extension
ediff-backup-specs
ediff-patch-program)))
(beep 1)
(if (setq aux-wind (get-buffer-window ediff-msg-buffer))
(progn
(select-window aux-wind)
(goto-char (point-max))))
(read-char-exclusive)
(if aux-wind (bury-buffer)) ; ediff-msg-buffer
(if (setq aux-wind (get-buffer-window patch-diagnostics))
(progn
(select-window aux-wind)
(bury-buffer)))
(error "Patch appears to have failed")))
;; If black magic is involved, apply patch to a temp copy of the
;; file. Otherwise, apply patch to the orig copy. If patch is applied
;; to temp copy, we name the result old-name_patched for local files
......@@ -487,7 +547,8 @@ Else, read patch file into a new buffer."
;; the original.
(if (not file-name-magic-p)
(ediff-eval-in-buffer buf-to-patch
(set-visited-file-name (concat source-filename backup-extension))
(set-visited-file-name
(concat source-filename ediff-backup-extension))
(set-buffer-modified-p nil))
;; Black magic in effect.
......@@ -504,7 +565,7 @@ Else, read patch file into a new buffer."
(rename-file true-source-filename target-filename t)
;; arrange that the temp copy of orig will be deleted
(rename-file (concat true-source-filename backup-extension)
(rename-file (concat true-source-filename ediff-backup-extension)
true-source-filename t))
;; make orig buffer read-only
......@@ -557,6 +618,7 @@ Else, read patch file into a new buffer."
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
;;; End:
(provide 'ediff-ptch)
......
This diff is collapsed.
......@@ -31,15 +31,16 @@
(defvar cvs-program)
(defvar cvs-cookie-handle)
(eval-when-compile
(load "pcl-cvs" 'noerror)
(load "rcs" 'noerror)
(load "generic-sc" 'noerror)
(load "vc" 'noerror))
(and noninteractive
(eval-when-compile
(load "pcl-cvs" 'noerror)
(load "rcs" 'noerror)
(load "generic-sc" 'noerror)
(load "vc" 'noerror)))
;; end pacifier
;; VC.el support
(defun vc-ediff-internal (rev1 rev2 &optional startup-hooks)
(defun ediff-vc-internal (rev1 rev2 &optional startup-hooks)
;; Run Ediff on versions of the current buffer.
;; If REV2 is "" then compare current buffer with REV1.
;; If the current buffer is named `F', the version is named `F.~REV~'.
......@@ -103,7 +104,7 @@
(erase-buffer))
buf))
(defun rcs-ediff-internal (rev1 rev2 &optional startup-hooks)
(defun ediff-rcs-internal (rev1 rev2 &optional startup-hooks)
;; Run Ediff on versions of the current buffer.
;; If REV2 is "" then use current buffer.
(let ((rev2buf (if (string= rev2 "")
......@@ -124,7 +125,7 @@
(eval "main/LATEST"))
(t (eval ""))))
(defun generic-sc-ediff-internal (rev1 rev2 &optional startup-hooks)
(defun ediff-generic-sc-internal (rev1 rev2 &optional startup-hooks)
;; Run Ediff on versions of the current buffer.
;; If REV2 is "" then compare current buffer with REV1.
;; If the current buffer is named `F', the version is named `F.~REV~'.
......@@ -144,7 +145,7 @@
;;; Merge with Version Control
(defun vc-ediff-merge-internal (rev1 rev2 ancestor-rev &optional startup-hooks)
(defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev &optional startup-hooks)
;; If ANCESTOR-REV non-nil, merge with ancestor
(let (buf1 buf2 ancestor-buf)
(save-excursion
......@@ -177,7 +178,7 @@
(ediff-merge-buffers buf1 buf2 startup-hooks 'ediff-merge-revisions))
))
(defun rcs-ediff-merge-internal (rev1 rev2 ancestor-rev
(defun ediff-rcs-merge-internal (rev1 rev2 ancestor-rev
&optional startup-hooks)
;; If ANCESTOR-REV non-nil, merge with ancestor
(let (buf1 buf2 ancestor-buf)
......@@ -197,7 +198,7 @@
startup-hooks 'ediff-merge-revisions-with-ancestor)
(ediff-merge-buffers buf1 buf2 startup-hooks 'ediff-merge-revisions))))
(defun generic-sc-ediff-merge-internal (rev1 rev2 ancestor-rev
(defun ediff-generic-sc-merge-internal (rev1 rev2 ancestor-rev
&optional startup-hooks)
;; If ANCESTOR-REV non-nil, merge with ancestor
(let (buf1 buf2 ancestor-buf)
......@@ -224,7 +225,7 @@
;; PCL-CVS.el support
(defun pcl-cvs-ediff-internal (rev1 rev2 &optional startup-hooks)
(defun ediff-pcl-cvs-internal (rev1 rev2 &optional startup-hooks)
;; Run Ediff on a pair of revisions of the current buffer.
;; If REV1 is "", use the latest revision.
;; If REV2 is "", use the current buffer as the second file to compare.
......@@ -251,7 +252,7 @@
;; This function is the standard Ediff's interface to pcl-cvs.
;; Works like with other interfaces: runs ediff on versions of the file in the
;; current buffer.
(defun pcl-cvs-ediff-merge-internal (rev1 rev2 ancestor-rev
(defun ediff-pcl-cvs-merge-internal (rev1 rev2 ancestor-rev
&optional startup-hooks)
;; Ediff-merge appropriate revisions of the selected file.
;; If REV1 is "" then use the latest revision.
......@@ -358,6 +359,7 @@
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
;;; End:
(provide 'ediff-vers)
......
......@@ -853,7 +853,7 @@ into icons, regardless of the window manager.")
;; 1 more line for the modeline
(setq lines (1+ (count-lines (point-min) (point-max)))
fheight lines
fwidth (+ (ediff-help-message-line-length) 2)
fwidth (+ (ediff-help-message-line-length) 1)
adjusted-parameters (append (list
;; possibly change surrogate minibuffer
(cons 'minibuffer
......@@ -1061,7 +1061,7 @@ It assumes that it is called from within the control buffer."
(setq mode-line-format
(list (if (ediff-narrow-control-frame-p) " " "-- ")
mode-line-buffer-identification
" Quick Help"))
" Quick Help"))
;; control buffer id
(setq mode-line-buffer-identification
(if (ediff-narrow-control-frame-p)
......@@ -1199,6 +1199,7 @@ It assumes that it is called from within the control buffer."
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
;;; End:
(provide 'ediff-wind)
......
......@@ -6,8 +6,8 @@
;; Created: February 2, 1994
;; Keywords: comparing, merging, patching, version control.
(defconst ediff-version "2.61" "The current version of Ediff")
(defconst ediff-date "June 10, 1996" "Date of last update")
(defconst ediff-version "2.63" "The current version of Ediff")
(defconst ediff-date "September 12, 1996" "Date of last update")
;; This file is part of GNU Emacs.
......@@ -110,11 +110,13 @@
;; ediff-mult is always required, because of the registry stuff
(require 'ediff-mult)
(eval-when-compile
(load "dired")
(load-file "./ediff-ptch.el")
(load-file "./ediff-vers.el")
(load "pcl-cvs" 'noerror))
(and noninteractive
(eval-when-compile
(let ((load-path (cons (expand-file-name ".") load-path)))
(load-library "dired")
(load-file "ediff-ptch.el")
(load-file "ediff-vers.el")
(load "pcl-cvs" 'noerror))))
(defvar ediff-use-last-dir nil
"*If t, Ediff uses previous directory as default when reading file name.")
......@@ -127,6 +129,8 @@
"Last directory used by an Ediff command for file-C.")
(defvar ediff-last-dir-ancestor nil
"Last directory used by an Ediff command for the ancestor file.")
(defvar ediff-last-merge-autostore-dir
"Last directory used by an Ediff command as the output directory for merge.")
;; Some defvars to reduce the number of compiler warnings
(defvar cvs-cookie-handle)
......@@ -562,7 +566,7 @@ can be used to filter out certain file names."
The second argument, REGEXP, is a regular expression that filters the file
names. Only the files that are under revision control are taken into account."
(interactive
(let ((dir-A (ediff-get-default-directory-name)))
(let* ((dir-A (ediff-get-default-directory-name)))
(list (ediff-read-file-name
"Directory to merge with revisions:" dir-A nil)
(read-string "Filter through regular expression: "
......@@ -581,7 +585,7 @@ names. Only the files that are under revision control are taken into account."
The second argument, REGEXP, is a regular expression that filters the file
names. Only the files that are under revision control are taken into account."
(interactive
(let ((dir-A (ediff-get-default-directory-name)))
(let* ((dir-A (ediff-get-default-directory-name)))
(list (ediff-read-file-name
"Directory to merge with revisions and ancestors:" dir-A nil)
(read-string "Filter through regular expression: "
......@@ -605,8 +609,8 @@ names. Only the files that are under revision control are taken into account."
;; The third argument, REGEXP, is a regular expression that can be used to
;; filter out certain file names.
;; JOBNAME is the symbol indicating the meta-job to be performed.
(defun ediff-directories-internal (dir1 dir2 dir3 regexp
action jobname
;; MERGE-DIR is the directory in which to store merged files.
(defun ediff-directories-internal (dir1 dir2 dir3 regexp action jobname
&optional startup-hooks)
;; ediff-read-file-name is set to attach a previously entered file name if
;; the currently entered file is a directory. This code takes care of that.
......@@ -626,9 +630,31 @@ names. Only the files that are under revision control are taken into account."
(error "Directories B and C are the same: %s" dir1)))
(let (diffs ; var where ediff-intersect-directories returns the diff list
merge-autostore-dir
file-list meta-buf)
(if (and ediff-autostore-merges (ediff-merge-metajob jobname))
(setq merge-autostore-dir
(ediff-read-file-name "Directory to save merged files:"
(if ediff-use-last-dir
ediff-last-merge-autostore-dir
(ediff-strip-last-dir dir1))
nil)))
;; verify we are not merging into an orig directory
(if (stringp merge-autostore-dir)
(cond ((and (stringp dir1) (string= merge-autostore-dir dir1))
(or (y-or-n-p "Merge directory same as directory A, sure? ")
(error "Directory merge aborted")))
((and (stringp dir2) (string= merge-autostore-dir dir2))
(or (y-or-n-p "Merge directory same as directory B, sure? ")
(error "Directory merge aborted")))
((and (stringp dir3) (string= merge-autostore-dir dir3))
(or (y-or-n-p
"Merge directory same as ancestor directory, sure? ")
(error "Directory merge aborted")))))
(setq file-list (ediff-intersect-directories
jobname 'diffs regexp dir1 dir2 dir3))
jobname 'diffs
regexp dir1 dir2 dir3 merge-autostore-dir))
(setq startup-hooks
;; this sets various vars in the meta buffer inside
;; ediff-prepare-meta-buffer
......@@ -651,9 +677,26 @@ names. Only the files that are under revision control are taken into account."
(defun ediff-directory-revisions-internal (dir1 regexp action jobname
&optional startup-hooks)
(setq dir1 (if (file-directory-p dir1) dir1 (file-name-directory dir1)))
(let (file-list meta-buf)
(let (file-list meta-buf merge-autostore-dir)
(if (and ediff-autostore-merges (ediff-merge-metajob jobname))
(setq merge-autostore-dir
(ediff-read-file-name "Directory to save merged files:"
(if ediff-use-last-dir
ediff-last-merge-autostore-dir
(ediff-strip-last-dir dir1))
nil)))
;; verify merge-autostore-dir != dir1
(if (and (stringp merge-autostore-dir)
(stringp dir1)
(string= merge-autostore-dir dir1))
(or (y-or-n-p
"Directory for saving merges is the same as directory A. Sure? ")
(error "Merge of directory revisions aborted")))
(setq file-list
(ediff-get-directory-files-under-revision jobname regexp dir1))
(ediff-get-directory-files-under-revision
jobname regexp dir1 merge-autostore-dir))
(setq startup-hooks
;; this sets various vars in the meta buffer inside
;; ediff-prepare-meta-buffer
......@@ -804,7 +847,6 @@ lines. For small regions, use `ediff-regions-wordwise'."
(setq reg-B-beg (region-beginning)
reg-B-end (region-end))
;; enlarge the region to hold full lines
(goto-char reg-A-beg)
(goto-char reg-B-beg)
(beginning-of-line)
(setq reg-B-beg (point))
......@@ -1052,7 +1094,7 @@ buffer."
(ediff-load-version-control)
;; ancestor-revision=nil
(funcall
(intern (format "%S-ediff-merge-internal" ediff-version-control-package))
(intern (format "ediff-%S-merge-internal" ediff-version-control-package))
rev1 rev2 nil startup-hooks)))
......@@ -1084,7 +1126,7 @@ buffer."
(file-name-nondirectory file) "current buffer"))))
(ediff-load-version-control)
(funcall
(intern (format "%S-ediff-merge-internal" ediff-version-control-package))
(intern (format "ediff-%S-merge-internal" ediff-version-control-package))
rev1 rev2 ancestor-rev startup-hooks)))
;;;###autoload
......@@ -1168,7 +1210,7 @@ buffer. Use `vc.el' or `rcs.el' depending on `ediff-version-control-package'."
(file-name-nondirectory file) "current buffer"))))
(ediff-load-version-control)
(funcall
(intern (format "%S-ediff-internal" ediff-version-control-package))
(intern (format "ediff-%S-internal" ediff-version-control-package))
rev1 rev2 startup-hooks)
))
......@@ -1198,8 +1240,9 @@ When called interactively, displays the version."
;;;###autoload
(defun ediff-documentation ()
"Display Ediff's manual."
(defun ediff-documentation (&optional node)
"Display Ediff's manual.
With optional NODE, goes to that node."
(interactive)
(let ((ctl-window ediff-control-window)
(ctl-buf ediff-control-buffer))
......@@ -1209,15 +1252,13 @@ When called interactively, displays the version."
(progn
(pop-to-buffer (get-buffer-create "*info*"))
(info (if ediff-xemacs-p "ediff.info" "ediff"))
(message "Type `i' to search for a specific topic"))
(if node
(Info-goto-node node)
(message "Type `i' to search for a specific topic"))
(raise-frame (selected-frame)))
(error (beep 1)
(with-output-to-temp-buffer ediff-msg-buffer
(princ (format "
The Info file for Ediff does not seem to be installed.
This file is part of the distribution of %sEmacs.
Please contact your system administrator. "
(if ediff-xemacs-p "X" ""))))
(princ ediff-BAD-INFO))
(if (window-live-p ctl-window)
(progn
(select-window ctl-window)
......@@ -1229,6 +1270,7 @@ Please contact your system administrator. "
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
;;; End:
(provide 'ediff)
......
......@@ -553,7 +553,11 @@ to write a custom function, similar to `vip-ex-nontrivial-find-file-unix'."
(setq tmp (cdr