]> code.delx.au - gnu-emacs/blobdiff - lisp/ediff.el
(ediff-even-diff-face-A): Fix spelling.
[gnu-emacs] / lisp / ediff.el
index d27b08b159e8c6808dc59968fbec6492e7d692ed..4e6cd8667facefbf09766554952458b85b00fc57 100644 (file)
@@ -6,8 +6,8 @@
 ;; Created: February 2, 1994
 ;; Keywords: comparing, merging, patching, version control.
 
-(defconst ediff-version "2.67" "The current version of Ediff")
-(defconst ediff-date "July 31, 1997" "Date of last update")  
+(defconst ediff-version "2.70.2" "The current version of Ediff")
+(defconst ediff-date "May 21, 1998" "Date of last update")  
 
 
 ;; This file is part of GNU Emacs.
 
 (defgroup ediff nil
   "A comprehensive visual interface to diff & patch"
+  :tag "Ediff"
   :group 'tools)
 
 
 ;; deleted.
 (defun ediff-find-file (file-var buffer-name &optional last-dir hooks-var)
   (let* ((file (symbol-value file-var))
-        (file-magic (find-file-name-handler file 'find-file-noselect))
+        (file-magic (ediff-filename-magic-p file))
         (temp-file-name-prefix (file-name-nondirectory file)))
     (cond ((not (file-readable-p file))
           (error "File `%s' does not exist or is not readable" file))
             (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)
                 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
       
 
                        
-(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))
                            ))
                       startup-hooks)
                 (list (cons 'ediff-job-name job-name))
-                )))
+                merge-buffer-file)))
 
 
 ;;; Directory and file group operations
@@ -937,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))
     ))
     
  
@@ -953,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
@@ -985,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
@@ -1035,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)
@@ -1058,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)
@@ -1088,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."
@@ -1115,11 +1140,16 @@ buffer."
     ;; ancestor-revision=nil
     (funcall
      (intern (format "ediff-%S-merge-internal" ediff-version-control-package))
-     rev1 rev2 nil startup-hooks)))
+     rev1 rev2 nil startup-hooks merge-buffer-file)))
     
 
 ;;;###autoload
-(defun ediff-merge-revisions-with-ancestor (&optional file startup-hooks)
+(defun ediff-merge-revisions-with-ancestor (&optional
+                                           file startup-hooks
+                                           ;; MERGE-BUFFER-FILE is the file to
+                                           ;; be associated with the merge
+                                           ;; buffer
+                                           merge-buffer-file)
   "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
 buffer."
@@ -1147,7 +1177,7 @@ buffer."
     (ediff-load-version-control)
     (funcall
      (intern (format "ediff-%S-merge-internal" ediff-version-control-package))
-     rev1 rev2 ancestor-rev startup-hooks)))
+     rev1 rev2 ancestor-rev startup-hooks merge-buffer-file)))
 
 ;;;###autoload
 (defun run-ediff-from-cvs-buffer (pos)
@@ -1181,7 +1211,8 @@ file and then run `run-ediff-from-cvs-buffer'."
                           (t default-directory)))
     (setq source-file
          ;; the default is the directory, not the visited file name
-         (ediff-read-file-name "Which file to patch? " source-dir source-dir))
+         (ediff-read-file-name 
+          "Which file to patch? " source-dir (ediff-get-default-file-name)))
     (ediff-dispatch-file-patching-job patch-buf source-file)))
 
 ;;;###autoload
@@ -1195,7 +1226,7 @@ file and then run `run-ediff-from-cvs-buffer'."
      patch-buf
      (read-buffer "Which buffer to patch? "
                  (cond ((eq patch-buf (current-buffer))
-                        (window-buffer (other-window 1)))
+                        (ediff-other-buffer (current-buffer)))
                        (t (current-buffer)))
                  'must-match))))