]> git.eshelyaron.com Git - emacs.git/commitdiff
Require CL.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 12 Jul 2007 03:13:37 +0000 (03:13 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 12 Jul 2007 03:13:37 +0000 (03:13 +0000)
(vc-cvs-revision-table, vc-cvs-revision-completion-table):
New functions to provide completion of revision names.

lisp/ChangeLog
lisp/vc-cvs.el

index 69c7f3fb0bed92c0e76333ba0e96660a295e86db..e5273d5e7d9f2c62ddf020b01a7492c90fd6fd7e 100644 (file)
@@ -1,3 +1,14 @@
+2007-07-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * vc-cvs.el: Require CL.
+       (vc-cvs-revision-table, vc-cvs-revision-completion-table):
+       New functions to provide completion of revision names.
+
+       * vc-cvs.el (vc-functions): Clear up the cache when reloading the file.
+       (vc-cvs-annotate-first-line-re): New const.
+       (vc-cvs-annotate-process-filter): New fun.
+       (vc-cvs-annotate-command): Use them and run the command asynchronously.
+
 2007-07-12  Paul Pogonyshev  <pogonyshev@gmx.net>
 
        * emacs-lisp/eldoc.el (eldoc-last-data): Revise documentation.
index f5afcca581d5a2f7f6137783c739912b6bcd99b9..22ed10d1286f7db5fb0e01614d02799e8343f0a5 100644 (file)
@@ -29,8 +29,7 @@
 
 ;;; Code:
 
-(eval-when-compile
-  (require 'vc))
+(eval-when-compile (require 'cl) (require 'vc))
 
 ;; Clear up the cache to force vc-call to check again and discover
 ;; new functions when we reload this file.
@@ -932,7 +931,34 @@ is non-nil."
               (vc-file-setprop file 'vc-checkout-time 0)
               (if set-state (vc-file-setprop file 'vc-state 'edited)))))))))
 
+;; Completion of revision names.
+;; Just so I don't feel like I'm duplicating code from pcl-cvs, I'll use
+;; `cvs log' so I can list all the revision numbers rather than only
+;; tag names.
+
+(defun vc-cvs-revision-table (file)
+  (let ((default-directory (file-name-directory file))
+        (res nil))
+    (with-temp-buffer
+      (vc-cvs-command t nil file "log")
+      (goto-char (point-min))
+      (when (re-search-forward "^symbolic names:\n" nil t)
+        (while (looking-at "^  \\(.*\\): \\(.*\\)")
+          (push (cons (match-string 1) (match-string 2)) res)
+          (forward-line 1)))
+      (while (re-search-forward "^revision \\([0-9.]+\\)" nil t)
+        (push (match-string 1) res))
+      res)))
+
+(defun vc-cvs-revision-completion-table (file)
+  (lexical-let ((file file)
+                table)
+    (setq table (lazy-completion-table
+                 table (lambda () (vc-cvs-revision-table file))))
+    table))
+                                           
+
 (provide 'vc-cvs)
 
-;;; arch-tag: 60e1402a-aa53-4607-927a-cf74f144b432
+;; arch-tag: 60e1402a-aa53-4607-927a-cf74f144b432
 ;;; vc-cvs.el ends here