;;; ediff.el --- a comprehensive visual interface to diff & patch
;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005 Free Software Foundation, Inc.
+;; 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
;; Created: February 2, 1994
;; Keywords: comparing, merging, patching, tools, unix
-(defconst ediff-version "2.80" "The current version of Ediff")
-(defconst ediff-date "July 8, 2005" "Date of last update")
+(defconst ediff-version "2.81.1" "The current version of Ediff")
+(defconst ediff-date "October 23, 2006" "Date of last update")
;; This file is part of GNU Emacs.
;;; Code:
-(provide 'ediff)
;; Compiler pacifier
(defvar cvs-cookie-handle)
(load "pcl-cvs" 'noerror)))
(eval-when-compile
(let ((load-path (cons (expand-file-name ".") load-path)))
+ (provide 'ediff) ; to break recursive load cycle
(or (featurep 'ediff-init)
(load "ediff-init.el" nil nil 'nosuffix))
(or (featurep 'ediff-mult)
ediff-last-dir-B
(file-name-directory f)))
(progn
- (setq file-name-history
- (cons (ediff-abbreviate-file-name
- (expand-file-name
- (file-name-nondirectory f)
- dir-B))
- file-name-history))
+ (ediff-add-to-history
+ 'file-name-history
+ (ediff-abbreviate-file-name
+ (expand-file-name
+ (file-name-nondirectory f)
+ dir-B)))
(ediff-get-default-file-name f 1)))
)))
(ediff-files-internal file-A
ediff-last-dir-B
(file-name-directory f)))
(progn
- (setq file-name-history
- (cons
- (ediff-abbreviate-file-name
- (expand-file-name
- (file-name-nondirectory f)
- dir-B))
- file-name-history))
+ (ediff-add-to-history
+ 'file-name-history
+ (ediff-abbreviate-file-name
+ (expand-file-name
+ (file-name-nondirectory f)
+ dir-B)))
(ediff-get-default-file-name f 1))))
(ediff-read-file-name "File C to compare"
(setq dir-C (if ediff-use-last-dir
ediff-last-dir-C
(file-name-directory ff)))
(progn
- (setq file-name-history
- (cons (ediff-abbreviate-file-name
- (expand-file-name
- (file-name-nondirectory ff)
- dir-C))
- file-name-history))
+ (ediff-add-to-history
+ 'file-name-history
+ (ediff-abbreviate-file-name
+ (expand-file-name
+ (file-name-nondirectory ff)
+ dir-C)))
(ediff-get-default-file-name ff 2)))
)))
(ediff-files-internal file-A
(let ((dir-A (ediff-get-default-directory-name))
(default-regexp (eval ediff-default-filtering-regexp))
f)
- (list (setq f (ediff-read-file-name "Directory A to compare:" dir-A nil))
- (ediff-read-file-name "Directory B to compare:"
- (if ediff-use-last-dir
- ediff-last-dir-B
- (ediff-strip-last-dir f))
- nil)
+ (list (setq f (read-directory-name
+ "Directory A to compare:" dir-A nil 'must-match))
+ (read-directory-name "Directory B to compare:"
+ (if ediff-use-last-dir
+ ediff-last-dir-B
+ (ediff-strip-last-dir f))
+ nil 'must-match)
(read-string
(if (stringp default-regexp)
(format "Filter through regular expression (default %s): "
(let ((dir-A (ediff-get-default-directory-name))
(default-regexp (eval ediff-default-filtering-regexp))
)
- (list (ediff-read-file-name
- "Directory to compare with revision:" dir-A nil)
+ (list (read-directory-name
+ "Directory to compare with revision:" dir-A nil 'must-match)
(read-string
(if (stringp default-regexp)
(format "Filter through regular expression (default %s): "
(let ((dir-A (ediff-get-default-directory-name))
(default-regexp (eval ediff-default-filtering-regexp))
f)
- (list (setq f (ediff-read-file-name "Directory A to compare:" dir-A nil))
- (setq f (ediff-read-file-name "Directory B to compare:"
- (if ediff-use-last-dir
- ediff-last-dir-B
- (ediff-strip-last-dir f))
- nil))
- (ediff-read-file-name "Directory C to compare:"
- (if ediff-use-last-dir
- ediff-last-dir-C
- (ediff-strip-last-dir f))
- nil)
+ (list (setq f (read-directory-name "Directory A to compare:" dir-A nil))
+ (setq f (read-directory-name "Directory B to compare:"
+ (if ediff-use-last-dir
+ ediff-last-dir-B
+ (ediff-strip-last-dir f))
+ nil 'must-match))
+ (read-directory-name "Directory C to compare:"
+ (if ediff-use-last-dir
+ ediff-last-dir-C
+ (ediff-strip-last-dir f))
+ nil 'must-match)
(read-string
(if (stringp default-regexp)
(format "Filter through regular expression (default %s): "
(let ((dir-A (ediff-get-default-directory-name))
(default-regexp (eval ediff-default-filtering-regexp))
f)
- (list (setq f (ediff-read-file-name "Directory A to merge:" dir-A nil))
- (ediff-read-file-name "Directory B to merge:"
- (if ediff-use-last-dir
- ediff-last-dir-B
- (ediff-strip-last-dir f))
- nil)
+ (list (setq f (read-directory-name "Directory A to merge:"
+ dir-A nil 'must-match))
+ (read-directory-name "Directory B to merge:"
+ (if ediff-use-last-dir
+ ediff-last-dir-B
+ (ediff-strip-last-dir f))
+ nil 'must-match)
(read-string
(if (stringp default-regexp)
(format "Filter through regular expression (default %s): "
(let ((dir-A (ediff-get-default-directory-name))
(default-regexp (eval ediff-default-filtering-regexp))
f)
- (list (setq f (ediff-read-file-name "Directory A to merge:" dir-A nil))
- (setq f (ediff-read-file-name "Directory B to merge:"
+ (list (setq f (read-directory-name "Directory A to merge:" dir-A nil))
+ (setq f (read-directory-name "Directory B to merge:"
(if ediff-use-last-dir
ediff-last-dir-B
(ediff-strip-last-dir f))
- nil))
- (ediff-read-file-name "Ancestor directory:"
+ nil 'must-match))
+ (read-directory-name "Ancestor directory:"
(if ediff-use-last-dir
ediff-last-dir-C
(ediff-strip-last-dir f))
- nil)
+ nil 'must-match)
(read-string
(if (stringp default-regexp)
(format "Filter through regular expression (default %s): "
(let ((dir-A (ediff-get-default-directory-name))
(default-regexp (eval ediff-default-filtering-regexp))
)
- (list (ediff-read-file-name
- "Directory to merge with revisions:" dir-A nil)
+ (list (read-directory-name
+ "Directory to merge with revisions:" dir-A nil 'must-match)
(read-string
(if (stringp default-regexp)
(format "Filter through regular expression (default %s): "
(let ((dir-A (ediff-get-default-directory-name))
(default-regexp (eval ediff-default-filtering-regexp))
)
- (list (ediff-read-file-name
- "Directory to merge with revisions and ancestors:" dir-A nil)
+ (list (read-directory-name
+ "Directory to merge with revisions and ancestors:"
+ dir-A nil 'must-match)
(read-string
(if (stringp default-regexp)
(format "Filter through regular expression (default %s): "
(defun ediff-directories-internal (dir1 dir2 dir3 regexp action jobname
&optional startup-hooks
merge-autostore-dir)
- ;; 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.
- (setq dir1 (if (file-directory-p dir1) dir1 (file-name-directory dir1))
- dir2 (if (file-directory-p dir2) dir2 (file-name-directory dir2)))
-
(if (stringp dir3)
(setq dir3 (if (file-directory-p dir3) dir3 (file-name-directory dir3))))
(ediff-merge-metajob jobname)
(not merge-autostore-dir))
(setq merge-autostore-dir
- (read-file-name "Save merged files in directory: "
+ (read-directory-name "Save merged files in directory: "
(if ediff-use-last-dir
ediff-last-merge-autostore-dir
(ediff-strip-last-dir dir1))
(ediff-merge-metajob jobname)
(not merge-autostore-dir))
(setq merge-autostore-dir
- (read-file-name "Save merged files in directory: "
+ (read-directory-name "Save merged files in directory: "
(if ediff-use-last-dir
ediff-last-merge-autostore-dir
(ediff-strip-last-dir dir1))
ediff-last-dir-B
(file-name-directory f)))
(progn
- (setq file-name-history
- (cons (ediff-abbreviate-file-name
- (expand-file-name
- (file-name-nondirectory f)
- dir-B))
- file-name-history))
+ (ediff-add-to-history
+ 'file-name-history
+ (ediff-abbreviate-file-name
+ (expand-file-name
+ (file-name-nondirectory f)
+ dir-B)))
(ediff-get-default-file-name f 1)))
)))
(setq startup-hooks (cons 'ediff-merge-on-startup startup-hooks))
ediff-last-dir-B
(file-name-directory f)))
(progn
- (setq file-name-history
- (cons
- (ediff-abbreviate-file-name
- (expand-file-name
- (file-name-nondirectory f)
- dir-B))
- file-name-history))
+ (ediff-add-to-history
+ 'file-name-history
+ (ediff-abbreviate-file-name
+ (expand-file-name
+ (file-name-nondirectory f)
+ dir-B)))
(ediff-get-default-file-name f 1))))
(ediff-read-file-name "Ancestor file"
(setq dir-ancestor
ediff-last-dir-ancestor
(file-name-directory ff)))
(progn
- (setq file-name-history
- (cons (ediff-abbreviate-file-name
- (expand-file-name
- (file-name-nondirectory ff)
- dir-ancestor))
- file-name-history))
+ (ediff-add-to-history
+ 'file-name-history
+ (ediff-abbreviate-file-name
+ (expand-file-name
+ (file-name-nondirectory ff)
+ dir-ancestor)))
(ediff-get-default-file-name ff 2)))
)))
(setq startup-hooks (cons 'ediff-merge-on-startup startup-hooks))
(setq rev1
(read-string
(format
- "Version 1 to merge (default: %s's working version): "
+ "Version 1 to merge (default %s's working version): "
(if (stringp file)
(file-name-nondirectory file) "current buffer")))
rev2
(read-string
(format
- "Version 2 to merge (default: %s): "
+ "Version 2 to merge (default %s): "
(if (stringp file)
(file-name-nondirectory file) "current buffer"))))
(ediff-load-version-control)
(setq rev1
(read-string
(format
- "Version 1 to merge (default: %s's working version): "
+ "Version 1 to merge (default %s's working version): "
(if (stringp file)
(file-name-nondirectory file) "current buffer")))
rev2
(read-string
(format
- "Version 2 to merge (default: %s): "
+ "Version 2 to merge (default %s): "
(if (stringp file)
(file-name-nondirectory file) "current buffer")))
ancestor-rev
(read-string
(format
- "Ancestor version (default: %s's base revision): "
+ "Ancestor version (default %s's base revision): "
(if (stringp file)
(file-name-nondirectory file) "current buffer"))))
(ediff-load-version-control)
patch-buf
(read-buffer
"Which buffer to patch? "
- (current-buffer))))
+ (ediff-other-buffer patch-buf))))
;;;###autoload
(let (rev1 rev2)
(setq rev1
(read-string
- (format "Revision 1 to compare (default: %s's latest revision): "
+ (format "Revision 1 to compare (default %s's latest revision): "
(file-name-nondirectory file)))
rev2
(read-string
- (format "Revision 2 to compare (default: %s's current state): "
+ (format "Revision 2 to compare (default %s's current state): "
(file-name-nondirectory file))))
(ediff-load-version-control)
(funcall
(run-hooks 'ediff-load-hook)
+(provide 'ediff)
+
+
;;; Local Variables:
;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)