;; 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.
(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))
"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
;; 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
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)
(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)
(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)
(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
(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
(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