views:

84

answers:

5

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?

A: 

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.

Alexey Voinov
A: 

You want C-x C-j.

offby1
And what is `C-x C-j`? It's not bound in text buffers or dired buffers (Emacs 23.2).
Trey Jackson
@Trey: `C-x C-j` is bound to `dired-jump`, but only when `dired-x` is loaded. (I think there's an Emacs policy that `dired-x` doesn't comply with here.)
Gilles
Thanks, Gilles; I hadn't realized that it wasn't bound by default.
offby1
A: 

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

VitoshKa
+1  A: 

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.

Trey Jackson
+4  A: 

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
Tao Peng