/jEdit/branches/notifications/modes/coffeescript.xml

# · XML · 210 lines · 164 code · 24 blank · 22 comment · 0 complexity · 498b272a3586e903796ab45c0ae2036e MD5 · raw file

  1. <?xml version="1.0"?>
  2. <!DOCTYPE MODE SYSTEM "xmode.dtd">
  3. <!-- CoffeeScript mode by Dennis Hotson, Balazs Toth
  4. Beta
  5. TODO:
  6. - reconsider (un)indentation rules for brackets
  7. -->
  8. <MODE>
  9. <PROPS>
  10. <PROPERTY NAME="commentStart" VALUE="###" />
  11. <PROPERTY NAME="commentEnd" VALUE="###" />
  12. <PROPERTY NAME="lineComment" VALUE="#" />
  13. <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />
  14. <!-- Auto indent -->
  15. <PROPERTY NAME="indentNextLines"
  16. VALUE="((\s*|.*\s+)([\-=]&gt;|[\+\-\*/%\\&lt;&gt;=\!&amp;\|\^~]|(.*:|&lt;&lt;|&gt;&gt;|&gt;&gt;&gt;|\+=|\-=|\*=|/=|%=|&lt;=|&gt;=|==|===|\!=|\!==|is|isnt|not|and|or|&amp;&amp;|\|\||of|in))|\s*(if|else|try|catch|finally|class|while|until|for)(\s*|\s+.*))\s*" />
  17. <PROPERTY NAME="unindentThisLine" VALUE="^\s*(else|catch|finally)(\s*|\s+.*)$" />
  18. <PROPERTY NAME="unindentNextLines" VALUE="^\s*(else|catch|finally)(\s*|\s+.*)$" />
  19. <!-- Props regarding brackets generally do not play well with CoffeScript -->
  20. <!-- Triggers reindentation on character input.
  21. TODO: reconsider the use of this one, including "ehy" -->
  22. <!-- PROPERTY NAME="electricKeys" VALUE="}])" /-->
  23. <!-- Originally designed for Python, does not work correctly with CS -->
  24. <!-- PROPERTY NAME="ignoreWhitespace" VALUE="false" /-->
  25. </PROPS>
  26. <RULES
  27. IGNORE_CASE="FALSE"
  28. HIGHLIGHT_DIGITS="TRUE"
  29. DIGIT_RE="(0[xX][0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?([eE][+\-]?[0-9]+)?)">
  30. <SPAN TYPE="COMMENT2">
  31. <BEGIN>###</BEGIN>
  32. <END>###</END>
  33. </SPAN>
  34. <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  35. <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" ESCAPE="\" DELEGATE="doubleQuoteLiteral">
  36. <BEGIN>"""</BEGIN>
  37. <END>"""</END>
  38. </SPAN>
  39. <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" ESCAPE="\">
  40. <BEGIN>'''</BEGIN>
  41. <END>'''</END>
  42. </SPAN>
  43. <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" ESCAPE="\" DELEGATE="doubleQuoteLiteral">
  44. <BEGIN>"</BEGIN>
  45. <END>"</END>
  46. </SPAN>
  47. <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" ESCAPE="\">
  48. <BEGIN>'</BEGIN>
  49. <END>'</END>
  50. </SPAN>
  51. <SPAN TYPE="LITERAL1" DELEGATE="javascript::MAIN">
  52. <BEGIN>`</BEGIN>
  53. <END>`</END>
  54. </SPAN>
  55. <!-- Javascript-style regexps -->
  56. <SEQ_REGEXP TYPE="MARKUP">(?&lt;!\d)\s*/(?![\s/*+{}?]).*/[igmy]*</SEQ_REGEXP>
  57. <!-- Heregexps -->
  58. <SPAN TYPE="MARKUP" DELEGATE="hereRegexp">
  59. <BEGIN>///</BEGIN>
  60. <END>///</END>
  61. </SPAN>
  62. <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
  63. <!-- Seems to be equivalent to
  64. SEQ_REGEXP TYPE="FUNCTION">([a-zA-Z\$_](\w|\$)*)(?=\s*\()</SEQ_REGEXP -->
  65. <SEQ TYPE="OPERATOR">)</SEQ>
  66. <SEQ TYPE="OPERATOR">{</SEQ>
  67. <SEQ TYPE="OPERATOR">}</SEQ>
  68. <SEQ TYPE="OPERATOR">[</SEQ>
  69. <SEQ TYPE="OPERATOR">]</SEQ>
  70. <SEQ TYPE="OPERATOR">.</SEQ>
  71. <SEQ TYPE="OPERATOR">+</SEQ>
  72. <SEQ TYPE="OPERATOR">/</SEQ>
  73. <SEQ TYPE="OPERATOR">*</SEQ>
  74. <SEQ TYPE="OPERATOR">&amp;</SEQ>
  75. <SEQ TYPE="OPERATOR">|</SEQ>
  76. <SEQ TYPE="OPERATOR">\</SEQ>
  77. <SEQ TYPE="OPERATOR">-</SEQ>
  78. <SEQ TYPE="OPERATOR">%</SEQ>
  79. <SEQ TYPE="OPERATOR">=</SEQ>
  80. <SEQ TYPE="OPERATOR">&lt;</SEQ>
  81. <SEQ TYPE="OPERATOR">&gt;</SEQ>
  82. <SEQ TYPE="OPERATOR">:</SEQ>
  83. <SEQ TYPE="OPERATOR">!</SEQ>
  84. <SEQ TYPE="OPERATOR">;</SEQ>
  85. <SEQ TYPE="OPERATOR">^</SEQ>
  86. <SEQ TYPE="OPERATOR">~</SEQ>
  87. <SEQ TYPE="OPERATOR">?</SEQ>
  88. <SEQ_REGEXP TYPE="KEYWORD3">@([a-zA-Z\$_](\w|\$)*)</SEQ_REGEXP>
  89. <SEQ_REGEXP TYPE="KEYWORD4">([a-zA-Z\$_](\w|\$)*)(?=\s*[:\.])</SEQ_REGEXP>
  90. <KEYWORDS>
  91. <KEYWORD3>this</KEYWORD3>
  92. <KEYWORD3>super</KEYWORD3>
  93. <KEYWORD1>if</KEYWORD1>
  94. <KEYWORD1>else</KEYWORD1>
  95. <KEYWORD1>new</KEYWORD1>
  96. <KEYWORD1>return</KEYWORD1>
  97. <KEYWORD1>try</KEYWORD1>
  98. <KEYWORD1>catch</KEYWORD1>
  99. <KEYWORD1>finally</KEYWORD1>
  100. <KEYWORD1>throw</KEYWORD1>
  101. <KEYWORD1>break</KEYWORD1>
  102. <KEYWORD1>continue</KEYWORD1>
  103. <KEYWORD1>for</KEYWORD1>
  104. <KEYWORD1>in</KEYWORD1>
  105. <KEYWORD1>while</KEYWORD1>
  106. <KEYWORD1>delete</KEYWORD1>
  107. <KEYWORD1>instanceof</KEYWORD1>
  108. <KEYWORD1>typeof</KEYWORD1>
  109. <KEYWORD1>switch</KEYWORD1>
  110. <KEYWORD1>extends</KEYWORD1>
  111. <KEYWORD1>class</KEYWORD1>
  112. <KEYWORD1>constructor</KEYWORD1>
  113. <KEYWORD1>case</KEYWORD1>
  114. <KEYWORD1>default</KEYWORD1>
  115. <KEYWORD1>do</KEYWORD1>
  116. <KEYWORD1>function</KEYWORD1>
  117. <KEYWORD1>var</KEYWORD1>
  118. <KEYWORD1>void</KEYWORD1>
  119. <KEYWORD1>with</KEYWORD1>
  120. <KEYWORD1>const</KEYWORD1>
  121. <KEYWORD1>let</KEYWORD1>
  122. <KEYWORD1>enum</KEYWORD1>
  123. <KEYWORD1>export</KEYWORD1>
  124. <KEYWORD1>import</KEYWORD1>
  125. <KEYWORD1>native</KEYWORD1>
  126. <KEYWORD1>then</KEYWORD1>
  127. <KEYWORD1>unless</KEYWORD1>
  128. <KEYWORD1>until</KEYWORD1>
  129. <KEYWORD1>of</KEYWORD1>
  130. <KEYWORD1>by</KEYWORD1>
  131. <KEYWORD1>where</KEYWORD1>
  132. <KEYWORD1>when</KEYWORD1>
  133. <KEYWORD1>and</KEYWORD1>
  134. <KEYWORD1>or</KEYWORD1>
  135. <KEYWORD1>not</KEYWORD1>
  136. <KEYWORD1>is</KEYWORD1>
  137. <KEYWORD1>isnt</KEYWORD1>
  138. <KEYWORD3>prototype</KEYWORD3>
  139. <KEYWORD3>Array</KEYWORD3>
  140. <KEYWORD3>Boolean</KEYWORD3>
  141. <KEYWORD3>Date</KEYWORD3>
  142. <KEYWORD3>Function</KEYWORD3>
  143. <KEYWORD3>Global</KEYWORD3>
  144. <KEYWORD3>Math</KEYWORD3>
  145. <KEYWORD3>Number</KEYWORD3>
  146. <KEYWORD3>Object</KEYWORD3>
  147. <KEYWORD3>RegExp</KEYWORD3><!-- Not ECMA -->
  148. <KEYWORD3>String</KEYWORD3>
  149. <!-- Literals -->
  150. <LITERAL2>false</LITERAL2>
  151. <LITERAL2>null</LITERAL2>
  152. <LITERAL2>true</LITERAL2>
  153. <LITERAL2>yes</LITERAL2>
  154. <LITERAL2>no</LITERAL2>
  155. <LITERAL2>on</LITERAL2>
  156. <LITERAL2>off</LITERAL2>
  157. <LITERAL2>NaN</LITERAL2>
  158. <LITERAL2>Infinity</LITERAL2>
  159. <!-- Global functions -->
  160. <LITERAL2>eval</LITERAL2>
  161. <LITERAL2>parseInt</LITERAL2>
  162. <LITERAL2>parseFloat</LITERAL2>
  163. <LITERAL2>escape</LITERAL2>
  164. <LITERAL2>unescape</LITERAL2>
  165. <LITERAL2>isNaN</LITERAL2>
  166. <LITERAL2>isFinite</LITERAL2>
  167. </KEYWORDS>
  168. </RULES>
  169. <!-- Delegate contents of #{} expression in double quotes to MAIN so that
  170. it will be syntax highlighted as well -->
  171. <RULES DEFAULT="LITERAL1" SET="doubleQuoteLiteral" ESCAPE="\">
  172. <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
  173. <BEGIN>#{</BEGIN>
  174. <END>}</END>
  175. </SPAN>
  176. </RULES>
  177. <!-- Comments in heregexes -->
  178. <RULES DEFAULT="MARKUP" SET="hereRegexp" ESCAPE="\">
  179. <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  180. </RULES>
  181. </MODE>