diff options
author | michelou <michelou@epfl.ch> | 2005-04-12 13:46:21 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2005-04-12 13:46:21 +0000 |
commit | 5b2c183efb929ecfce6fc8c8a307f4f1af69f279 (patch) | |
tree | 9e904954d3ae4b2e924c8255e9ee91b18532f96f /support | |
parent | 1bee42b554b0cb1fda7e17e546c5cd495b019f7d (diff) | |
download | scala-5b2c183efb929ecfce6fc8c8a307f4f1af69f279.tar.gz scala-5b2c183efb929ecfce6fc8c8a307f4f1af69f279.tar.bz2 scala-5b2c183efb929ecfce6fc8c8a307f4f1af69f279.zip |
- syntax highlighting for Scala.
Diffstat (limited to 'support')
-rw-r--r-- | support/jedit/modes/README | 33 | ||||
-rw-r--r-- | support/jedit/modes/scala.xml | 325 |
2 files changed, 358 insertions, 0 deletions
diff --git a/support/jedit/modes/README b/support/jedit/modes/README new file mode 100644 index 0000000000..04609548f5 --- /dev/null +++ b/support/jedit/modes/README @@ -0,0 +1,33 @@ +* Introduction + +This directory contains an additional syntax highlighting mode (.xml) for +Scala programs. You will need to add a mode catalog entry after placing the +mode file in an appropriate mode directory. + +More information about jEdit is available from: + + http://www.jedit.org/ + +* Installation + +Copy the file "scala.xml" to the following location: + + ~/.jedit/modes/ + +or alternatively to the location: + + <jedit_instdir>/modes/ + +Add the following entry to the file "catalog" present in the same directory +as "scala.xml" you just copied. + + <MODE NAME="scala" FILE="scala.xml" FILE_NAME_GLOB="*.scala" /> + +Restart the jEdit text editor. + +From that point on, loading a file whose name ends in ".scala" automatically +turns Scala mode on. + +* Version + +$Id$ diff --git a/support/jedit/modes/scala.xml b/support/jedit/modes/scala.xml new file mode 100644 index 0000000000..64e22f718d --- /dev/null +++ b/support/jedit/modes/scala.xml @@ -0,0 +1,325 @@ +<?xml version="1.0"?> + +<!DOCTYPE MODE SYSTEM "xmode.dtd"> + +<MODE> + <PROPS> + <PROPERTY NAME="indentOpenBrackets" VALUE="{" /> + <PROPERTY NAME="indentCloseBrackets" VALUE="}" /> + <PROPERTY NAME="lineUpClosingBracket" VALUE="true" /> + <PROPERTY NAME="indentPrevLine" + VALUE="\s*(((if|while)\s*\(|else\s*(\{|$)|else\s+if\s*\(|case\s+.+:|default:)[^;]*|for\s*\(.*)" /> + <PROPERTY NAME="indentSize" VALUE="2" /> + <!-- set this to 'true' if you want to use GNU coding style --> + <PROPERTY NAME="doubleBracketIndent" VALUE="false" /> + <PROPERTY NAME="commentStart" VALUE="/*" /> + <PROPERTY NAME="commentEnd" VALUE="*/" /> + <PROPERTY NAME="lineComment" VALUE="//" /> + <PROPERTY NAME="noTabs" VALUE="true" /> + <PROPERTY NAME="tabSize" VALUE="2" /> + <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" /> + </PROPS> + <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"> + <!-- Silly comment --> + <SEQ TYPE="COMMENT1">/**/</SEQ> + + <!-- Scaladoc comment --> + <SPAN TYPE="COMMENT2" DELEGATE="SCALADOC"> + <BEGIN>/**</BEGIN> + <END>*/</END> + </SPAN> + + <!-- Scala comment (Java style) --> + <SPAN TYPE="COMMENT1"> + <BEGIN>/*</BEGIN> + <END>*/</END> + </SPAN> + + <!-- start of XML comment (griba2010@ya.com) --> + <SEQ_REGEXP HASH_CHAR="<" AT_WHITESPACE_END="TRUE" TYPE="COMMENT2" + DELEGATE="XML_COMMENT"><!--</SEQ_REGEXP> + + <!-- start of xml tag (griba2010@ya.com) --> + <SEQ_REGEXP HASH_CHAR="<" AT_WHITESPACE_END="TRUE" TYPE="LITERAL3" + DELEGATE="XML_TAG"><\/?\w*</SEQ_REGEXP> + + <!-- symbol literals --> + <!-- see http://jedit.org/users-guide/regexps.html --> + <SEQ_REGEXP HASH_CHAR="'" TYPE="LITERAL4" + >'[[:alnum:]]+[^',;})]</SEQ_REGEXP> + + <!-- string and character literals --> + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE"> + <BEGIN>"</BEGIN> + <END>"</END> + </SPAN> + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE"> + <BEGIN>'</BEGIN> + <END>'</END> + </SPAN> + + <EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN> + + <!-- type params between bracket pairs with --> + <!-- nested ones within (griba2010@ya.com) --> + <SEQ_REGEXP HASH_CHAR="[" TYPE="LITERAL3" + >\[[^\[\]]*(\[[^\[\]]*(\[[^\[\]]*\][^\[\]]*)*\][^\[\]]*)*\]</SEQ_REGEXP> + + <!-- type constraints (griba2010@ya.com) --> + <SEQ_REGEXP HASH_CHAR="<" TYPE="LITERAL2" + ><:\s*\w+(\.\w+)*(#\w+)?</SEQ_REGEXP> + <SEQ_REGEXP HASH_CHAR=">" TYPE="LITERAL2" + >>:\s*\w+(\.\w+)*(#\w+)?</SEQ_REGEXP> + + <SEQ TYPE="NULL">)</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> + <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="NULL">.</SEQ> + <SEQ TYPE="NULL">,</SEQ> + <SEQ TYPE="NULL">;</SEQ> + <SEQ TYPE="NULL">]</SEQ> + <SEQ TYPE="NULL">[</SEQ> + <SEQ TYPE="NULL">?</SEQ> + <MARK_PREVIOUS TYPE="LABEL" EXCLUDE_MATCH="TRUE" + AT_LINE_START="TRUE">:</MARK_PREVIOUS> + <SEQ TYPE="NULL">:</SEQ> + + <!-- after colon type descriptions (griba2010@ya.com) --> + <SEQ_REGEXP HASH_CHAR=":" TYPE="LITERAL2" + >:\s*\w+(\.\w+)*(#\w+)?</SEQ_REGEXP> + + <!-- Function calls --> + <MARK_PREVIOUS TYPE="FUNCTION" EXCLUDE_MATCH="TRUE">(</MARK_PREVIOUS> + + <KEYWORDS IGNORE_CASE="FALSE"> + <KEYWORD1>abstract</KEYWORD1> + <KEYWORD1>case</KEYWORD1> + <KEYWORD1>class</KEYWORD1> + <KEYWORD1>catch</KEYWORD1> + <KEYWORD1>def</KEYWORD1> + <KEYWORD1>do</KEYWORD1> + <KEYWORD1>else</KEYWORD1> + <KEYWORD1>extends</KEYWORD1> + <KEYWORD1>false</KEYWORD1> + <KEYWORD1>final</KEYWORD1> + <KEYWORD1>finally</KEYWORD1> + <KEYWORD1>for</KEYWORD1> + <KEYWORD1>if</KEYWORD1> + <KEYWORD1>import</KEYWORD1> + <KEYWORD1>new</KEYWORD1> + <KEYWORD1>null</KEYWORD1> + <KEYWORD1>object</KEYWORD1> + <KEYWORD1>override</KEYWORD1> + <KEYWORD1>package</KEYWORD1> + <KEYWORD1>private</KEYWORD1> + <KEYWORD1>protected</KEYWORD1> + <KEYWORD1>return</KEYWORD1> + <KEYWORD1>sealed</KEYWORD1> + <KEYWORD1>super</KEYWORD1> + <KEYWORD1>this</KEYWORD1> + <KEYWORD1>throw</KEYWORD1> + <KEYWORD1>trait</KEYWORD1> + <KEYWORD1>true</KEYWORD1> + <KEYWORD1>try</KEYWORD1> + <KEYWORD1>type</KEYWORD1> + <KEYWORD1>val</KEYWORD1> + <KEYWORD1>var</KEYWORD1> + <KEYWORD1>with</KEYWORD1> + <KEYWORD1>while</KEYWORD1> + <KEYWORD1>yield</KEYWORD1> + <KEYWORD1>=></KEYWORD1> + + <!-- java.lang.* wrapper types --> + <KEYWORD2>Character</KEYWORD2> + <KEYWORD2>Integer</KEYWORD2> + + <!-- scala.* primitive types --> + <KEYWORD2>Boolean</KEYWORD2> + <KEYWORD2>boolean</KEYWORD2> + <KEYWORD2>Byte</KEYWORD2> + <KEYWORD2>byte</KEYWORD2> + <KEYWORD2>Char</KEYWORD2> + <KEYWORD2>char</KEYWORD2> + <KEYWORD2>Double</KEYWORD2> + <KEYWORD2>double</KEYWORD2> + <KEYWORD2>Float</KEYWORD2> + <KEYWORD2>float</KEYWORD2> + <KEYWORD2>Int</KEYWORD2> + <KEYWORD2>int</KEYWORD2> + <KEYWORD2>Long</KEYWORD2> + <KEYWORD2>long</KEYWORD2> + <KEYWORD2>Short</KEYWORD2> + <KEYWORD2>short</KEYWORD2> + <KEYWORD2>Unit</KEYWORD2> + <KEYWORD2>unit</KEYWORD2> + + <!-- scala.* predefined types --> + <KEYWORD3>Any</KEYWORD3> + <KEYWORD3>Array</KEYWORD3> + <KEYWORD3>Enumeration</KEYWORD3> + <KEYWORD3>Function</KEYWORD3> + <KEYWORD3>List</KEYWORD3> + <KEYWORD3>Option</KEYWORD3> + <KEYWORD3>PartialFunction</KEYWORD3> + <KEYWORD3>Ref</KEYWORD3> + <KEYWORD3>Some</KEYWORD3> + <KEYWORD3>Stream</KEYWORD3> + <KEYWORD3>String</KEYWORD3> + <KEYWORD3>Symbol</KEYWORD3> + + <!-- scala.* predefined objects --> + <KEYWORD4>Iterable</KEYWORD4> + <KEYWORD4>Nil</KEYWORD4> + <KEYWORD4>None</KEYWORD4> + <KEYWORD4>Predef</KEYWORD4> + </KEYWORDS> + </RULES> + + <RULES SET="SCALADOC" DEFAULT="COMMENT2" IGNORE_CASE="TRUE"> + <!-- so that @link{...} is highlighted --> + <SEQ TYPE="COMMENT2">{</SEQ> + + <!-- so that *@param is highlighted --> + <SEQ TYPE="COMMENT2">*</SEQ> + + <!-- Javadoc ignores tags inside <pre> --> + <SPAN TYPE="MARKUP" DELEGATE="SCALADOC_PRE"> + <BEGIN><pre></BEGIN> + <END></pre></END> + </SPAN> + + <!-- HTML comments --> + <SPAN TYPE="COMMENT1"> + <BEGIN><!--</BEGIN> + <END>--></END> + </SPAN> + + <!-- Javadoc allows this --> + <SEQ TYPE="COMMENT2"><<</SEQ> + <SEQ TYPE="COMMENT2"><=</SEQ> + <SEQ TYPE="COMMENT2">< </SEQ> + + <!-- HTML tags --> + <SPAN TYPE="MARKUP" DELEGATE="xml::TAGS"> + <BEGIN><</BEGIN> + <END>></END> + </SPAN> + + <KEYWORDS> + <LABEL>@author</LABEL> + <LABEL>@beaninfo</LABEL> + <LABEL>@history</LABEL> + <LABEL>@bug</LABEL> + <LABEL>@review</LABEL> + <LABEL>@todo</LABEL> + <LABEL>@idea</LABEL> + <LABEL>@pre</LABEL> + <LABEL>@requires</LABEL> + <LABEL>@post</LABEL> + <LABEL>@ensures</LABEL> + <LABEL>@generates</LABEL> + <LABEL>@modifies</LABEL> + <LABEL>@invariant</LABEL> + <LABEL>@exception</LABEL> + <LABEL>@hides</LABEL> + <LABEL>@overrides</LABEL> + <LABEL>@equivalent</LABEL> + <LABEL>@bon</LABEL> + <LABEL>@access</LABEL> + <LABEL>@example</LABEL> + <LABEL>@design</LABEL> + <LABEL>@serial</LABEL> + <LABEL>@references</LABEL> + <LABEL>@uses</LABEL> + <LABEL>@guard</LABEL> + <LABEL>@values</LABEL> + <LABEL>@complexity</LABEL> + <LABEL>@deprecated</LABEL> + <LABEL>@docRoot</LABEL> + <LABEL>@exception</LABEL> + <LABEL>@link</LABEL> + <LABEL>@param</LABEL> + <LABEL>@return</LABEL> + <LABEL>@see</LABEL> + <LABEL>@serialData</LABEL> + <LABEL>@serialField</LABEL> + <LABEL>@since</LABEL> + <LABEL>@throws</LABEL> + <LABEL>@version</LABEL> + <LABEL>@spec</LABEL> + </KEYWORDS> + </RULES> + + <RULES SET="SCALADOC_PRE" DEFAULT="COMMENT2" /> + + <!-- inside xml tag default type label --> + <!-- for attribute names (griba2010@ya.com) --> + <RULES SET="XML_TAG" DEFAULT="LABEL" IGNORE_CASE="TRUE"> + <!-- string and character literals --> + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE"> + <BEGIN>"</BEGIN> + <END>"</END> + </SPAN> + + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE"> + <BEGIN>'</BEGIN> + <END>'</END> + </SPAN> + + <!-- scala attribute value --> + <SPAN DELEGATE="MAIN"> + <BEGIN>{</BEGIN> + <END>}</END> + </SPAN> + + <!-- if ">;" goto main rule set --> + <SEQ_REGEXP HASH_CHAR=">" DELEGATE="MAIN" TYPE="LITERAL3" + >>\s*;</SEQ_REGEXP> + + <!-- if ">" goto xml_text rule set --> + <SEQ DELEGATE="XML_TEXT" TYPE="LITERAL3">></SEQ> + </RULES> + + <RULES SET="XML_TEXT" DEFAULT="COMMENT4"> + <!-- scala expression --> + <SPAN DELEGATE="MAIN"> + <BEGIN>{</BEGIN> + <END>}</END> + </SPAN> + + <!-- if "<!--" goto xml_comment rule set --> + <SEQ_REGEXP HASH_CHAR="<" DELEGATE="XML_COMMENT" TYPE="COMMENT2" + ><!--</SEQ_REGEXP> + <!-- if "<" goto xml_tag rule set --> + <SEQ_REGEXP HASH_CHAR="<" DELEGATE="XML_TAG" TYPE="LITERAL3" + ><\/?\w*</SEQ_REGEXP> + </RULES> + + <RULES SET="XML_COMMENT" DEFAULT="COMMENT2"> + <!-- if end_of_comment with ";" goto main rule set --> + <SEQ_REGEXP HASH_CHAR="-" DELEGATE="MAIN" TYPE="COMMENT2" + >-->\s*;</SEQ_REGEXP> + + <!-- if end_of_comment goto xml_text rule set --> + <SEQ DELEGATE="XML_TEXT" TYPE="COMMENT2">--></SEQ> + </RULES> +</MODE> + +<!-- $Id$ --> |