diff lisp/ediff/ediff.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents 0293115a14e9
children c7528f8e288d
line wrap: on
line diff
--- a/lisp/ediff/ediff.el	Mon Aug 13 09:00:04 2007 +0200
+++ b/lisp/ediff/ediff.el	Mon Aug 13 09:02:59 2007 +0200
@@ -1,13 +1,13 @@
 ;;; ediff.el --- a comprehensive visual interface to diff & patch
 
-;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.sunysb.edu>
 ;; Created: February 2, 1994
 ;; Keywords: comparing, merging, patching, version control.
 
-(defconst ediff-version "2.64" "The current version of Ediff")
-(defconst ediff-date "January 7, 1997" "Date of last update")  
+(defconst ediff-version "2.61" "The current version of Ediff")
+(defconst ediff-date "June 10, 1996" "Date of last update")  
 
 
 ;; This file is part of GNU Emacs.
@@ -106,29 +106,15 @@
 
 ;;; Code:
 
-(provide 'ediff)
+(require 'ediff-init)
+;; ediff-mult is always required, because of the registry stuff
+(require 'ediff-mult)
 
-;; Compiler pacifier
-(and noninteractive
-     (eval-when-compile
-	 (load-library "dired")
-	 (load-library "info")
-	 (load "pcl-cvs" 'noerror)))
 (eval-when-compile
-  (let ((load-path (cons (expand-file-name ".") load-path)))
-    (or (featurep 'ediff-init)
-	(load "ediff-init.el" nil nil 'nosuffix))
-    (or (featurep 'ediff-mult)
-	(load "ediff-mult.el" nil nil 'nosuffix))
-    (or (featurep 'ediff-ptch)
-	(load "ediff-ptch.el" nil nil 'nosuffix))
-    (or (featurep 'ediff-vers)
-	(load "ediff-vers.el" nil nil 'nosuffix))
-    ))
-;; end pacifier
-
-(require 'ediff-init)
-(require 'ediff-mult)  ; required because of the registry stuff
+  (load "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.")
@@ -141,8 +127,6 @@
   "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)
@@ -288,8 +272,8 @@
   
     (ediff-eval-in-buffer (symbol-value buffer-name)
       (widen) ; Make sure the entire file is seen
-      (cond (file-magic  ;   file has a handler, such as jka-compr-handler or
-	     		 ;;; ange-ftp-hook-function--arrange for temp file
+      (cond (file-magic  ;; file has handler, such as jka-compr-handler or
+	     ;; ange-ftp-hook-function--arrange for temp file
 	     (ediff-verify-file-buffer 'magic)
 	     (setq file
 		   (ediff-make-temp-file
@@ -621,8 +605,8 @@
 ;; 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.
-;; MERGE-DIR is the directory in which to store merged files.
-(defun ediff-directories-internal (dir1 dir2 dir3 regexp action jobname 
+(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.
@@ -642,31 +626,9 @@
 	 (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 merge-autostore-dir))
+		     jobname 'diffs regexp dir1 dir2 dir3))
     (setq startup-hooks
 	  ;; this sets various vars in the meta buffer inside
 	  ;; ediff-prepare-meta-buffer
@@ -689,26 +651,9 @@
 (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 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")))
-    
+  (let (file-list meta-buf)
     (setq file-list
-	  (ediff-get-directory-files-under-revision
-	   jobname regexp dir1 merge-autostore-dir))
+	  (ediff-get-directory-files-under-revision jobname regexp dir1))
     (setq startup-hooks
 	  ;; this sets various vars in the meta buffer inside
 	  ;; ediff-prepare-meta-buffer
@@ -859,6 +804,7 @@
       (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))
@@ -1106,14 +1052,14 @@
     (ediff-load-version-control)
     ;; ancestor-revision=nil
     (funcall
-     (intern (format "ediff-%S-merge-internal" ediff-version-control-package))
+     (intern (format "%S-ediff-merge-internal" ediff-version-control-package))
      rev1 rev2 nil startup-hooks)))
     
 
 ;;;###autoload
 (defun ediff-merge-revisions-with-ancestor (&optional file startup-hooks)
   "Run Ediff by merging two revisions of a file with a common ancestor.
-The file is the the optional FILE argument or the file visited by the current
+The file is the optional FILE argument or the file visited by the current
 buffer."
   (interactive)
   (if (stringp file) (find-file file))
@@ -1138,7 +1084,7 @@
 		(file-name-nondirectory file) "current buffer"))))
     (ediff-load-version-control)
     (funcall
-     (intern (format "ediff-%S-merge-internal" ediff-version-control-package))
+     (intern (format "%S-ediff-merge-internal" ediff-version-control-package))
      rev1 rev2 ancestor-rev startup-hooks)))
 
 ;;;###autoload
@@ -1222,7 +1168,7 @@
 		       (file-name-nondirectory file) "current buffer"))))
     (ediff-load-version-control)
     (funcall
-     (intern (format "ediff-%S-internal" ediff-version-control-package))
+     (intern (format "%S-ediff-internal" ediff-version-control-package))
      rev1 rev2 startup-hooks)
     ))
    
@@ -1252,9 +1198,8 @@
 
 
 ;;;###autoload
-(defun ediff-documentation (&optional node)
-  "Display Ediff's manual.
-With optional NODE, goes to that node."
+(defun ediff-documentation ()
+  "Display Ediff's manual."
   (interactive)
   (let ((ctl-window ediff-control-window)
 	(ctl-buf ediff-control-buffer))
@@ -1264,13 +1209,15 @@
 	(progn
 	  (pop-to-buffer (get-buffer-create "*info*"))
 	  (info (if ediff-xemacs-p "ediff.info" "ediff"))
-	  (if node
-	      (Info-goto-node node)
-	    (message "Type `i' to search for a specific topic"))
-	  (raise-frame (selected-frame)))
+	  (message "Type `i' to search for a specific topic"))
       (error (beep 1)
 	     (with-output-to-temp-buffer ediff-msg-buffer
-	       (princ ediff-BAD-INFO))
+	       (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" ""))))
 	     (if (window-live-p ctl-window)
 		 (progn
 		   (select-window ctl-window)
@@ -1282,9 +1229,9 @@
 ;;; 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)
 (require 'ediff-util)
 
 ;;; ediff.el ends here