7af6d40d8264

adopt: Update site.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Tue, 16 Nov 2021 20:19:07 -0500
parents 864b4d836c7b
children c4ff951af8a0
branches/tags (none)
files adopt/changelog/index.html adopt/index.html adopt/reference/index.html adopt/usage/index.html

Changes

--- a/adopt/changelog/index.html	Mon Apr 05 22:02:40 2021 -0400
+++ b/adopt/changelog/index.html	Tue Nov 16 20:19:07 2021 -0500
@@ -15,8 +15,20 @@
 <h1 id="changelog"><a href="">Changelog</a></h1><p>Here's the list of changes in each released version.</p>
 <div class="toc">
 <ul>
+<li><a href="#120">1.2.0</a></li>
+<li><a href="#111">1.1.1</a></li>
+<li><a href="#110">1.1.0</a></li>
+<li><a href="#101">1.0.1</a></li>
 <li><a href="#100">1.0.0</a></li>
 </ul></div>
+<h2 id="120">1.2.0</h2>
+<p>Add Lispworks support to <code>argv</code> and <code>exit</code>.</p>
+<h2 id="111">1.1.1</h2>
+<p>Fix <code>parse-options-or-exit</code> to pass along arguments properly.</p>
+<h2 id="110">1.1.0</h2>
+<p>Added <code>make-boolean-options</code> and <code>defparameters</code> for convenience.</p>
+<h2 id="101">1.0.1</h2>
+<p>Fixed a bug in <code>parse-options-or-exit</code>.</p>
 <h2 id="100">1.0.0</h2>
 <p>Initial release.</p>
                 </div>
--- a/adopt/index.html	Mon Apr 05 22:02:40 2021 -0400
+++ b/adopt/index.html	Tue Nov 16 20:19:07 2021 -0500
@@ -18,7 +18,7 @@
 <ul>
 <li><strong>License:</strong> MIT</li>
 <li><strong>Documentation:</strong> <a href="https://docs.stevelosh.com/adopt/">https://docs.stevelosh.com/adopt/</a></li>
-<li><strong>Mercurial:</strong> <a href="https://hg.sr.ht/~sjl/adopt/">https://hg.sr.ht/~sjl/adopt/</a></li>
+<li><strong>Mercurial:</strong> <a href="https://hg.stevelosh.com/adopt/">https://hg.stevelosh.com/adopt/</a></li>
 <li><strong>Git:</strong> <a href="https://github.com/sjl/adopt/">https://github.com/sjl/adopt/</a></li>
 </ul>
 <p>Adopt aims to be a simple, robust option parser.  It can automatically print
--- a/adopt/reference/index.html	Mon Apr 05 22:02:40 2021 -0400
+++ b/adopt/reference/index.html	Tue Nov 16 20:19:07 2021 -0500
@@ -23,11 +23,13 @@
 <li><a href="#argv-function">ARGV (function)</a></li>
 <li><a href="#collect-function">COLLECT (function)</a></li>
 <li><a href="#define-string-macro">DEFINE-STRING (macro)</a></li>
+<li><a href="#defparameters-macro">DEFPARAMETERS (macro)</a></li>
 <li><a href="#discard-option-function">DISCARD-OPTION (function)</a></li>
 <li><a href="#exit-function">EXIT (function)</a></li>
 <li><a href="#first-function">FIRST (function)</a></li>
 <li><a href="#flip-function">FLIP (function)</a></li>
 <li><a href="#last-function">LAST (function)</a></li>
+<li><a href="#make-boolean-options-function">MAKE-BOOLEAN-OPTIONS (function)</a></li>
 <li><a href="#make-group-function">MAKE-GROUP (function)</a></li>
 <li><a href="#make-interface-function">MAKE-INTERFACE (function)</a></li>
 <li><a href="#make-option-function">MAKE-OPTION (function)</a></li>
