# HG changeset patch # User Dan Nicolaescu # Date 1223271025 0 # Node ID 69b1ca445635d9ad5aae5c1a76aff12e4d037e14 # Parent 8b46bfc83346c88b5971a5d3104955f33b9b333b (vc-cvs-after-dir-status): Parse the output for non existent files. diff -r 8b46bfc83346 -r 69b1ca445635 lisp/ChangeLog --- 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 + + * vc-cvs.el (vc-cvs-after-dir-status): Parse the output for non + existent files. + 2008-10-05 Chong Yidong * international/mule-cmds.el (universal-coding-system-argument): diff -r 8b46bfc83346 -r 69b1ca445635 lisp/vc-cvs.el --- 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))