changeset 41395:0abfca935c80

(with-vc-properties): Don't bind `filename' locally. (with-vc-file, edit-vc-file): Use `make-symbol' for local bindings to avoid name clashes. Fix `lisp-indent-function' property for both.
author André Spiegel <spiegel@gnu.org>
date Fri, 23 Nov 2001 10:11:29 +0000
parents 6c7b3a4baa00
children 04ad0e1bb8fa
files lisp/vc.el
diffstat 1 files changed, 26 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/vc.el	Fri Nov 23 09:36:24 2001 +0000
+++ b/lisp/vc.el	Fri Nov 23 10:11:29 2001 +0000
@@ -6,7 +6,7 @@
 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
 ;; Keywords: tools
 
-;; $Id: vc.el,v 1.319 2001/11/12 23:01:17 sds Exp $
+;; $Id: vc.el,v 1.320 2001/11/15 10:31:17 spiegel Exp $
 
 ;; This file is part of GNU Emacs.
 
@@ -726,13 +726,12 @@
 SETTINGS is an association list of property/value pairs.  After
 executing FORM, set those properties from SETTINGS that have not yet
 been updated to their corresponding values."
-  `(let ((vc-touched-properties (list t))
-	 (filename ,file))
+  `(let ((vc-touched-properties (list t)))
      ,form
      (mapcar (lambda (setting)
 	       (let ((property (car setting)))
 		 (unless (memq property vc-touched-properties)
-		   (put (intern filename vc-file-prop-obarray)
+		   (put (intern ,file vc-file-prop-obarray)
 			property (cdr setting)))))
 	     ,settings)))
 
@@ -751,17 +750,20 @@
 FILE is passed through `expand-file-name'; BODY executed within
 `save-excursion'.  If FILE is not under version control, or locked by
 somebody else, signal error."
-  `(let ((file (expand-file-name ,file)))
-     (or (vc-backend file)
-	 (error (format "File not under version control: `%s'" file)))
-     (unless (vc-editable-p file)
-       (let ((state (vc-state file)))
-	 (if (stringp state) (error (format "`%s' is locking `%s'" state file))
-	   (vc-checkout file t))))
-     (save-excursion
-       ,@body)
-     (vc-checkin file nil ,comment)))
-(put 'with-vc-file 'indent-function 1)
+  (let ((filevar (make-symbol "file")))
+    `(let ((,filevar (expand-file-name ,file)))
+       (or (vc-backend ,filevar)
+           (error (format "File not under version control: `%s'" file)))
+       (unless (vc-editable-p ,filevar)
+         (let ((state (vc-state ,filevar)))
+           (if (stringp state) 
+               (error (format "`%s' is locking `%s'" state ,filevar))
+             (vc-checkout ,filevar t))))
+       (save-excursion
+         ,@body)
+       (vc-checkin ,filevar nil ,comment))))
+
+(put 'with-vc-file 'lisp-indent-function 2)
 
 ;;;###autoload
 (defmacro edit-vc-file (file comment &rest body)
@@ -769,12 +771,15 @@
 Checkin with COMMENT after executing BODY.
 This macro uses `with-vc-file', passing args to it.
 However, before executing BODY, find FILE, and after BODY, save buffer."
-  `(with-vc-file
-    ,file ,comment
-    (set-buffer (find-file-noselect ,file))
-    ,@body
-    (save-buffer)))
-(put 'edit-vc-file 'indent-function 1)
+  (let ((filevar (make-symbol "file")))
+    `(let ((,filevar (expand-file-name ,file)))
+       (with-vc-file
+        ,filevar ,comment
+        (set-buffer (find-file-noselect ,filevar))
+        ,@body
+        (save-buffer)))))
+
+(put 'edit-vc-file 'lisp-indent-function 2)
 
 (defun vc-ensure-vc-buffer ()
   "Make sure that the current buffer visits a version-controlled file."