diff -r f99a3783e44e -r adc3abb3c1fc .emacs-my --- 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 "") '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 "") + '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 "") - 'dired-find-alternate-file) - (define-key dired-mode-map (kbd "") - (lambda () (interactive) (find-alternate-file ".."))) ) ;;; ----------------------------------------------------------------