+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.
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)