summaryrefslogtreecommitdiff
path: root/lisp/dired-aux.el
diff options
context:
space:
mode:
authorJuri Linkov <juri@linkov.net>2019-11-12 23:21:14 +0200
committerJuri Linkov <juri@linkov.net>2019-11-12 23:21:14 +0200
commitd0351f4d2010e3e8f3ada04b045dede10f110d7f (patch)
treee7fa73d650e3149372ec15bc98acc1dfe0b9c01c /lisp/dired-aux.el
parent4cccf7659a4767274b383e5fc820e27391988cc7 (diff)
downloademacs-d0351f4d2010e3e8f3ada04b045dede10f110d7f.tar.gz
emacs-d0351f4d2010e3e8f3ada04b045dede10f110d7f.tar.bz2
emacs-d0351f4d2010e3e8f3ada04b045dede10f110d7f.zip
* lisp/dired.el (dired-dwim-target): Add new choices (bug#35385)
* lisp/dired.el (dired-dwim-target): Add choices dired-dwim-target-next and dired-dwim-target-recent. * lisp/dired-aux.el (dired-dwim-target-next) (dired-dwim-target-recent): New functions. (dired-dwim-target-directories): Call either of them. * doc/emacs/dired.texi (Operating on Files): Mention new preferences in dired-dwim-target.
Diffstat (limited to 'lisp/dired-aux.el')
-rw-r--r--lisp/dired-aux.el16
1 files changed, 16 insertions, 0 deletions
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 184b507e1de..9f34b2afe99 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -1993,6 +1993,22 @@ Optional arg HOW-TO determines how to treat the target.
(format prompt (dired-mark-prompt arg files)) dir default))
(defun dired-dwim-target-directories ()
+ (cond ((functionp dired-dwim-target)
+ (funcall dired-dwim-target))
+ (dired-dwim-target
+ (dired-dwim-target-next))))
+
+(defun dired-dwim-target-next ()
+ ;; Return directories from all next visible windows with dired-mode buffers.
+ (mapcan (lambda (w)
+ (with-current-buffer (window-buffer w)
+ (when (eq major-mode 'dired-mode)
+ (list (dired-current-directory)))))
+ (delq (selected-window) (window-list-1
+ (next-window nil 'nomini 'visible)
+ 'nomini 'visible))))
+
+(defun dired-dwim-target-recent ()
;; Return directories from all visible windows with dired-mode buffers
;; ordered by most-recently-used.
(mapcar #'cdr (sort (mapcan (lambda (w)