summaryrefslogtreecommitdiff
path: root/lisp/ediff-util.el
diff options
context:
space:
mode:
authorMichael Kifer <kifer@cs.stonybrook.edu>2004-02-20 02:41:02 +0000
committerMichael Kifer <kifer@cs.stonybrook.edu>2004-02-20 02:41:02 +0000
commitf45bb5f78ccfc8663e6f1b5680789f0b644d8390 (patch)
tree0cd2133d08bffce8b07ec5fc36bb6d757ea2ea05 /lisp/ediff-util.el
parentd1bd98ce377a473d7b71a93bb7dc658bfb71f3f5 (diff)
downloademacs-f45bb5f78ccfc8663e6f1b5680789f0b644d8390.tar.gz
* ediff-util.el (ediff-compute-custom-diffs-maybe): Avoid creating
temporary file for buffer already visiting one. This change makes output likely to be directly usable by patch program. Suggested by Adrian Aichner <adrian@xemacs.org>
Diffstat (limited to 'lisp/ediff-util.el')
-rw-r--r--lisp/ediff-util.el28
1 files changed, 16 insertions, 12 deletions
diff --git a/lisp/ediff-util.el b/lisp/ediff-util.el
index 9550e65c2e9..79f85cc1896 100644
--- a/lisp/ediff-util.el
+++ b/lisp/ediff-util.el
@@ -3401,29 +3401,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)