Files
rackedit/scrbl/rkdt.html
T
2026-08-20 19:13:12 +02:00

25 lines
19 KiB
HTML

<!DOCTYPE html>
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-width, initial-scale=0.8"/><title>rackedit</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"/><script type="text/javascript" src="scribble-common.js"></script><script type="text/javascript" src="manual-racket.js"></script></head><body id="scribble-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,&quot;tocview_0&quot;);">&#9658;</a></td><td></td><td><a href="" class="tocviewselflink" data-pltdoc="x">rackedit</a></td></tr></table></div><div class="tocviewsublistonly" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="#%28part._.Opening_an_editor%29" class="tocviewlink" data-pltdoc="x">Opening an editor</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="#%28part._.Examples%29" class="tocviewlink" data-pltdoc="x">Examples</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="#%28part._.Window_behavior%29" class="tocviewlink" data-pltdoc="x">Window behavior</a></td></tr></table></div></div></div><div class="tocsub"><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber"></span><a href="#%28part._rackedit%29" class="tocsubseclink" data-pltdoc="x">rackedit</a></td></tr><tr><td><span class="tocsublinknumber">1<span class="stt">&nbsp;</span></span><a href="#%28part._.Opening_an_editor%29" class="tocsubseclink" data-pltdoc="x">Opening an editor</a></td></tr><tr><td><a href="#%28def._%28%28lib._rackedit%2Fmain..rkt%29._rkdt%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="badlink"><span class="RktValLink">rkdt</span></span></span></a></td></tr><tr><td><span class="tocsublinknumber">2<span class="stt">&nbsp;</span></span><a href="#%28part._.Examples%29" class="tocsubseclink" data-pltdoc="x">Examples</a></td></tr><tr><td><span class="tocsublinknumber">3<span class="stt">&nbsp;</span></span><a href="#%28part._.Window_behavior%29" class="tocsubseclink" data-pltdoc="x">Window behavior</a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="versionbox"><span class="versionNoNav">9.2</span></div><section class="SsectionLevel1" id="section 0"><h1 class="heading"><a name="(part._rackedit)"></a><a name="(mod-path._rackedit)"></a>rackedit<span class="button-group"><a href="#(part._rackedit)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h1><div class="SAuthorListBox"><div class="SAuthorList"><p class="author">Hans Dijkema &lt;<a href="mailto:hans@dijkewijk.nl">hans@dijkewijk.nl</a>&gt;</p></div></div><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left" colspan="2"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="" class="RktModLink" data-pltdoc="x"><span class="RktSym">rackedit</span></a><span class="RktPn">)</span></td></tr></table></p><p><span class="stt">rackedit</span> provides a small editor window based on Racket&rsquo;s GUI framework.
It is intended for situations where a program, DrRacket interaction, or command
line session needs to open a file in a simple Racket editor without starting a
separate full editor application.</p><section class="SsectionLevel2" id="section 1"><h2 class="heading">1<span class="stt">&nbsp;</span><a name="(part._.Opening_an_editor)"></a>Opening an editor<span class="button-group"><a href="#(part._.Opening_an_editor)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><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><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._rackedit/main..rkt)._rkdt))"></a><span title="Provided from: rackedit"><span class="RktSym"><span class="badlink"><span class="RktValLink">rkdt</span></span></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">filename</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span><span class="RktOpt">[</span></td><td valign="top"><span class="RktPn">#:wait?</span><span class="hspace">&nbsp;</span><span class="RktVar">wait?</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:width</span><span class="hspace">&nbsp;</span><span class="RktVar">width</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:height</span><span class="hspace">&nbsp;</span><span class="RktVar">height</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:x</span><span class="hspace">&nbsp;</span><span class="RktVar">x</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:y</span><span class="hspace">&nbsp;</span><span class="RktVar">y</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:frame-cb</span><span class="hspace">&nbsp;</span><span class="RktVar">frame-cb</span><span class="RktOpt">]</span><span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/void.html#%28def._%28%28quote._~23~25kernel%29._void~3f%29%29" class="RktValLink" data-pltdoc="x">void?</a></span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">filename</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/Manipulating_Paths.html#%28def._%28%28lib._racket%2Fprivate%2Fmisc..rkt%29._path-string~3f%29%29" class="RktValLink" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">wait?</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/booleans.html#%28def._%28%28quote._~23~25kernel%29._boolean~3f%29%29" class="RktValLink" data-pltdoc="x">boolean?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">width</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/number-types.html#%28def._%28%28quote._~23~25kernel%29._exact-positive-integer~3f%29%29" class="RktValLink" data-pltdoc="x">exact-positive-integer?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">900</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">height</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/number-types.html#%28def._%28%28quote._~23~25kernel%29._exact-positive-integer~3f%29%29" class="RktValLink" data-pltdoc="x">exact-positive-integer?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">650</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">x</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/number-types.html#%28def._%28%28quote._~23~25kernel%29._exact-integer~3f%29%29" class="RktValLink" data-pltdoc="x">exact-integer?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">100</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">y</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/number-types.html#%28def._%28%28quote._~23~25kernel%29._exact-integer~3f%29%29" class="RktValLink" data-pltdoc="x">exact-integer?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">100</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">frame-cb</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/procedures.html#%28def._%28%28quote._~23~25kernel%29._procedure~3f%29%29" class="RktValLink" data-pltdoc="x">procedure?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/lambda.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._~ce~bb%29%29" class="RktStxLink" data-pltdoc="x">&#955;</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">frame</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVal">#t</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Opens an editor window for <span class="RktVar">filename</span>. The file name is passed to the
Racket editor frame and the editor is shown immediately.</div></p><p>The <span class="RktPn">#:width</span>, <span class="RktPn">#:height</span>, <span class="RktPn">#:x</span>, and <span class="RktPn">#:y</span>
arguments specify the initial geometry for a window for which no stored geometry
is available. When an editor window is closed, <span class="stt">rackedit</span> stores its position
and size. A later editor window with the same internal window number restores
that geometry.</p><p>Stored geometry is associated with the current screen configuration. The screen
configuration is derived from the number and dimensions of the displays visible
to Racket. Consequently, changing the monitor configuration causes the default
geometry, or geometry previously stored for that configuration, to be used.</p><p>If <span class="RktVar">wait?</span> is <span class="RktVal">#f</span>, the procedure returns after the editor has
been shown. If <span class="RktVar">wait?</span> is <span class="RktVal">#t</span>, the current event handler waits
until the editor window is closed before the procedure continues.</p><p>The <span class="RktVar">frame-cb</span> procedure receives the editor frame. With the default
<span class="RktPn">#:wait?</span> value it is called after the frame has been shown and can be
used to customize the frame, for example to change its title. When
<span class="RktVar">wait?</span> is <span class="RktVal">#t</span>, the callback is called only after the window has
been closed. Its return value is ignored.</p><p>Each open editor has an internal number. That number is shown in the window
title and is also used to distinguish stored window geometries. Numbers of
closed editor windows are reused.</p></section><section class="SsectionLevel2" id="section 2"><h2 class="heading">2<span class="stt">&nbsp;</span><a name="(part._.Examples)"></a>Examples<span class="button-group"><a href="#(part._.Examples)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p>The simplest use opens a file and returns immediately:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace">&nbsp;</span><span class="RktSym">rackedit</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">rkdt</span></span></span><span class="hspace">&nbsp;</span><span class="RktVal">"notes.rkt"</span><span class="RktPn">)</span></td></tr></table></blockquote><p>Use <span class="RktPn">#:wait?</span><span class="stt"> </span><span class="RktVal">#t</span> when execution should continue only after the editor is
closed:</p><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">rkdt</span></span></span><span class="hspace">&nbsp;</span><span class="RktVal">"notes.rkt"</span><span class="hspace">&nbsp;</span><span class="RktPn">#:wait?</span><span class="hspace">&nbsp;</span><span class="RktVal">#t</span><span class="RktPn">)</span></p></blockquote><p>A frame callback can customize the editor frame:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="hspace">&nbsp;</span><span class="RktSym">racket/class</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym">rackedit</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">rkdt</span></span></span><span class="hspace">&nbsp;</span><span class="RktVal">"notes.rkt"</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:frame-cb</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/lambda.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._~ce~bb%29%29" class="RktStxLink" data-pltdoc="x">&#955;</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">frame</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="file:///C:/Program%20Files/Racket/doc/reference/ivaraccess.html#%28form._%28%28lib._racket%2Fprivate%2Fclass-internal..rkt%29._send%29%29" class="RktStxLink" data-pltdoc="x">send</a></span><span class="hspace">&nbsp;</span><span class="RktSym">frame</span><span class="hspace">&nbsp;</span><span class="RktSym">set-label</span><span class="hspace">&nbsp;</span><span class="RktVal">"Notes"</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote><p>The initial window geometry can be supplied explicitly:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">rkdt</span></span></span><span class="hspace">&nbsp;</span><span class="RktVal">"notes.rkt"</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:width</span><span class="hspace">&nbsp;</span><span class="RktVal">1200</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:height</span><span class="hspace">&nbsp;</span><span class="RktVal">800</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:x</span><span class="hspace">&nbsp;</span><span class="RktVal">50</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:y</span><span class="hspace">&nbsp;</span><span class="RktVal">50</span><span class="RktPn">)</span></td></tr></table></blockquote></section><section class="SsectionLevel2" id="section 3"><h2 class="heading">3<span class="stt">&nbsp;</span><a name="(part._.Window_behavior)"></a>Window behavior<span class="button-group"><a href="#(part._.Window_behavior)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p>The editor uses Racket&rsquo;s standard editor menus, except that the standard
<span class="ssansserif">Exit</span> or <span class="ssansserif">Quit</span> command is not added to the File menu.
Closing an editor window closes only that window and releases its internal
window number for reuse by a later editor window.</p></section></section></div></div><div id="contextindicator">&nbsp;</div></body></html>