diff options
-rw-r--r-- | lisp/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/dired-aux.el | 28 |
2 files changed, 28 insertions, 9 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 26ff5d4c7ce..cd139b72456 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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. diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 4976d2cd683..d3f5de72c7f 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -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) |