Make Total Commmander like key binding for Enter and Backspace.
--- a/.emacs-my Fri Sep 10 15:26:25 2010 +0300
+++ b/.emacs-my Fri Sep 10 18:46:13 2010 +0300
@@ -462,13 +462,37 @@
;; dired-recursive-copies 'top
;; dired-recursive-deletes 'top)
+(defun my-dired-up-dir ()
+ "'Reuse' buffer if enter to dir or open new buffer if enter to file."
+ (interactive)
+ (let* ( (dir (dired-current-directory)) (i (- (length dir) 2)) newdir )
+ (while (and
+ (>= i 0)
+ (not (equal (aref dir i) ?/)) )
+ (setq i (- i 1))
+ )
+ (setq newdir (substring dir 0 (max 0 i)))
+ (when (file-directory-p newdir)
+ (find-alternate-file newdir)
+ (dired-goto-file dir)
+ )
+ ))
+(define-key dired-mode-map (kbd "<backspace>") 'my-dired-up-dir)
+
+(defun my-dired-enter-to-dir ()
+ "'Reuse' buffer if enter to dir or open new buffer if enter to file."
+ (interactive)
+ (let ( (file (dired-get-file-for-visit)) )
+ (if (file-directory-p file)
+ (find-alternate-file file)
+ (find-file file)
+ )))
+(define-key dired-mode-map (kbd "<return>")
+ 'my-dired-enter-to-dir)
+
(when (>= emacs-major-version 22)
;; Enable 'a' command.
(put 'dired-find-alternate-file 'disabled nil)
- (define-key dired-mode-map (kbd "<return>")
- 'dired-find-alternate-file)
- (define-key dired-mode-map (kbd "<backspace>")
- (lambda () (interactive) (find-alternate-file "..")))
)
;;; ----------------------------------------------------------------