]> git.eshelyaron.com Git - emacs.git/commitdiff
Add :register to make-package
authorGerd Möllmann <gerd@gnu.org>
Wed, 26 Oct 2022 12:08:57 +0000 (14:08 +0200)
committerGerd Möllmann <gerd@gnu.org>
Wed, 26 Oct 2022 12:15:36 +0000 (14:15 +0200)
* lisp/emacs-lisp/pkg.el (make-package): Add keyword argument
:register.  If true, add new package to package registry.
* test/src/pkg-tests.el (pkg-tests-make-package): Extend.

lisp/emacs-lisp/pkg.el
test/src/pkg-tests.el

index 48d6e108dc01b32969261893028f364bff0b6cde..044a56a5e2ca3237ebb038b312b89d96b4a0137d 100644 (file)
@@ -264,7 +264,8 @@ normally, or else if an explcit return occurs the value it transfers."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;;###autoload
-(cl-defun make-package (name &key nicknames use (size 10))
+(cl-defun make-package (name &key nicknames use (size 10)
+                             (register nil))
   "Create and return a new package with name NAME.
 
 NAME must be a string designator, that is a string, a symbol, or
@@ -285,6 +286,9 @@ the given name is created.
 SIZE gives the size to use for the symbol table of the new
 package.  Default is 10.
 
+REGISTER if true means register the package in the package
+registry.
+
 Please note that the newly created package is not automaticall
 registered in the package registry, that is it will not be found
 under its names by `find-package'.  Use `register-package' to
@@ -297,6 +301,8 @@ but is what Common Lisp implementations usually do."
          (package (make-%package name size)))
     (setf (package-%nicknames package) nicknames
           (package-%use-list package) use)
+    (when register
+      (register-package package))
     package))
 
 (defun register-package (package)
index c9127f16d91dfb17ddb6b5fe4f6988bd42d332b9..875c1fbda82350d02c1ecb12b57d9b035c20551a 100644 (file)
   (should-error (make-package "x" :nicknames))
   (should-error (make-package "x" :use))
   (should-error (make-package "x" :nicknames 1))
-  (should-error (make-package "x" :use 1)))
+  (should-error (make-package "x" :use 1))
+  ;; Registering package
+  (let ((p (make-package "x" :nicknames '(y) :register t)))
+    (unwind-protect
+        (progn
+          (should (packagep p))
+          (should (eq (find-package "x") p))
+          (should (eq (find-package "y") p)))
+      (delete-package p))))
 
 (ert-deftest pkg-tests-make-package-nicknames ()
   ;; Valid nicknames