ZBrushCentral

jEdit zscript editor mode

Seems to be working at a basic level. Currently provides:

  • Auto indentation of text as you type (based on the [] structure)
  • Highlighting (in various colors) of flow control statements, RoutineDef/RoutineCall, variable def and read statements, UI control identifiers.

The intent is to make it easier to see the structure of ZScripts. This is a new mode without much testing; if you have problems, email me a [email protected].

To install, put in the following text snippet at the end of the ‘modes/catalog.xml’ file in your jEdit installation. It should come immeditely BEFORE the </MODES> ending statement of the file:

<MODE NAME=“zscript” FILE=“zscript.xml”
FILE_NAME_GLOB="*.zsc"/>

Then, copy the following text into a new file called ‘zscript.xml’ in the ‘modes’ directory. After saving both files, the next time you restart jEdit, files ending with .zsc should be automatically edited in ZScript mode

<?xml version=“1.0”?>
<!DOCTYPE MODE SYSTEM “xmode.dtd”>
<MODE>
<PROPS>
<PROPERTY NAME=“commentStart” VALUE="/" />
<PROPERTY NAME=“commentEnd” VALUE="
/" />
<PROPERTY NAME=“lineComment” VALUE="//" />

&lt;PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&*" /&gt; &lt;!-- Auto indent --&gt; &lt;PROPERTY NAME="indentOpenBrackets" VALUE="[" /&gt; &lt;PROPERTY NAME="indentCloseBrackets" VALUE="]" /&gt; &lt;PROPERTY NAME="indentNextLine" VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" /&gt; &lt;!-- set this to 'true' if you want to use GNU coding style --&gt; &lt;PROPERTY NAME="doubleBracketIndent" VALUE="false" /&gt; &lt;PROPERTY NAME="lineUpClosingBracket" VALUE="false" /&gt; &lt;/PROPS&gt; &lt;RULES&gt; &lt;SPAN TYPE="COMMENT1" AT_WHITESPACE_END="TRUE"&gt; &lt;BEGIN&gt;/*&lt;/BEGIN&gt; &lt;END&gt;*/&lt;/END&gt; &lt;/SPAN&gt; &lt;EOL_SPAN TYPE="COMMENT1"&gt;//&lt;/EOL_SPAN&gt; &lt;SPAN TYPE="LITERAL1"&gt; &lt;BEGIN&gt;"&lt;/BEGIN&gt; &lt;END&gt;"&lt;/END&gt; &lt;/SPAN&gt;

<!-- <SPAN_REGEXP HASH_CHAR="[" AT_WORD_START=“FALSE” EXCLUDE_MATCH=“TRUE” TYPE=“FUNCTION”>
<BEGIN>[[[:space:]]RoutineDef[[:space:]],[[:space:]]</BEGIN>
<END>[[:space:]]
?,</END>
</SPAN_REGEXP>
–>

&lt;SEQ_REGEXP HASH_CHAR="a" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;Alpha\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="c" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;Color\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="d" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;(Document|Draw)\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="e" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;Edit\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="L" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;(Layer|Light)\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="m" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;(Marker|Material|Movie)\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="p" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;(Picker|Preferences)\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="r" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;Render\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="s" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;(Stencil|Stroke)\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="t" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;(Tool|Transform|Texture)\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;SEQ_REGEXP HASH_CHAR="Z" AT_WORD_START="FALSE" TYPE="LITERAL2"&gt;(ZPlugin|ZScript|Zoom)\:( |\w|\:)*&lt;/SEQ_REGEXP&gt; &lt;/RULES&gt; &lt;RULES IGNORE_CASE="TRUE"&gt; &lt;KEYWORDS&gt; &lt;KEYWORD4&gt;If&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;assert&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;exit&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;delay&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;ifreeze&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;ireset&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;loop&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;loopcontinue&lt;/KEYWORD4&gt; &lt;KEYWORD4&gt;loopexit&lt;/KEYWORD4&gt; &lt;LABEL&gt;routinedef&lt;/LABEL&gt; &lt;LABEL&gt;routinecall&lt;/LABEL&gt; &lt;COMMENT4&gt;vardef&lt;/COMMENT4&gt; &lt;COMMENT4&gt;varset&lt;/COMMENT4&gt; &lt;COMMENT4&gt;vardec&lt;/COMMENT4&gt; &lt;COMMENT4&gt;var&lt;/COMMENT4&gt; &lt;/KEYWORDS&gt; &lt;/RULES&gt;

</MODE>