]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/xmode/modes/ml.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / ml.xml
index 97ec02cfd4e742b9e3add2db4b08c29478169be8..b7f9bc64ad11e6e5adb2b179d20dc98237b7aec3 100644 (file)
-<?xml version="1.0"?>\r
-\r
-<!DOCTYPE MODE SYSTEM "xmode.dtd">\r
-\r
-<!-- SML MODE by Ingmar Stein -->\r
-<MODE>\r
-       <PROPS>\r
-               <PROPERTY NAME="commentStart" VALUE="(*"/>\r
-               <PROPERTY NAME="commentEnd" VALUE="*)"/>\r
-       </PROPS>\r
-\r
-       <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE">\r
-               <!-- comments -->\r
-               <SPAN TYPE="COMMENT1">\r
-                       <BEGIN>(*</BEGIN>\r
-                       <END>*)</END>\r
-               </SPAN>\r
-\r
-               <!-- character literals -->\r
-               <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
-                       <BEGIN>#"</BEGIN>\r
-                       <END>"</END>\r
-               </SPAN>\r
-\r
-               <!-- string literals -->\r
-               <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
-                       <BEGIN>"</BEGIN>\r
-                       <END>"</END>\r
-               </SPAN>\r
-\r
-               <!-- built-in operators -->\r
-\r
-               <!-- infix precedence 7 -->\r
-               <SEQ TYPE="OPERATOR">/</SEQ>\r
-               <SEQ TYPE="OPERATOR">*</SEQ>\r
-\r
-               <!-- infix precedence 6 -->\r
-               <SEQ TYPE="OPERATOR">+</SEQ>\r
-               <SEQ TYPE="OPERATOR">-</SEQ>\r
-               <SEQ TYPE="OPERATOR">^</SEQ>\r
-\r
-               <!-- infix precedence 5 -->\r
-               <SEQ TYPE="OPERATOR">::</SEQ>\r
-               <SEQ TYPE="OPERATOR">@</SEQ>\r
-\r
-               <!-- infix precedence 4 -->\r
-               <SEQ TYPE="OPERATOR">=</SEQ>\r
-               <SEQ TYPE="OPERATOR">&lt;&gt;</SEQ>\r
-               <SEQ TYPE="OPERATOR">&lt;=</SEQ>\r
-               <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
-               <SEQ TYPE="OPERATOR">&gt;=</SEQ>\r
-               <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
-\r
-               <!-- infix precedence 3 -->\r
-               <SEQ TYPE="OPERATOR">:=</SEQ>\r
-\r
-               <!-- reserved words -->\r
-               <!-- <SEQ TYPE="NULL">(</SEQ>\r
-               <SEQ TYPE="NULL">)</SEQ>\r
-               <SEQ TYPE="NULL">[</SEQ>\r
-               <SEQ TYPE="NULL">]</SEQ>\r
-               <SEQ TYPE="NULL">{</SEQ>\r
-               <SEQ TYPE="NULL">}</SEQ>\r
-               <SEQ TYPE="NULL">,</SEQ>\r
-               <SEQ TYPE="NULL">:&gt;</SEQ>\r
-               <SEQ TYPE="NULL">:</SEQ>\r
-               <SEQ TYPE="NULL">;</SEQ>\r
-               <SEQ TYPE="NULL">...</SEQ>\r
-               <SEQ TYPE="NULL">_</SEQ>\r
-               <SEQ TYPE="NULL">|</SEQ>\r
-               <SEQ TYPE="NULL">=&gt;</SEQ>\r
-               <SEQ TYPE="NULL">-&gt;</SEQ>\r
-               <SEQ TYPE="NULL">#</SEQ> -->\r
-\r
-               <KEYWORDS>\r
-                       <!-- built-in operators -->\r
-\r
-                       <!-- infix precedence 7 -->\r
-                       <OPERATOR>div</OPERATOR>\r
-                       <OPERATOR>mod</OPERATOR>\r
-\r
-                       <!-- infix precedence 3 -->\r
-                       <OPERATOR>o</OPERATOR>\r
-\r
-                       <!-- infix precedence 0 -->\r
-                       <OPERATOR>before</OPERATOR>\r
-\r
-                       <!-- reserved words -->\r
-                       <KEYWORD1>abstype</KEYWORD1>\r
-                       <KEYWORD1>and</KEYWORD1>\r
-                       <KEYWORD1>andalso</KEYWORD1>\r
-                       <KEYWORD1>as</KEYWORD1>\r
-                       <KEYWORD1>case</KEYWORD1>\r
-                       <KEYWORD1>do</KEYWORD1>\r
-                       <KEYWORD1>datatype</KEYWORD1>\r
-                       <KEYWORD1>else</KEYWORD1>\r
-                       <KEYWORD1>end</KEYWORD1>\r
-                       <KEYWORD1>eqtype</KEYWORD1>\r
-                       <KEYWORD1>exception</KEYWORD1>\r
-                       <KEYWORD1>fn</KEYWORD1>\r
-                       <KEYWORD1>fun</KEYWORD1>\r
-                       <KEYWORD1>functor</KEYWORD1>\r
-                       <KEYWORD1>handle</KEYWORD1>\r
-                       <KEYWORD1>if</KEYWORD1>\r
-                       <KEYWORD1>in</KEYWORD1>\r
-                       <KEYWORD1>include</KEYWORD1>\r
-                       <KEYWORD1>infix</KEYWORD1>\r
-                       <KEYWORD1>infixr</KEYWORD1>\r
-                       <KEYWORD1>let</KEYWORD1>\r
-                       <KEYWORD1>local</KEYWORD1>\r
-                       <KEYWORD1>nonfix</KEYWORD1>\r
-                       <KEYWORD1>of</KEYWORD1>\r
-                       <KEYWORD1>op</KEYWORD1>\r
-                       <KEYWORD1>open</KEYWORD1>\r
-                       <KEYWORD1>orelse</KEYWORD1>\r
-                       <KEYWORD1>raise</KEYWORD1>\r
-                       <KEYWORD1>rec</KEYWORD1>\r
-                       <KEYWORD1>sharing</KEYWORD1>\r
-                       <KEYWORD1>sig</KEYWORD1>\r
-                       <KEYWORD1>signature</KEYWORD1>\r
-                       <KEYWORD1>struct</KEYWORD1>\r
-                       <KEYWORD1>structure</KEYWORD1>\r
-                       <KEYWORD1>then</KEYWORD1>\r
-                       <KEYWORD1>type</KEYWORD1>\r
-                       <KEYWORD1>val</KEYWORD1>\r
-                       <KEYWORD1>where</KEYWORD1>\r
-                       <KEYWORD1>with</KEYWORD1>\r
-                       <KEYWORD1>withtype</KEYWORD1>\r
-                       <KEYWORD1>while</KEYWORD1>\r
-\r
-                       <!-- built-in types -->\r
-                       <KEYWORD3>array</KEYWORD3>\r
-                       <KEYWORD3>bool</KEYWORD3>\r
-                       <KEYWORD3>char</KEYWORD3>\r
-                       <KEYWORD3>exn</KEYWORD3>\r
-                       <KEYWORD3>frag</KEYWORD3>\r
-                       <KEYWORD3>int</KEYWORD3>\r
-                       <KEYWORD3>list</KEYWORD3>\r
-                       <KEYWORD3>option</KEYWORD3>\r
-                       <KEYWORD3>order</KEYWORD3>\r
-                       <KEYWORD3>real</KEYWORD3>\r
-                       <KEYWORD3>ref</KEYWORD3>\r
-                       <KEYWORD3>string</KEYWORD3>\r
-                       <KEYWORD3>substring</KEYWORD3>\r
-                       <KEYWORD3>unit</KEYWORD3>\r
-                       <KEYWORD3>vector</KEYWORD3>\r
-                       <KEYWORD3>word</KEYWORD3>\r
-                       <KEYWORD3>word8</KEYWORD3>\r
-\r
-                       <!-- build-in exception constructors -->\r
-                       <KEYWORD2>Bind</KEYWORD2>\r
-                       <KEYWORD2>Chr</KEYWORD2>\r
-                       <KEYWORD2>Domain</KEYWORD2>\r
-                       <KEYWORD2>Div</KEYWORD2>\r
-                       <KEYWORD2>Fail</KEYWORD2>\r
-                       <KEYWORD2>Graphic</KEYWORD2>\r
-                       <KEYWORD2>Interrupt</KEYWORD2>\r
-                       <KEYWORD2>Io</KEYWORD2>\r
-                       <KEYWORD2>Match</KEYWORD2>\r
-                       <KEYWORD2>Option</KEYWORD2>\r
-                       <KEYWORD2>Ord</KEYWORD2>\r
-                       <KEYWORD2>Overflow</KEYWORD2>\r
-                       <KEYWORD2>Size</KEYWORD2>\r
-                       <KEYWORD2>Subscript</KEYWORD2>\r
-                       <KEYWORD2>SysErr</KEYWORD2>\r
-\r
-                       <!-- built-in literals -->\r
-                       <LITERAL2>false</LITERAL2>\r
-                       <LITERAL2>true</LITERAL2>\r
-                       <LITERAL2>QUOTE</LITERAL2>\r
-                       <LITERAL2>ANTIQUOTE</LITERAL2>\r
-                       <LITERAL2>nil</LITERAL2>\r
-                       <LITERAL2>NONE</LITERAL2>\r
-                       <LITERAL2>SOME</LITERAL2>\r
-                       <LITERAL2>LESS</LITERAL2>\r
-                       <LITERAL2>EQUAL</LITERAL2>\r
-                       <LITERAL2>GREATER</LITERAL2>\r
-               </KEYWORDS>\r
-       </RULES>\r
-</MODE>
\ No newline at end of file
+<?xml version="1.0"?>
+
+<!DOCTYPE MODE SYSTEM "xmode.dtd">
+
+<!-- SML MODE 1.0.1 by Lucas Dixon, based on Ingmar Stein's ml mode -->
+<MODE>
+  <PROPS>
+    <PROPERTY NAME="commentStart" VALUE="(*"/>
+    <PROPERTY NAME="commentEnd" VALUE="*)"/>
+    <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*\\/(){}" />
+<!-- JEdit's indent mechanism is not expressive enough for ML.
+     It is best not to even try to have automated indentation for ML until significant improvements are made to the indent language. -->
+<!--
+    <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
+    <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
+    <PROPERTY NAME="unalignedOpenBrackets" VALUE="([{" />
+    <PROPERTY NAME="unalignedCloseBrackets" VALUE=")]}" />
+    <PROPERTY NAME="indentOpenBrackets" VALUE="([{" />
+    <PROPERTY NAME="indentCloseBrackets" VALUE=")]}" />
+    <PROPERTY NAME="indentNextLines"
+      VALUE="(^|.*\s+)(let|sig|struct|local)(\W+.*|)$" />
+    <PROPERTY NAME="unindentNextLines"
+      VALUE="(^|.*\s+)(end)(\W+.*|)$" />
+    <PROPERTY NAME="unindentThisLine"
+      VALUE="(^|\s+)(local|val|fun|end|in|open)(\W+.*|)$" />
+-->
+  </PROPS>
+
+  <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE">
+    <!-- comments -->
+    <SPAN TYPE="COMMENT1">
+      <BEGIN>(*</BEGIN>
+      <END>*)</END>
+    </SPAN>
+
+    <!-- character literals -->
+    <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
+      <BEGIN>#"</BEGIN>
+      <END>"</END>
+    </SPAN>
+
+    <!-- string literals -->
+    <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
+      <BEGIN>"</BEGIN>
+      <END>"</END>
+    </SPAN>
+
+    <!-- built-in operators -->
+
+    <!-- infix precedence 7 -->
+    <SEQ TYPE="OPERATOR">/</SEQ>
+    <SEQ TYPE="OPERATOR">*</SEQ>
+
+    <!-- reserved & operator characters -->
+    <SEQ TYPE="OPERATOR">+</SEQ>
+    <SEQ TYPE="OPERATOR">-</SEQ>
+    <SEQ TYPE="OPERATOR">^</SEQ>
+    <SEQ TYPE="OPERATOR">@</SEQ>
+    <SEQ TYPE="OPERATOR">=</SEQ>
+    <SEQ TYPE="OPERATOR">&lt;</SEQ>
+    <SEQ TYPE="OPERATOR">&gt;</SEQ>
+    <SEQ TYPE="OPERATOR">(</SEQ>
+    <SEQ TYPE="OPERATOR">)</SEQ>
+    <SEQ TYPE="OPERATOR">[</SEQ>
+    <SEQ TYPE="OPERATOR">]</SEQ>
+    <SEQ TYPE="OPERATOR">{</SEQ>
+    <SEQ TYPE="OPERATOR">}</SEQ>
+    <SEQ TYPE="OPERATOR">,</SEQ>
+    <SEQ TYPE="OPERATOR">:</SEQ>
+    <SEQ TYPE="OPERATOR">;</SEQ>
+    <SEQ TYPE="OPERATOR">|</SEQ>
+    <SEQ TYPE="OPERATOR">#</SEQ>
+
+
+    <MARK_FOLLOWING TYPE="FUNCTION"
+    MATCH_TYPE="KEYWORD1">fun </MARK_FOLLOWING>
+    <MARK_FOLLOWING TYPE="FUNCTION"
+    MATCH_TYPE="KEYWORD1">val </MARK_FOLLOWING>
+    <MARK_FOLLOWING TYPE="FUNCTION"
+    MATCH_TYPE="KEYWORD1">exception </MARK_FOLLOWING>
+
+    <MARK_FOLLOWING TYPE="FUNCTION"
+    MATCH_TYPE="KEYWORD1">type </MARK_FOLLOWING>
+    <MARK_FOLLOWING TYPE="FUNCTION"
+    MATCH_TYPE="KEYWORD1">abstype </MARK_FOLLOWING>
+     <MARK_FOLLOWING TYPE="FUNCTION"
+    MATCH_TYPE="KEYWORD1">eqtype </MARK_FOLLOWING>
+    <MARK_FOLLOWING TYPE="FUNCTION"
+    MATCH_TYPE="KEYWORD1">datatype </MARK_FOLLOWING>
+
+    <MARK_FOLLOWING TYPE="LITERAL3"
+    MATCH_TYPE="KEYWORD1">functor </MARK_FOLLOWING>
+    <MARK_FOLLOWING TYPE="LITERAL3"
+    MATCH_TYPE="KEYWORD1">structure </MARK_FOLLOWING>
+    <MARK_FOLLOWING TYPE="LITERAL3"
+    MATCH_TYPE="KEYWORD1">signature </MARK_FOLLOWING>
+
+    <!-- reserved words -->
+    <KEYWORDS>
+      <!-- built-in operators -->
+
+      <!-- infix precedence 7 -->
+      <OPERATOR>div</OPERATOR>
+      <OPERATOR>mod</OPERATOR>
+
+      <!-- infix precedence 3 -->
+      <OPERATOR>o</OPERATOR>
+
+      <!-- infix precedence 0 -->
+      <OPERATOR>before</OPERATOR>
+
+      <!-- type def -->
+      <KEYWORD1>abstype</KEYWORD1>
+      <KEYWORD1>datatype</KEYWORD1>
+      <KEYWORD1>eqtype</KEYWORD1>
+      <KEYWORD1>type</KEYWORD1>
+
+      <!-- value definitions -->
+      <KEYWORD1>exception</KEYWORD1>
+      <KEYWORD1>fun</KEYWORD1>
+      <KEYWORD1>val</KEYWORD1>
+      <KEYWORD1>fn</KEYWORD1>
+
+      <!-- generic definitional -->
+      <KEYWORD1>and</KEYWORD1>
+      <KEYWORD1>end</KEYWORD1>
+      <KEYWORD1>in</KEYWORD1>
+      <KEYWORD1>infix</KEYWORD1>
+      <KEYWORD1>infixr</KEYWORD1>
+      <KEYWORD1>let</KEYWORD1>
+      <KEYWORD1>local</KEYWORD1>
+      <KEYWORD1>as</KEYWORD1>
+      <KEYWORD1>of</KEYWORD1>
+      <KEYWORD1>op</KEYWORD1>
+
+      <!-- module level -->
+      <KEYWORD1>functor</KEYWORD1>
+      <KEYWORD1>include</KEYWORD1>
+      <KEYWORD1>open</KEYWORD1>
+      <KEYWORD1>sharing</KEYWORD1>
+      <KEYWORD1>sig</KEYWORD1>
+      <KEYWORD1>signature</KEYWORD1>
+      <KEYWORD1>struct</KEYWORD1>
+      <KEYWORD1>structure</KEYWORD1>
+      <KEYWORD1>where</KEYWORD1>
+      <KEYWORD1>with</KEYWORD1>
+
+      <!-- logic/control flow -->
+      <KEYWORD1>andalso</KEYWORD1>
+      <KEYWORD1>orelse</KEYWORD1>
+      <KEYWORD1>else</KEYWORD1>
+      <KEYWORD1>if</KEYWORD1>
+      <KEYWORD1>case</KEYWORD1>
+      <KEYWORD1>handle</KEYWORD1>
+      <KEYWORD1>raise</KEYWORD1>
+      <KEYWORD1>then</KEYWORD1>
+
+      <!--- other -->
+      <KEYWORD1>do</KEYWORD1>
+      <KEYWORD1>nonfix</KEYWORD1>
+      <KEYWORD1>rec</KEYWORD1>
+      <KEYWORD1>withtype</KEYWORD1>
+      <KEYWORD1>while</KEYWORD1>
+
+      <!-- built-in types -->
+      <KEYWORD3>array</KEYWORD3>
+      <KEYWORD3>bool</KEYWORD3>
+      <KEYWORD3>char</KEYWORD3>
+      <KEYWORD3>exn</KEYWORD3>
+      <KEYWORD3>frag</KEYWORD3>
+      <KEYWORD3>int</KEYWORD3>
+      <KEYWORD3>list</KEYWORD3>
+      <KEYWORD3>option</KEYWORD3>
+      <KEYWORD3>order</KEYWORD3>
+      <KEYWORD3>real</KEYWORD3>
+      <KEYWORD3>ref</KEYWORD3>
+      <KEYWORD3>string</KEYWORD3>
+      <KEYWORD3>substring</KEYWORD3>
+      <KEYWORD3>unit</KEYWORD3>
+      <KEYWORD3>vector</KEYWORD3>
+      <KEYWORD3>word</KEYWORD3>
+      <KEYWORD3>word8</KEYWORD3>
+
+      <!-- build-in exception constructors -->
+      <KEYWORD2>Bind</KEYWORD2>
+      <KEYWORD2>Chr</KEYWORD2>
+      <KEYWORD2>Domain</KEYWORD2>
+      <KEYWORD2>Div</KEYWORD2>
+      <KEYWORD2>Fail</KEYWORD2>
+      <KEYWORD2>Graphic</KEYWORD2>
+      <KEYWORD2>Interrupt</KEYWORD2>
+      <KEYWORD2>Io</KEYWORD2>
+      <KEYWORD2>Match</KEYWORD2>
+      <KEYWORD2>Option</KEYWORD2>
+      <KEYWORD2>Ord</KEYWORD2>
+      <KEYWORD2>Overflow</KEYWORD2>
+      <KEYWORD2>Size</KEYWORD2>
+      <KEYWORD2>Subscript</KEYWORD2>
+      <KEYWORD2>SysErr</KEYWORD2>
+
+      <!-- built-in literals -->
+      <LITERAL2>false</LITERAL2>
+      <LITERAL2>true</LITERAL2>
+      <LITERAL2>QUOTE</LITERAL2>
+      <LITERAL2>ANTIQUOTE</LITERAL2>
+      <LITERAL2>nil</LITERAL2>
+      <LITERAL2>NONE</LITERAL2>
+      <LITERAL2>SOME</LITERAL2>
+      <LITERAL2>LESS</LITERAL2>
+      <LITERAL2>EQUAL</LITERAL2>
+      <LITERAL2>GREATER</LITERAL2>
+    </KEYWORDS>
+
+  </RULES>
+</MODE>
+