I have changed my diff machinery to use version-completion tables. I have resolved Dan Nicolaescu's two buglet reports, deferring one to post-merge. There are no other known merge-blocking issues with new VC. The -ub diff is down to 1313 lines. I think that's as small as it's going to get. Here is substantively what the changelog entry will look like, following RMS's directions. If I have the format wrong, someone please correct me. * vc.el (vc-next-action): Completely rewritten; this principal entry point now operates on a current fileset selected either explicitly via VC-Dired or implicitly by visiting a file buffer, rather than always operating on the file of the current buffer as in older versions. The rest of the mode has been rewritten to match. (with-vc-properties): Rewritten to operate on a file list. (with-vc-file): vc-checkin takes a file list argument now. (vc-post-command-functions): This hook now receives a file list. (vc-do-command): Now takes a either a file or a file list as argument. (vc-deduce-fileset): New function for deducing a file list to operate on. (vc-next-action-on-file): This function is gone, it is merged into vc-next-action. (vc-next-action-dired): This function is gone, it is merged into vc-next-action. (vc-register): Adapted to the fact that vc-start-entry now takes a file list. (vc-register-with): New function. (vc-start-entry): Now takes a file list argument rather than a file argument. (vc-checkout): Modified to cope with vc-start-entry taking a file list. (vc-steal-lock): Modified to cope with with-vc-properties taking a file list. (vc-checkin): Now takes a file list argument rather than a file argument. (vc-finish-logentry): Use the filelist passed by vc-start-entry. (vc-diff-internal): Completely rewritten for filesets. (vc-diff-sentinel): New function, tests whether changes were written into a diff buffer. (vc-diff): Completely rewritten for filesets. (vc-version-diff): Completely rewritten for filesets. (vc-print-log): Now takes a fileset argument. (vc-revert): Now reverts the entire selected fileset, not just the current buffer. (vc-rollback): Now rolls back the entire selected fileset, if possible. No longer accepts a prefix argument. (vc-update): Now merges new changes for the entire selected fileset, not just the current buffer. (vc-revert-file): Modified to cope with with-vc-properties taking a file list. (vc-default-dired-state-info): Add + status suffix if the file is modified. (vc-annotate-warp-version): Use the new diff machinery. (vc-log-edit): Now takes a file list argument rather than a file argument. If nobody raises either a new merge issue nor a new bug, new vc.el is ready to go in. Full copy is enclosed. Dan, I'd appreciate getting a green light from you within the next couple of days. I want to get to work on the post-merge issues (including your "No fileset is available" gripelet, speeding up VC-Dired, and the terminology cleanup) but right now I don't want to do anything that will cause new VC to diverge more from CVS head. -- Eric S. Raymond