@@ -72,6 +74,33 @@
 
 
 <p>Convenience macro for <code>(defparameter ,var (format nil ,string ,@args))</code>.</p>
+<h3 id="defparameters-macro"><code>DEFPARAMETERS</code> (macro)</h3>
+<div class="codehilite"><pre><span/>(DEFPARAMETERS PARAMETERS VALUES-FORM)
+</pre></div>
+
+
+<p>Convenience macro for <code>defparameter</code>ing multiple variables at once.</p>
+<p><code>parameters</code> must be a list of special variable names suitable for giving to
+  <code>defparameter</code>.</p>
+<p><code>values-form</code> must be an expression that returns as many values as parameters
+  in the parameter list.  Each parameter will be set to the corresponding value.</p>
+<p>This can be handy when using <code>make-boolean-options</code> to create two <code>option</code>s at
+  once and assign them to special variables.</p>
+<p>Examples:</p>
+<div class="codehilite"><pre><span/>(defparameters (*a* *b*) (truncate 100 3))
+(list *a* *b*)
+; =&gt;
+; (33 1)
+
+(defparameters (*option-foo* *option-no-foo*)
+  (make-boolean-options 'foo
+    :help "Foo the widgets during the run."
+    :help-no "Do not foo the widgets during the run (the default)."
+    :long "foo"
+    :short #f))
+</pre></div>
+
+
 <h3 id="discard-option-function"><code>DISCARD-OPTION</code> (function)</h3>
 <div class="codehilite"><pre><span/>(DISCARD-OPTION CONDITION)
 </pre></div>
@@ -126,6 +155,50 @@
 <p>Return <code>new</code>.</p>
 <p>It is useful as a <code>:reduce</code> function when you want to just keep the last-given
   value for an option.</p>
+<h3 id="make-boolean-options-function"><code>MAKE-BOOLEAN-OPTIONS</code> (function)</h3>
+<div class="codehilite"><pre><span/>(MAKE-BOOLEAN-OPTIONS NAME &amp;KEY
+                      (NAME-NO (INTERN (CONCATENATE 'STRING (STRING 'NO-) (STRING NAME)))) LONG
+                      (LONG-NO (WHEN LONG (FORMAT NIL no-~A LONG))) SHORT
+                      (SHORT-NO (WHEN SHORT (CHAR-UPCASE SHORT))) (RESULT-KEY NAME) HELP
+                      HELP-NO MANUAL MANUAL-NO INITIAL-VALUE)
+</pre></div>
+
+
+<p>Create and return a pair of boolean options, suitable for use in an interface.</p>
+<p>This function reduces some of the boilerplate when creating two <code>option</code>s for
+  boolean values, e.g. <code>--foo</code> and <code>--no-foo</code>.  It will try to guess at an
+  appropriate name, long option, short option, and result key, but you can
+  override them with the <code>…-no</code> keyword options as needed.</p>
+<p>The two options will be returned as two separate values — you can use
+  <code>defparameters</code> to conveniently bind them to two separate variables if
+  desired.</p>
+<p>Example:</p>
+<div class="codehilite"><pre><span/>(defparameters (*option-debug* *option-no-debug*)
+  (make-boolean-options 'debug
+    :long "debug"
+    :short #d
+    :help "Enable the Lisp debugger."
+    :help-no "Disable the Lisp debugger (the default)."))
+
+;; is roughly equivalent to:
+
+(defparameter *option-debug*
+  (make-option 'debug
+    :long "debug"
+    :short #d
+    :help "Enable the Lisp debugger."
+    :initial-value nil
+    :reduce (constantly t))
+
+(defparameter *option-no-debug*
+  (make-option 'no-debug
+    :long "no-debug"
+    :short #D
+    :help "Disable the Lisp debugger (the default)."
+    :reduce (constantly nil))
+</pre></div>
+
+
 <h3 id="make-group-function"><code>MAKE-GROUP</code> (function)</h3>
 <div class="codehilite"><pre><span/>(MAKE-GROUP NAME &amp;KEY TITLE HELP MANUAL OPTIONS)
 </pre></div>
--- a/adopt/usage/index.html	Mon Apr 05 22:02:40 2021 -0400
+++ b/adopt/usage/index.html	Tue Nov 16 20:19:07 2021 -0500
@@ -70,7 +70,8 @@
 <p><code>make-interface</code> takes several required arguments:</p>
 <ul>
 <li><code>:name</code> is the name of the program.</li>
-<li><code>:summary</code> is a concise one-line summary of what it does.</li>
+<li><code>:summary</code> is a concise one-line summary of what it does.  By convention it
+  should not be a full sentence, but just a snippet of text.</li>
 <li><code>:usage</code> is a UNIX-style the command line usage string.</li>
 <li><code>:help</code> is a longer description of the program.</li>
 </ul>
@@ -257,21 +258,21 @@
 <div class="codehilite"><pre><span/><span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-version*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'version</span>
     <span class="ss">:long</span> <span class="s">"version"</span>
-    <span class="ss">:help</span> <span class="s">"display version information and exit"</span>
+    <span class="ss">:help</span> <span class="s">"Display version and exit."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-help*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'help</span>
     <span class="ss">:long</span> <span class="s">"help"</span>
     <span class="ss">:short</span> <span class="sc">#\h</span>
-    <span class="ss">:help</span> <span class="s">"display help information and exit"</span>
+    <span class="ss">:help</span> <span class="s">"Display help and exit."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-literal*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'literal</span>
     <span class="ss">:long</span> <span class="s">"literal"</span>
     <span class="ss">:short</span> <span class="sc">#\l</span>
-    <span class="ss">:help</span> <span class="s">"treat PATTERN as a literal string instead of a regular expression"</span>
+    <span class="ss">:help</span> <span class="s">"Treat PATTERN as a literal string instead of a regular expression."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*ui*</span>
@@ -297,10 +298,10 @@
 <span class="c1">; Search the contents of …</span>
 <span class="c1">;</span>
 <span class="c1">; Options:</span>
-<span class="c1">;   --version             display version information and exit</span>
-<span class="c1">;   -h, --help            display help information and exit</span>
-<span class="c1">;   -l, --literal         treat PATTERN as a literal string instead of a regular</span>
-<span class="c1">;                         expression</span>
+<span class="c1">;   --version             Display version and exit.</span>
+<span class="c1">;   -h, --help            Display help and exit.</span>
+<span class="c1">;   -l, --literal         Treat PATTERN as a literal string instead of a regular</span>
+<span class="c1">;                         expression.</span>
 </pre></div>
 
 
@@ -308,6 +309,10 @@
 put to use shortly.  At least one of <code>:short</code> and <code>:long</code> is required, and
 <code>:help</code> text must be specified.  We'll talk more about <code>:reduce</code> in a little
 while, but it too is required.</p>
+<p>When writing <code>:help</code> text I recommend using a full sentence, starting with
+a capital letter and ending with appropriate punctuation.  If there's a default
+value or behavior for the option, mention it in the help text with something
+like <code>Search at most N lines (default 100).</code>.</p>
 <p>I prefer to define each option as its own global variable to keep the call to
 <code>make-interface</code> from getting too large and unwieldy, but feel free to do
 something like this if you prefer to avoid cluttering your package:</p>
@@ -355,7 +360,7 @@
     <span class="ss">:result-key</span> <span class="ss">'pattern-is-literal</span>
     <span class="ss">:long</span> <span class="s">"literal"</span>
     <span class="ss">:short</span> <span class="sc">#\l</span>
-    <span class="ss">:help</span> <span class="s">"treat PATTERN as a literal string instead of a regular expression"</span>
+    <span class="ss">:help</span> <span class="s">"Treat PATTERN as a literal string instead of a regular expression."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 
 <span class="c1">;; …</span>
@@ -473,7 +478,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'help</span>
     <span class="ss">:long</span> <span class="s">"help"</span>
     <span class="ss">:short</span> <span class="sc">#\h</span>
-    <span class="ss">:help</span> <span class="s">"display help information and exit"</span>
+    <span class="ss">:help</span> <span class="s">"Display help and exit."</span>
     <span class="ss">:initial-value</span> <span class="no">nil</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">current-value</span><span class="p">)</span>
               <span class="p">(</span><span class="k">declare</span> <span class="p">(</span><span class="k">ignore</span> <span class="nv">current-value</span><span class="p">))</span>
@@ -488,7 +493,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'help</span>
     <span class="ss">:long</span> <span class="s">"help"</span>
     <span class="ss">:short</span> <span class="sc">#\h</span>
-    <span class="ss">:help</span> <span class="s">"display help information and exit"</span>
+    <span class="ss">:help</span> <span class="s">"Display help and exit."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 </pre></div>
 
@@ -500,7 +505,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'paginate</span>
     <span class="ss">:long</span> <span class="s">"paginate"</span>
     <span class="ss">:short</span> <span class="sc">#\p</span>
-    <span class="ss">:help</span> <span class="s">"turn pagination on"</span>
+    <span class="ss">:help</span> <span class="s">"Turn pagination on."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-no-paginate*</span>
@@ -508,7 +513,7 @@
     <span class="ss">:result-key</span> <span class="ss">'paginate</span>
     <span class="ss">:long</span> <span class="s">"no-paginate"</span>
     <span class="ss">:short</span> <span class="sc">#\P</span>
-    <span class="ss">:help</span> <span class="s">"turn pagination off (the default)"</span>
+    <span class="ss">:help</span> <span class="s">"Turn pagination off (the default)."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">nil</span><span class="p">)))</span>
 </pre></div>
 
@@ -529,13 +534,51 @@
 <p>If the last-given option didn't take precedence, they'd have to fall back to the
 non-alias version of the command, and type out all the options they <em>do</em> want by
 hand.  This is annoying, so it's usually better to let the last one win.</p>
+<p>Making two separate options by hand can be tedious if you have a lot of boolean
+options, so Adopt provides a <code>make-boolean-options</code> function that will do some
+of the boilerplate for you:</p>
+<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">adopt:make-boolean-options</span> <span class="ss">'paginate</span>
+  <span class="ss">:long</span> <span class="s">"paginate"</span>
+  <span class="ss">:short</span> <span class="sc">#\p</span>
+  <span class="ss">:help</span> <span class="s">"Turn pagination on."</span>
+  <span class="ss">:help-no</span> <span class="s">"Turn pagination off (the default)."</span><span class="p">)</span>
+<span class="c1">;; =&gt;</span>
+<span class="err">#</span><span class="nv">&lt;ADOPT::OPTION</span> <span class="nv">PAGINATE</span> <span class="nv">p/paginate&gt;</span>
+<span class="err">#</span><span class="nv">&lt;ADOPT::OPTION</span> <span class="nv">NO-PAGINATE</span> <span class="nv">P/no-paginate&gt;</span>
+</pre></div>
+
+
+<p><code>make-boolean-options</code> will try to guess at sensible values to reduce the
+boilerplate you need to type:</p>
+<ul>
+<li>If <code>:long</code> is <code>"foo"</code> for the true option, the false option will be <code>"no-foo"</code>
+  unless overridden by <code>:long-no</code>.</li>
+<li>If <code>:short</code> is <code>#\f</code> for the true option, the false option will be
+  <code>(char-upcase #\f)</code> unless overridden by <code>:short-no</code>.</li>
+<li>The given option name (e.g. <code>foo</code>) will be used for the true option, and
+  a symbol with <code>no-</code> prepended (e.g. <code>no-foo</code>) will be used for the false
+  option unless overridden by <code>:name-no</code>.</li>
+<li><code>:initial-value</code> will be <code>nil</code> for the pair if not given.</li>
+</ul>
+<p>The two options are returned as separate <code>values</code>.  Adopt also provides
+a <code>defparameters</code> convenience macro to create special variables for them more
+easily:</p>
+<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">defparameters</span> <span class="p">(</span><span class="vg">*option-paginate*</span> <span class="vg">*option-no-paginate*</span><span class="p">)</span>
+  <span class="p">(</span><span class="nv">adopt:make-boolean-options</span> <span class="ss">'paginate</span>
+    <span class="ss">:long</span> <span class="s">"paginate"</span>
+    <span class="ss">:short</span> <span class="sc">#\p</span>
+    <span class="ss">:help</span> <span class="s">"Turn pagination on."</span>
+    <span class="ss">:help-no</span> <span class="s">"Turn pagination off (the default)."</span><span class="p">))</span>
+</pre></div>
+
+
 <h3 id="counting-options">Counting Options</h3>
 <p>To define an option that counts how many times it's been given, like SSH's <code>-v</code>,
 you can use something like this:</p>
 <div class="codehilite"><pre><span/><span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-verbosity*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'verbosity</span>
     <span class="ss">:short</span> <span class="sc">#\v</span>
-    <span class="ss">:help</span> <span class="s">"output more verbose logs"</span>
+    <span class="ss">:help</span> <span class="s">"Output more verbose logs."</span>
     <span class="ss">:initial-value</span> <span class="mi">0</span>
     <span class="ss">:reduce</span> <span class="nf">#'</span><span class="nb">1+</span><span class="p">))</span>
 </pre></div>
@@ -549,7 +592,7 @@
     <span class="ss">:parameter</span> <span class="s">"PATTERN"</span>
     <span class="ss">:long</span> <span class="s">"repository"</span>
     <span class="ss">:short</span> <span class="sc">#\R</span>
-    <span class="ss">:help</span> <span class="s">"path to the repository (default .)"</span>
+    <span class="ss">:help</span> <span class="s">"Path to the repository (default .)."</span>
     <span class="ss">:initial-value</span> <span class="s">"."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">prev</span> <span class="nv">new</span><span class="p">)</span>
               <span class="p">(</span><span class="k">declare</span> <span class="p">(</span><span class="k">ignore</span> <span class="nv">prev</span><span class="p">))</span>
@@ -567,7 +610,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'repository</span>
     <span class="ss">:long</span> <span class="s">"repository"</span>
     <span class="ss">:short</span> <span class="sc">#\R</span>
-    <span class="ss">:help</span> <span class="s">"path to the repository (default .)"</span>
+    <span class="ss">:help</span> <span class="s">"Path to the repository (default .)."</span>
     <span class="ss">:initial-value</span> <span class="s">"."</span>
     <span class="ss">:reduce</span> <span class="nf">#'</span><span class="nv">adopt:last</span><span class="p">))</span>
 </pre></div>
@@ -580,7 +623,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'exclude</span>
     <span class="ss">:long</span> <span class="s">"exclude"</span>
     <span class="ss">:parameter</span> <span class="s">"PATTERN"</span>
-    <span class="ss">:help</span> <span class="s">"exclude PATTERN (may be given multiple times)"</span>
+    <span class="ss">:help</span> <span class="s">"Exclude PATTERN (may be given multiple times)."</span>
     <span class="ss">:initial-value</span> <span class="no">nil</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">patterns</span> <span class="nv">new</span><span class="p">)</span>
               <span class="p">(</span><span class="nb">cons</span> <span class="nv">new</span> <span class="nv">patterns</span><span class="p">))))</span>
