(ibuffer-diff-with-file): Just call `diff-buffer-with-file'.
authorColin Walters <walters@gnu.org>
Sat, 7 Sep 2002 21:31:03 +0000 (21:31 +0000)
committerColin Walters <walters@gnu.org>
Sat, 7 Sep 2002 21:31:03 +0000 (21:31 +0000)
lisp/ChangeLog
lisp/ibuf-ext.el

index 7a14fee..9f8cb47 100644 (file)
@@ -6,7 +6,11 @@
        * diff.el (diff): Add optional argument no-async, and use the
        above argument.
        
-       * files.el (diff-buffer-with-file): Use it.
+       * files.el (diff-buffer-with-file): Call diff synchronously, so we
+       don't delete the temporary file before diff has a chance to read
+       it.
+       
+       * ibuf-ext.el (ibuffer-diff-with-file): Just call `diff-buffer-with-file'.
 
 2002-09-07  John Paul Wallington  <jpw@shootybangbang.com>
 
index d802c68..c268dd6 100644 (file)
@@ -1221,40 +1221,10 @@ to move by.  The default is `ibuffer-marked-char'."
   "View the differences between this buffer and its associated file.
 This requires the external program \"diff\" to be in your `exec-path'."
   (interactive)
-  (let* ((buf (ibuffer-current-buffer))
-        (buf-filename (with-current-buffer buf
-                        buffer-file-name)))
+  (let ((buf (ibuffer-current-buffer)))
     (unless (buffer-live-p buf)
       (error "Buffer %s has been killed" buf))
-    (unless buf-filename
-      (error "Buffer %s has no associated file" buf))
-    (let ((diff-buf (get-buffer-create "*Ibuffer-diff*")))
-      (with-current-buffer diff-buf
-       (setq buffer-read-only nil)
-       (erase-buffer))
-      (let ((tempfile (make-temp-file "ibuffer-diff-")))
-       (unwind-protect
-           (progn
-             (with-current-buffer buf
-               (write-region (point-min) (point-max) tempfile nil 'nomessage))
-             (if (zerop
-                  (apply #'call-process "diff" nil diff-buf nil
-                         (append
-                          (when (and (boundp 'ediff-custom-diff-options)
-                                     (stringp ediff-custom-diff-options))
-                            (list ediff-custom-diff-options))
-                          (list buf-filename tempfile))))
-                 (message "No differences found")
-               (progn
-                 (with-current-buffer diff-buf
-                   (goto-char (point-min))
-                   (if (fboundp 'diff-mode)
-                       (diff-mode)
-                     (fundamental-mode)))
-                 (display-buffer diff-buf))))
-         (when (file-exists-p tempfile)
-           (delete-file tempfile)))))
-      nil))
+    (diff-buffer-with-file buf)))
 
 ;;;###autoload
 (defun ibuffer-copy-filename-as-kill (&optional arg)