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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.8">
<title>Emacs</title>
<link rel="stylesheet" href="./asciidoc.css" type="text/css">
<link rel="stylesheet" href="./pygments.css" type="text/css">
<script type="text/javascript" src="./asciidoc.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
asciidoc.install();
/*]]>*/
</script>
<link rel="stylesheet" href="./mlton.css" type="text/css"/>
</head>
<body class="article">
<div id="banner">
<div id="banner-home">
<a href="./Home">MLton 20130715</a>
</div>
</div>
<div id="header">
<h1>Emacs</h1>
</div>
<div id="content">
<div class="sect1">
<h2 id="_sml_modes">SML modes</h2>
<div class="sectionbody">
<div class="paragraph"><p>There are a few Emacs modes for SML.</p></div>
<div class="ulist"><ul>
<li>
<p>
<span class="monospaced">sml-mode</span>
</p>
<div class="ulist"><ul>
<li>
<p>
<a href="http://www.xemacs.org/Documentation/packages/html/sml-mode_3.html">http://www.xemacs.org/Documentation/packages/html/sml-mode_3.html</a>
</p>
</li>
<li>
<p>
<a href="http://www.smlnj.org/doc/Emacs/sml-mode.html">http://www.smlnj.org/doc/Emacs/sml-mode.html</a>
</p>
</li>
<li>
<p>
<a href="http://www.iro.umontreal.ca/%7Emonnier/elisp/">http://www.iro.umontreal.ca/%7Emonnier/elisp/</a>
</p>
</li>
</ul></div>
</li>
<li>
<p>
<a href="https://github.com/MLton/mlton/blob/master/ide/emacs/mlton.el"><span class="monospaced">mlton.el</span></a> contains the Emacs lisp that <a href="StephenWeeks">StephenWeeks</a> uses to interact with MLton (in addition to using <span class="monospaced">sml-mode</span>).
</p>
</li>
<li>
<p>
<a href="http://primate.net/%7Eitz/mindent.tar">http://primate.net/%7Eitz/mindent.tar</a>, developed by Ian Zimmerman, who writes:
</p>
<div class="quoteblock">
<div class="content">
<div class="paragraph"><p>Unlike the widespread <span class="monospaced">sml-mode.el</span> it doesn’t try to indent code
based on ML syntax. I gradually got skeptical about this approach
after writing the initial indentation support for caml mode and
watching it bloat insanely as the language added new features. Also,
any such attempts that I know of impose a particular coding style, or
at best a choice among a limited set of styles, which I now oppose.
Instead my mode is based on a generic package which provides manual
bindable commands for common indentation operations (example: indent
the current line under the n-th occurrence of a particular character
in the previous non-blank line).</p></div>
</div>
<div class="attribution">
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_mlb_modes">MLB modes</h2>
<div class="sectionbody">
<div class="paragraph"><p>There is a mode for editing <a href="MLBasis"> ML Basis</a> files.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="https://github.com/MLton/mlton/blob/master/ide/emacs/esml-mlb-mode.el"><span class="monospaced">esml-mlb-mode.el</span></a> (plus other files)
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_definitions_and_uses">Definitions and uses</h2>
<div class="sectionbody">
<div class="paragraph"><p>There is a mode that supports the precise def-use information that
MLton can output. It highlights definitions and uses and provides
commands for navigation (e.g., <span class="monospaced">jump-to-def</span>, <span class="monospaced">jump-to-next</span>,
<span class="monospaced">list-all-refs</span>). It can be handy, for example, for navigating in the
MLton compiler source code. See <a href="EmacsDefUseMode">EmacsDefUseMode</a> for further
information.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_building_on_the_background">Building on the background</h2>
<div class="sectionbody">
<div class="paragraph"><p>Tired of manually starting/stopping/restarting builds after editing
files? Now you don’t have to. See <a href="EmacsBgBuildMode">EmacsBgBuildMode</a> for further
information.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_error_messages">Error messages</h2>
<div class="sectionbody">
<div class="paragraph"><p>MLton’s error messages are not in the format that the Emacs
<span class="monospaced">next-error</span> parser natively understands. There are a couple of ways
to fix this. The easiest way is to add the following to your <span class="monospaced">.emacs</span>
to cause Emacs to recognize MLton’s error messages.</p></div>
<div class="listingblock">
<div class="content"><div class="highlight"><pre><span class="p">(</span><span class="nb">require</span> <span class="ss">'compile</span><span class="p">)</span>
<span class="p">(</span><span class="nv">add-to-list</span>
<span class="ss">'compilation-error-regexp-alist</span>
<span class="o">'</span><span class="p">(</span><span class="s">"^\\(Warning\\|Error\\): \\(.+\\) \\([0-9]+\\)\\.\\([0-9]+\\)\\.$"</span>
<span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span><span class="p">))</span>
</pre></div></div></div>
<div class="paragraph"><p>Alternatively, you could use a <span class="monospaced">sed</span> script to rewrite MLton’s errors.
Here is one such script:</p></div>
<div class="listingblock">
<div class="content monospaced">
<pre>sed -e 's/^\([W|E].*\): \([^ ]*\) \([0-9][0-9]*\)\.\([0-9][0-9]*\)\./\2:\3:\1:\4/'</pre>
</div></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
</div>
<div id="footer-badges">
</div>
</div>
</body>
</html>
|