]> git.eshelyaron.com Git - emacs.git/commitdiff
with-locked-packages, with-unlocked-packages
authorGerd Moellmann <gerd.moellmann@gmail.com>
Wed, 6 Sep 2023 06:20:49 +0000 (08:20 +0200)
committerGerd Moellmann <gerd.moellmann@gmail.com>
Wed, 6 Sep 2023 06:20:49 +0000 (08:20 +0200)
.gitignore
lisp/emacs-lisp/pkg.el

index ca89bc47f79709a8f974a1055d4a1844a3a3ad11..fcdb1ae38f03807fa1359aeedc2882852e2543dc 100644 (file)
@@ -388,3 +388,4 @@ exec/config.h.in
 exec/config-mips.m4
 exec/configure
 exec/*.s.s
+/nextstep/Pkg.app/
index 4b2ca98090278d1b53241be6fd9b24ecd0430d84..aea6d3712a9ce6298ce4ffdcdbc91e5fd85d8962 100644 (file)
@@ -284,12 +284,21 @@ normally, or else if an explcit return occurs the value it transfers."
      (progn ,@body)))
 
 ;;;###autoload
-(cl-defmacro with-unlocked-packages ((&rest _packages) &body body)
-  )
+(defun pkg--with-package-locks (packages lock body)
+  `(cl-letf (,@(mapcar #'(lambda (p)
+                           `((package-%lock (pkg--package-or-lose ,p)) ,lock))
+                       packages))
+     ,@body))
 
 ;;;###autoload
-(cl-defmacro with-locked-packages ((&rest _packages) &body body)
-  )
+(cl-defmacro with-unlocked-packages ((&rest packages) &rest body)
+  (declare (indent 1))
+  (pkg--with-package-locks packages nil body))
+
+;;;###autoload
+(cl-defmacro with-locked-packages ((&rest packages) &rest body)
+  (declare (indent 1))
+  (pkg--with-package-locks packages t body))
 
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;