Yoo
Yoo

Reputation: 18326

Open dired and select the file associated with the previous buffer?

Let's say I am editing blah.txt with Emacs and I decide to open dired to rename the file blah.txt. When I press C-x d RET (or C-x C-f RET), a dired buffer will show up to display the content of the directory containing blah.txt, but the cursor will not be on blah.txt. So I need to search my file first (C-s blah.txt) to place my cursor on it and then I can rename it (R).

How do I automate or remove the step C-s blah.txt?

Upvotes: 8

Views: 918

Answers (6)

Jackson Ray Hamilton
Jackson Ray Hamilton

Reputation: 9466

$ emacs --version
GNU Emacs 24.3.1

In .emacs:

(require 'dired-x)

Now C-x C-j should be bound to dired-jump.

Upvotes: 0

Tao Peng
Tao Peng

Reputation: 2718

dired-jump is exactly what you want.

(autoload 'dired-jump "dired-x" "Jump to dired corresponding current buffer.")
(autoload 'dired-jump-other-window "dired-x" "jump to dired in other window.")

Then call:

M-x dired-jump

or

M-x dired-jump-other-window

Upvotes: 13

Trey Jackson
Trey Jackson

Reputation: 74420

This piece of advice will do what you want:

(defadvice dired (around dired-jump-to-buffer activate)
  "When running dired, move cursor to the line for the buffer we came from"
  (interactive (list nil nil)) ;; bogus values, will be overwritten below
  (let ((coming-from (buffer-file-name)))
(ad-set-args 0 (dired-read-dir-and-switches ""))
ad-do-it
(when (and coming-from
       (equal (file-truename default-directory) (file-truename (file-name-directory coming-from))))
    (goto-char (point-min))
    (search-forward (file-name-nondirectory coming-from) nil t))))

Note: Works for C-x d, but not the C-x C-f entry point to dired.

Upvotes: 1

VitoshKa
VitoshKa

Reputation: 8523

Sunrise Commander is a much improved dired. and it does what you need by default.

Upvotes: 2

offby1
offby1

Reputation: 6983

You want C-x C-j.

Upvotes: 5

Alexey Voinov
Alexey Voinov

Reputation: 1116

You can do something like that:

M-: (dired (buffer-name (current-buffer)))

Then the only file visible in dired will be your current file and cursor will be right on it.

Upvotes: 1

Related Questions