]> code.delx.au - gnu-emacs/blobdiff - lisp/ediff.el
(sgml-tag-alist): Doc fix.
[gnu-emacs] / lisp / ediff.el
index d07075bbac8b53fb8082aa3b142ff3ed94675800..2db82f855476d34592da354a4bbe0dabce7f4346 100644 (file)
@@ -6,8 +6,8 @@
 ;; Created: February 2, 1994
 ;; Keywords: comparing, merging, patching, tools, unix
 
-(defconst ediff-version "2.76.1" "The current version of Ediff")
-(defconst ediff-date "January 4, 2002" "Date of last update")  
+(defconst ediff-version "2.77" "The current version of Ediff")
+(defconst ediff-date "March 5, 2002" "Date of last update")  
 
 
 ;; This file is part of GNU Emacs.
 ;; Last directory used by an Ediff command for the ancestor file.
 (defvar ediff-last-dir-ancestor nil)
 ;; Last directory used by an Ediff command as the output directory for merge.
-(defvar ediff-last-merge-autostore-dir)
+(defvar ediff-last-merge-autostore-dir nil)
 
 
 ;; Used as a startup hook to set `_orig' patch file read-only.
@@ -688,8 +688,11 @@ names.  Only the files that are under revision control are taken into account."
       (or (stringp merge-autostore-dir)
          (error "%s: Directory for storing merged files must be a string"
                 jobname)))
-  (let (diffs ; var where ediff-intersect-directories returns the diff list
-       file-list meta-buf)
+  (let (;; dir-diff-struct is of the form (common-list diff-list) 
+       ;; It is a structure where ediff-intersect-directories returns
+       ;; commonalities and differences among directories
+       dir-diff-struct
+       meta-buf)
     (if (and ediff-autostore-merges
             (ediff-merge-metajob jobname)
             (not merge-autostore-dir))
@@ -715,9 +718,9 @@ names.  Only the files that are under revision control are taken into account."
                    "Directory for saving merged files = Ancestor Directory.  Sure? ")
                   (error "Directory merge aborted")))))
     
-    (setq file-list (ediff-intersect-directories 
-                    jobname 'diffs
-                    regexp dir1 dir2 dir3 merge-autostore-dir))
+    (setq dir-diff-struct (ediff-intersect-directories 
+                          jobname
+                          regexp dir1 dir2 dir3 merge-autostore-dir))
     (setq startup-hooks
          ;; this sets various vars in the meta buffer inside
          ;; ediff-prepare-meta-buffer
@@ -725,11 +728,12 @@ names.  Only the files that are under revision control are taken into account."
                   ;; tell what to do if the user clicks on a session record
                   (setq ediff-session-action-function (quote ,action))
                   ;; set ediff-dir-difference-list 
-                  (setq ediff-dir-difference-list (quote ,diffs)))
+                  (setq ediff-dir-difference-list
+                        (cdr (quote ,dir-diff-struct))))
                startup-hooks))
     (setq meta-buf (ediff-prepare-meta-buffer 
                    'ediff-filegroup-action
-                   file-list
+                   (car dir-diff-struct)
                    "*Ediff Session Group Panel"
                    'ediff-redraw-directory-group-buffer
                    jobname
@@ -839,49 +843,14 @@ If WIND-B is nil, use window next to WIND-A."
              end-B (window-end))))
     (setq buffer-A
          (ediff-clone-buffer-for-window-comparison
-          buffer-A wind-A "-Window1-")
+          buffer-A wind-A "-Window.A-")
          buffer-B
          (ediff-clone-buffer-for-window-comparison
-          buffer-B wind-B "-Window2-"))
+          buffer-B wind-B "-Window.B-"))
     (ediff-regions-internal
      buffer-A beg-A end-A buffer-B beg-B end-B
      startup-hooks job-name word-mode nil)))
      
-;; Suggested by Hannu Koivisto <azure@iki.fi>
-(defun ediff-clone-buffer-for-region-comparison (buff-name region-name)
-  (let ((cloned-buff (ediff-make-indirect-buffer
-                     buff-name
-                     (concat buff-name region-name
-                             (symbol-name (gensym)))))
-       (wind (ediff-get-visible-buffer-window buff-name)))
-    (ediff-with-current-buffer cloned-buff
-      (setq ediff-temp-indirect-buffer t))
-    (if (window-live-p wind)
-       (set-window-buffer wind cloned-buff))
-    (pop-to-buffer cloned-buff)
-    (message 
-     "Mark a region in buffer %s; then type %s. Use %s to abort."
-     (buffer-name cloned-buff)
-     (ediff-format-bindings-of 'exit-recursive-edit)
-     (ediff-format-bindings-of 'abort-recursive-edit))
-    (recursive-edit)
-    cloned-buff))
-
-(defun ediff-clone-buffer-for-window-comparison (buff wind region-name)
-  (let ((cloned-buff (ediff-make-indirect-buffer
-                     buff
-                     (concat (buffer-name buff)
-                             region-name (symbol-name (gensym))))))
-    (ediff-with-current-buffer cloned-buff
-      (setq ediff-temp-indirect-buffer t))
-    (set-window-buffer wind cloned-buff)
-    cloned-buff))
-
-(defun ediff-make-indirect-buffer (base-buf indirect-buf-name)
-  (ediff-cond-compile-for-xemacs-or-emacs
-   (make-indirect-buffer base-buf indirect-buf-name) ; xemacs
-   (make-indirect-buffer base-buf indirect-buf-name 'clone) ; emacs
-   ))
 
 ;;;###autoload
 (defun ediff-regions-wordwise (buffer-A buffer-B &optional startup-hooks)
@@ -910,9 +879,9 @@ lines.  For large regions, use `ediff-regions-linewise'."
   
   
   (let ((buffer-A
-         (ediff-clone-buffer-for-region-comparison buffer-A "-Region1-"))
+         (ediff-clone-buffer-for-region-comparison buffer-A "-Region.A-"))
        (buffer-B
-         (ediff-clone-buffer-for-region-comparison buffer-B "-Region2-"))
+         (ediff-clone-buffer-for-region-comparison buffer-B "-Region.B-"))
         reg-A-beg reg-A-end reg-B-beg reg-B-end)
     (save-excursion
       (set-buffer buffer-A)
@@ -954,9 +923,9 @@ lines.  For small regions, use `ediff-regions-wordwise'."
       (error "Buffer %S doesn't exist" buffer-B))
   
   (let ((buffer-A
-         (ediff-clone-buffer-for-region-comparison buffer-A "-Region1-"))
+         (ediff-clone-buffer-for-region-comparison buffer-A "-Region.A-"))
        (buffer-B
-         (ediff-clone-buffer-for-region-comparison buffer-B "-Region2-"))
+         (ediff-clone-buffer-for-region-comparison buffer-B "-Region.B-"))
         reg-A-beg reg-A-end reg-B-beg reg-B-end)
     (save-excursion
       (set-buffer buffer-A)
@@ -1219,7 +1188,7 @@ buffer."
     (setq rev1
          (read-string
           (format
-           "Version 1 to merge (default: %s's latest version): "
+           "Version 1 to merge (default: %s's working version): "
            (if (stringp file)
                (file-name-nondirectory file) "current buffer")))
          rev2
@@ -1251,7 +1220,7 @@ buffer."
     (setq rev1
          (read-string
           (format
-           "Version 1 to merge (default: %s's latest version): "
+           "Version 1 to merge (default: %s's working version): "
            (if (stringp file)
                (file-name-nondirectory file) "current buffer")))
          rev2
@@ -1367,7 +1336,7 @@ Uses `vc.el' or `rcs.el' depending on `ediff-version-control-package'."
   (let (rev1 rev2)
     (setq rev1
          (read-string
-          (format "Version 1 to compare (default: %s's latest version): "
+          (format "Version 1 to compare (default: %s's working version): "
                   (file-name-nondirectory file)))
          rev2
          (read-string