]> git.eshelyaron.com Git - emacs.git/commitdiff
Revert to old 23.1 logic of using the file at the mark as default.
authorJuri Linkov <juri@jurta.org>
Wed, 16 Dec 2009 09:52:42 +0000 (09:52 +0000)
committerJuri Linkov <juri@jurta.org>
Wed, 16 Dec 2009 09:52:42 +0000 (09:52 +0000)
* dired-aux.el (dired-diff): Use the file at the mark as default
if it's not the same as the current file, and the target dir is
the current dir or the mark is active.  Add the current file
as the arg of `dired-dwim-target-defaults'.  Use the default file
in the prompt.  (Bug#5225)

lisp/ChangeLog
lisp/dired-aux.el

index 26ff5d4c7cecd5574127286c793ab8935ace9490..cd139b72456996344f8457e73c63692e6dfd8c97 100644 (file)
@@ -1,3 +1,12 @@
+2009-12-16  Juri Linkov  <juri@jurta.org>
+
+       Revert to old 23.1 logic of using the file at the mark as default.
+       * dired-aux.el (dired-diff): Use the file at the mark as default
+       if it's not the same as the current file, and the target dir is
+       the current dir or the mark is active.  Add the current file
+       as the arg of `dired-dwim-target-defaults'.  Use the default file
+       in the prompt.  (Bug#5225)
+
 2009-12-15  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp.el (tramp-echo-mark-marker-length): New defconst.
index 4976d2cd68391f690c32c2d893ab870c181d92e1..d3f5de72c7fb2e223d4ce4fd91efcb4eae0cfbd9 100644 (file)
@@ -60,21 +60,31 @@ With prefix arg, prompt for second argument SWITCHES,
 which is options for `diff'."
   (interactive
    (let* ((current (dired-get-filename t))
-         (target-dir (dired-dwim-target-directory))
-         (marked (and (mark t) (save-excursion
-                                 (goto-char (mark t))
-                                 (dired-get-filename nil t))))
-         (defaults
-           (append (dired-dwim-target-defaults nil target-dir)
-                   ;; Additional file with the mark.
-                   (and marked (list marked)))))
+         ;; Get the file at the mark.
+         (file-at-mark (if (mark t)
+                           (save-excursion (goto-char (mark t))
+                                           (dired-get-filename t t))))
+         ;; Use it as default if it's not the same as the current file,
+         ;; and the target dir is the current dir or the mark is active.
+         (default (if (and (not (equal file-at-mark current))
+                           (or (equal (dired-dwim-target-directory)
+                                      (dired-current-directory))
+                               mark-active))
+                      file-at-mark))
+         (target-dir (if default
+                         (dired-current-directory)
+                       (dired-dwim-target-directory)))
+         (defaults (dired-dwim-target-defaults (list current) target-dir)))
      (require 'diff)
      (list
       (minibuffer-with-setup-hook
          (lambda ()
            (set (make-local-variable 'minibuffer-default-add-function) nil)
            (setq minibuffer-default defaults))
-       (read-file-name (format "Diff %s with: " current) target-dir nil t))
+       (read-file-name
+        (format "Diff %s with%s: " current
+                (if default (format " (default %s)" default) ""))
+        target-dir default t))
       (if current-prefix-arg
          (read-string "Options for diff: "
                       (if (stringp diff-switches)