|
From: Christopher W. <caw...@us...> - 2005-12-02 02:56:16
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29944/src/org/rubypeople/rdt/internal/ui/text/ruby Modified Files: RubyCodeScanner.java Added Files: CharacterRule.java Log Message: For syntax highlighting: color Fixnums and characters distinctly --- NEW FILE: CharacterRule.java --- package org.rubypeople.rdt.internal.ui.text.ruby; import org.eclipse.jface.text.Assert; import org.eclipse.jface.text.rules.ICharacterScanner; import org.eclipse.jface.text.rules.IRule; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.Token; public class CharacterRule implements IRule { /** The token to be returned when this rule is successful */ protected IToken fToken; /** * Creates a rule which will return the specified token when a numerical * sequence is detected. * * @param token * the token to be returned */ public CharacterRule(IToken token) { Assert.isNotNull(token); fToken = token; } /* * @see IRule#evaluate(ICharacterScanner) */ public IToken evaluate(ICharacterScanner scanner) { int c = scanner.read(); if (((char) c) == '?') { c = scanner.read(); if (c == ICharacterScanner.EOF) { scanner.unread(); return Token.UNDEFINED; } int d = scanner.read(); if (!Character.isWhitespace((char) c) && Character.isWhitespace((char) d)) { scanner.unread(); return fToken; } } scanner.unread(); return Token.UNDEFINED; } } Index: RubyCodeScanner.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyCodeScanner.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** RubyCodeScanner.java 1 Apr 2005 01:59:21 -0000 1.7 --- RubyCodeScanner.java 2 Dec 2005 02:56:05 -0000 1.8 *************** *** 6,9 **** --- 6,11 ---- import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.rules.IToken; + import org.eclipse.jface.text.rules.IWordDetector; + import org.eclipse.jface.text.rules.NumberRule; import org.eclipse.jface.text.rules.WordRule; import org.rubypeople.rdt.internal.ui.text.IRubyColorConstants; *************** *** 16,20 **** protected String[] keywords; ! private static String[] fgTokenProperties = { IRubyColorConstants.RUBY_KEYWORD, IRubyColorConstants.RUBY_DEFAULT // TODO Add Ability to set colors for return and operators // IRubyColorConstants.RUBY_METHOD_NAME, --- 18,24 ---- protected String[] keywords; ! private static String[] fgTokenProperties = { ! IRubyColorConstants.RUBY_KEYWORD, IRubyColorConstants.RUBY_DEFAULT, ! IRubyColorConstants.RUBY_FIXNUM, IRubyColorConstants.RUBY_CHARACTER // TODO Add Ability to set colors for return and operators // IRubyColorConstants.RUBY_METHOD_NAME, *************** *** 46,52 **** List rules = new ArrayList(); IToken defToken = getToken(IRubyColorConstants.RUBY_DEFAULT); setDefaultReturnToken(defToken); ! WordRule wordRule = new WordRule(new RubyWordDetector(), defToken); rules.add(wordRule); --- 50,63 ---- List rules = new ArrayList(); + rules.add(new CharacterRule( + getToken(IRubyColorConstants.RUBY_CHARACTER))); + + IToken fixnumToken = getToken(IRubyColorConstants.RUBY_FIXNUM); + rules.add(new NumberRule(fixnumToken)); + + IWordDetector wordDetector = new RubyWordDetector(); IToken defToken = getToken(IRubyColorConstants.RUBY_DEFAULT); setDefaultReturnToken(defToken); ! WordRule wordRule = new WordRule(wordDetector, defToken); rules.add(wordRule); |