Thanks Bill, I definitely want to put it out on the wiki, but figured I'd put 
it out here first in case there was any feedback.  I will check out those other 
cases for explicit definitions.  It was the last feature I added so is most 
likely to be the one missing something. 

I already found one correction that should be made.  These lines:
               <!-- Name (1 char) -->
               <SEQ_REGEXP TYPE="OPERATOR" 
AT_WORD_START="TRUE">([A-Z]|[abcdefghijklopqrstwz])</SEQ_REGEXP>
should be:
               <!-- Name (1 char) -->
               <SEQ_REGEXP TYPE="NULL" 
AT_WORD_START="TRUE">([A-Z]|[abcdefghijklopqrstwz])</SEQ_REGEXP>

-Ed
________________________________________
From: [email protected] [[email protected]] On 
Behalf Of bill lam [[email protected]]
Sent: Monday, April 11, 2011 7:06 PM
To: [email protected]
Subject: Re: [Jprogramming] Syntax Highlighter for jEdit

You may also want to add a screenshot and put the j.xml file in jwiki,
http://www.jsoftware.com/jwiki/Guides/Syntax%20Coloring

explicit definition can also started with words such as "verb define" or
"Note" . control words must be contained inside explicit definitions.  Your
xml may well already got them but I cannot test.

Пнд, 11 Апр 2011, Cox, Ed писал(а):
> I was looking for good syntax highlighting for J and was not really satisfied
> with the editors that already have syntax support available for J.  I like 
> jEdit,
> and with a name like that it is a shame not to have syntax highlighting 
> available
> for it - so I wrote my own.  I am sharing it below for anyone to use. To use,
> do the following:
>
> 1) Copy & paste it to a text file and name it j.xml.
> 2) Locate the "modes" directory in the jEdit file structure & copy the file 
> to it.
> 3) Edit the "catalog" file in the same directory and add this entry in the
>    appropriate place:
> <MODE NAME="j"                        FILE="j.xml"
>                               FILE_NAME_GLOB="*.{ijs,ijp}"/>
>
> That should do it.  Enjoy!
>
> Ed Cox
> Principal Data Analyst
> Medmined
>
> ----copy text below into j.xml file-------------
> <?xml version="1.0"?>
> <!DOCTYPE MODE SYSTEM "xmode.dtd">
> <!-- jEdit mode for Language: J    (evolved from APL; see www.jsoftware.com)
>      by Ed Cox  ([email protected])
>      If auto-indent behavior is not suitable for you, either modify the 
> applicable code
>      below, or turn off auto indent by changing the shortcut assigned for the 
> ENTER key
>      from "Insert new line and indent" to "Insert new line".  Use the 
> shortcuts section
>      in the Global Options.
>
>      To use, save this j.xml file to the modes subdirectory for jEdit and 
> then add the
>      entry below to the catalog file (in the same directory).  Follow the 
> pattern
>      of what is already there:
>
> <MODE NAME="j"                        FILE="j.xml"
>                               FILE_NAME_GLOB="*.{ijs,ijp}"/>
> -->
> <MODE>
>       <PROPS>
>               <PROPERTY NAME="lineComment" VALUE="NB."/>
>               <PROPERTY NAME="noTabs" VALUE="true"/>
>               <PROPERTY NAME="wrap" VALUE="NONE"/>
>               <PROPERTY NAME="folding" VALUE="indent"/>
>               <PROPERTY NAME="indentSize" VALUE="2"/>
>               <!-- Auto Indent -->
>               <PROPERTY NAME="indentNextLines"
>                
> VALUE="[a-zA-Z]\w*\s*=[\.:]\s*([0-4]|13)\s+:\s+0.*$|^\s*(select|try)\..*$|^.*\bdo\.\s*($|NB\..*$)"/>
>               <PROPERTY NAME="unindentNextLines"
>                
> VALUE="^\s*\)\s*($|NB.)|^\s*end\.\s*($|NB\..*$)|^\s*(elseif|f?case)\..*\bdo\.\s*($|NB\..*$)"/>
>               <PROPERTY NAME="unindentThisLine"
>                
> VALUE="^\s*\)\s*($|NB.)|^\s*end\.\s*($|NB\..*$)|^\s*(catch[dt]?|else|elseif|f?case)\..*($|NB\..*$)"/>
>               <PROPERTY NAME="electricKeys" VALUE=")."/>
>
>               <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
>               <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
>               <!-- End Auto Indent -->
>       </PROPS>
>       <RULES IGNORE_CASE="FALSE">
>               <!-- Comments -->
>               <EOL_SPAN TYPE="COMMENT1" AT_LINE_START="FALSE" 
> AT_WORD_START="TRUE"
>                       AT_WHITESPACE_END="FALSE">NB.</EOL_SPAN>
>
>               <!-- String Literals -->
>               <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
>                       <BEGIN>&apos;</BEGIN>
>                       <END>&apos;</END>
>               </SPAN>
>               <!-- Copula -->
>               <SEQ_REGEXP TYPE="LABEL">=[\.:]</SEQ_REGEXP>
>               <!-- Show assignments as BOLD -->
>               <SEQ_REGEXP TYPE="OPERATOR" 
> AT_WORD_START="TRUE">[a-zA-Z]\w*(?=\s*=[\.:]\s*)</SEQ_REGEXP>
>               <!-- Highlight explict definitions -->
>               <SEQ_REGEXP TYPE="INVALID" 
> AT_WORD_START="TRUE">([0-4]|13)\s+:\s*(0|.*?($|(?=\s*\bNB\.)))</SEQ_REGEXP>
>               <!-- Control -->
>               <SEQ_REGEXP TYPE="KEYWORD1" 
> AT_WORD_START="TRUE">(assert|break|f?case|catch[dt]?|continue|do|else(if)?)\.</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD1" 
> AT_WORD_START="TRUE">(end|for|if|return|select|throw|try|whil(e|st))\.</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD1" 
> AT_WORD_START="TRUE">(for|goto|label)_[a-zA-Z]\w*\.</SEQ_REGEXP>
>               <!-- Keywords -->
>               <SEQ_REGEXP TYPE="MARKUP" 
> AT_WORD_START="TRUE">(require|loadd?|scriptd?|jpath|jcwdpath|jhostpath|jsystemdefs)</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="MARKUP" 
> AT_WORD_START="TRUE">co(class|create|current|destroy|erase|extend|fullname)</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="MARKUP" 
> AT_WORD_START="TRUE">co(insert|names?|new|nl|path|reset)</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="MARKUP" 
> AT_WORD_START="TRUE">(type|names|nameclass|nc|namelist|nl|erase|assert)</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="MARKUP" 
> AT_WORD_START="TRUE">(getenv|setenv|exit|stdout|stdin|stderr|define|def)</SEQ_REGEXP>
>               <!-- Constants -->
>               <SEQ_REGEXP TYPE="COMMENT2" 
> AT_WORD_START="TRUE">(CRLF|CR|LF|TAB|DEL|FF|noun|adverb|conjunction|verb|monad|dyad)\b</SEQ_REGEXP>
>               <!-- Name (>1 char) -->
>               <SEQ_REGEXP TYPE="NULL" 
> AT_WORD_START="TRUE">[a-zA-Z]\w+</SEQ_REGEXP>
>               <!-- Noun -->
>               <SEQ_REGEXP TYPE="LITERAL2">a[\.:]</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="LITERAL2">_\.</SEQ_REGEXP>
>               <!-- Conjunctions (2 char)-->
>               <SEQ_REGEXP TYPE="KEYWORD2">[!&amp;@;:\.]\.</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD2">[!&amp;@^\.:]:</SEQ_REGEXP>
>               <!-- Adverbs (2 char)-->
>               <SEQ_REGEXP TYPE="KEYWORD4">[/\\]\.</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD4">[bfMt]\.</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD4">t:</SEQ_REGEXP>
>               <!-- Verbs -->
>               <SEQ_REGEXP TYPE="COMMENT3">\{::</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="COMMENT3">p\.\.</SEQ_REGEXP>
>               <SEQ_REGEXP 
> TYPE="COMMENT3">[-\&quot;#\$%\*+,&lt;&gt;\?^{|}~]\.</SEQ_REGEXP>
>               <SEQ_REGEXP 
> TYPE="COMMENT3">[-\&quot;#\$%\*+,;&lt;&gt;\?\[{|}~/\\]:</SEQ_REGEXP>
>               <SEQ_REGEXP 
> TYPE="COMMENT3">[-!#$%\*+,;&lt;=&gt;\?\[\]^{|]</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="COMMENT3">(_?\d|_):</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="COMMENT3">[AcCeEiIjLopr]\.</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="COMMENT3">[ipqsux]:</SEQ_REGEXP>
>               <!-- Conjunctions -->
>               <SEQ_REGEXP TYPE="KEYWORD2">&amp;\.:</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD2">[dDHT]\.</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD2">[DLS]:</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD2">[\&quot;&amp;@`]</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD2">:</SEQ_REGEXP>
>               <SEQ_REGEXP TYPE="KEYWORD2">\.</SEQ_REGEXP>
>               <!-- Adverbs ( char)-->
>               <SEQ_REGEXP TYPE="KEYWORD4">[/\\}~]</SEQ_REGEXP>
>               <!-- Argument -->
>               <SEQ_REGEXP TYPE="KEYWORD3" 
> AT_WORD_START="TRUE">[xymnuv]\.?\b</SEQ_REGEXP>
>               <!-- Number -->
>               <SEQ_REGEXP TYPE="DIGIT" 
> AT_WORD_START="TRUE">[_0-9][_0-9\.a-zA-Z]*</SEQ_REGEXP>
>               <!-- Parenthesis -->
>               <SEQ_REGEXP TYPE="INVALID">[()]</SEQ_REGEXP>
>               <!-- Name (1 char) -->
>               <SEQ_REGEXP TYPE="OPERATOR" 
> AT_WORD_START="TRUE">([A-Z]|[abcdefghijklopqrstwz])</SEQ_REGEXP>
>
>         </RULES>
> </MODE>
> <!--  Put the following in an ijs file to test the syntax highlighting.
> jVerb
> = < <. <: > >. >: _: + +. +: * *. *: - -. -: % %. %: ^ ^. $ $. $: ~. ~: | |. 
> |:
> , ,. ,: ; ;: # #. #: ! /: \: [ [: ] { {. {: {:: }. }: ". ": ? ?.
> A. c. C. e. E. i. i: I. j. L. o. p. p: q: r. s: u: x:
> _9: _8: _7: _6: _5: _4: _3: _2: _1: 0: 1: 2: 3: 4: 5: 6: 7: 8: 9:
>
> jNoun
> a. a: _.
>
> jKeywords
> require load loadd script scriptd jpath jcwdpath jhostpath jsystemdefs
> coclass cocreate cocurrent codestroy coerase coextend cofullname
> coinsert coname conames conew conl copath coreset
> type names nameclass nc namelist nl erase assert
> getenv setenv exit stdout stdin stderr def define
>
> jConstants
> CRLF CR LF TAB DEL FF noun adverb conjunction verb monad dyad
>
> jConjuction
> ^: . .. .: :  :. :: ;. !. !: " ` `: @ @. @: & &. &: &.: d. D. D: H. L: S: T.
>
> jAdverb
> ~ / \ /. \. } b. f. M. t. t:
>
> jArguments
> x y m n u v  x. y. m. n. u. v.
>
> jKeywords
> assert. break. case. catch. catchd. catcht. continue. do. else. elseif. end. 
> fcase.
> for. for_xyz. goto_abc. if. label_abc. return. select. throw. try. while. 
> whilst.
>
> Parenthesis
> ( )
>
> jComment
> NB. This is a comment.
>
> jLiteral
> 'This is quoted text'
>
> jNumbers
> 123 56.88 _99.9 7e6 _ __ 200j_200 2b111.111 1r2
>
> jAssignment
> xyz=.   abc=:
>
> jExplicit Definition
> 0 : 0   1 : 0   2 : 0   3 : 0   4 : 0
> 4 : 'x + y'
> -->
> ----stop copy at the line above----------------
>
>
>
>
> _________________________________________________
>
> This message is for the designated recipient only and may contain privileged, 
> proprietary
> or otherwise private information. If you have received it in error, please 
> notify the sender
> immediately and delete the original. Any other use of the email by you is 
> prohibited.
>
> Dansk - Deutsch - Espanol - Francais - Italiano - Japanese - Nederlands - 
> Norsk - Portuguese
> Svenska: www.carefusion.com/legal/email
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

--
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

_________________________________________________

This message is for the designated recipient only and may contain privileged, 
proprietary
or otherwise private information. If you have received it in error, please 
notify the sender
immediately and delete the original. Any other use of the email by you is 
prohibited.

Dansk - Deutsch - Espanol - Francais - Italiano - Japanese - Nederlands - Norsk 
- Portuguese
Svenska: www.carefusion.com/legal/email
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to