aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Nicolaescu2010-06-30 15:03:07 -0700
committerDan Nicolaescu2010-06-30 15:03:07 -0700
commitd0cb23caf4c6a1fffaceddecc3eadb80c8948176 (patch)
tree9dd9034e1b70f94f7c0594aaec37a948ff2780af
parent01b229d127055ee20a38a1461b29533689e77543 (diff)
downloademacs-d0cb23caf4c6a1fffaceddecc3eadb80c8948176.tar.gz
emacs-d0cb23caf4c6a1fffaceddecc3eadb80c8948176.zip
Avoid displaying files with a nil state in vc-dir.
* lisp/vc-dir.el (vc-dir-update): Obey the noinsert argument in all cases that cause insertion. (vc-dir-resynch-file): Tell vc-dir-update to avoid inserting files with a nil state.
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/vc-dir.el36
2 files changed, 28 insertions, 16 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 45d12bff8db..e791d21f507 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
12010-06-30 Dan Nicolaescu <dann@ics.uci.edu>
2
3 Avoid displaying files with a nil state in vc-dir.
4 * vc-dir.el (vc-dir-update): Obey the noinsert argument in all
5 cases that cause insertion.
6 (vc-dir-resynch-file): Tell vc-dir-update to avoid inserting files
7 with a nil state.
8
12010-06-30 Chong Yidong <cyd@stupidchicken.com> 92010-06-30 Chong Yidong <cyd@stupidchicken.com>
2 10
3 * xml.el (xml-parse-region): Avoid infloop (Bug#5281). 11 * xml.el (xml-parse-region): Avoid infloop (Bug#5281).
diff --git a/lisp/vc-dir.el b/lisp/vc-dir.el
index 6428e8b9ddb..a32e5b35e08 100644
--- a/lisp/vc-dir.el
+++ b/lisp/vc-dir.el
@@ -398,22 +398,24 @@ If NOINSERT, ignore elements on ENTRIES which are not in the ewoc."
398 (setq entry (car entries)) 398 (setq entry (car entries))
399 (setq node (ewoc-next vc-ewoc node))) 399 (setq node (ewoc-next vc-ewoc node)))
400 (t 400 (t
401 (ewoc-enter-before vc-ewoc node 401 (unless noinsert
402 (apply 'vc-dir-create-fileinfo entry)) 402 (ewoc-enter-before vc-ewoc node
403 (apply 'vc-dir-create-fileinfo entry)))
403 (setq entries (cdr entries)) 404 (setq entries (cdr entries))
404 (setq entry (car entries)))))) 405 (setq entry (car entries))))))
405 (t 406 (t
406 ;; We might need to insert a directory node if the 407 (unless noinsert
407 ;; previous node was in a different directory. 408 ;; We might need to insert a directory node if the
408 (let* ((rd (file-relative-name entrydir)) 409 ;; previous node was in a different directory.
409 (prev-node (ewoc-prev vc-ewoc node)) 410 (let* ((rd (file-relative-name entrydir))
410 (prev-dir (vc-dir-node-directory prev-node))) 411 (prev-node (ewoc-prev vc-ewoc node))
411 (unless (string-equal entrydir prev-dir) 412 (prev-dir (vc-dir-node-directory prev-node)))
412 (ewoc-enter-before 413 (unless (string-equal entrydir prev-dir)
413 vc-ewoc node (vc-dir-create-fileinfo rd nil nil nil entrydir)))) 414 (ewoc-enter-before
414 ;; Now insert the node itself. 415 vc-ewoc node (vc-dir-create-fileinfo rd nil nil nil entrydir))))
415 (ewoc-enter-before vc-ewoc node 416 ;; Now insert the node itself.
416 (apply 'vc-dir-create-fileinfo entry)) 417 (ewoc-enter-before vc-ewoc node
418 (apply 'vc-dir-create-fileinfo entry)))
417 (setq entries (cdr entries) entry (car entries)))))) 419 (setq entries (cdr entries) entry (car entries))))))
418 ;; We're past the last node, all remaining entries go to the end. 420 ;; We're past the last node, all remaining entries go to the end.
419 (unless (or node noinsert) 421 (unless (or node noinsert)
@@ -888,10 +890,12 @@ If it is a file, return the corresponding cons for the file itself."
888 (vc-dir-resync-directory-files file) 890 (vc-dir-resync-directory-files file)
889 (ewoc-set-hf vc-ewoc 891 (ewoc-set-hf vc-ewoc
890 (vc-dir-headers vc-dir-backend default-directory) "")) 892 (vc-dir-headers vc-dir-backend default-directory) ""))
891 (let ((state (vc-dir-recompute-file-state file ddir))) 893 (let* ((complete-state (vc-dir-recompute-file-state file ddir))
894 (state (cadr complete-state)))
892 (vc-dir-update 895 (vc-dir-update
893 (list state) 896 (list complete-state)
894 status-buf (eq (cadr state) 'up-to-date)))))))))) 897 status-buf (or (not state)
898 (eq state 'up-to-date)))))))))))
895 ;; Remove out-of-date entries from vc-dir-buffers. 899 ;; Remove out-of-date entries from vc-dir-buffers.
896 (dolist (b drop) (setq vc-dir-buffers (delq b vc-dir-buffers))))) 900 (dolist (b drop) (setq vc-dir-buffers (delq b vc-dir-buffers)))))
897 901