Skip to content

Instantly share code, notes, and snippets.

@spacebat
Last active July 12, 2016 08:56
Show Gist options
  • Select an option

  • Save spacebat/12c74b8c9b54171721d0ee12ca56f966 to your computer and use it in GitHub Desktop.

Select an option

Save spacebat/12c74b8c9b54171721d0ee12ca56f966 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<title>exploration</title>
<!-- 2016-07-11 Mon 09:04 -->
<meta charset="utf-8">
<meta name="generator" content="Org-mode">
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center; }
.todo { font-family: monospace; color: red; }
.done { color: green; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.right { margin-left: auto; margin-right: 0px; text-align: right; }
.left { margin-left: 0px; margin-right: auto; text-align: left; }
.center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
pre.src-sh:before { content: 'sh'; }
pre.src-bash:before { content: 'sh'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-R:before { content: 'R'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-java:before { content: 'Java'; }
pre.src-sql:before { content: 'SQL'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.right { text-align: center; }
th.left { text-align: center; }
th.center { text-align: center; }
td.right { text-align: right; }
td.left { text-align: left; }
td.center { text-align: center; }
dt { font-weight: bold; }
.footpara:nth-child(2) { display: inline; }
.footpara { display: block; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
/*]]>*/-->
</style>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2013 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
</head>
<body>
<div id="content">
<h1 class="title">exploration</h1>
<nav id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1. Common Lisp REPL Exploration Guide</a>
<ul>
<li><a href="#sec-1-1">Glossary</a></li>
<li><a href="#sec-1-2">Starting and Stopping Lisp</a>
<ul>
<li><a href="#sec-1-2-1">Start lisp from within emacs</a></li>
<li><a href="#sec-1-2-2">Stop the lisp repl in emacs</a></li>
<li><a href="#sec-1-2-3">Restart the lisp repl in emacs</a></li>
</ul>
</li>
<li><a href="#sec-1-3">Surroundings</a>
<ul>
<li><a href="#sec-1-3-1">List of available functions</a></li>
<li><a href="#sec-1-3-2">Last three items in result history (most recent first)</a></li>
<li><a href="#sec-1-3-3">Last three items in command history (most recent first)</a></li>
<li><a href="#sec-1-3-4">Cycle though command history (previous, next item)</a></li>
<li><a href="#sec-1-3-5">Search command history for things that start with <i>search</i></a></li>
</ul>
</li>
<li><a href="#sec-1-4">Available Packages &amp; Quicklisp</a>
<ul>
<li><a href="#sec-1-4-1">List all loaded packages</a></li>
<li><a href="#sec-1-4-2">List all packages imported into a package</a></li>
<li><a href="#sec-1-4-3">List of all available systems in the quicklisp repository</a></li>
<li><a href="#sec-1-4-4">Search the list of systems</a></li>
<li><a href="#sec-1-4-5">Install and load a system</a></li>
<li><a href="#sec-1-4-6">Contents of a loaded package</a></li>
<li><a href="#sec-1-4-7">Contents of a package, including internal symbols</a></li>
</ul>
</li>
<li><a href="#sec-1-5">Symbols and Objects</a>
<ul>
<li><a href="#sec-1-5-1">Is symbol in use?</a></li>
<li><a href="#sec-1-5-2">Is symbol used in the function namespace?</a></li>
<li><a href="#sec-1-5-3">List all of the symbols in the current namespace</a></li>
<li><a href="#sec-1-5-4">Originating package of a symbol</a></li>
<li><a href="#sec-1-5-5">Search for <i>thing</i> in the symbol list (with optional package</a></li>
<li><a href="#sec-1-5-6">Docstring</a></li>
<li><a href="#sec-1-5-7">Type of an object</a></li>
<li><a href="#sec-1-5-8">Object inspector</a></li>
<li><a href="#sec-1-5-9">Inheritance tree for a class</a></li>
<li><a href="#sec-1-5-10">List methods specializing on a class</a></li>
</ul>
</li>
<li><a href="#sec-1-6">Paths, locations, config files</a>
<ul>
<li><a href="#sec-1-6-1">Lisp executable location</a></li>
<li><a href="#sec-1-6-2">Version and variety of Common Lisp</a></li>
<li><a href="#sec-1-6-3">Operating system and machine info</a></li>
<li><a href="#sec-1-6-4">Show the recommended folder for your projects</a></li>
<li><a href="#sec-1-6-5">Location of a specific system</a></li>
<li><a href="#sec-1-6-6">Name of start up configuration file for your lisp</a></li>
</ul>
</li>
<li><a href="#sec-1-7">Code navigation</a>
<ul>
<li><a href="#sec-1-7-1">Jump to the definition of the item at point</a></li>
<li><a href="#sec-1-7-2">Return from jump</a></li>
<li><a href="#sec-1-7-3">List callers of a function</a></li>
<li><a href="#sec-1-7-4">List functions that a function calls (callees)</a></li>
<li><a href="#sec-1-7-5">Show the references, bindings or assignments of the global variable</a></li>
<li><a href="#sec-1-7-6">Look up documentation for the symbol at point in the Common Lisp</a></li>
</ul>
</li>
<li><a href="#sec-1-8">Macros</a>
<ul>
<li><a href="#sec-1-8-1">Examine a macro expansion</a></li>
<li><a href="#sec-1-8-2">Explore the currently available reader macros</a></li>
</ul>
</li>
<li><a href="#sec-1-9">Crashes and errors</a>
<ul>
<li><a href="#sec-1-9-1">Stop a running task</a></li>
<li><a href="#sec-1-9-2">Getting back to normal from the debugger</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</nav>
<p>
<a href="https://github.com/BnMcGn/lisp-guide">Source repository</a>
</p>
<div id="outline-container-sec-1" class="outline-2">
<h2 id="sec-1"><span class="section-number-2">1</span> <a href="http://bnmcgn.github.io/lisp-guide/lisp-exploration.html">Common Lisp REPL Exploration Guide</a></h2>
<div class="outline-text-2" id="text-1">
<p>
Emacs/Slime edition
</p>
</div>
<div id="outline-container-sec-1-1" class="outline-3">
<h3 id="sec-1-1">Glossary</h3>
<div class="outline-text-3" id="text-1-1">
<dl class="org-dl">
<dt> symbol </dt><dd>A name. Like a variable, but can be used without an attached value.
</dd>
<dt> system </dt><dd>A library
</dd>
<dt> package </dt><dd>A module, more fine-grained than a system. Systems often contain multiple packages.
</dd>
<dt> (at) point </dt><dd>Emacs will often apply commands to the item under the cursor. This item is said to be at point.
</dd>
<dt> M- </dt><dd>A reference to the <i>meta</i> modifier key. This is usually the Alt key on PCs and the command key on Macs.
</dd>
<dt> repl </dt><dd>The interactive prompt of a live lisp session.
</dd>
<dt> quicklisp, alias ql </dt><dd>Common Lisp's de facto package manager.
</dd>
</dl>
</div>
</div>
<div id="outline-container-sec-1-2" class="outline-3">
<h3 id="sec-1-2">Starting and Stopping Lisp</h3>
<div class="outline-text-3" id="text-1-2">
</div><div id="outline-container-sec-1-2-1" class="outline-4">
<h4 id="sec-1-2-1">Start lisp from within emacs</h4>
<div class="outline-text-4" id="text-1-2-1">
<pre class="example">
M-x slime
</pre>
</div>
</div>
<div id="outline-container-sec-1-2-2" class="outline-4">
<h4 id="sec-1-2-2">Stop the lisp repl in emacs</h4>
<div class="outline-text-4" id="text-1-2-2">
<pre class="example">
&gt; ,quit
</pre>
</div>
</div>
<div id="outline-container-sec-1-2-3" class="outline-4">
<h4 id="sec-1-2-3">Restart the lisp repl in emacs</h4>
<div class="outline-text-4" id="text-1-2-3">
<pre class="example">
&gt; ,restart-inferior-lisp
</pre>
</div>
</div>
</div>
<div id="outline-container-sec-1-3" class="outline-3">
<h3 id="sec-1-3">Surroundings</h3>
<div class="outline-text-3" id="text-1-3">
</div><div id="outline-container-sec-1-3-1" class="outline-4">
<h4 id="sec-1-3-1">List of available functions</h4>
<div class="outline-text-4" id="text-1-3-1">
<p>
[???]
</p>
</div>
</div>
<div id="outline-container-sec-1-3-2" class="outline-4">
<h4 id="sec-1-3-2">Last three items in result history (most recent first)</h4>
<div class="outline-text-4" id="text-1-3-2">
<pre class="example">
&gt; *
&gt; **
&gt; ***
</pre>
</div>
</div>
<div id="outline-container-sec-1-3-3" class="outline-4">
<h4 id="sec-1-3-3">Last three items in command history (most recent first)</h4>
<div class="outline-text-4" id="text-1-3-3">
<pre class="example">
&gt; +
&gt; ++
&gt; +++
</pre>
</div>
</div>
<div id="outline-container-sec-1-3-4" class="outline-4">
<h4 id="sec-1-3-4">Cycle though command history (previous, next item)</h4>
<div class="outline-text-4" id="text-1-3-4">
<pre class="example">
M-p
M-n
</pre>
</div>
</div>
<div id="outline-container-sec-1-3-5" class="outline-4">
<h4 id="sec-1-3-5">Search command history for things that start with <i>search</i></h4>
<div class="outline-text-4" id="text-1-3-5">
<pre class="example">
&gt; search M-p
</pre>
</div>
</div>
</div>
<div id="outline-container-sec-1-4" class="outline-3">
<h3 id="sec-1-4">Available Packages &amp; Quicklisp</h3>
<div class="outline-text-3" id="text-1-4">
</div><div id="outline-container-sec-1-4-1" class="outline-4">
<h4 id="sec-1-4-1">List all loaded packages</h4>
<div class="outline-text-4" id="text-1-4-1">
<div class="org-src-container">
<pre class="src src-lisp">(list-all-packages)
</pre>
</div>
</div>
</div>
<div id="outline-container-sec-1-4-2" class="outline-4">
<h4 id="sec-1-4-2">List all packages imported into a package</h4>
<div class="outline-text-4" id="text-1-4-2">
<pre class="example">
&gt; (package-use-list (find-package 'package))
</pre>
</div>
</div>
<div id="outline-container-sec-1-4-3" class="outline-4">
<h4 id="sec-1-4-3">List of all available systems in the quicklisp repository</h4>
<div class="outline-text-4" id="text-1-4-3">
<pre class="example">
&gt; (ql:system-list)
</pre>
</div>
</div>
<div id="outline-container-sec-1-4-4" class="outline-4">
<h4 id="sec-1-4-4">Search the list of systems</h4>
<div class="outline-text-4" id="text-1-4-4">
<pre class="example">
&gt; (ql:system-apropos search)
</pre>
</div>
</div>
<div id="outline-container-sec-1-4-5" class="outline-4">
<h4 id="sec-1-4-5">Install and load a system</h4>
<div class="outline-text-4" id="text-1-4-5">
<pre class="example">
&gt; (ql:quickload 'system)
</pre>
</div>
</div>
<div id="outline-container-sec-1-4-6" class="outline-4">
<h4 id="sec-1-4-6">Contents of a loaded package</h4>
<div class="outline-text-4" id="text-1-4-6">
<pre class="example">
&gt; package:&lt;tab&gt;
</pre>
</div>
</div>
<div id="outline-container-sec-1-4-7" class="outline-4">
<h4 id="sec-1-4-7">Contents of a package, including internal symbols</h4>
<div class="outline-text-4" id="text-1-4-7">
<pre class="example">
&gt; package::&lt;tab&gt;
</pre>
</div>
</div>
</div>
<div id="outline-container-sec-1-5" class="outline-3">
<h3 id="sec-1-5">Symbols and Objects</h3>
<div class="outline-text-3" id="text-1-5">
</div><div id="outline-container-sec-1-5-1" class="outline-4">
<h4 id="sec-1-5-1">Is symbol in use?</h4>
<div class="outline-text-4" id="text-1-5-1">
<pre class="example">
&gt; (boundp 'var)
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-2" class="outline-4">
<h4 id="sec-1-5-2">Is symbol used in the function namespace?</h4>
<div class="outline-text-4" id="text-1-5-2">
<pre class="example">
&gt; (fboundp 'var)
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-3" class="outline-4">
<h4 id="sec-1-5-3">List all of the symbols in the current namespace</h4>
<div class="outline-text-4" id="text-1-5-3">
<pre class="example">
&gt; (apropos "" *package*)
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-4" class="outline-4">
<h4 id="sec-1-5-4">Originating package of a symbol</h4>
<div class="outline-text-4" id="text-1-5-4">
<pre class="example">
&gt; (symbol-package 'var)
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-5" class="outline-4">
<h4 id="sec-1-5-5">Search for <i>thing</i> in the symbol list (with optional package</h4>
<div class="outline-text-4" id="text-1-5-5">
<p>
specifier)
</p>
<pre class="example">
&gt; (apropos "thing" 'package)
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-6" class="outline-4">
<h4 id="sec-1-5-6">Docstring</h4>
<div class="outline-text-4" id="text-1-5-6">
<pre class="example">
&gt; (describe var) or C-c C-d d on point
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-7" class="outline-4">
<h4 id="sec-1-5-7">Type of an object</h4>
<div class="outline-text-4" id="text-1-5-7">
<pre class="example">
&gt; (type-of var)
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-8" class="outline-4">
<h4 id="sec-1-5-8">Object inspector</h4>
<div class="outline-text-4" id="text-1-5-8">
<pre class="example">
&gt; (inspect var)
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-9" class="outline-4">
<h4 id="sec-1-5-9">Inheritance tree for a class</h4>
<div class="outline-text-4" id="text-1-5-9">
<pre class="example">
M-x slime-browse-classes
</pre>
</div>
</div>
<div id="outline-container-sec-1-5-10" class="outline-4">
<h4 id="sec-1-5-10">List methods specializing on a class</h4>
<div class="outline-text-4" id="text-1-5-10">
<pre class="example">
M-x slime-who-specializes
</pre>
</div>
</div>
</div>
<div id="outline-container-sec-1-6" class="outline-3">
<h3 id="sec-1-6">Paths, locations, config files</h3>
<div class="outline-text-3" id="text-1-6">
</div><div id="outline-container-sec-1-6-1" class="outline-4">
<h4 id="sec-1-6-1">Lisp executable location</h4>
<div class="outline-text-4" id="text-1-6-1">
<pre class="example">
M-: inferior-lisp-program
</pre>
</div>
</div>
<div id="outline-container-sec-1-6-2" class="outline-4">
<h4 id="sec-1-6-2">Version and variety of Common Lisp</h4>
<div class="outline-text-4" id="text-1-6-2">
<pre class="example">
&gt; (lisp-implementation-version)
&gt; (lisp-implementation-type)
</pre>
</div>
</div>
<div id="outline-container-sec-1-6-3" class="outline-4">
<h4 id="sec-1-6-3">Operating system and machine info</h4>
<div class="outline-text-4" id="text-1-6-3">
<pre class="example">
&gt; (software-version)
&gt; (machine-version)
</pre>
</div>
</div>
<div id="outline-container-sec-1-6-4" class="outline-4">
<h4 id="sec-1-6-4">Show the recommended folder for your projects</h4>
<div class="outline-text-4" id="text-1-6-4">
<pre class="example">
&gt; ql:*local-project-directories*
</pre>
</div>
</div>
<div id="outline-container-sec-1-6-5" class="outline-4">
<h4 id="sec-1-6-5">Location of a specific system</h4>
<div class="outline-text-4" id="text-1-6-5">
<pre class="example">
&gt; (ql:where-is-system 'system)
</pre>
</div>
</div>
<div id="outline-container-sec-1-6-6" class="outline-4">
<h4 id="sec-1-6-6">Name of start up configuration file for your lisp</h4>
<div class="outline-text-4" id="text-1-6-6">
<pre class="example">
&gt; (ql-impl-util::init-file-name-for (lisp-implementation-type))
</pre>
</div>
</div>
</div>
<div id="outline-container-sec-1-7" class="outline-3">
<h3 id="sec-1-7">Code navigation</h3>
<div class="outline-text-3" id="text-1-7">
</div><div id="outline-container-sec-1-7-1" class="outline-4">
<h4 id="sec-1-7-1">Jump to the definition of the item at point</h4>
<div class="outline-text-4" id="text-1-7-1">
<pre class="example">
M-.
</pre>
</div>
</div>
<div id="outline-container-sec-1-7-2" class="outline-4">
<h4 id="sec-1-7-2">Return from jump</h4>
<div class="outline-text-4" id="text-1-7-2">
<pre class="example">
M-,
</pre>
</div>
</div>
<div id="outline-container-sec-1-7-3" class="outline-4">
<h4 id="sec-1-7-3">List callers of a function</h4>
<div class="outline-text-4" id="text-1-7-3">
<pre class="example">
C-c &lt;
</pre>
</div>
</div>
<div id="outline-container-sec-1-7-4" class="outline-4">
<h4 id="sec-1-7-4">List functions that a function calls (callees)</h4>
<div class="outline-text-4" id="text-1-7-4">
<pre class="example">
C-c &gt;
</pre>
</div>
</div>
<div id="outline-container-sec-1-7-5" class="outline-4">
<h4 id="sec-1-7-5">Show the references, bindings or assignments of the global variable</h4>
<div class="outline-text-4" id="text-1-7-5">
<p>
at point
</p>
<pre class="example">
C-c C-w r C-c C-w b C-c C-w s
</pre>
</div>
</div>
<div id="outline-container-sec-1-7-6" class="outline-4">
<h4 id="sec-1-7-6">Look up documentation for the symbol at point in the Common Lisp</h4>
<div class="outline-text-4" id="text-1-7-6">
<p>
Hyperspec
</p>
<pre class="example">
C-c C-d h
</pre>
<p>
Note: only for symbols defined in the Common Lisp standard
</p>
</div>
</div>
</div>
<div id="outline-container-sec-1-8" class="outline-3">
<h3 id="sec-1-8">Macros</h3>
<div class="outline-text-3" id="text-1-8">
</div><div id="outline-container-sec-1-8-1" class="outline-4">
<h4 id="sec-1-8-1">Examine a macro expansion</h4>
<div class="outline-text-4" id="text-1-8-1">
<p>
Given the following loop macro invocation:
</p>
<pre class="example">
(loop for i from 1 to 3 do (print i))
</pre>
<p>
This will show the expansion:
</p>
<pre class="example">
(macroexpand-1 '(loop for i from 1 to 3 do (print i)))
</pre>
</div>
</div>
<div id="outline-container-sec-1-8-2" class="outline-4">
<h4 id="sec-1-8-2">Explore the currently available reader macros</h4>
<div class="outline-text-4" id="text-1-8-2">
<pre class="example">
&gt; (inspect *readtable*)
</pre>
<p>
Note: not user friendly
</p>
</div>
</div>
</div>
<div id="outline-container-sec-1-9" class="outline-3">
<h3 id="sec-1-9">Crashes and errors</h3>
<div class="outline-text-3" id="text-1-9">
</div><div id="outline-container-sec-1-9-1" class="outline-4">
<h4 id="sec-1-9-1">Stop a running task</h4>
<div class="outline-text-4" id="text-1-9-1">
<pre class="example">
C-c C-c
</pre>
</div>
</div>
<div id="outline-container-sec-1-9-2" class="outline-4">
<h4 id="sec-1-9-2">Getting back to normal from the debugger</h4>
<div class="outline-text-4" id="text-1-9-2">
<pre class="example">
q - or select [Abort]
</pre>
<p>
\\
</p>
<p>
Copyright 2016 Ben McGunigle
</p>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="date">Created: 2016-07-11 Mon 09:04</p>
<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 24.4.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10)</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>

Source repository

Emacs/Slime edition

Glossary

symbol
A name. Like a variable, but can be used without an attached value.
system
A library
package
A module, more fine-grained than a system. Systems often contain multiple packages.
(at) point
Emacs will often apply commands to the item under the cursor. This item is said to be at point.
M-
A reference to the meta modifier key. This is usually the Alt key on PCs and the command key on Macs.
repl
The interactive prompt of a live lisp session.
quicklisp, alias ql
Common Lisp’s de facto package manager.

Starting and Stopping Lisp

Start lisp from within emacs

M-x slime

Stop the lisp repl in emacs

> ,quit

Restart the lisp repl in emacs

> ,restart-inferior-lisp

Surroundings

List of available functions

[???]

Last three items in result history (most recent first)

> *
> **
> ***

Last three items in command history (most recent first)

> +
> ++
> +++

Cycle though command history (previous, next item)

M-p
M-n

Search command history for things that start with search

> search M-p

Available Packages & Quicklisp

List all loaded packages

(list-all-packages)

List all packages imported into a package

> (package-use-list (find-package 'package))

List of all available systems in the quicklisp repository

> (ql:system-list)

Search the list of systems

> (ql:system-apropos search)

Install and load a system

(ql:quickload 'system)

Contents of a loaded package

> package:<tab>

Contents of a package, including internal symbols

> package::<tab>

Symbols and Objects

Is symbol in use?

(boundp 'var)

Is symbol used in the function namespace?

(fboundp 'var)

List all of the symbols in the current namespace

(apropos "" *package*)

Originating package of a symbol

(symbol-package 'var)

Search for thing in the symbol list (with optional package specifier)

(apropos "thing" 'package)

Docstring

(describe var) ; or C-c C-d d on point

Type of an object

(type-of var)

Object inspector

(inspect var)

Inheritance tree for a class

M-x slime-browse-classes

List methods specializing on a class

M-x slime-who-specializes

Paths, locations, config files

Lisp executable location

M-: inferior-lisp-program

Version and variety of Common Lisp

(lisp-implementation-version)
(lisp-implementation-type)

Operating system and machine info

(software-version)
(machine-version)

Show the recommended folder for your projects

ql:*local-project-directories*

Location of a specific system

(ql:where-is-system 'system)

Name of start up configuration file for your lisp

(ql-impl-util::init-file-name-for (lisp-implementation-type))

Code navigation

Jump to the definition of the item at point

M-.

Return from jump

M-,

List callers of a function

C-c <

List functions that a function calls (callees)

C-c >

Show the references, bindings or assignments of the global variable at point

C-c C-w r
C-c C-w b
C-c C-w s

Look up documentation for the symbol at point in the Common Lisp Hyperspec

C-c C-d h

Note: only for symbols defined in the Common Lisp standard

Macros

Examine a macro expansion

Given the following loop macro invocation:

(loop for i from 1 to 3 do (print i))

This will show the expansion:

(macroexpand-1 '(loop for i from 1 to 3 do (print i)))

Explore the currently available reader macros

(inspect *readtable*)

Note: not user friendly

Crashes and errors

Stop a running task

C-c C-c

Getting back to normal from the debugger

q - or select [Abort]


Copyright 2016 Ben McGunigle

Org Colophon

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment