diff options
Diffstat (limited to 'bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/text/FastJavaPartitionScanner.java')
-rw-r--r-- | bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/text/FastJavaPartitionScanner.java | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/text/FastJavaPartitionScanner.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/text/FastJavaPartitionScanner.java index 7c412d11..a88059f0 100644 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/text/FastJavaPartitionScanner.java +++ b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/text/FastJavaPartitionScanner.java @@ -81,7 +81,7 @@ public class FastJavaPartitionScanner implements IPartitionTokenScanner, IJavaSc int lastNonWhitespaceChar = NONE; int currentChar = NONE; - + boolean onCharList = false; while (true) { if (!Character.isWhitespace((char)currentChar)) lastNonWhitespaceChar = currentChar; @@ -251,9 +251,10 @@ public class FastJavaPartitionScanner implements IPartitionTokenScanner, IJavaSc default: //check if regexp fLast= NONE; // ignore fLast - if (fTokenLength > 0) + onCharList = false; //reset char list; + if (fTokenLength > 0) { return preFix(JAVASCRIPT, REGULAR_EXPRESSION, NONE, 1); - else { + } else { preFix(JAVASCRIPT, REGULAR_EXPRESSION, NONE, 1); fTokenOffset += fTokenLength; fTokenLength= fPrefixLength; @@ -398,10 +399,27 @@ public class FastJavaPartitionScanner implements IPartitionTokenScanner, IJavaSc fLast= (fLast == BACKSLASH) ? NONE : BACKSLASH; fTokenLength++; break; - + case '[': + onCharList = true; + consume(); + break; + case ']': + onCharList = false; + if (fLast==SLASH || fLast==REGULAR_EXPRESSION_END) + { + fTokenLength--; + fScanner.unread(); + return postFix(REGULAR_EXPRESSION); + } + consume(); + break; case '/': - fLast= (fLast == BACKSLASH) ? NONE : SLASH; - fTokenLength++; + if (!onCharList) { + fLast= (fLast == BACKSLASH) ? NONE : SLASH; + fTokenLength++; + } else { + consume(); + } break; case 'g': |