From: Tino Calancha Date: Mon, 27 Feb 2017 07:26:06 +0000 (+0900) Subject: Choose the right target dir on dired operations X-Git-Tag: emacs-26.0.90~703 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=841e3e377c97142cfe76b9d91467f439198f5e39;p=emacs.git Choose the right target dir on dired operations Prevent from changing the input target dir when dired-dwim-target is non-nil (Bug#25609). * lisp/dired-aux.el (dired-do-create-files): If dired-dwim-target is non-nil, then bind 'default' to nil. * test/lisp/dired-tests.el (dired-test-bug25609): Add test. --- diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index caa3b45705b..d7ca0527879 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1791,6 +1791,7 @@ Optional arg HOW-TO determines how to treat the target. (and (consp fn-list) (null (cdr fn-list)) (car fn-list))) (target-dir (dired-dwim-target-directory)) (default (and dired-one-file + (not dired-dwim-target) ; Bug#25609 (expand-file-name (file-name-nondirectory (car fn-list)) target-dir))) (defaults (dired-dwim-target-defaults fn-list target-dir)) diff --git a/test/lisp/dired-tests.el b/test/lisp/dired-tests.el index 489f8fdfea3..1863864abdf 100644 --- a/test/lisp/dired-tests.el +++ b/test/lisp/dired-tests.el @@ -20,6 +20,7 @@ ;;; Code: (require 'ert) (require 'dired) +(require 'nadvice) (ert-deftest dired-autoload () @@ -52,5 +53,36 @@ ;; Clean up (delete-directory dir 'recursive)))) +(ert-deftest dired-test-bug25609 () + "Test for http://debbugs.gnu.org/25609 ." + (let* ((from (make-temp-file "foo" 'dir)) + (to (make-temp-file "bar" 'dir)) + (target (expand-file-name (file-name-nondirectory from) to)) + (nested (expand-file-name (file-name-nondirectory from) target)) + (dired-dwim-target t) + (dired-recursive-copies 'always)) ; Don't prompt me. + (advice-add 'dired-query ; Don't ask confirmation to overwrite a file. + :override + (lambda (sym prompt &rest args) (setq dired-query t)) + '((name . "advice-dired-query"))) + (advice-add 'completing-read ; Just return init. + :override + (lambda (prompt coll &optional pred match init hist def inherit keymap) + init) + '((name . "advice-completing-read"))) + (dired to) + (dired-other-window temporary-file-directory) + (dired-goto-file from) + (dired-do-copy) + (dired-do-copy); Again. + (unwind-protect + (progn + (should (file-exists-p target)) + (should-not (file-exists-p nested))) + (delete-directory from 'recursive) + (delete-directory to 'recursive) + (advice-remove 'dired-query "advice-dired-query") + (advice-remove 'completing-read "advice-completing-read")))) + (provide 'dired-tests) ;; dired-tests.el ends here