*** empty log message ***
[bpt/emacs.git] / lisp / ediff-ptch.el
index 7a46987..7d013cc 100644 (file)
@@ -1,7 +1,7 @@
 ;;; ediff-ptch.el --- Ediff's  patch support
 
 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
 (eval-when-compile
   (let ((load-path (cons (expand-file-name ".") load-path)))
     (or (featurep 'ediff-init)
-       (load "ediff-init.el" nil nil 'nosuffix))
+       (load "ediff-init.el" nil t 'nosuffix))
     (or (featurep 'ediff-mult)
-       (load "ediff-mult.el" nil nil 'nosuffix))
+       (load "ediff-mult.el" nil t 'nosuffix))
     (or (featurep 'ediff)
-       (load "ediff.el" nil nil 'nosuffix))
+       (load "ediff.el" nil t 'nosuffix))
     ))
 ;; end pacifier
 
@@ -292,43 +292,43 @@ program."
        )
 
     ;; chop off base-dirs
-    (mapcar (lambda (session-info)
-             (let* ((proposed-file-names
-                     ;; Filename-spec is objA; it is represented as
-                     ;; (file1 . file2). Get it using ediff-get-session-objA.
-                     (ediff-get-session-objA-name session-info))
-                    ;; base-dir1 is  the dir part of the 1st file in the patch
-                    (base-dir1
-                     (or (file-name-directory (car proposed-file-names))
-                         ""))
-                    ;; directory part of the 2nd file in the patch
-                    (base-dir2
-                     (or (file-name-directory (cdr proposed-file-names))
-                         ""))
-                    )
-               ;; If both base-dir1 and base-dir2 are relative and exist,
-               ;; assume that
-               ;; these dirs lead to the actual files starting at the present
-               ;; directory. So, we don't strip these relative dirs from the
-               ;; file names. This is a heuristic intended to improve guessing
-               (let ((default-directory (file-name-directory filename)))
-                 (unless (or (file-name-absolute-p base-dir1)
-                             (file-name-absolute-p base-dir2)
-                             (not (file-exists-p base-dir1))
-                             (not (file-exists-p base-dir2)))
-                   (setq base-dir1 ""
-                         base-dir2 "")))
-               (or (string= (car proposed-file-names) "/dev/null")
-                   (setcar proposed-file-names
-                           (ediff-file-name-sans-prefix
-                            (car proposed-file-names) base-dir1)))
-               (or (string=
-                    (cdr proposed-file-names) "/dev/null")
-                   (setcdr proposed-file-names
-                           (ediff-file-name-sans-prefix
-                            (cdr proposed-file-names) base-dir2)))
-               ))
-           ediff-patch-map)
+    (mapc (lambda (session-info)
+           (let* ((proposed-file-names
+                   ;; Filename-spec is objA; it is represented as
+                   ;; (file1 . file2). Get it using ediff-get-session-objA.
+                   (ediff-get-session-objA-name session-info))
+                  ;; base-dir1 is  the dir part of the 1st file in the patch
+                  (base-dir1
+                   (or (file-name-directory (car proposed-file-names))
+                       ""))
+                  ;; directory part of the 2nd file in the patch
+                  (base-dir2
+                   (or (file-name-directory (cdr proposed-file-names))
+                       ""))
+                  )
+             ;; If both base-dir1 and base-dir2 are relative and exist,
+             ;; assume that
+             ;; these dirs lead to the actual files starting at the present
+             ;; directory. So, we don't strip these relative dirs from the
+             ;; file names. This is a heuristic intended to improve guessing
+             (let ((default-directory (file-name-directory filename)))
+               (unless (or (file-name-absolute-p base-dir1)
+                           (file-name-absolute-p base-dir2)
+                           (not (file-exists-p base-dir1))
+                           (not (file-exists-p base-dir2)))
+                 (setq base-dir1 ""
+                       base-dir2 "")))
+             (or (string= (car proposed-file-names) "/dev/null")
+                 (setcar proposed-file-names
+                         (ediff-file-name-sans-prefix
+                          (car proposed-file-names) base-dir1)))
+             (or (string=
+                  (cdr proposed-file-names) "/dev/null")
+                 (setcdr proposed-file-names
+                         (ediff-file-name-sans-prefix
+                          (cdr proposed-file-names) base-dir2)))
+             ))
+         ediff-patch-map)
 
     ;; take the given file name into account
     (or (file-directory-p filename)
@@ -338,19 +338,19 @@ program."
                      (file-name-nondirectory filename))))
 
     ;; prepend actual-dir
-    (mapcar (lambda (session-info)
-             (let ((proposed-file-names
-                    (ediff-get-session-objA-name session-info)))
-               (if (and (string-match "^/null/" (car proposed-file-names))
-                        (string-match "^/null/" (cdr proposed-file-names)))
-                   ;; couldn't intuit the file name to patch, so
-                   ;; something is amiss
-                   (progn
-                     (with-output-to-temp-buffer ediff-msg-buffer
-                       (ediff-with-current-buffer standard-output
-                         (fundamental-mode))
-                       (princ
-                        (format "
+    (mapc (lambda (session-info)
+           (let ((proposed-file-names
+                  (ediff-get-session-objA-name session-info)))
+             (if (and (string-match "^/null/" (car proposed-file-names))
+                      (string-match "^/null/" (cdr proposed-file-names)))
+                 ;; couldn't intuit the file name to patch, so
+                 ;; something is amiss
+                 (progn
+                   (with-output-to-temp-buffer ediff-msg-buffer
+                     (ediff-with-current-buffer standard-output
+                       (fundamental-mode))
+                     (princ
+                      (format "
 The patch file contains a context diff for
        %s
        %s
@@ -361,31 +361,31 @@ please enter it now.
 If you don't know and still would like to apply patches to
 other files, enter /dev/null
 "
-                                (substring (car proposed-file-names) 6)
-                                (substring (cdr proposed-file-names) 6))))
-                     (let ((directory t)
-                           user-file)
-                       (while directory
-                         (setq user-file
-                               (read-file-name
-                                "Please enter file name: "
-                                actual-dir actual-dir t))
-                         (if (not (file-directory-p user-file))
-                             (setq directory nil)
-                           (setq directory t)
-                           (beep)
-                           (message "%s is a directory" user-file)
-                           (sit-for 2)))
-                       (setcar (ediff-get-session-objA session-info)
-                               (cons user-file user-file))))
-                 (setcar proposed-file-names
-                         (expand-file-name
-                          (concat actual-dir (car proposed-file-names))))
-                 (setcdr proposed-file-names
-                         (expand-file-name
-                          (concat actual-dir (cdr proposed-file-names)))))
-               ))
-           ediff-patch-map)
+                              (substring (car proposed-file-names) 6)
+                              (substring (cdr proposed-file-names) 6))))
+                   (let ((directory t)
+                         user-file)
+                     (while directory
+                       (setq user-file
+                             (read-file-name
+                              "Please enter file name: "
+                              actual-dir actual-dir t))
+                       (if (not (file-directory-p user-file))
+                           (setq directory nil)
+                         (setq directory t)
+                         (beep)
+                         (message "%s is a directory" user-file)
+                         (sit-for 2)))
+                     (setcar (ediff-get-session-objA session-info)
+                             (cons user-file user-file))))
+               (setcar proposed-file-names
+                       (expand-file-name
+                        (concat actual-dir (car proposed-file-names))))
+               (setcdr proposed-file-names
+                       (expand-file-name
+                        (concat actual-dir (cdr proposed-file-names)))))
+             ))
+         ediff-patch-map)
     ;; Check for the existing files in each pair and discard the nonexisting
     ;; ones. If both exist, ask the user.
     (mapcar (lambda (session-info)