Move dired-jump from dired-x to dired (Bug#21981)
* lisp/dired-x.el (dired-bind-jump): Change into defvar and make obsolete. (dired-extra-startup): Doc fix. (dired-jump, dired-jump-other-window): Move from here... * lisp/dired.el (dired-jump, dired-jump-other-window): ...to here. * lisp/bindings.el (ctl-x-map, ctl-x-4-map): Bind 'C-j' to 'dired-jump' and 'dired-jump-other-window'. * doc/misc/dired-x.texi (Features, Installation) (Miscellaneous Commands): Remove documentation of 'dired-jump'. * doc/emacs/dired.texi (Dired Enter): Document 'dired-jump' and dired-jump-other-window. * etc/NEWS: Announce the above changes. * test/lisp/dired-tests.el (dired-autoload): Adjust test.
This commit is contained in:
parent
f5d8cfff5a
commit
7d30ca7f66
7 changed files with 96 additions and 127 deletions
|
|
@ -109,6 +109,16 @@ the minibuffer (@pxref{Minibuffer History}).
|
|||
You can also invoke Dired by giving @kbd{C-x C-f} (@code{find-file})
|
||||
a directory's name.
|
||||
|
||||
@findex dired-jump
|
||||
@findex dired-jump-other-window
|
||||
@kindex C-x C-j
|
||||
@kindex C-x 4 C-j
|
||||
Typing @kbd{C-x C-j} (@code{dired-jump}) in any buffer will open a
|
||||
Dired buffer and move point to the line corresponding to the current
|
||||
file. In Dired, move up a level and go to the previous directory's
|
||||
line. Typing @kbd{C-x 4 C-j} (@code{dired-jump-other-window} has the
|
||||
same effect but opens a new window for the Dired buffer.
|
||||
|
||||
The variable @code{dired-listing-switches} specifies the options to
|
||||
give to @command{ls} for listing the directory; this string
|
||||
@emph{must} contain @samp{-l}. If you use a prefix argument with the
|
||||
|
|
|
|||
|
|
@ -150,10 +150,8 @@ Commands using file marking
|
|||
|
||||
@noindent
|
||||
@file{dired-x.el} binds some functions to keys in Dired Mode (@pxref{Key
|
||||
Index}) and also binds @kbd{C-x C-j} and @kbd{C-x 4 C-j} @emph{globally} to
|
||||
@code{dired-jump} (@pxref{Miscellaneous Commands}). Optionally, it
|
||||
also binds @kbd{C-x C-f} and @kbd{C-x 4 C-f} to
|
||||
@code{dired-x-find-file} and @code{dired-x-find-file-other-window},
|
||||
Index}). Optionally, it also binds @kbd{C-x C-f} and @kbd{C-x 4 C-f}
|
||||
to @code{dired-x-find-file} and @code{dired-x-find-file-other-window},
|
||||
respectively (@pxref{Find File At Point}).
|
||||
|
||||
@node Technical Details
|
||||
|
|
@ -204,32 +202,10 @@ when you first type @kbd{C-x d}).
|
|||
|
||||
@ifnottex
|
||||
@menu
|
||||
* Optional Installation Dired Jump::
|
||||
* Optional Installation File At Point::
|
||||
@end menu
|
||||
@end ifnottex
|
||||
|
||||
@node Optional Installation Dired Jump
|
||||
@section Optional Installation Dired Jump
|
||||
|
||||
@cindex autoloading @code{dired-jump} and @code{dired-jump-other-window}
|
||||
|
||||
In order to have @code{dired-jump} and @code{dired-jump-other-window}
|
||||
(@pxref{Miscellaneous Commands}) work @emph{before} @code{dired} and
|
||||
@code{dired-x} have been properly loaded you should set-up an autoload
|
||||
for these functions. In your @file{.emacs} file put
|
||||
|
||||
@example
|
||||
(autoload 'dired-jump "dired-x"
|
||||
"Jump to Dired buffer corresponding to current buffer." t)
|
||||
|
||||
(autoload 'dired-jump-other-window "dired-x"
|
||||
"Like \\[dired-jump] (dired-jump) but in other window." t)
|
||||
|
||||
(define-key global-map "\C-x\C-j" 'dired-jump)
|
||||
(define-key global-map "\C-x4\C-j" 'dired-jump-other-window)
|
||||
@end example
|
||||
|
||||
@node Optional Installation File At Point
|
||||
@section Optional Installation File At Point
|
||||
|
||||
|
|
@ -919,28 +895,6 @@ inserted subdirectories.
|
|||
|
||||
@table @code
|
||||
|
||||
@item dired-jump
|
||||
@findex dired-jump
|
||||
@kindex C-x C-j
|
||||
@cindex jumping to Dired listing containing file.
|
||||
Bound to @kbd{C-x C-j}. Jump back to Dired: If in a file, edit the current
|
||||
directory and move to file's line. If in Dired already, pop up a level and
|
||||
go to old directory's line. In case the proper Dired file line cannot be
|
||||
found, refresh the Dired buffer and try again.
|
||||
|
||||
@item dired-jump-other-window
|
||||
@findex dired-jump-other-window
|
||||
@kindex C-x 4 C-j
|
||||
Bound to @kbd{C-x 4 C-j}. Like @code{dired-jump}, but to other window.
|
||||
|
||||
These functions can be autoloaded so they work even though @file{dired-x.el}
|
||||
has not been loaded yet (@pxref{Optional Installation Dired Jump}).
|
||||
|
||||
@vindex dired-bind-jump
|
||||
If the variable @code{dired-bind-jump} is @code{nil}, @code{dired-jump} will not be
|
||||
bound to @kbd{C-x C-j} and @code{dired-jump-other-window} will not be bound to
|
||||
@kbd{C-x 4 C-j}.
|
||||
|
||||
@item dired-vm
|
||||
@cindex reading mail.
|
||||
@kindex V
|
||||
|
|
|
|||
13
etc/NEWS
13
etc/NEWS
|
|
@ -290,6 +290,19 @@ details of marking the file at the end of the region.
|
|||
*** State changing VC operations are supported in Dired on files and
|
||||
directories with the help of new command 'dired-vc-next-action'.
|
||||
|
||||
+++
|
||||
*** 'dired-jump' and 'dired-jump-other-window' moved from dired-x to dired.
|
||||
The 'dired-jump' and 'dired-jump-other-window' commands have been
|
||||
moved from the 'dired-x' package to 'dired'. The user option
|
||||
'dired-bind-jump' no longer has any effect and is now obsolete.
|
||||
The commands are now bound to 'C-x C-j' and 'C-x 4 C-j' by default.
|
||||
|
||||
To get the old behavior of 'dired-bind-jump' back and unbind the above
|
||||
keys, add the following to your Init file:
|
||||
|
||||
(global-set-key "\C-x\C-j" nil)
|
||||
(global-set-key "\C-x4\C-j" nil)
|
||||
|
||||
** Change Logs and VC
|
||||
|
||||
*** More VC commands can be used from non-file buffers.
|
||||
|
|
|
|||
|
|
@ -1383,6 +1383,9 @@ if `inhibit-field-text-motion' is non-nil."
|
|||
(define-key ctl-x-map "'" 'expand-abbrev)
|
||||
(define-key ctl-x-map "\C-b" 'list-buffers)
|
||||
|
||||
(define-key ctl-x-map "\C-j" 'dired-jump)
|
||||
(define-key ctl-x-4-map "\C-j" 'dired-jump-other-window)
|
||||
|
||||
(define-key ctl-x-map "z" 'repeat)
|
||||
|
||||
(define-key esc-map "\C-l" 'reposition-window)
|
||||
|
|
|
|||
|
|
@ -64,21 +64,8 @@ mbox format, and so cannot be distinguished in this way."
|
|||
:type 'boolean
|
||||
:group 'dired-keys)
|
||||
|
||||
(defcustom dired-bind-jump t
|
||||
"Non-nil means bind `dired-jump' to C-x C-j, otherwise do not.
|
||||
Setting this variable directly after dired-x is loaded has no effect -
|
||||
use \\[customize]."
|
||||
:type 'boolean
|
||||
:set (lambda (sym val)
|
||||
(if (set sym val)
|
||||
(progn
|
||||
(define-key ctl-x-map "\C-j" 'dired-jump)
|
||||
(define-key ctl-x-4-map "\C-j" 'dired-jump-other-window))
|
||||
(if (eq 'dired-jump (lookup-key ctl-x-map "\C-j"))
|
||||
(define-key ctl-x-map "\C-j" nil))
|
||||
(if (eq 'dired-jump-other-window (lookup-key ctl-x-4-map "\C-j"))
|
||||
(define-key ctl-x-4-map "\C-j" nil))))
|
||||
:group 'dired-keys)
|
||||
(defvar dired-bind-jump t)
|
||||
(make-obsolete-variable 'dired-bind-jump "not used." "28.1")
|
||||
|
||||
(defcustom dired-bind-man t
|
||||
"Non-nil means bind `dired-man' to \"N\" in Dired, otherwise do not.
|
||||
|
|
@ -308,7 +295,6 @@ To see the options you can set, use M-x customize-group RET dired-x RET.
|
|||
See also the functions:
|
||||
`dired-flag-extension'
|
||||
`dired-virtual'
|
||||
`dired-jump'
|
||||
`dired-man'
|
||||
`dired-vm'
|
||||
`dired-rmail'
|
||||
|
|
@ -446,68 +432,7 @@ See variables `dired-texinfo-unclean-extensions',
|
|||
dired-bibtex-unclean-extensions
|
||||
dired-tex-unclean-extensions
|
||||
(list ".dvi"))))
|
||||
|
||||
(defvar archive-superior-buffer)
|
||||
(defvar tar-superior-buffer)
|
||||
;;; JUMP.
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-jump (&optional other-window file-name)
|
||||
"Jump to Dired buffer corresponding to current buffer.
|
||||
If in a file, Dired the current directory and move to file's line.
|
||||
If in Dired already, pop up a level and goto old directory's line.
|
||||
In case the proper Dired file line cannot be found, refresh the dired
|
||||
buffer and try again.
|
||||
When OTHER-WINDOW is non-nil, jump to Dired buffer in other window.
|
||||
When FILE-NAME is non-nil, jump to its line in Dired.
|
||||
Interactively with prefix argument, read FILE-NAME."
|
||||
(interactive
|
||||
(list nil (and current-prefix-arg
|
||||
(read-file-name "Jump to Dired file: "))))
|
||||
(cond
|
||||
((and (bound-and-true-p archive-subfile-mode)
|
||||
(buffer-live-p archive-superior-buffer))
|
||||
(switch-to-buffer archive-superior-buffer))
|
||||
((and (bound-and-true-p tar-subfile-mode)
|
||||
(buffer-live-p tar-superior-buffer))
|
||||
(switch-to-buffer tar-superior-buffer))
|
||||
(t
|
||||
;; Expand file-name before `dired-goto-file' call:
|
||||
;; `dired-goto-file' requires its argument to be an absolute
|
||||
;; file name; the result of `read-file-name' could be
|
||||
;; an abbreviated file name (Bug#24409).
|
||||
(let* ((file (or (and file-name (expand-file-name file-name))
|
||||
buffer-file-name))
|
||||
(dir (if file (file-name-directory file) default-directory)))
|
||||
(if (and (eq major-mode 'dired-mode) (null file-name))
|
||||
(progn
|
||||
(setq dir (dired-current-directory))
|
||||
(dired-up-directory other-window)
|
||||
(unless (dired-goto-file dir)
|
||||
;; refresh and try again
|
||||
(dired-insert-subdir (file-name-directory dir))
|
||||
(dired-goto-file dir)))
|
||||
(if other-window
|
||||
(dired-other-window dir)
|
||||
(dired dir))
|
||||
(if file
|
||||
(or (dired-goto-file file)
|
||||
;; refresh and try again
|
||||
(progn
|
||||
(dired-insert-subdir (file-name-directory file))
|
||||
(dired-goto-file file))
|
||||
;; Toggle omitting, if it is on, and try again.
|
||||
(when dired-omit-mode
|
||||
(dired-omit-mode)
|
||||
(dired-goto-file file)))))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-jump-other-window (&optional file-name)
|
||||
"Like \\[dired-jump] (`dired-jump') but in other window."
|
||||
(interactive
|
||||
(list (and current-prefix-arg
|
||||
(read-file-name "Jump to Dired file: "))))
|
||||
(dired-jump t file-name))
|
||||
|
||||
;;; OMITTING.
|
||||
|
||||
|
|
|
|||
|
|
@ -4476,6 +4476,70 @@ Ask means pop up a menu for the user to select one of copy, move or link."
|
|||
(add-to-list 'desktop-buffer-mode-handlers
|
||||
'(dired-mode . dired-restore-desktop-buffer))
|
||||
|
||||
|
||||
;;;; Jump to Dired
|
||||
|
||||
(defvar archive-superior-buffer)
|
||||
(defvar tar-superior-buffer)
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-jump (&optional other-window file-name)
|
||||
"Jump to Dired buffer corresponding to current buffer.
|
||||
If in a file, Dired the current directory and move to file's line.
|
||||
If in Dired already, pop up a level and goto old directory's line.
|
||||
In case the proper Dired file line cannot be found, refresh the dired
|
||||
buffer and try again.
|
||||
When OTHER-WINDOW is non-nil, jump to Dired buffer in other window.
|
||||
When FILE-NAME is non-nil, jump to its line in Dired.
|
||||
Interactively with prefix argument, read FILE-NAME."
|
||||
(interactive
|
||||
(list nil (and current-prefix-arg
|
||||
(read-file-name "Jump to Dired file: "))))
|
||||
(cond
|
||||
((and (bound-and-true-p archive-subfile-mode)
|
||||
(buffer-live-p archive-superior-buffer))
|
||||
(switch-to-buffer archive-superior-buffer))
|
||||
((and (bound-and-true-p tar-subfile-mode)
|
||||
(buffer-live-p tar-superior-buffer))
|
||||
(switch-to-buffer tar-superior-buffer))
|
||||
(t
|
||||
;; Expand file-name before `dired-goto-file' call:
|
||||
;; `dired-goto-file' requires its argument to be an absolute
|
||||
;; file name; the result of `read-file-name' could be
|
||||
;; an abbreviated file name (Bug#24409).
|
||||
(let* ((file (or (and file-name (expand-file-name file-name))
|
||||
buffer-file-name))
|
||||
(dir (if file (file-name-directory file) default-directory)))
|
||||
(if (and (eq major-mode 'dired-mode) (null file-name))
|
||||
(progn
|
||||
(setq dir (dired-current-directory))
|
||||
(dired-up-directory other-window)
|
||||
(unless (dired-goto-file dir)
|
||||
;; refresh and try again
|
||||
(dired-insert-subdir (file-name-directory dir))
|
||||
(dired-goto-file dir)))
|
||||
(if other-window
|
||||
(dired-other-window dir)
|
||||
(dired dir))
|
||||
(if file
|
||||
(or (dired-goto-file file)
|
||||
;; refresh and try again
|
||||
(progn
|
||||
(dired-insert-subdir (file-name-directory file))
|
||||
(dired-goto-file file))
|
||||
;; Toggle omitting, if it is on, and try again.
|
||||
(when dired-omit-mode
|
||||
(dired-omit-mode)
|
||||
(dired-goto-file file)))))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-jump-other-window (&optional file-name)
|
||||
"Like \\[dired-jump] (`dired-jump') but in other window."
|
||||
(interactive
|
||||
(list (and current-prefix-arg
|
||||
(read-file-name "Jump to Dired file: "))))
|
||||
(dired-jump t file-name))
|
||||
|
||||
(provide 'dired)
|
||||
|
||||
(run-hooks 'dired-load-hook) ; for your customizations
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@
|
|||
(ert-deftest dired-autoload ()
|
||||
"Tests to see whether dired-x has been autoloaded"
|
||||
(should
|
||||
(fboundp 'dired-jump))
|
||||
(fboundp 'dired-do-relsymlink))
|
||||
(should
|
||||
(autoloadp
|
||||
(symbol-function
|
||||
'dired-jump))))
|
||||
'dired-do-relsymlink))))
|
||||
|
||||
(ert-deftest dired-test-bug22694 ()
|
||||
"Test for https://debbugs.gnu.org/22694 ."
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue