Sometimes when we are in some deep directory, it would be really
convenient to be able to jump to an arbitrary parent directory shown by
dired header. e.g., a dired header line may be:
/this/is/a/really/long/project/dir/curr:
If i want to open dired with `/this/is/a/really', i could simply click
at `really', without having to `^' a few times carefully.
I have something like below in my config file. But it should be easy to
integrate it with `dired-insert-directory' in dired.el.
---------------------------------8<-------------------------------------
(defun xwl-dired-jump-to-parent (event)
(interactive "e")
(let (window pos file)
(save-excursion
(setq window (posn-window (event-end event))
pos (posn-point (event-end event)))
(with-current-buffer (window-buffer window)
(goto-char pos)
(when (search-forward "/" (line-end-position) t 1)
(let ((beg 3)
(end (point)))
(dired (buffer-substring beg end))))))))
(defun xwl-dired-make-header-jumpable ()
"Click on dired header will jump to that directory directly."
(let ((inhibit-read-only t))
(save-excursion
(goto-char (point-min))
(let ((bound (line-end-position))
start end)
(when (search-forward "/" bound t 1)
(setq start (point))
(while (search-forward "/" bound t 1)
(setq end (1- (point)))
(add-text-properties start end
`(mouse-face
highlight
help-echo "mouse-1: goto here"
keymap ,(let ((map (make-sparse-keymap)))
(define-key map [down-mouse-1] 'xwl-dired-jump-to-parent)
map)))
(setq start (point))))))))
(add-hook 'dired-after-readin-hook 'xwl-dired-make-header-jumpable)
---------------------------------8<-------------------------------------
In GNU Emacs 24.5.2 (x86_64-apple-darwin14.5.0, Carbon Version 157 AppKit 1404.13)
of 2015-11-08 on ULMMAC029
Repository revision: 232183c1fbb3665a51cfb1e9dbd380127bb4a971
Windowing system distributor `Apple Inc.', version 10.11.1
Configured using:
`configure --with-mac'
- William