]> code.delx.au - gnu-emacs/blobdiff - lisp/vc-mtn.el
Add 2010 to copyright years.
[gnu-emacs] / lisp / vc-mtn.el
index e4d7535ff6a26ea4483c7f236daaa39b3c1b4b25..db9f5eb333382d57d93adad585966d727a903c0d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; vc-mtn.el --- VC backend for Monotone
 
-;; Copyright (C) 2007, 2008  Free Software Foundation, Inc.
+;; Copyright (C) 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 ;; Keywords: 
 
 (defcustom vc-mtn-diff-switches t
   "String or list of strings specifying switches for monotone diff under VC.
-If nil, use the value of `vc-diff-switches'.
-If you want to force an empty list of arguments, use t."
+If nil, use the value of `vc-diff-switches'.  If t, use no switches."
   :type '(choice (const :tag "Unspecified" nil)
                 (const :tag "None" t)
                 (string :tag "Argument String")
-                (repeat :tag "Argument List"
-                        :value ("")
-                        string))
+                (repeat :tag "Argument List" :value ("") string))
   :version "23.1"
   :group 'vc)
 
@@ -109,6 +106,21 @@ If you want to force an empty list of arguments, use t."
             ((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.
@@ -154,7 +166,7 @@ If you want to force an empty list of arguments, use t."
              (t ?:))
            branch)))
 
-(defun vc-mtn-register (files &optional rest)
+(defun vc-mtn-register (files &optional rev comment)
   (vc-mtn-command nil 0 files "add"))
 
 (defun vc-mtn-responsible-p (file) (vc-mtn-root file))
@@ -176,8 +188,11 @@ If you want to force an empty list of arguments, use t."
 ;; (defun vc-mtn-roolback (files)
 ;;   )
 
-(defun vc-mtn-print-log (files &optional buffer)
-  (vc-mtn-command buffer 0 files "log"))
+(defun vc-mtn-print-log (files buffer &optional shortlog start-revision limit)
+  (apply 'vc-mtn-command buffer 0 files "log"
+        (append
+         (when start-revision (list "--from" (format "%s" start-revision)))
+         (when limit (list "--last" (format "%s" limit))))))
 
 (defvar log-view-message-re)
 (defvar log-view-file-re)
@@ -209,7 +224,7 @@ If you want to force an empty list of arguments, use t."
            (if rev1 (list "-r" rev1)) (if rev2 (list "-r" rev2)))))
 
 (defun vc-mtn-annotate-command (file buf &optional rev)
-  (apply 'vc-mtn-command buf 0 file "annotate"
+  (apply 'vc-mtn-command buf 'async file "annotate"
          (if rev (list "-r" rev))))
 
 (declare-function vc-annotate-convert-time "vc-annotate" (time))