diff lisp/vc-arch.el @ 96899:7df3d9a17631

(vc-arch-trim-make-sentinel): Use a closure. (vc-arch-trim-one-revlib): Delete temp directories as well.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 22 Jul 2008 17:16:52 +0000
parents 5e64dca662f0
children 58d0fa1979cb
line wrap: on
line diff
--- a/lisp/vc-arch.el	Tue Jul 22 17:09:24 2008 +0000
+++ b/lisp/vc-arch.el	Tue Jul 22 17:16:52 2008 +0000
@@ -488,16 +488,20 @@
 
 (defun vc-arch-trim-make-sentinel (revs)
   (if (null revs) (lambda (proc msg) (message "VC-Arch trimming ... done"))
-    `(lambda (proc msg)
-       (message "VC-Arch trimming %s..." ',(file-name-nondirectory (car revs)))
-       (rename-file ,(car revs) ,(concat (car revs) "*rm*"))
+    (lexical-let ((revs revs))
+      (lambda (proc msg)
+        (message "VC-Arch trimming %s..." (file-name-nondirectory (car revs)))
+        (rename-file (car revs) (concat (car revs) "*rm*"))
        (setq proc (start-process "vc-arch-trim" nil
-                                 "rm" "-rf" ',(concat (car revs) "*rm*")))
-       (set-process-sentinel proc (vc-arch-trim-make-sentinel ',(cdr revs))))))
+                                  "rm" "-rf" (concat (car revs) "*rm*")))
+        (set-process-sentinel proc (vc-arch-trim-make-sentinel (cdr revs)))))))
 
 (defun vc-arch-trim-one-revlib (dir)
   "Delete half of the revisions in the revision library."
   (interactive "Ddirectory: ")
+  (let ((garbage (directory-files dir 'full "\\`,," 'nosort)))
+    (when garbage
+      (funcall (vc-arch-trim-make-sentinel garbage) nil nil)))
   (let ((revs
          (sort (delq nil
                      (mapcar