289 lines
15 KiB
HTML
289 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>Package local nicknames (ECL Manual)</title>
|
|
|
|
<meta name="description" content="Package local nicknames (ECL Manual)">
|
|
<meta name="keywords" content="Package local nicknames (ECL Manual)">
|
|
<meta name="resource-type" content="document">
|
|
<meta name="distribution" content="global">
|
|
<meta name="Generator" content="makeinfo">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<link href="index.html" rel="start" title="Top">
|
|
<link href="Indexes.html" rel="index" title="Indexes">
|
|
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
|
|
<link href="Extensions.html" rel="up" title="Extensions">
|
|
<link href="Package-locks.html" rel="next" title="Package locks">
|
|
<link href="Tree-walker.html" rel="prev" title="Tree walker">
|
|
<style type="text/css">
|
|
<!--
|
|
/* colors */
|
|
|
|
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
|
|
div.example {margin-left: 3.2em}
|
|
span.r {font-family: initial; font-weight: normal; font-style: normal}
|
|
span:hover a.copiable-link {visibility: visible}
|
|
strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
|
|
@media (prefers-color-scheme: dark) {
|
|
/* dark theme */
|
|
html { color: seashell;
|
|
background: #1A1A1A; }
|
|
body { background: #1A1A1A; }
|
|
th { border-bottom: 2px solid lightgray; }
|
|
h1, h2, h3, h4, h5 { background-image: linear-gradient(to left, #202020, #3A3A3A); }
|
|
code, var, code a { color: darkorange;
|
|
background: #2A2A2A; }
|
|
a { color: seashell; }
|
|
pre { background: #2A2A2A;
|
|
color: seashell;
|
|
/* mark longer code block with stripe on the left */
|
|
border-left: 5px solid darkorange;
|
|
padding-left: 10px; }
|
|
pre.screen { background: #2A2A2A;
|
|
border: 1px solid lightgray; }
|
|
pre.programlisting { background: #2A2A2A;
|
|
border-left: 1px solid lightgray;
|
|
border-top: 1px solid lightgray; }
|
|
/* we need a light background in order for the images to be readable */
|
|
img { background: white }
|
|
}
|
|
@media (prefers-color-scheme: light) {
|
|
/* light theme */
|
|
html { background: white }
|
|
body { background: white }
|
|
th { border-bottom: 2px solid gray; }
|
|
h1, h2, h3, h4, h5 { background: lightgray; }
|
|
code, var, code a { color: darkred;
|
|
background: whitesmoke; }
|
|
a { color: #000; }
|
|
pre { background: whitesmoke;
|
|
color: black;
|
|
/* mark longer code block with stripe on the left */
|
|
border-left: 5px solid darkred;
|
|
padding-left: 10px; }
|
|
pre.screen { background: #EEE;
|
|
border: 1px solid black; }
|
|
pre.programlisting { background: #EEEEEE;
|
|
border-left: 1px solid black;
|
|
border-top: 1px solid black; }
|
|
}
|
|
|
|
body {
|
|
margin: 1em 125px 0 10%;
|
|
line-height: 1.5em;
|
|
padding: 0 2em 1em 2em;
|
|
font: 13px Verdana,Arial, sans-serif
|
|
}
|
|
ul, dd, dl, dt { margin-top: 0; margin-bottom: 0; }
|
|
p, code, td, dl, dt {
|
|
line-height: 1.5em;
|
|
}
|
|
table {
|
|
font: inherit;
|
|
border-collapse: collapse;
|
|
}
|
|
th, td {
|
|
vertical-align: top;
|
|
}
|
|
h1, h2, h3 { padding-left: 15px; }
|
|
h4, h5 { padding-left: 5px; }
|
|
code, pre {
|
|
font-size: 1em;
|
|
font-family: monospace;
|
|
}
|
|
var {
|
|
font-size: 1em;
|
|
}
|
|
/* links inside code appear the same as the code itself */
|
|
code a {
|
|
font-weight: normal;
|
|
text-decoration: none;
|
|
}
|
|
/* but get an underline when hovering */
|
|
code a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
/* ordinary links appear in bold */
|
|
a { font-weight: bold; }
|
|
pre.verbatim {
|
|
margin: 0 0 0 0;
|
|
}
|
|
pre {
|
|
overflow: auto;
|
|
}
|
|
pre.screen {
|
|
font-weight: bold;
|
|
padding: 0.5em;
|
|
}
|
|
pre.programlisting {
|
|
padding: 0.5em;
|
|
}
|
|
div p { padding: 0 2em }
|
|
li p { padding: 0; margin: 0 }
|
|
hr { display: none; }
|
|
div.funcsynopsis p {
|
|
text-indent: -2em;
|
|
}
|
|
div.variablelist {
|
|
padding: 0 2em;
|
|
}
|
|
.type, .funcsynopsis, .symbol {
|
|
font-family: monospace;
|
|
}
|
|
.type, .symbol, .replaceable {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
-->
|
|
</style>
|
|
|
|
|
|
</head>
|
|
|
|
<body lang="en">
|
|
<div class="section-level-extent" id="Package-local-nicknames">
|
|
<div class="nav-panel">
|
|
<p>
|
|
Next: <a href="Package-locks.html" accesskey="n" rel="next">Package locks</a>, Previous: <a href="Tree-walker.html" accesskey="p" rel="prev">Tree walker</a>, Up: <a href="Extensions.html" accesskey="u" rel="up">Extensions</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indexes.html" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
<h3 class="section" id="Local-package-nicknames">3.10 Local package nicknames</h3>
|
|
|
|
<a class="index-entry-id" id="index-Package-local-nicknames"></a>
|
|
<a class="index-entry-id" id="index-PACKAGE_002dLOCAL_002dNICKNAMES"></a>
|
|
|
|
|
|
<ul class="mini-toc">
|
|
<li><a href="Package-local-nicknames.html#Overview-2" accesskey="1">Overview</a></li>
|
|
<li><a href="Package-local-nicknames.html#Package-local-nicknames-dictionary" accesskey="2">Package local nicknames dictionary</a></li>
|
|
</ul>
|
|
<div class="subsection-level-extent" id="Overview-2">
|
|
<h4 class="subsection">3.10.1 Overview</h4>
|
|
|
|
<p>ECL allows giving packages local nicknames: they allow short and
|
|
easy-to-use names to be used without fear of name conflict associated
|
|
with normal nicknames.
|
|
</p>
|
|
<p>A local nickname is valid only when inside the package for which it
|
|
has been specified. Different packages can use same local nickname for
|
|
different global names, or different local nickname for same global
|
|
name.
|
|
</p>
|
|
<p>The keyword <code class="code">:package-local-nicknames</code> in <code class="code">*features*</code>
|
|
indicates the support for this feature.
|
|
</p>
|
|
</div>
|
|
<div class="subsection-level-extent" id="Package-local-nicknames-dictionary">
|
|
<h4 class="subsection">3.10.2 Package local nicknames dictionary</h4>
|
|
|
|
<dl class="first-deffn first-defmac-alias-first-deffn">
|
|
<dt class="deffn defmac-alias-deffn" id="index-cl_003adefpackage"><span class="category-def">Macro: </span><span><strong class="def-name">cl:defpackage</strong> <var class="def-var-arguments">name [[options]]*</var><a class="copiable-link" href='Package-local-nicknames.html#index-cl_003adefpackage'> ¶</a></span></dt>
|
|
<dd><p>Options are extended to include
|
|
</p>
|
|
<div class="example">
|
|
<pre class="example-preformatted"> :local-nicknames (local-nickname actual-package-name)*
|
|
</pre></div>
|
|
|
|
<p>The package has the specified local nicknames for the
|
|
corresponding actual packages.
|
|
</p>
|
|
<a class="index-entry-id" id="index-defpackage-and-package-local-nicknames"></a>
|
|
<p>Example:
|
|
</p>
|
|
<div class="example lisp">
|
|
<pre class="lisp-preformatted">(defpackage :bar (:intern "X"))
|
|
(defpackage :foo (:intern "X"))
|
|
(defpackage :quux (:use :cl) (:local-nicknames (:bar :foo) (:foo :bar)))
|
|
(find-symbol "X" :foo) ; => FOO::X
|
|
(find-symbol "X" :bar) ; => BAR::X
|
|
(let ((*package* (find-package :quux)))
|
|
(find-symbol "X" :foo)) ; => BAR::X
|
|
(let ((*package* (find-package :quux)))
|
|
(find-symbol "X" :bar)) ; => FOO::X
|
|
</pre></div>
|
|
</dd></dl>
|
|
|
|
<a class="anchor" id="ext_003apackage_002dlocal_002dnicknames"></a><a class="index-entry-id" id="index-ext_003apackage_002dlocal_002dnicknames-1"></a>
|
|
<a class="anchor" id="si_005fpackage_005flocal_005fnicknames"></a><a class="index-entry-id" id="index-si_005fpackage_005flocal_005fnicknames"></a>
|
|
<dl class="first-deffn first-defun-alias-first-deffn">
|
|
<dt class="deffn defun-alias-deffn" id="index-ext_003apackage_002dlocal_002dnicknames"><span class="category-def">Function: </span><span><strong class="def-name">ext:package-local-nicknames</strong> <var class="def-var-arguments">package-designator</var><a class="copiable-link" href='Package-local-nicknames.html#index-ext_003apackage_002dlocal_002dnicknames'> ¶</a></span></dt>
|
|
</dl>
|
|
<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
|
|
<dt class="deftypefn deftypefun-alias-deftypefn" id="index-si_005fpackage_005flocal_005fnicknames-1"><span class="category-def">Function: </span><span><code class="def-type">cl_object</code> <strong class="def-name">si_package_local_nicknames</strong> <code class="def-code-arguments">(cl_object package_designator)</code><a class="copiable-link" href='Package-local-nicknames.html#index-si_005fpackage_005flocal_005fnicknames-1'> ¶</a></span></dt>
|
|
<dd><p>Returns an alist of <code class="code">(local-nickname . actual-package)</code>
|
|
describing the nicknames local to the designated package.
|
|
</p>
|
|
<p>When in the designated package, calls to <code class="code">find-package</code> with any
|
|
of the local-nicknames will return the corresponding actual-package
|
|
instead. This also affects all implied calls to <code class="code">find-package</code>,
|
|
including those performed by the reader.
|
|
</p>
|
|
<p>When printing a package prefix for a symbol with a package local nickname, the
|
|
local nickname is used instead of the real name in order to preserve
|
|
print-read consistency.
|
|
</p></dd></dl>
|
|
|
|
<a class="anchor" id="ext_003apackage_002dlocally_002dnicknamed_002dby_002dlist"></a><a class="index-entry-id" id="index-ext_003apackage_002dlocally_002dnicknamed_002dby_002dlist-1"></a>
|
|
<a class="anchor" id="si_005fpackage_005flocally_005fnicknamed_005fby_005flist"></a><a class="index-entry-id" id="index-si_005fpackage_005flocally_005fnicknamed_005fby_005flist"></a>
|
|
<dl class="first-deffn first-defun-alias-first-deffn">
|
|
<dt class="deffn defun-alias-deffn" id="index-ext_003apackage_002dlocally_002dnicknamed_002dby_002dlist"><span class="category-def">Function: </span><span><strong class="def-name">ext:package-locally-nicknamed-by-list</strong> <var class="def-var-arguments">package-designator</var><a class="copiable-link" href='Package-local-nicknames.html#index-ext_003apackage_002dlocally_002dnicknamed_002dby_002dlist'> ¶</a></span></dt>
|
|
</dl>
|
|
<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
|
|
<dt class="deftypefn deftypefun-alias-deftypefn" id="index-si_005fpackage_005flocally_005fnicknamed_005fby_005flist-1"><span class="category-def">Function: </span><span><code class="def-type">cl_object</code> <strong class="def-name">si_package_locally_nicknamed_by_list</strong> <code class="def-code-arguments">(cl_object package_designator)</code><a class="copiable-link" href='Package-local-nicknames.html#index-si_005fpackage_005flocally_005fnicknamed_005fby_005flist-1'> ¶</a></span></dt>
|
|
<dd><p>Returns a list of packages which have a local nickname for the
|
|
designated package.
|
|
</p></dd></dl>
|
|
|
|
<a class="anchor" id="ext_003aadd_002dpackage_002dlocal_002dnickname"></a><a class="index-entry-id" id="index-ext_003aadd_002dpackage_002dlocal_002dnickname-1"></a>
|
|
<a class="anchor" id="si_005fadd_005fpackage_005flocal_005fnickname"></a><a class="index-entry-id" id="index-si_005fadd_005fpackage_005flocal_005fnickname"></a>
|
|
<dl class="first-deffn first-defun-alias-first-deffn">
|
|
<dt class="deffn defun-alias-deffn" id="index-ext_003aadd_002dpackage_002dlocal_002dnickname"><span class="category-def">Function: </span><span><strong class="def-name">ext:add-package-local-nickname</strong> <var class="def-var-arguments">local-nickname actual-package &optional package-designator</var><a class="copiable-link" href='Package-local-nicknames.html#index-ext_003aadd_002dpackage_002dlocal_002dnickname'> ¶</a></span></dt>
|
|
</dl>
|
|
<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
|
|
<dt class="deftypefn deftypefun-alias-deftypefn" id="index-si_005fadd_005fpackage_005flocal_005fnickname-1"><span class="category-def">Function: </span><span><code class="def-type">cl_object</code> <strong class="def-name">si_add_package_local_nickname</strong> <code class="def-code-arguments">(cl_object local_nickname, cl_object actual_package, cl_object package_designator)</code><a class="copiable-link" href='Package-local-nicknames.html#index-si_005fadd_005fpackage_005flocal_005fnickname-1'> ¶</a></span></dt>
|
|
<dd><p>Adds <var class="var">local-nickname</var> for <var class="var">actual-package</var> in the designated
|
|
package, defaulting to current package. <var class="var">local-nickname</var> must be a
|
|
string designator, and <var class="var">actual-package</var> must be a package
|
|
designator.
|
|
</p>
|
|
<p>Returns the designated package.
|
|
</p>
|
|
<p>Signals a continuable error if <var class="var">local-nickname</var> is already a
|
|
package local nickname for a different package.
|
|
</p>
|
|
<p>When in the designated package, calls to <code class="code">find-package</code> with the
|
|
<var class="var">local-nickname</var> will return the package the designated
|
|
<var class="var">actual-package</var> instead. This also affects all implied calls to
|
|
<code class="code">find-package</code>, including those performed by the reader.
|
|
</p>
|
|
<p>When printing a package prefix for a symbol with a package local
|
|
nickname, the local nickname is used instead of the real name in order
|
|
to preserve print-read consistency.
|
|
</p></dd></dl>
|
|
|
|
<a class="anchor" id="ext_003aremove_002dpackage_002dlocal_002dnickname"></a><a class="index-entry-id" id="index-ext_003aremove_002dpackage_002dlocal_002dnickname-1"></a>
|
|
<a class="anchor" id="si_005fremove_005fpackage_005flocal_005fnickname"></a><a class="index-entry-id" id="index-si_005fremove_005fpackage_005flocal_005fnickname"></a>
|
|
<dl class="first-deffn first-defun-alias-first-deffn">
|
|
<dt class="deffn defun-alias-deffn" id="index-ext_003aremove_002dpackage_002dlocal_002dnickname"><span class="category-def">Function: </span><span><strong class="def-name">ext:remove-package-local-nickname</strong> <var class="def-var-arguments">old-nickname &optional package-designator</var><a class="copiable-link" href='Package-local-nicknames.html#index-ext_003aremove_002dpackage_002dlocal_002dnickname'> ¶</a></span></dt>
|
|
</dl>
|
|
<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
|
|
<dt class="deftypefn deftypefun-alias-deftypefn" id="index-si_005fremove_005fpackage_005flocal_005fnickname-1"><span class="category-def">Function: </span><span><code class="def-type">cl_object</code> <strong class="def-name">si_remove_package_local_nickname</strong> <code class="def-code-arguments">(cl_object old_nickname, cl_object package_designator)</code><a class="copiable-link" href='Package-local-nicknames.html#index-si_005fremove_005fpackage_005flocal_005fnickname-1'> ¶</a></span></dt>
|
|
<dd><p>If the designated package had <var class="var">old-nickname</var> as a local nickname
|
|
for another package, it is removed. Returns true if the nickname
|
|
existed and was removed, and <code class="code">nil</code> otherwise.
|
|
</p></dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<div class="nav-panel">
|
|
<p>
|
|
Next: <a href="Package-locks.html" accesskey="n" rel="next">Package locks</a>, Previous: <a href="Tree-walker.html" accesskey="p" rel="prev">Tree walker</a>, Up: <a href="Extensions.html" accesskey="u" rel="up">Extensions</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indexes.html" title="Index" rel="index">Index</a>]</p>
|
|
</div>
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|