Subject: vc-dir support for vc-mtn.el

From: Dan Nicolaescu <[email-masked]>
Date: Sat, 11 Apr 2009 08:31:48 -0700 (PDT)

vc-mtn.el does not support vc-dir.

The patch below adds that support.  It reuses some regexps from elsewhere in the file.
Archiving here so that it can be applied whenever it's acceptable.

Index: vc-mtn.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc-mtn.el,v
retrieving revision 1.23
diff -u -3 -p -c -r1.23 vc-mtn.el
cvs diff: conflicting specifications of output style
*** vc-mtn.el         1 Apr 2009 20:01:19 -0000 1.23
--- vc-mtn.el         11 Apr 2009 07:44:39 -0000
*************** If nil, use the value of `vc-diff-switch
*** 106,111 ****
--- 106,126 ----
         ((match-end 2) 'added)
              (t 'up-to-date)))))
  
+ (defun vc-mtn-after-dir-status (update-function)
+   (let (result)
+     (goto-char (point-min))
+     (re-search-forward "Current branch: \\(.*\\)\nChanges against parent \\(.*\\)" nil t)
+     (while (re-search-forward
+         "^  \\(?:\\(patched  \\)\\|\\(added    \\)\\)\\(.*\\)$" nil t)
+       (cond  ((match-end 1) (push (list (match-string 3) 'edited) result))
+            ((match-end 2) (push (list (match-string 3) 'added) result))))
+     (funcall update-function result)))
+ 
+ (defun vc-mtn-dir-status (dir update-function)
+   (vc-mtn-command (current-buffer) 'async dir "status")
+   (vc-exec-after
+    `(vc-mtn-after-dir-status (quote ,update-function))))
+ 
  (defun vc-mtn-working-revision (file)
    ;; If `mtn' fails or returns status>0, or if the search fails, just
    ;; return nil.