[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor PyCodeScanner.java,1.5,1.6 PyEdit.java,1.67
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2005-10-02 22:59:35
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20498/src/org/python/pydev/editor Modified Files: PyCodeScanner.java PyEdit.java Log Message: Index: PyEdit.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/PyEdit.java,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** PyEdit.java 28 Sep 2005 00:15:22 -0000 1.67 --- PyEdit.java 1 Oct 2005 13:13:41 -0000 1.68 *************** *** 268,272 **** //colors and styles } else if (property.equals(PydevPrefs.CODE_COLOR) || property.equals(PydevPrefs.DECORATOR_COLOR) || property.equals(PydevPrefs.NUMBER_COLOR) ! || property.equals(PydevPrefs.KEYWORD_COLOR) || property.equals(PydevPrefs.COMMENT_COLOR) || property.equals(PydevPrefs.STRING_COLOR) || property.equals(PydevPrefs.DEFAULT_BACKQUOTES_COLOR) || property.endsWith("_STYLE") --- 268,272 ---- //colors and styles } else if (property.equals(PydevPrefs.CODE_COLOR) || property.equals(PydevPrefs.DECORATOR_COLOR) || property.equals(PydevPrefs.NUMBER_COLOR) ! || property.equals(PydevPrefs.KEYWORD_COLOR) || property.equals(PydevPrefs.SELF_COLOR) || property.equals(PydevPrefs.COMMENT_COLOR) || property.equals(PydevPrefs.STRING_COLOR) || property.equals(PydevPrefs.DEFAULT_BACKQUOTES_COLOR) || property.endsWith("_STYLE") Index: PyCodeScanner.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/PyCodeScanner.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PyCodeScanner.java 30 Aug 2005 14:19:38 -0000 1.5 --- PyCodeScanner.java 1 Oct 2005 13:13:41 -0000 1.6 *************** *** 31,35 **** public class PyCodeScanner extends RuleBasedScanner { ! private ColorCache colorCache; /** --- 31,44 ---- public class PyCodeScanner extends RuleBasedScanner { ! // keywords list has to be alphabetized for the keyword detector to work properly ! static final public String[] KEYWORDS = { ! "and","as","assert","break","class","continue", ! "def","del","elif","else","except","exec", ! "finally","for","from","global", ! "if","import","in","is","lambda","not", ! "or","pass","print","raise","return", ! "try","while","yield","False", "None", "True" }; ! ! private ColorCache colorCache; /** *************** *** 50,61 **** */ static private class GreatKeywordDetector implements IWordDetector { - // keywords list has to be alphabetized for this to work properly - static public String[] keywords = { - "and","as","assert","break","class","continue", - "def","del","elif","else","except","exec", - "finally","for","from","global", - "if","import","in","is","lambda","not", - "or","pass","print","raise","return", - "try","while","yield","False", "None", "True" }; public GreatKeywordDetector() { --- 59,62 ---- *************** *** 89,105 **** static public class NumberDetector implements IWordDetector{ ! /** * @see org.eclipse.jface.text.rules.IWordDetector#isWordStart(char) */ public boolean isWordStart(char c) { return Character.isDigit(c); } /** ! * @see org.eclipse.jface.text.rules.IWordDetector#isWordPart(char) */ public boolean isWordPart(char c) { ! return Character.isDigit(c) || c == 'e' || c == '.'; } --- 90,139 ---- static public class NumberDetector implements IWordDetector{ ! /** ! * Used to keep the state of the token ! */ ! private StringBuffer buffer; ! ! /** ! * Defines if we are at an hexa number ! */ ! private boolean isInHexa; ! /** * @see org.eclipse.jface.text.rules.IWordDetector#isWordStart(char) */ public boolean isWordStart(char c) { + isInHexa = false; + buffer = new StringBuffer(); + buffer.append(c); return Character.isDigit(c); } /** ! * Check if we are still in the number */ public boolean isWordPart(char c) { ! //ok, we have to test for scientific notation e.g.: 10.9e10 ! ! if((c == 'x' || c == 'X') && buffer.length() == 1 && buffer.charAt(0) == '0'){ ! //it is an hexadecimal ! buffer.append(c); ! isInHexa = true; ! return true; ! }else{ ! buffer.append(c); ! } ! ! if(isInHexa){ ! return Character.isDigit(c) || c == 'a' || c == 'A' ! || c == 'b' || c == 'B' ! || c == 'c' || c == 'C' ! || c == 'd' || c == 'D' ! || c == 'e' || c == 'E' ! || c == 'f' || c == 'F'; ! ! }else{ ! return Character.isDigit(c) || c == 'e' || c == '.'; ! } } *************** *** 120,123 **** --- 154,158 ---- IPreferenceStore preferences = PydevPlugin.getChainedPrefStore(); IToken keywordToken = new Token( new TextAttribute(colorCache.getNamedColor(PydevPrefs.KEYWORD_COLOR), null, preferences.getInt(PydevPrefs.KEYWORD_STYLE))); + IToken selfToken = new Token( new TextAttribute(colorCache.getNamedColor(PydevPrefs.SELF_COLOR), null, preferences.getInt(PydevPrefs.SELF_STYLE))); IToken defaultToken = new Token( new TextAttribute(colorCache.getNamedColor(PydevPrefs.CODE_COLOR), null, preferences.getInt(PydevPrefs.CODE_STYLE))); IToken decoratorToken = new Token( new TextAttribute(colorCache.getNamedColor(PydevPrefs.DECORATOR_COLOR), null, preferences.getInt(PydevPrefs.DECORATOR_STYLE))); *************** *** 126,130 **** setDefaultReturnToken(errorToken); ! List rules = new ArrayList(); // Scanning strategy: --- 161,165 ---- setDefaultReturnToken(errorToken); ! List<IRule> rules = new ArrayList<IRule>(); // Scanning strategy: *************** *** 136,150 **** WordRule wordRule = new WordRule(new GreatKeywordDetector(), defaultToken); ! for (int i=0; i<GreatKeywordDetector.keywords.length;i++) { ! wordRule.addWord(GreatKeywordDetector.keywords[i], keywordToken); } rules.add(wordRule); ! rules.add(new WordRule(new DecoratorDetector(), decoratorToken)); rules.add(new WordRule(new NumberDetector(), numberToken)); ! IRule[] result = new IRule[rules.size()]; ! rules.toArray(result); ! setRules(result); } } --- 171,185 ---- WordRule wordRule = new WordRule(new GreatKeywordDetector(), defaultToken); ! for (String keyword : KEYWORDS) { ! wordRule.addWord( keyword, keywordToken); } + wordRule.addWord("self", selfToken); rules.add(wordRule); ! ! rules.add(new WordRule(new DecoratorDetector(), decoratorToken)); rules.add(new WordRule(new NumberDetector(), numberToken)); ! setRules(rules.toArray(new IRule[0])); } } |