Mercurial > emacs
changeset 98532:69b1ca445635
(vc-cvs-after-dir-status): Parse the output for non
existent files.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Mon, 06 Oct 2008 05:30:25 +0000 |
parents | 8b46bfc83346 |
children | 604d7c98ac1a |
files | lisp/ChangeLog lisp/vc-cvs.el |
diffstat | 2 files changed, 26 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Oct 05 19:07:03 2008 +0000 +++ b/lisp/ChangeLog Mon Oct 06 05:30:25 2008 +0000 @@ -1,3 +1,8 @@ +2008-10-06 Dan Nicolaescu <dann@ics.uci.edu> + + * vc-cvs.el (vc-cvs-after-dir-status): Parse the output for non + existent files. + 2008-10-05 Chong Yidong <cyd@stupidchicken.com> * international/mule-cmds.el (universal-coding-system-argument):
--- a/lisp/vc-cvs.el Sun Oct 05 19:07:03 2008 +0000 +++ b/lisp/vc-cvs.el Mon Oct 06 05:30:25 2008 +0000 @@ -830,13 +830,14 @@ (file nil) (result nil) (missing nil) + (ignore-next nil) (subdir default-directory)) (goto-char (point-min)) (while ;; Look for either a file entry, an unregistered file, or a ;; directory change. (re-search-forward - "\\(^=+\n\\([^=c?\n].*\n\\|\n\\)+\\)\\|\\(\\(^?? .*\n\\)+\\)\\|\\(^cvs status: Examining .*\n\\)" + "\\(^=+\n\\([^=c?\n].*\n\\|\n\\)+\\)\\|\\(\\(^?? .*\n\\)+\\)\\|\\(^cvs status: \\(Examining\\|nothing\\) .*\n\\)" nil t) ;; FIXME: get rid of narrowing here. (narrow-to-region (match-beginning 0) (match-end 0)) @@ -850,6 +851,21 @@ (expand-file-name (match-string 1) subdir))) (push (list file 'unregistered) result) (forward-line 1)) + (when (looking-at "cvs status: nothing known about") + ;; We asked about a non existent file. The output looks like this: + + ;; cvs status: nothing known about `lisp/v.diff' + ;; =================================================================== + ;; File: no file v.diff Status: Unknown + ;; + ;; Working revision: No entry for v.diff + ;; Repository revision: No revision control file + ;; + + ;; Due to narrowing in this iteration we only see the "cvs + ;; status:" line, so just set a flag so that we can ignore the + ;; file in the next iteration. + (setq ignore-next t)) ;; A file entry. (when (re-search-forward "^File: \\(no file \\)?\\(.*[^ \t]\\)[ \t]+Status: \\(.*\\)" nil t) (setq missing (match-string 1)) @@ -868,8 +884,10 @@ ((string-match "File had conflicts " status-str) 'conflict) ((string-match "Unknown" status-str) 'unregistered) (t 'edited))) - (unless (eq status 'up-to-date) - (push (list file status) result))) + (if ignore-next + (setq ignore-next nil) + (unless (eq status 'up-to-date) + (push (list file status) result)))) (goto-char (point-max)) (widen)) (funcall update-function result))