aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuri Linkov2019-11-17 00:06:16 +0200
committerJuri Linkov2019-11-17 00:06:16 +0200
commit5ddec1365c1594b2a5e13383ed6acefb5098947d (patch)
tree4bb782c0c58f03ecb61b863035affd3c1bee8ac4
parent99271ea8de589f2ca5475ab02393c424295ff1f2 (diff)
downloademacs-5ddec1365c1594b2a5e13383ed6acefb5098947d.tar.gz
emacs-5ddec1365c1594b2a5e13383ed6acefb5098947d.zip
* lisp/dired.el (dired-dwim-target): Add choice dired-dwim-target-next-visible
* lisp/dired-aux.el (dired-dwim-target-next): Add arg ALL-FRAMES. (dired-dwim-target-next-visible): New function. * doc/emacs/dired.texi (Operating on Files): Describe function value of dired-dwim-target. (Bug#35385)
-rw-r--r--doc/emacs/dired.texi5
-rw-r--r--lisp/dired-aux.el12
-rw-r--r--lisp/dired.el13
3 files changed, 22 insertions, 8 deletions
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 8fab508dea6..d1863510d45 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -659,7 +659,10 @@ is non-@code{nil}, and if there is another Dired buffer displayed in
659some window, that other buffer's directory is suggested instead. 659some window, that other buffer's directory is suggested instead.
660You can customize @code{dired-dwim-target} to prefer either the next 660You can customize @code{dired-dwim-target} to prefer either the next
661window with a Dired buffer, or the most recently used window with 661window with a Dired buffer, or the most recently used window with
662a Dired buffer. 662a Dired buffer, or to use any other function. When the value is
663a function, it will be called with no arguments and is expected to
664return a list of directories which will be used as defaults
665(i.e. default target and ``future history'').
663 666
664 Here are the file-manipulating Dired commands that operate on files. 667 Here are the file-manipulating Dired commands that operate on files.
665 668
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 6fcb074f6a1..4d7abd1ef6f 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -1999,15 +1999,19 @@ Optional arg HOW-TO determines how to treat the target.
1999 (dired-dwim-target 1999 (dired-dwim-target
2000 (dired-dwim-target-next)))) 2000 (dired-dwim-target-next))))
2001 2001
2002(defun dired-dwim-target-next () 2002(defun dired-dwim-target-next (&optional all-frames)
2003 ;; Return directories from all next visible windows with dired-mode buffers. 2003 ;; Return directories from all next windows with dired-mode buffers.
2004 (mapcan (lambda (w) 2004 (mapcan (lambda (w)
2005 (with-current-buffer (window-buffer w) 2005 (with-current-buffer (window-buffer w)
2006 (when (eq major-mode 'dired-mode) 2006 (when (eq major-mode 'dired-mode)
2007 (list (dired-current-directory))))) 2007 (list (dired-current-directory)))))
2008 (delq (selected-window) (window-list-1 2008 (delq (selected-window) (window-list-1
2009 (next-window nil 'nomini 'visible) 2009 (next-window nil 'nomini all-frames)
2010 'nomini 'visible)))) 2010 'nomini all-frames))))
2011
2012(defun dired-dwim-target-next-visible ()
2013 ;; Return directories from all next visible windows with dired-mode buffers.
2014 (dired-dwim-target-next 'visible))
2011 2015
2012(defun dired-dwim-target-recent () 2016(defun dired-dwim-target-recent ()
2013 ;; Return directories from all visible windows with dired-mode buffers 2017 ;; Return directories from all visible windows with dired-mode buffers
diff --git a/lisp/dired.el b/lisp/dired.el
index 009018fafe5..6523e487125 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -190,16 +190,23 @@ use its current directory, instead of this Dired buffer's
190current directory. 190current directory.
191 191
192You can customize it to prefer either the next window with a Dired buffer, 192You can customize it to prefer either the next window with a Dired buffer,
193or the most recently used window with a Dired buffer. 193or the most recently used window with a Dired buffer, or to use any other
194function. When the value is a function, it will be called with no
195arguments and is expected to return a list of directories which will
196be used as defaults (i.e. default target and \"future history\")
197(though, `dired-dwim-target-defaults' might modify it a bit).
198The value t prefers the next windows on the same frame.
194 199
195The target is used in the prompt for file copy, rename etc." 200The target is used in the prompt for file copy, rename etc."
196 :type '(choice 201 :type '(choice
197 (const :tag "No guess" nil) 202 (const :tag "No guess" nil)
198 (function-item :tag "Prefer next windows" 203 (function-item :tag "Prefer next windows on the same frame"
199 dired-dwim-target-next) 204 dired-dwim-target-next)
205 (function-item :tag "Prefer next windows on visible frames"
206 dired-dwim-target-next-visible)
200 (function-item :tag "Prefer most recently used windows" 207 (function-item :tag "Prefer most recently used windows"
201 dired-dwim-target-recent) 208 dired-dwim-target-recent)
202 (function :tag "Your function") 209 (function :tag "Custom function")
203 (other :tag "Try to guess" t)) 210 (other :tag "Try to guess" t))
204 :group 'dired) 211 :group 'dired)
205 212