Go to the previous, next section.

Multiple Dired Directories and Non-Dired Commands

An Emacs buffer can have but one working directory, stored in the buffer-local variable default-directory. A Dired buffer may have several subdirectories inserted, but still has but one working directory: that of the top level Dired directory in that buffer. For some commands it is appropriate that they use the current Dired directory instead of default-directory, e.g., find-file and compile.

A general mechanism is provided for special handling of the working directory in special major modes:

default-directory-alist
Default: ((dired-mode . (dired-current-directory)))

Alist of major modes and their opinion on default-directory, as a lisp expression to evaluate. A resulting value of nil is ignored in favor of default-directory.

default-directory
Function with usage like variable default-directory, but knows about the special cases in variable default-directory-alist.

Find File At Point

`dired-x' provides a method of visiting or editing a file mentioned in the buffer you are viewing (e.g., a mail buffer, a news article, a README file, etc.) or to test if that file exists. You can then modify this in the minibuffer after snatching the filename.

When installed `dired-x' will substitute dired-x-find-file for find-file (normally bound to C-x C-f) and dired-x-find-file-other-window for find-file-other-window (normally bound to C-x 4 C-f).

In order to use this feature, you will need to set dired-x-hands-off-my-keys to nil inside dired-load-hook (See section Optional Installation File At Point).

dired-x-find-file

dired-x-find-file behaves exactly like find-file (normally bound to C-x C-f) unless a prefix argument is passed to the function in which case it will use the filename at point as a guess for the file to visit.

For example, if the buffer you were reading contained the words

Available via anonymous ftp in

   /roebling.poly.edu:/pub/lisp/crypt++.el.gz

then you could move your cursor to the line containing the ftp address and type C-u C-x C-f (the C-u is a universal argument). The minibuffer would read

Find file: /roebling.poly.edu:/pub/lisp/crypt++.el.gz

with the point after the last /. If you hit return emacs will visit the file at that address. This also works with files on your own computer.

dired-x-find-file-other-window

dired-x-find-file-other-window behaves exactly like find-file-other-window (normally bound to C-x 4 C-f) unless a prefix argument is used. See dired-x-find-file for more information.

dired-x-hands-off-my-keys
If set to t, then it means that `dired-x' should not bind dired-x-find-file over find-file on keyboard. Similarly, it should not bind dired-x-find-file-other-window over find-file-other-window. If you change this variable after `dired-x.el' is loaded then do M-x dired-x-bind-find-file. The default value of this variable is t; by default, the binding is not done. See See section Optional Installation File At Point.

dired-x-bind-find-file
A function, which can be called interactively or in your `~/.emacs' file, that uses the value of dired-x-hands-off-my-keys to determine if dired-x-find-file should be bound over find-file and dired-x-find-file-other-window bound over find-file-other-window. See See section Optional Installation File At Point.

Go to the previous, next section.