use-package
use-package packages-to-use &optional package → t
packages-to-use—a designator for a list of package designators. The keyword package may not be supplied.
Issue PACKAGE-FUNCTION-CONSISTENCY is silent on whether a "package designator"
is really the right thing here, but KAB, Sandra, and KMP agree that this is what
was probably intended.package—a package designator. The default is the current package. Next sentence reworded and moved per Boyer/Kaufmann/Moore #12
(by X3J13 vote at May 4-5, 1994 meeting)
-kmp 9-May-94
\Thepackage{keyword} cannot be supplied. The package cannot be the keyword package.
use-package causes package to inherit all the external symbols of packages-to-use. The inherited symbols become accessible as internal symbols of package.
11.2.0 36Packages-to-use are added to the use list of package if they are not there already. All external symbols in packages-to-use become accessible in package as internal symbols. 11.0.0 50
Sandra thinks this follows form what it is to be accessible as internal symbols.
The new \term{symbols} can be referred to without a \term{package prefix}
while \param{package} is current, but they are not passed along to any
other \term{package} that uses \param{package}.use-package does not cause any new symbols to be present in package but only makes them accessible by inheritance.
11.0.0 39use-package checks for name conflicts between the newly imported symbols and those already accessible in package. 11.0.0 58A name conflict in use-package between two external symbols inherited by package from packages-to-use may be resolved in favor of either symbol by importing one of them into package and making it a shadowing symbol.
(export (intern "LAND-FILL" (make-package 'trash)) 'trash) → T (find-symbol "LAND-FILL" (make-package 'temp)) → NIL, NIL (package-use-list 'temp) → (#<PACKAGE "TEMP">) (use-package 'trash 'temp) → T (package-use-list 'temp) → (#<PACKAGE "TEMP"> #<PACKAGE "TRASH">) (find-symbol "LAND-FILL" 'temp) → TRASH:LAND-FILL, :INHERITED
The use list of package may be modified.
None.
None.
unuse-package, package-use-list, Section 11.1 (Package Concepts)
It is permissible for a package to use a package even if already uses . The using of packages is not transitive, so no problem results from the apparent circularity.