diff options
| author | Juri Linkov | 2019-11-17 00:06:16 +0200 |
|---|---|---|
| committer | Juri Linkov | 2019-11-17 00:06:16 +0200 |
| commit | 5ddec1365c1594b2a5e13383ed6acefb5098947d (patch) | |
| tree | 4bb782c0c58f03ecb61b863035affd3c1bee8ac4 | |
| parent | 99271ea8de589f2ca5475ab02393c424295ff1f2 (diff) | |
| download | emacs-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.texi | 5 | ||||
| -rw-r--r-- | lisp/dired-aux.el | 12 | ||||
| -rw-r--r-- | lisp/dired.el | 13 |
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 | |||
| 659 | some window, that other buffer's directory is suggested instead. | 659 | some window, that other buffer's directory is suggested instead. |
| 660 | You can customize @code{dired-dwim-target} to prefer either the next | 660 | You can customize @code{dired-dwim-target} to prefer either the next |
| 661 | window with a Dired buffer, or the most recently used window with | 661 | window with a Dired buffer, or the most recently used window with |
| 662 | a Dired buffer. | 662 | a Dired buffer, or to use any other function. When the value is |
| 663 | a function, it will be called with no arguments and is expected to | ||
| 664 | return 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 | |||
| 190 | current directory. | 190 | current directory. |
| 191 | 191 | ||
| 192 | You can customize it to prefer either the next window with a Dired buffer, | 192 | You can customize it to prefer either the next window with a Dired buffer, |
| 193 | or the most recently used window with a Dired buffer. | 193 | or the most recently used window with a Dired buffer, or to use any other |
| 194 | function. When the value is a function, it will be called with no | ||
| 195 | arguments and is expected to return a list of directories which will | ||
| 196 | be used as defaults (i.e. default target and \"future history\") | ||
| 197 | (though, `dired-dwim-target-defaults' might modify it a bit). | ||
| 198 | The value t prefers the next windows on the same frame. | ||
| 194 | 199 | ||
| 195 | The target is used in the prompt for file copy, rename etc." | 200 | The 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 | ||