@@ -595,7 +638,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'exclude</span>
     <span class="ss">:long</span> <span class="s">"exclude"</span>
     <span class="ss">:parameter</span> <span class="s">"PATTERN"</span>
-    <span class="ss">:help</span> <span class="s">"exclude PATTERN (may be given multiple times)"</span>
+    <span class="ss">:help</span> <span class="s">"Exclude PATTERN (may be given multiple times)."</span>
     <span class="ss">:initial-value</span> <span class="no">nil</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nv">adopt:flip</span> <span class="nf">#'</span><span class="nb">cons</span><span class="p">)))</span>
 </pre></div>
@@ -611,7 +654,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'exclude</span>
     <span class="ss">:long</span> <span class="s">"exclude"</span>
     <span class="ss">:parameter</span> <span class="s">"PATTERN"</span>
-    <span class="ss">:help</span> <span class="s">"exclude PATTERN (may be given multiple times)"</span>
+    <span class="ss">:help</span> <span class="s">"Exclude PATTERN (may be given multiple times)."</span>
     <span class="ss">:initial-value</span> <span class="no">nil</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">patterns</span> <span class="nv">new</span><span class="p">)</span>
               <span class="p">(</span><span class="nb">append</span> <span class="nv">patterns</span> <span class="p">(</span><span class="nb">list</span> <span class="nv">new</span><span class="p">)))))</span>
@@ -627,7 +670,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'exclude</span>
     <span class="ss">:long</span> <span class="s">"exclude"</span>
     <span class="ss">:parameter</span> <span class="s">"PATTERN"</span>
-    <span class="ss">:help</span> <span class="s">"exclude PATTERN (may be given multiple times)"</span>
+    <span class="ss">:help</span> <span class="s">"Exclude PATTERN (may be given multiple times)."</span>
     <span class="ss">:reduce</span> <span class="nf">#'</span><span class="nv">adopt:collect</span><span class="p">))</span>
 </pre></div>
 
@@ -638,7 +681,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'exclude</span>
     <span class="ss">:long</span> <span class="s">"exclude"</span>
     <span class="ss">:parameter</span> <span class="s">"PATTERN"</span>
-    <span class="ss">:help</span> <span class="s">"exclude PATTERN (may be given multiple times)"</span>
+    <span class="ss">:help</span> <span class="s">"Exclude PATTERN (may be given multiple times)."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nv">adopt:flip</span> <span class="nf">#'</span><span class="nb">cons</span><span class="p">)</span>
     <span class="ss">:finally</span> <span class="nf">#'</span><span class="nb">nreverse</span><span class="p">))</span>
 </pre></div>
@@ -674,14 +717,14 @@
 help you make a command line interface with all the fixins:</p>
 <div class="codehilite"><pre><span/><span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-help*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'help</span>
-    <span class="ss">:help</span> <span class="s">"display help and exit"</span>
+    <span class="ss">:help</span> <span class="s">"Display help and exit."</span>
     <span class="ss">:long</span> <span class="s">"help"</span>
     <span class="ss">:short</span> <span class="sc">#\h</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-literal*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'literal</span>
-    <span class="ss">:help</span> <span class="s">"treat PATTERN as a literal string instead of a regex"</span>
+    <span class="ss">:help</span> <span class="s">"Treat PATTERN as a literal string instead of a regex."</span>
     <span class="ss">:long</span> <span class="s">"literal"</span>
     <span class="ss">:short</span> <span class="sc">#\l</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
@@ -689,14 +732,14 @@
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-no-literal*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'no-literal</span>
     <span class="ss">:result-key</span> <span class="ss">'literal</span>
-    <span class="ss">:help</span> <span class="s">"treat PATTERN as a regex (the default)"</span>
+    <span class="ss">:help</span> <span class="s">"Treat PATTERN as a regex (the default)."</span>
     <span class="ss">:long</span> <span class="s">"no-literal"</span>
     <span class="ss">:short</span> <span class="sc">#\L</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">nil</span><span class="p">)))</span>
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-case-sensitive*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'case-sensitive</span>
-    <span class="ss">:help</span> <span class="s">"match case-sensitively (the default)"</span>
+    <span class="ss">:help</span> <span class="s">"Match case-sensitively (the default)."</span>
     <span class="ss">:long</span> <span class="s">"case-sensitive"</span>
     <span class="ss">:short</span> <span class="sc">#\c</span>
     <span class="ss">:initial-value</span> <span class="no">t</span>
@@ -704,7 +747,7 @@
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-case-insensitive*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'case-insensitive</span>
-    <span class="ss">:help</span> <span class="s">"ignore case when matching"</span>
+    <span class="ss">:help</span> <span class="s">"Ignore case when matching."</span>
     <span class="ss">:long</span> <span class="s">"case-insensitive"</span>
     <span class="ss">:short</span> <span class="sc">#\C</span>
     <span class="ss">:result-key</span> <span class="ss">'case-sensitive</span>
@@ -712,13 +755,13 @@
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-color*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'color</span>
-    <span class="ss">:help</span> <span class="s">"highlight matches with color"</span>
+    <span class="ss">:help</span> <span class="s">"Highlight matches with color."</span>
     <span class="ss">:long</span> <span class="s">"color"</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">t</span><span class="p">)))</span>
 
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-no-color*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'no-color</span>
-    <span class="ss">:help</span> <span class="s">"don't highlight matches (the default)"</span>
+    <span class="ss">:help</span> <span class="s">"Don't highlight matches (the default)."</span>
     <span class="ss">:long</span> <span class="s">"no-color"</span>
     <span class="ss">:result-key</span> <span class="ss">'color</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nb">constantly</span> <span class="no">nil</span><span class="p">)))</span>
@@ -726,7 +769,7 @@
 <span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*option-context*</span>
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'context</span>
     <span class="ss">:parameter</span> <span class="s">"N"</span>
-    <span class="ss">:help</span> <span class="s">"show N lines of context (default 0)"</span>
+    <span class="ss">:help</span> <span class="s">"Show N lines of context (default 0)."</span>
     <span class="ss">:long</span> <span class="s">"context"</span>
     <span class="ss">:short</span> <span class="sc">#\U</span>
     <span class="ss">:initial-value</span> <span class="mi">0</span>
@@ -825,7 +868,7 @@
                       <span class="ss">:parameter</span> <span class="s">"N"</span>
                       <span class="ss">:long</span> <span class="s">"times"</span>
                       <span class="ss">:initial-value</span> <span class="mi">1</span>
-                      <span class="ss">:help</span> <span class="s">"say meow N times (default 1)"</span>
+                      <span class="ss">:help</span> <span class="s">"Say meow N times (default 1)."</span>
                       <span class="ss">:reduce</span> <span class="nf">#'</span><span class="nv">adopt:last</span>
                       <span class="ss">:key</span> <span class="nf">#'</span><span class="nb">parse-integer</span><span class="p">))))</span>
 
@@ -894,7 +937,7 @@
   <span class="p">(</span><span class="nv">adopt:make-option</span> <span class="ss">'exclude</span>
     <span class="ss">:long</span> <span class="s">"exclude"</span>
     <span class="ss">:parameter</span> <span class="s">"PATTERN"</span>
-    <span class="ss">:help</span> <span class="s">"exclude PATTERN"</span>
+    <span class="ss">:help</span> <span class="s">"Exclude PATTERN."</span>
     <span class="ss">:manual</span> <span class="s">"Exclude lines that match PATTERN (a PERL-compatible regular expression) from the search results.  Multiple PATTERNs can be specified by giving this option multiple times."</span>
     <span class="ss">:reduce</span> <span class="p">(</span><span class="nv">adopt:flip</span> <span class="nf">#'</span><span class="nb">cons</span><span class="p">)))</span>
 </pre></div>