Mercurial > emacs
changeset 94845:1aa1de92b8a1
New functions implementing motion to next and previous directory.
author | Eric S. Raymond <esr@snark.thyrsus.com> |
---|---|
date | Sat, 10 May 2008 12:40:57 +0000 |
parents | 19d0bdbf4831 |
children | 1a6e4ea4e517 |
files | lisp/ChangeLog lisp/vc-dispatcher.el |
diffstat | 2 files changed, 46 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sat May 10 08:54:03 2008 +0000 +++ b/lisp/ChangeLog Sat May 10 12:40:57 2008 +0000 @@ -1,3 +1,8 @@ +2008-05-10 Eric S. Raymond <esr@snark.thyrsus.com> + + * vc-dispatcher.el (vc-dir-next-directory, vc-dir-prev-directory): + New functions implementing motion to next and previous directory. + 2008-05-10 Dan Nicolaescu <dann@ics.uci.edu> * vc.el: Update todo.
--- a/lisp/vc-dispatcher.el Sat May 10 08:54:03 2008 +0000 +++ b/lisp/vc-dispatcher.el Sat May 10 12:40:57 2008 +0000 @@ -117,8 +117,6 @@ ;; ;; - vc-dir toolbar needs more icons. ;; -;; - add commands to move to the prev/next directory in vc-dir. -;; ;; - vc-dir-menu-map-filter hook call needs to be moved to vc.el. ;; @@ -743,6 +741,11 @@ (define-key map "\t" 'vc-dir-next-line) (define-key map "p" 'vc-dir-previous-line) (define-key map [backtab] 'vc-dir-previous-line) + ;;; Rebind paragraph-movement commands. + (define-key map "\M-}" 'vc-dir-next-directory) + (define-key map "\M-{" 'vc-dir-prev-directory) + (define-key map "\M-<down>" 'vc-dir-next-directory) + (define-key map "\M-<up>" 'vc-dir-prev-directory) ;; The remainder. (define-key map "f" 'vc-dir-find-file) (define-key map "\C-m" 'vc-dir-find-file) @@ -930,6 +933,42 @@ (ewoc-goto-prev vc-ewoc arg) (vc-dir-move-to-goal-column)) +(defun vc-dir-next-directory () + "Go to the next directory." + (interactive) + (let ((orig (point))) + (if + (catch 'foundit + (while t + (let* ((next (ewoc-next vc-ewoc (ewoc-locate vc-ewoc)))) + (cond ((not next) + (throw 'foundit t)) + (t + (progn + (ewoc-goto-node vc-ewoc next) + (vc-dir-move-to-goal-column) + (if (vc-dir-fileinfo->directory (ewoc-data next)) + (throw 'foundit nil)))))))) + (goto-char orig)))) + +(defun vc-dir-prev-directory () + "Go to the previous directory." + (interactive) + (let ((orig (point))) + (if + (catch 'foundit + (while t + (let* ((prev (ewoc-prev vc-ewoc (ewoc-locate vc-ewoc)))) + (cond ((not prev) + (throw 'foundit t)) + (t + (progn + (ewoc-goto-node vc-ewoc prev) + (vc-dir-move-to-goal-column) + (if (vc-dir-fileinfo->directory (ewoc-data prev)) + (throw 'foundit nil)))))))) + (goto-char orig)))) + (defun vc-dir-mark-unmark (mark-unmark-function) (if (use-region-p) (let ((firstl (line-number-at-pos (region-beginning)))