private void doSetText(final CharSequence text) { final TokenProcessor processor = createTokenProcessor(0); myLexer.start(text, 0, text.length(), myInitialState); mySegments.removeAll(); int i = 0; while (true) { final IElementType tokenType = myLexer.getTokenType(); if (tokenType == null) break; int data = packData(tokenType, myLexer.getState()); processor.addToken(i, myLexer.getTokenStart(), myLexer.getTokenEnd(), data, tokenType); i++; myLexer.advance(); } processor.finish(); if (myEditor != null && !ApplicationManager.getApplication().isHeadlessEnvironment()) { UIUtil.invokeLaterIfNeeded( new DumbAwareRunnable() { @Override public void run() { myEditor.repaint(0, text.length()); } }); } }
@Override public void goingUp(Tree t) { TokenProcessor tokenProcessor = tokenProcessorTable.get(t.getType()); if (tokenProcessor != null) { tokenProcessor.goingUp(t); } }