.emacs-my
changeset 471 1d59b8a9d8a0
parent 470 f859726fcca9
child 473 1334dc79ea80
equal deleted inserted replaced
470:f859726fcca9 471:1d59b8a9d8a0
   463 ;;  dired-recursive-deletes 'top)
   463 ;;  dired-recursive-deletes 'top)
   464 
   464 
   465 (defun my-dired-up-dir ()
   465 (defun my-dired-up-dir ()
   466   "'Reuse' buffer if enter to dir or open new buffer if enter to file."
   466   "'Reuse' buffer if enter to dir or open new buffer if enter to file."
   467   (interactive)
   467   (interactive)
   468   (let* ( (dir (dired-current-directory)) (i (- (length dir) 2)) newdir )
   468   ;; (dired-current-directory) always end with trailing '/' char.
       
   469   (let* ( (dir (dired-current-directory)) (i (- (length dir) 2)) upperdir )
   469     (while (and
   470     (while (and
   470             (>= i 0)
   471             (>= i 0)
   471             (not (equal (aref dir i) ?/)) )
   472             (not (equal (aref dir i) ?/)) )
   472       (setq i (- i 1))
   473       (setq i (- i 1))
   473       )
   474       )
   474     (setq newdir (substring dir 0 (max 0 i)))
   475     (setq upperdir (substring dir 0 (+ i 1)))
   475     (when (file-directory-p newdir)
   476     (when (file-directory-p upperdir)
   476       (find-alternate-file newdir)
   477       (find-alternate-file upperdir)
   477       (dired-goto-file dir)
   478       (dired-goto-file dir)
   478       )
   479       )
   479     ))
   480     ))
   480 (define-key dired-mode-map (kbd "<backspace>") 'my-dired-up-dir)
   481 (define-key dired-mode-map (kbd "<backspace>") 'my-dired-up-dir)
   481 
   482