Commit 2fd5e67d authored by Juri Linkov's avatar Juri Linkov
Browse files

* lisp/dired-aux.el (dired-diff): Restore original functionality of

getting the default value, but keep new feature of using the
latest existing backup file (`diff-latest-backup-file').
parent 42917e79
...@@ -468,8 +468,8 @@ file at point. ...@@ -468,8 +468,8 @@ file at point.
mark/unmark/flag all files in the active region. mark/unmark/flag all files in the active region.
*** The minibuffer default for `=' (`dired-diff) has changed. *** The minibuffer default for `=' (`dired-diff) has changed.
It is now the backup file for the file at point, if one exists, rather It is now the backup file for the file at point, if one exists.
than the file at the mark. In Transient Mark mode the default is the file at the active mark.
*** `M-=' is no longer bound to `dired-backup-diff' in Dired buffers. *** `M-=' is no longer bound to `dired-backup-diff' in Dired buffers.
The global binding for `M-=', `count-words-region' is in effect. The global binding for `M-=', `count-words-region' is in effect.
......
2012-09-18 Juri Linkov <juri@jurta.org>
* dired-aux.el (dired-diff): Restore original functionality of
getting the default value, but keep new feature of using the
latest existing backup file (`diff-latest-backup-file').
2012-09-18 Juri Linkov <juri@jurta.org> 2012-09-18 Juri Linkov <juri@jurta.org>
   
* dired.el (dired-mark): If the region is active in Transient Mark * dired.el (dired-mark): If the region is active in Transient Mark
......
...@@ -51,33 +51,57 @@ into this list; they also should call `dired-log' to log the errors.") ...@@ -51,33 +51,57 @@ into this list; they also should call `dired-log' to log the errors.")
(defconst dired-star-subst-regexp "\\(^\\|[ \t]\\)\\*\\([ \t]\\|$\\)") (defconst dired-star-subst-regexp "\\(^\\|[ \t]\\)\\*\\([ \t]\\|$\\)")
(defconst dired-quark-subst-regexp "\\(^\\|[ \t]\\)\\?\\([ \t]\\|$\\)") (defconst dired-quark-subst-regexp "\\(^\\|[ \t]\\)\\?\\([ \t]\\|$\\)")
(declare-function diff-latest-backup-file "diff" (fn)) ; actually belongs into files.el
;;;###autoload ;;;###autoload
(defun dired-diff (file &optional switches) (defun dired-diff (file &optional switches)
"Compare file at point with file FILE using `diff'. "Compare file at point with file FILE using `diff'.
If called interactively, prompt for FILE; if the file at point If called interactively, prompt for FILE. If the file at point
has a backup file, use that as the default. has a backup file, use that as the default. If the mark is active
in Transient Mark mode, use the file at the mark as the default.
\(That's the mark set by \\[set-mark-command], not by Dired's
\\[dired-mark] command.)
FILE is the first file given to `diff'. The file at point
is the second file given to `diff'.
FILE is the first file given to `diff'. With prefix arg, prompt for second argument SWITCHES, which is
With prefix arg, prompt for second argument SWITCHES, the string of command switches for the third argument of `diff'."
which is the string of command switches for `diff'."
(interactive (interactive
(let* ((current (dired-get-filename t)) (let* ((current (dired-get-filename t))
(oldf (file-newest-backup current)) ;; Get the latest existing backup file.
(dir (if oldf (file-name-directory oldf)))) (oldf (diff-latest-backup-file current))
(list (read-file-name ;; Get the file at the mark.
(format "Diff %s with%s: " (file-at-mark (if (and transient-mark-mode mark-active)
(file-name-nondirectory current) (save-excursion (goto-char (mark t))
(if oldf (dired-get-filename t t))))
(concat " (default " (default-file (or file-at-mark
(file-name-nondirectory oldf) (and oldf (file-name-nondirectory oldf))))
")") ;; Use it as default if it's not the same as the current file,
"")) ;; and the target dir is current or there is a default file.
dir oldf t) (default (if (and (not (equal default-file current))
(if current-prefix-arg (or (equal (dired-dwim-target-directory)
(read-string "Options for diff: " (dired-current-directory))
(if (stringp diff-switches) default-file))
diff-switches default-file))
(mapconcat 'identity diff-switches " "))))))) (target-dir (if default
(dired-current-directory)
(dired-dwim-target-directory)))
(defaults (dired-dwim-target-defaults (list current) target-dir)))
(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%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)
diff-switches
(mapconcat 'identity diff-switches " ")))))))
(let ((current (dired-get-filename t))) (let ((current (dired-get-filename t)))
(when (or (equal (expand-file-name file) (when (or (equal (expand-file-name file)
(expand-file-name current)) (expand-file-name current))
......
...@@ -3763,17 +3763,22 @@ Ask means pop up a menu for the user to select one of copy, move or link." ...@@ -3763,17 +3763,22 @@ Ask means pop up a menu for the user to select one of copy, move or link."
;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command ;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown ;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown
;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff ;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
;;;;;; dired-diff) "dired-aux" "dired-aux.el" "3650b53533253c50b10e2aa8c9005ebf") ;;;;;; dired-diff) "dired-aux" "dired-aux.el" "2a883f0d481a8d0292eb90c09ae36a8e")
;;; Generated autoloads from dired-aux.el ;;; Generated autoloads from dired-aux.el
(autoload 'dired-diff "dired-aux" "\ (autoload 'dired-diff "dired-aux" "\
Compare file at point with file FILE using `diff'. Compare file at point with file FILE using `diff'.
If called interactively, prompt for FILE; if the file at point If called interactively, prompt for FILE. If the file at point
has a backup file, use that as the default. has a backup file, use that as the default. If the mark is active
in Transient Mark mode, use the file at the mark as the default.
\(That's the mark set by \\[set-mark-command], not by Dired's
\\[dired-mark] command.)
FILE is the first file given to `diff'. FILE is the first file given to `diff'. The file at point
With prefix arg, prompt for second argument SWITCHES, is the second file given to `diff'.
which is the string of command switches for `diff'.
With prefix arg, prompt for second argument SWITCHES, which is
the string of command switches for the third argument of `diff'.
\(fn FILE &optional SWITCHES)" t nil) \(fn FILE &optional SWITCHES)" t nil)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment