mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
* vc-dir.el (vc-dir-hide-up-to-date): Also hide empty directories.
(vc-string-prefix-p): Move function ... * vc.el (vc-string-prefix-p): ... here.
This commit is contained in:
parent
dcaf1e4bfe
commit
f731e2f977
3 changed files with 34 additions and 11 deletions
|
|
@ -1,3 +1,9 @@
|
|||
2008-06-28 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* vc-dir.el (vc-dir-hide-up-to-date): Also hide empty directories.
|
||||
(vc-string-prefix-p): Move function ...
|
||||
* vc.el (vc-string-prefix-p): ... here.
|
||||
|
||||
2008-06-27 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* vc-dir.el (vc-dir): Complete only directory names.
|
||||
|
|
|
|||
|
|
@ -478,11 +478,6 @@ If a prefix argument is given, move by that many lines."
|
|||
(funcall mark-unmark-function))))
|
||||
(funcall mark-unmark-function)))
|
||||
|
||||
(defun vc-string-prefix-p (prefix string)
|
||||
(let ((lpref (length prefix)))
|
||||
(and (>= (length string) lpref)
|
||||
(eq t (compare-strings prefix nil nil string nil lpref)))))
|
||||
|
||||
(defun vc-dir-parent-marked-p (arg)
|
||||
;; Return nil if none of the parent directories of arg is marked.
|
||||
(let* ((argdir (vc-dir-node-directory arg))
|
||||
|
|
@ -938,9 +933,29 @@ outside of VC) and one wants to do some operation on it."
|
|||
(defun vc-dir-hide-up-to-date ()
|
||||
"Hide up-to-date items from display."
|
||||
(interactive)
|
||||
(ewoc-filter
|
||||
vc-ewoc
|
||||
(lambda (crt) (not (eq (vc-dir-fileinfo->state crt) 'up-to-date)))))
|
||||
(let ((crt (ewoc-nth vc-ewoc -1))
|
||||
(first (ewoc-nth vc-ewoc 0)))
|
||||
;; Go over from the last item to the first and remove the
|
||||
;; up-to-date files and directories with no child files.
|
||||
(while (not (eq crt first))
|
||||
(let* ((data (ewoc-data crt))
|
||||
(dir (vc-dir-fileinfo->directory data))
|
||||
(next (ewoc-next vc-ewoc crt))
|
||||
(prev (ewoc-prev vc-ewoc crt))
|
||||
;; ewoc-delete does not work without this...
|
||||
(inhibit-read-only t))
|
||||
(when (or
|
||||
;; Remove directories with no child files.
|
||||
(and dir
|
||||
(or
|
||||
;; Nothing follows this directory.
|
||||
(not next)
|
||||
;; Next item is a directory.
|
||||
(vc-dir-fileinfo->directory (ewoc-data next))))
|
||||
;; Remove files in the up-to-date state.
|
||||
(eq (vc-dir-fileinfo->state data) 'up-to-date))
|
||||
(ewoc-delete vc-ewoc crt))
|
||||
(setq crt prev)))))
|
||||
|
||||
(defun vc-dir-status-printer (fileentry)
|
||||
(vc-call-backend vc-dir-backend 'status-printer fileentry))
|
||||
|
|
|
|||
|
|
@ -643,9 +643,6 @@
|
|||
;;
|
||||
;; - vc-dir toolbar needs more icons.
|
||||
;;
|
||||
;; - vc-dir-hide-up-to-date needs to hide directories that do not have
|
||||
;; any children anymore.
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(require 'vc-hooks)
|
||||
|
|
@ -2476,6 +2473,11 @@ to provide the `find-revision' operation instead."
|
|||
|
||||
;; These things should probably be generally available
|
||||
|
||||
(defun vc-string-prefix-p (prefix string)
|
||||
(let ((lpref (length prefix)))
|
||||
(and (>= (length string) lpref)
|
||||
(eq t (compare-strings prefix nil nil string nil lpref)))))
|
||||
|
||||
(defun vc-file-tree-walk (dirname func &rest args)
|
||||
"Walk recursively through DIRNAME.
|
||||
Invoke FUNC f ARGS on each VC-managed file f underneath it."
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue