/usr/share/doc/racket/readline/index.html is in racket-doc 6.7-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>Readline: Terminal Interaction</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_0");">►</a></td><td></td><td><a href="" class="tocviewselflink" data-pltdoc="x">Readline:<span class="mywbr"> </span> Terminal Interaction</a></td></tr></table></div><div class="tocviewsublistonly" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1 </td><td><a href="#%28part._.Normal_.Use_of_.Readline%29" class="tocviewlink" data-pltdoc="x">Normal Use of Readline</a></td></tr><tr><td align="right">2 </td><td><a href="#%28part._.Interacting_with_the_.Readline-.Enabled_.Input_.Port_%29" class="tocviewlink" data-pltdoc="x">Interacting with the Readline-<wbr></wbr>Enabled Input Port </a></td></tr><tr><td align="right">3 </td><td><a href="#%28part._.Direct_.Bindings_for_.Readline_.Hackers%29" class="tocviewlink" data-pltdoc="x">Direct Bindings for Readline Hackers</a></td></tr></table></div></div></div><div class="tocsub"><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber"></span><a href="#%28part._top%29" class="tocsubseclink" data-pltdoc="x">Readline:<span class="mywbr"> </span> Terminal Interaction</a></td></tr><tr><td><span class="tocsublinknumber">1<tt> </tt></span><a href="#%28part._.Normal_.Use_of_.Readline%29" class="tocsubseclink" data-pltdoc="x">Normal Use of Readline</a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Fmain..rkt%29._install-readline%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">install-<wbr></wbr>readline!</span></span></a></td></tr><tr><td><span class="tocsublinknumber">2<tt> </tt></span><a href="#%28part._.Interacting_with_the_.Readline-.Enabled_.Input_.Port_%29" class="tocsubseclink" data-pltdoc="x">Interacting with the Readline-<wbr></wbr>Enabled Input Port </a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._current-prompt%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">current-<wbr></wbr>prompt</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._max-history%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">max-<wbr></wbr>history</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._keep-duplicates%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">keep-<wbr></wbr>duplicates</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._keep-blanks%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">keep-<wbr></wbr>blanks</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._readline-prompt%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">readline-<wbr></wbr>prompt</span></span></a></td></tr><tr><td><span class="tocsublinknumber">3<tt> </tt></span><a href="#%28part._.Direct_.Bindings_for_.Readline_.Hackers%29" class="tocsubseclink" data-pltdoc="x">Direct Bindings for Readline Hackers</a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">readline</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-bytes%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">readline-<wbr></wbr>bytes</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._add-history%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">add-<wbr></wbr>history</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._add-history-bytes%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">add-<wbr></wbr>history-<wbr></wbr>bytes</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._history-length%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">history-<wbr></wbr>length</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._history-get%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">history-<wbr></wbr>get</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._history-delete%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">history-<wbr></wbr>delete</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._set-completion-function%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">set-<wbr></wbr>completion-<wbr></wbr>function!</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-newline%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">readline-<wbr></wbr>newline</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-redisplay%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">readline-<wbr></wbr>redisplay</span></span></a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="versionbox"><span class="version">6.7</span></div><div class="navsettop"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.7", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.7");">top</a></span><span class="navright"> <span class="nonavigation">← prev</span> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.7");">up</a> <span class="nonavigation">next →</span></span> </div><h2 x-source-module="(lib "readline/readline.scrbl")" x-source-pkg="readline-doc" x-part-tag=""top""><a name="(part._top)"></a><a name="(part._.Readline__.Terminal_.Interaction)"></a>Readline: Terminal Interaction</h2><p>The <span class="stt">"readline"</span> collection (not to be confused with Racket’s
<span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=Byte_and_String_Input.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._read-line%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">read-line</a></span> function) provides glue for using the Editline library
or GNU’s Readline
library with the Racket <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=eval.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._read-eval-print-loop%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">read-eval-print-loop</a></span>.</p><blockquote class="refpara"><blockquote class="refcolumn"><blockquote class="refcontent"><p>Due to licensing issues, the Readline collection is by default
backed by the Editline library.
To switch to GNU’s Readline library, either install the
<span class="stt">"readline-gpl"</span> package, or set the <span class="stt">PLT_READLINE_LIB</span> environment
variable to the library, which configures the <span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline%29%29" class="RktValLink" data-pltdoc="x">readline</a></span> collection to
use Readline.</p></blockquote></blockquote></blockquote><h3 x-source-module="(lib "readline/readline.scrbl")" x-source-pkg="readline-doc" x-part-tag=""Normal_Use_of_Readline"">1<tt> </tt><a name="(part._.Normal_.Use_of_.Readline)"></a><a name="(mod-path._readline)"></a><a name="(mod-path._readline/rep-start)"></a>Normal Use of Readline</h3><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._readline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller"> package:</span> <span class="stt">readline-lib</span></span></td></tr><tr><td align="left" colspan="2"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._readline%2Frep-start%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline/rep-start</span></a><span class="RktPn">)</span></td></tr></table></p><p>The <a href="#%28mod-path._readline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline</span></a> library installs a Readline-based
input port (whose name is <span class="RktVal">'</span><span class="RktVal">readline-input</span>) and hooks the
prompt-and-read part of Racket’s <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=eval.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._read-eval-print-loop%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">read-eval-print-loop</a></span> to
interact with it.</p><p>You can start Racket with</p><p><span class="hspace"> </span><span class="stt">racket -il readline</span></p><p>or evaluate</p><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline%29%29" class="RktValLink" data-pltdoc="x">readline</a></span><span class="RktPn">)</span></p></blockquote><p>in the Racket <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=eval.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._read-eval-print-loop%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">read-eval-print-loop</a></span> to load Readline
manually. You can also put (require readline) in your
<span class="stt">"~/.racketrc"</span>, so that Racket automatically loads
Readline support in interactive mode.</p><p>If you want to enable Readline support only sometimes—<wbr></wbr>such as
only when you use an <span class="stt">xterm</span>, and not when you use an Emacs
shell—<wbr></wbr>then you can use <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=Module_Names_and_Loading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._dynamic-require%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">dynamic-require</a></span>, as in the following
example:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=when_unless.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._when%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">when</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=regexp.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._regexp-match%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">regexp-match?</a></span><span class="hspace"> </span><span class="RktVal">#rx"xterm"</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=envvars.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._getenv%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">getenv</a></span><span class="hspace"> </span><span class="RktVal">"TERM"</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=Module_Names_and_Loading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._dynamic-require%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">dynamic-require</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">readline</span><span class="hspace"> </span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote><p>The <a href="#%28mod-path._readline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline</span></a> library automatically checks whether the
current input port is a terminal, as determined by
<span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=port-ops.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._terminal-port%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">terminal-port?</a></span>, and it installs Readline only to replace
terminal ports. The <a href="#%28mod-path._readline%2Frep-start%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline/rep-start</span></a> module
installs Readline without a terminal check.</p><p>By default, Readline’s completion is set to use the visible
bindings in the current namespace. This is far from ideal, but it’s
better than Readline’s default filename completion which is rarely
useful. In addition, the Readline history is stored across
invocations in Racket’s preferences file, assuming that Racket
exits normally.</p><p>The <a href="#%28mod-path._readline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline</span></a> library adjusts
<span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=eval.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._read-eval-print-loop%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">read-eval-print-loop</a></span> by setting the prompt read handler as
determined by <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-prompt-read%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">current-prompt-read</a></span>. The call to the read
interaction handler (as determined by
<span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-read-interaction%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">current-read-interaction</a></span>) is parameterized to set
<span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._readline-prompt%29%29" class="RktValLink" data-pltdoc="x">readline-prompt</a></span>, so that a prompt will be printed when
reading starts. To compensate for the prompt printed via
<span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._readline-prompt%29%29" class="RktValLink" data-pltdoc="x">readline-prompt</a></span>, when the interaction input port’s name (as
produced by function in the
<span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-get-interaction-input-port%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">current-get-interaction-input-port</a></span> parameter) is
<span class="RktVal">'</span><span class="RktVal">readline-input</span>, the prompt read handler skips printing a
prompt; otherwise, it displays a prompt as determined by
<span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._current-prompt%29%29" class="RktValLink" data-pltdoc="x">current-prompt</a></span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/main..rkt)._install-readline!))"></a><span title="Provided from: readline, readline/rep-start | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fmain..rkt%29._install-readline%21%29%29" class="RktValDef RktValLink" data-pltdoc="x">install-readline!</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Adds <span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><span class="RktSym">readline/rep</span><span class="RktPn">)</span> to the result of
<span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=Filesystem.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._find-system-path%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">find-system-path</a></span><span class="stt"> </span><span class="RktVal">'</span><span class="RktVal">init-file</span><span class="RktPn">)</span>, which is
<span class="stt">"~/.racketrc"</span> on Unix. Consequently, Readline will be
loaded whenever Racket is started in interactive mode. The
declaration is added only if it is not already present, as determined
by <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=Reading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._read%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">read</a></span>ing and checking all top-level expressions in the
file.</div></p><p>For more fine-grained control, such as conditionally loading
Readline based on an environment variable, edit
<span class="stt">"~/.racketrc"</span> manually.</p><h3 x-source-module="(lib "readline/readline.scrbl")" x-source-pkg="readline-doc" x-part-tag=""Interacting_with_the_Readline-Enabled_Input_Port_"">2<tt> </tt><a name="(part._.Interacting_with_the_.Readline-.Enabled_.Input_.Port_)"></a><a name="(mod-path._readline/pread)"></a>Interacting with the Readline-Enabled Input Port </h3><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._readline%2Fpread%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline/pread</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller"> package:</span> <span class="stt">readline-lib</span></span></td></tr></table></div><div class="SIntrapara"> The <a href="#%28mod-path._readline%2Fpread%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline/pread</span></a> library
provides customization, and support for prompt-reading after
<a href="#%28mod-path._readline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline</span></a> installs the new input port.</div></p><p>The reading facility that the new input port provides can be
customized with the following parameters.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/pread..rkt)._current-prompt))"></a><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._current-prompt%29%29" class="RktValDef RktValLink" data-pltdoc="x">current-prompt</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._current-prompt%29%29" class="RktValDef RktValLink" data-pltdoc="x">current-prompt</a></span></span><span class="hspace"> </span><span class="RktVar">bstr</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">bstr</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter that determines the prompt that is used, as a byte string.
Defaults to <span class="RktVal">#"> "</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/pread..rkt)._max-history))"></a><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._max-history%29%29" class="RktValDef RktValLink" data-pltdoc="x">max-history</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._exact-nonnegative-integer%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">exact-nonnegative-integer?</a></span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._max-history%29%29" class="RktValDef RktValLink" data-pltdoc="x">max-history</a></span></span><span class="hspace"> </span><span class="RktVar">n</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">n</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._exact-nonnegative-integer%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">exact-nonnegative-integer?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter that determines the number of history entries to save,
defaults to <span class="RktVal">100</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/pread..rkt)._keep-duplicates))"></a><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._keep-duplicates%29%29" class="RktValDef RktValLink" data-pltdoc="x">keep-duplicates</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._one-of%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">one-of/c</a></span><span class="hspace"> </span><span class="RktVal">#f</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">unconsecutive</span><span class="hspace"> </span><span class="RktVal">#t</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._keep-duplicates%29%29" class="RktValDef RktValLink" data-pltdoc="x">keep-duplicates</a></span></span><span class="hspace"> </span><span class="RktVar">keep?</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">keep?</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._one-of%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">one-of/c</a></span><span class="hspace"> </span><span class="RktVal">#f</span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">unconsecutive</span><span class="hspace"> </span><span class="RktVal">#t</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter. If <span class="RktVal">#f</span> (the default), then when a line is equal
to a previous one, the previous one is removed. If it set to
<span class="RktVal">'</span><span class="RktVal">unconsecutive</span> then this happens only for an line that
duplicates the previous one, and if it is <span class="RktVal">#f</span> then all
duplicates are kept.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/pread..rkt)._keep-blanks))"></a><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._keep-blanks%29%29" class="RktValDef RktValLink" data-pltdoc="x">keep-blanks</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._keep-blanks%29%29" class="RktValDef RktValLink" data-pltdoc="x">keep-blanks</a></span></span><span class="hspace"> </span><span class="RktVar">keep?</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">keep?</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter. If <span class="RktVal">#f</span> (the default), blank input lines are not
kept in history.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/pread..rkt)._readline-prompt))"></a><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._readline-prompt%29%29" class="RktValDef RktValLink" data-pltdoc="x">readline-prompt</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._false%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">false/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._one-of%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">one-of/c</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">space</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: readline/pread | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._readline-prompt%29%29" class="RktValDef RktValLink" data-pltdoc="x">readline-prompt</a></span></span><span class="hspace"> </span><span class="RktVar">status</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">status</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._false%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">false/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._one-of%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">one-of/c</a></span><span class="hspace"> </span><span class="RktVal">'</span><span class="RktVal">space</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">The new input port that you get when you require
<a href="#%28mod-path._readline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline</span></a> is a custom port that uses Readline for
all inputs. The problem is when you want to display a prompt and then
read some input, Readline will get confused if it is not used when the
cursor is at the beginning of the line (which is why it has a
<span class="RktVar">prompt</span> argument.) To use this prompt:</div></p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=parameters.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fmore-scheme..rkt%2529._parameterize%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">parameterize</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._readline-prompt%29%29" class="RktValLink" data-pltdoc="x">readline-prompt</a></span><span class="hspace"> </span><span class="RktSym">some-byte-string</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktSym">...code-that-reads...</span><span class="RktPn">)</span></td></tr></table></blockquote><p>This expression makes the first call to Readline use the prompt, and
subsequent calls will use an all-spaces prompt of the same length (for
example, when you’re reading an S-expression). The normal value of
<span class="RktSym"><a href="#%28def._%28%28lib._readline%2Fpread..rkt%29._readline-prompt%29%29" class="RktValLink" data-pltdoc="x">readline-prompt</a></span> is <span class="RktVal">#f</span> for an empty prompt (and
spaces after the prompt is used, which is why you should use
<span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=parameters.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fmore-scheme..rkt%2529._parameterize%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">parameterize</a></span> to restore it to <span class="RktVal">#f</span>).</p><p>A proper solution would be to install a custom output port, too, which
keeps track of text that is displayed without a trailing newline. As
a cheaper solution, if line-counting is enabled for the terminal’s
output-port, then a newline is printed before reading if the column is
not 0. (The <a href="#%28mod-path._readline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline</span></a> library enables line-counting
for the output port.)</p><p><span style="font-weight: bold">Warning:</span> The Readline library uses the output port directly.
You should not use it when <span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=port-ops.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-input-port%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">current-input-port</a></span> has been
modified, or when it was not a terminal port when Racket was started
(eg, when reading input from a pipe). Expect some problems if you
ignore this warning (not too bad, mostly problems with detecting an
EOF).</p><h3 x-source-module="(lib "readline/readline.scrbl")" x-source-pkg="readline-doc" x-part-tag=""Direct_Bindings_for_Readline_Hackers"">3<tt> </tt><a name="(part._.Direct_.Bindings_for_.Readline_.Hackers)"></a><a name="(mod-path._readline/readline)"></a>Direct Bindings for Readline Hackers</h3><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._readline%2Freadline%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">readline/readline</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller"> package:</span> <span class="stt">readline-lib</span></span></td></tr></table></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._readline))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline%29%29" class="RktValDef RktValLink" data-pltdoc="x">readline</a></span></span><span class="hspace"> </span><span class="RktVar">prompt</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">string?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">prompt</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">string?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Prints the given prompt string and reads a line.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._readline-bytes))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-bytes%29%29" class="RktValDef RktValLink" data-pltdoc="x">readline-bytes</a></span></span><span class="hspace"> </span><span class="RktVar">prompt</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">prompt</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline%29%29" class="RktValLink" data-pltdoc="x">readline</a></span>, but using raw byte-strings for the prompt and
returning a byte string.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._add-history))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._add-history%29%29" class="RktValDef RktValLink" data-pltdoc="x">add-history</a></span></span><span class="hspace"> </span><span class="RktVar">str</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">str</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">string?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Adds the given string to the Readline history, which is accessible to
the user via the up-arrow key.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._add-history-bytes))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._add-history-bytes%29%29" class="RktValDef RktValLink" data-pltdoc="x">add-history-bytes</a></span></span><span class="hspace"> </span><span class="RktVar">str</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">str</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Adds the given byte string to the Readline history, which is
accessible to the user via the up-arrow key.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._history-length))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._history-length%29%29" class="RktValDef RktValLink" data-pltdoc="x">history-length</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._exact-nonnegative-integer%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">exact-nonnegative-integer?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Returns the length of the history list.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._history-get))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._history-get%29%29" class="RktValDef RktValLink" data-pltdoc="x">history-get</a></span></span><span class="hspace"> </span><span class="RktVar">idx</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">string?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">idx</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._integer%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">integer?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Returns the history string at the <span class="RktVar">idx</span> position. <span class="RktVar">idx</span>
can be negative, which will make it count from the last (i.e,
<span class="RktVal"><span class="nobreak">-1</span></span> returns the last item, <span class="RktVal"><span class="nobreak">-2</span></span> returns the
second-to-last, etc.)</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._history-delete))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._history-delete%29%29" class="RktValDef RktValLink" data-pltdoc="x">history-delete</a></span></span><span class="hspace"> </span><span class="RktVar">idx</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">string?</a></span></p></blockquote></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">idx</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._integer%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">integer?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Deletes the history string at the <span class="RktVar">idx</span> position. The position
is specified in the same way as the argument for <span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._history-get%29%29" class="RktValLink" data-pltdoc="x">history-get</a></span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._set-completion-function!))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._set-completion-function%21%29%29" class="RktValDef RktValLink" data-pltdoc="x">set-completion-function!</a></span></span><span class="hspace"> </span><span class="RktVar">proc</span><span class="hspace"> </span>[<span class="RktVar">type</span>]<span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace"> </span></td><td valign="top"><span class="RktVar">proc</span></td><td valign="top"><span class="hspace"> </span></td><td valign="top">:</td><td valign="top"><span class="hspace"> </span></td><td valign="top"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">. </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-></span></a></span><span class="RktPn"> .</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._listof%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr></table></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">type</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._one-of%252Fc%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">one-of/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=foreign&rel=String_Types.html%23%2528def._%2528%2528lib._ffi%252Funsafe..rkt%2529.__string%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">_string</a></span><span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=foreign&rel=foreign_procedures.html%23%2528form._%2528%2528lib._ffi%252Funsafe..rkt%2529.__bytes%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">_bytes</a></span><span class="RktPn">)</span><span class="hspace"> </span>=<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=foreign&rel=String_Types.html%23%2528def._%2528%2528lib._ffi%252Funsafe..rkt%2529.__string%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">_string</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Sets Readline’s <span class="stt">rl_completion_entry_function</span> to
<span class="RktVar">proc</span>. The <span class="RktVar">type</span> argument, whose possible values are
from <a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=foreign&rel=index.html&version=6.7" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">ffi/unsafe</span></a>, determines the type of value supplied
to the <span class="RktVar">proc</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._readline-newline))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-newline%29%29" class="RktValDef RktValLink" data-pltdoc="x">readline-newline</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Sets the cursor to the start of a new line.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._readline/readline..rkt)._readline-redisplay))"></a><span title="Provided from: readline/readline | Package: readline-lib"><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-redisplay%29%29" class="RktValDef RktValLink" data-pltdoc="x">readline-redisplay</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Forces a redisplay of the Readline prompt and current user input.</div></p><p>The <span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-redisplay%29%29" class="RktValLink" data-pltdoc="x">readline-redisplay</a></span> function can be used together with
<span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-newline%29%29" class="RktValLink" data-pltdoc="x">readline-newline</a></span> to prevent a background thread from
cluttering up the user input by interleaving its output. For example,
an unsafe wrapper function for the thread’s output might look like the
following:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=define.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._define%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">with-thread-safe-output</span><span class="hspace"> </span><span class="RktSym">output-thunk</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=cont.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._dynamic-wind%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">dynamic-wind</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=lambda.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._lambda%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">lambda</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=foreign&rel=Atomic_Execution.html%23%2528def._%2528%2528lib._ffi%252Funsafe%252Fatomic..rkt%2529._start-atomic%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">start-atomic</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-newline%29%29" class="RktValLink" data-pltdoc="x">readline-newline</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktSym">output-thunk</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=reference&rel=lambda.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._lambda%2529%2529&version=6.7" class="RktStxLink Sq" data-pltdoc="x">lambda</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._readline%2Freadline..rkt%29._readline-redisplay%29%29" class="RktValLink" data-pltdoc="x">readline-redisplay</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="https://download.racket-lang.org/docs/6.7/html/local-redirect/index.html?doc=foreign&rel=Atomic_Execution.html%23%2528def._%2528%2528lib._ffi%252Funsafe%252Fatomic..rkt%2529._end-atomic%2529%2529&version=6.7" class="RktValLink Sq" data-pltdoc="x">end-atomic</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.7", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.7");">top</a></span><span class="navright"> <span class="nonavigation">← prev</span> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.7");">up</a> <span class="nonavigation">next →</span></span> </div></div></div><div id="contextindicator"> </div></body></html>
|