This scheme works nicely. I haven't looked under the hood but how are the regex's being applied? Does it occur in J or in the GTK editor.
Chris, I think I will get used to the (defs names) pretty quickly. It's a nice relevant way to jump around in J source files. I have tried the editor with large semi-compiled JOD scripts that contains hundreds of defined names. Of course it slows down but is still useful. For scripts with less than 30 names it's almost the bees knees. John Baker On Mon, May 17, 2010 at 7:52 AM, Sherlock, Ric <[email protected]>wrote: > > From: bill lam > > > > Nice addition! > > > > BTW I guess the kludge by defining an extra id such as > > > > <context id="comment1" style-ref="comment" end-at-line-end="true"> > > > > can be replaced by a better method that reuse existing id, but I'm > > inexperience in this matter. > > Me too, but I think I figured it out. > The following tidies the specification up a bit, as well as more closely > matching the behaviour of the J parser. > Still room for improvement though!! > > <?xml version="1.0" encoding="UTF-8"?> > <!-- Authors: Jsoftware --> > <language id="j" _name="J" version="2.0" _section="Sources"> > <metadata> > <property name="mimetypes">text/x-j;text/x-jsrc</property> > <property name="globs">*.ijs</property> > <property name="line-comment-start">NB\.</property> > </metadata> > > <styles> > <style id="comment" _name="Comment" /> > <style id="note" _name="Multiline Comment" /> > <style id="string" _name="String" /> > <style id="parens" _name="Parens" /> > <style id="control" _name="Control" /> > <style id="global" _name="Global" /> > <style id="local" _name="Local" /> > <style id="primitive" _name="Primitive" /> > <style id="number" _name="Number" /> > <style id="noundef" _name="Noun Definition" /> > </styles> > > <definitions> > > <!-- problems/shortcomings > perhaps control should be done as keywords > not sure how to include suffix > > primitives other than =: =. > > highlight missing single quotes would be nice > > parens inside expdef > > matched vs unmatched parens coloring > > marking matching paren might be nice but how to > do () and not {} and [] --> > > <!-- NB. --> > <context id="comment" style-ref="comment" end-at-line-end="true"> > <start>\%[NB\.</start> > </context> > > <!-- 'abc' --> > <context id="string" style-ref="string" end-at-line-end="true"> > <start>L?'</start><end>'</end> > </context> > > <!-- 2.34 --> > <context id="number" style-ref="number"> > <match extended="true">\%[[_0-9][_0-9\.a-zA-Z]*\%]</match> > </context> > > <!-- () --> > <context id="parens" style-ref="parens"> > <match extended="true">[\(\)]</match> > </context> > > <define-regex > id="valid-name">[a-zA-Z][a-zA-Z0-9_]*\.</define-regex> > <define-regex id="close-expdef">^\s*\)\s*$</define-regex> > > <!-- explicit definition --> > <context id="expdef" style-inside="true"> > > > <start>\%[(([1-4]|13)\s+:\s*0)|((adverb|conjunction|verb|monad|dyad)\s+define)\%]</start> > <end>\%{close-expdef}</end> > <include> > <context ref="comment"/> > <context ref="string"/> > <context ref="number"/> > <context id="control" style-ref="control"> > <match extended="true"> > \%[(assert\.|break\.|continue\.|for\.|do\.|end\.|if\.| > else\.|elseif\.|return\.|select\.|case\.|fcase\.| > throw\.|try\.|catch\.|catchd\.|catcht\.|while\.|whilst\.| > for_\%{valid-name}| > goto_\%{valid-name}| > label_\%{valid-name}) > </match> > </context> > </include> > </context> > > <!-- explicit noun definition --> > <context id="noundef" style-ref="noundef" style-inside="true"> > <start>\%[(0\s+:\s*0|noun\s+define)\%].*$</start> > <end>\%{close-expdef}</end> > </context> > > <!-- Note or multiline comment --> > <context id="note" style-ref="comment" style-inside="true"> > <start>\%[Note\%].*$</start> > <end>\%{close-expdef}</end> > </context> > > <!-- =: --> > <context id="global" style-ref="global"> > <match>=:</match> > </context> > > <!-- =\. --> > <context id="local" style-ref="local"> > <match>=.</match> > </context> > > <context id="j"> > <include> > <context ref="comment"/> > <context ref="string"/> > <context ref="expdef"/> > <context ref="noundef"/> > <context ref="note"/> > <context ref="number"/> > <context ref="global"/> > <context ref="local"/> > </include> > </context> > </definitions> > </language> > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- John D. Baker [email protected] ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
