56 lines
15 KiB
HTML
56 lines
15 KiB
HTML
|
<!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"/><meta name="viewport" content="width=device-width, initial-scale=0.8"/><title>24.2 Emacs</title><link rel="stylesheet" type="text/css" href="../scribble.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="../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="../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="index.html" class="tocviewlink" data-pltdoc="x">The Racket Guide</a></td></tr></table></div><div class="tocviewsublisttop" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1 </td><td><a href="intro.html" class="tocviewlink" data-pltdoc="x">Welcome to Racket</a></td></tr><tr><td align="right">2 </td><td><a href="to-scheme.html" class="tocviewlink" data-pltdoc="x">Racket Essentials</a></td></tr><tr><td align="right">3 </td><td><a href="datatypes.html" class="tocviewlink" data-pltdoc="x">Built-<wbr></wbr>In Datatypes</a></td></tr><tr><td align="right">4 </td><td><a href="scheme-forms.html" class="tocviewlink" data-pltdoc="x">Expressions and Definitions</a></td></tr><tr><td align="right">5 </td><td><a href="define-struct.html" class="tocviewlink" data-pltdoc="x">Programmer-<wbr></wbr>Defined Datatypes</a></td></tr><tr><td align="right">6 </td><td><a href="modules.html" class="tocviewlink" data-pltdoc="x">Modules</a></td></tr><tr><td align="right">7 </td><td><a href="contracts.html" class="tocviewlink" data-pltdoc="x">Contracts</a></td></tr><tr><td align="right">8 </td><td><a href="i_o.html" class="tocviewlink" data-pltdoc="x">Input and Output</a></td></tr><tr><td align="right">9 </td><td><a href="regexp.html" class="tocviewlink" data-pltdoc="x">Regular Expressions</a></td></tr><tr><td align="right">10 </td><td><a href="control.html" class="tocviewlink" data-pltdoc="x">Exceptions and Control</a></td></tr><tr><td align="right">11 </td><td><a href="for.html" class="tocviewlink" data-pltdoc="x">Iterations and Comprehensions</a></td></tr><tr><td align="right">12 </td><td><a href="match.html" class="tocviewlink" data-pltdoc="x">Pattern Matching</a></td></tr><tr><td align="right">13 </td><td><a href="classes.html" class="tocviewlink" data-pltdoc="x">Classes and Objects</a></td></tr><tr><td align="right">14 </td><td><a href="units.html" class="tocviewlink" data-pltdoc="x">Units</a></td></tr><tr><td align="right">15 </td><td><a href="reflection.html" class="tocviewlink" data-pltdoc="x">Reflection and Dynamic Evaluation</a></td></tr><tr><td align="right">16 </td><td><a href="macros.html" class="tocviewlink" data-pltdoc="x">Macros</a></td></tr><tr><td align="right">17 </td><td><a href="languages.html" class="tocviewlink" data-pltdoc="x">Creating Languages</a></td></tr><tr><td align="right">18 </td><td><a href="concurrency.html" class="tocviewlink" data-pltdoc="x">Concurrency and Synchronization</a></td></tr><tr><td align="right">19&n
|
||
|
popular among Racketeers as well.</p><h5 x-source-module="(lib "scribblings/guide/guide.scrbl")" x-source-pkg="racket-doc" x-part-tag=""Major_Modes"">24.2.1<tt> </tt><a name="(part._.Major_.Modes)"></a>Major Modes</h5><ul><li><p><a href="https://github.com/greghendershott/racket-mode">Racket mode</a>
|
||
|
provides thorough syntax highlighting and DrRacket-style REPL
|
||
|
and buffer execution support for Emacs.</p><p>Racket mode can be installed via <a href="https://melpa.org/">MELPA</a>
|
||
|
or manually from the Github repository.</p></li><li><p><a href="http://www.neilvandyke.org/quack/">Quack</a> is an
|
||
|
extension of Emacs’s <span class="stt">scheme-mode</span> that provides enhanced
|
||
|
support for Racket, including highlighting and indentation of
|
||
|
Racket-specific forms, and documentation integration.</p><p>Quack is included in the Debian and Ubuntu repositories as part
|
||
|
of the <span class="stt">emacs-goodies-el</span> package. A Gentoo port is also
|
||
|
available (under the name <span class="stt">app-emacs/quack</span>).</p></li><li><p><a href="https://www.nongnu.org/geiser/">Geiser</a> provides a
|
||
|
programming environment where the editor is tightly integrated
|
||
|
with the Racket REPL. Programmers accustomed to environments
|
||
|
such as Slime or Squeak should feel at home using
|
||
|
Geiser. Geiser requires GNU Emacs 23.2 or better.</p><p>Quack and Geiser can be used together, and complement each
|
||
|
other nicely. More information is available in the
|
||
|
<a href="https://www.nongnu.org/geiser/">Geiser manual</a>.</p><p>Debian and Ubuntu packages for Geiser are available under the
|
||
|
name <span class="stt">geiser</span>.</p></li><li><p>Emacs ships with a major mode for Scheme, <span class="stt">scheme-mode</span>,
|
||
|
that while not as featureful as the above options, works
|
||
|
reasonably well for editing Racket code. However, this mode
|
||
|
does not provide support for Racket-specific forms.</p></li><li><p>No Racket program is complete without documentation. Scribble
|
||
|
support for Emacs is available with Neil Van Dyke’s
|
||
|
<a href="http://www.neilvandyke.org/scribble-emacs/">Scribble
|
||
|
Mode</a>.</p><p>In addition, <span class="stt">texinfo-mode</span> (included with GNU Emacs) and
|
||
|
plain text modes work well when editing Scribble
|
||
|
documents. The Racket major modes above are not really suited
|
||
|
to this task, given how different Scribble’s syntax is from
|
||
|
Racket’s.</p></li></ul><h5 x-source-module="(lib "scribblings/guide/guide.scrbl")" x-source-pkg="racket-doc" x-part-tag=""Minor_Modes"">24.2.2<tt> </tt><a name="(part._.Minor_.Modes)"></a>Minor Modes</h5><ul><li><p><a href="http://mumble.net/~campbell/emacs/paredit.el">Paredit</a>
|
||
|
is a minor mode for pseudo-structurally editing programs in
|
||
|
Lisp-like languages. In addition to providing high-level
|
||
|
S-expression editing commands, it prevents you from
|
||
|
accidentally unbalancing parentheses.</p><p>Debian and Ubuntu packages for Paredit are available under the
|
||
|
name <span class="stt">paredit-el</span>.</p></li><li><p><a href="https://github.com/Fuco1/smartparens">Smartparens</a>
|
||
|
is a minor mode for editing s-expressions, keeping parentheses
|
||
|
balanced, etc. Similar to Paredit.</p></li><li><p>Alex Shinn’s
|
||
|
<a href="http://synthcode.com/wiki/scheme-complete">scheme-complete</a>
|
||
|
provides intelligent, context-sensitive code completion. It
|
||
|
also integrates with Emacs’s <span class="stt">eldoc</span> mode to provide live
|
||
|
documentation in the minibuffer.</p><p>While this mode was designed for <a href="standards.html#%28part._r5rs%29" data-pltdoc="x">R<span style="vertical-align: super; font-size: 80%">5</span>RS</a>, it
|
||
|
can still be useful for Racket development. The tool is
|
||
|
unaware of large portions of the Racket standard library, and
|
||
|
there may be some discrepancies in the live documentation in
|
||
|
cases where Scheme and Racket have diverged.</p></li><li><p>The
|
||
|
<a href="https://www.emacswiki.org/emacs/RainbowDelimiters">RainbowDelimiters</a>
|
||
|
mode colors parentheses and other delimiters according to their
|
||
|
nesting depth. Coloring by nesting depth makes it easier to
|
||
|
know, at a glance, which parentheses match.</p></li><li><p><a href="https://www.emacswiki.org/emacs/ParenFace">ParenFace</a>
|
||
|
lets you choose in which face (font, color, etc.) parentheses
|
||
|
should be displayed. Choosing an alternate face makes it
|
||
|
possible to make “tone down” parentheses.</p></li></ul><h5 x-source-module="(lib "scribblings/guide/guide.scrbl")" x-source-pkg="racket-doc" x-part-tag=""Packages_specific_to_Evil_Mode"">24.2.3<tt> </tt><a name="(part._.Packages_specific_to_.Evil_.Mode)"></a>Packages specific to Evil Mode</h5><ul><li><p><a href="https://github.com/willghatch/emacs-on-parens">on-parens</a>
|
||
|
is a wrapper for smartparens motions to work better with
|
||
|
evil-mode’s normal state.</p></li><li><p><a href="https://github.com/timcharper/evil-surround">evil-surround</a>
|
||
|
provides commands to add, remove, and change parentheses and
|
||
|
other delimiters.</p></li><li><p><a href="https://github.com/noctuid/evil-textobj-anyblock">evil-textobj-anyblock</a>
|
||
|
adds a text-object that matches the closest of any
|
||
|
parenthesis or other delimiter pair.</p></li></ul><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" id="searchbox" type="text" tabindex="1" placeholder="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "8.6", "../");"/></form> <a href="https://docs.racket-lang.org/index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("8.6");">top</a><span class="tocsettoggle"> <a href="javascript:void(0);" title="show/hide table of contents" onclick="TocsetToggle();">contents</a></span></span><span class="navright"> <a href="cmdline-tools.html" title="backward to "24.1 Command-Line Tools"" data-pltdoc="x">← prev</a> <a href="other-editors.html" title="up to "24 Command-Line Tools and Your Editor of Choice"" data-pltdoc="x">up</a> <a href="Vim.html" title="forward to "24.3 Vim"" data-pltdoc="x">next →</a></span> </div></div></div><div id="contextindicator"> </div></body></html>
|