]> code.delx.au - gnu-emacs/blobdiff - lisp/ediff-util.el
(hack-local-variables-confirm): New arg FLAG-TO-CHECK.
[gnu-emacs] / lisp / ediff-util.el
index d69997394e45ac9f0228ba696b6cf36cda6d43f8..b952c2fb2bf1fe84aa7911af45ca0049f39ba8ce 100644 (file)
@@ -1,6 +1,7 @@
 ;;; ediff-util.el --- the core commands and utilities of ediff
 
-;; Copyright (C) 1994, 95, 96, 97, 98, 99, 2000, 01, 02 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+;;   2004 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
@@ -1080,8 +1081,10 @@ of the current buffer."
                 (eq this-command 'ediff-toggle-read-only)
                 (file-exists-p file)
                 (not (file-writable-p file)))
-           (message "Warning: file %s is read-only"
-                    (ediff-abbreviate-file-name file) (beep 1)))
+           (progn
+             (beep 1)
+             (message "Warning: file %s is read-only"
+                      (ediff-abbreviate-file-name file))))
        ))))
 
 ;; checkout if visited file is checked in
@@ -2233,7 +2236,7 @@ a regular expression typed in by the user."
       (if (y-or-n-p
           (format
            "Ignore regions that match %s regexps, OK? "
-           msg-connective alt-msg-connective))
+           msg-connective))
          (message "Will ignore regions that match %s regexps" msg-connective)
        (setq ediff-hide-regexp-connective alt-connective)
        (message "Will ignore regions that match %s regexps"
@@ -2272,7 +2275,7 @@ a regular expression typed in by the user."
       (if (y-or-n-p
           (format
            "Focus on regions that match %s regexps, OK? "
-           msg-connective alt-msg-connective))
+           msg-connective))
          (message "Will focus on regions that match %s regexps"
                   msg-connective)
        (setq ediff-focus-regexp-connective alt-connective)
@@ -3399,29 +3402,33 @@ Without an argument, it saves customized diff argument, if available
   (let ((buf-A-file-name (buffer-file-name ediff-buffer-A))
        (buf-B-file-name (buffer-file-name ediff-buffer-B))
        file-A file-B)
-    (if (stringp buf-A-file-name)
-       (setq buf-A-file-name (file-name-nondirectory buf-A-file-name)))
-    (if (stringp buf-B-file-name)
-       (setq buf-B-file-name (file-name-nondirectory buf-B-file-name)))
-    (setq file-A (ediff-make-temp-file ediff-buffer-A buf-A-file-name)
-         file-B (ediff-make-temp-file ediff-buffer-B buf-B-file-name))
-
+    (unless (and buf-A-file-name (file-exists-p buf-A-file-name))
+      (setq file-A
+           (ediff-make-temp-file ediff-buffer-A)))
+    (unless (and buf-B-file-name (file-exists-p buf-B-file-name))
+      (setq file-B
+           (ediff-make-temp-file ediff-buffer-B)))
     (or (ediff-buffer-live-p ediff-custom-diff-buffer)
        (setq ediff-custom-diff-buffer
              (get-buffer-create
               (ediff-unique-buffer-name "*ediff-custom-diff" "*"))))
     (ediff-with-current-buffer ediff-custom-diff-buffer
-      (setq buffer-read-only nil)
-      (erase-buffer))
+                              (setq buffer-read-only nil)
+                              (erase-buffer))
     (ediff-exec-process
      ediff-custom-diff-program ediff-custom-diff-buffer 'synchronize
-     ediff-custom-diff-options file-A file-B)
+     ediff-custom-diff-options
+     ;; repetition of buf-A-file-name is needed so it'll return a file
+     (or (and buf-A-file-name (file-exists-p buf-A-file-name) buf-A-file-name)
+        file-A)
+     (or (and buf-B-file-name (file-exists-p buf-B-file-name) buf-B-file-name)
+        file-B))
     ;; put the diff file in diff-mode, if it is available
     (if (fboundp 'diff-mode)
        (with-current-buffer ediff-custom-diff-buffer
          (diff-mode)))
-    (delete-file file-A)
-    (delete-file file-B)
+    (and file-A (file-exists-p file-A) (delete-file file-A))
+    (and file-B (file-exists-p file-B) (delete-file file-B))
     ))
 
 (defun ediff-show-diff-output (arg)