@Override public List<TextRange> select( PsiElement e, CharSequence editorText, int cursorOffset, Editor editor) { List<TextRange> result = new ArrayList<TextRange>(); PsiElement parent = e.getParent(); if (!(parent instanceof JetBlockExpression) && !(parent instanceof JetWhenExpression)) { return result; } PsiElement startElement = e; PsiElement endElement = e; while (startElement.getPrevSibling() != null) { PsiElement sibling = startElement.getPrevSibling(); if (sibling instanceof LeafPsiElement) { if (((LeafPsiElement) sibling).getElementType() == JetTokens.LBRACE) { break; } } if (sibling instanceof PsiWhiteSpace) { PsiWhiteSpace whiteSpace = (PsiWhiteSpace) sibling; String[] strings = LineTokenizer.tokenize(whiteSpace.getText().toCharArray(), false); if (strings.length > 2) { break; } } startElement = sibling; } while (startElement instanceof PsiWhiteSpace) { startElement = startElement.getNextSibling(); } while (endElement.getNextSibling() != null) { PsiElement sibling = endElement.getNextSibling(); if (sibling instanceof LeafPsiElement) { if (((LeafPsiElement) sibling).getElementType() == JetTokens.RBRACE) { break; } } if (sibling instanceof PsiWhiteSpace) { PsiWhiteSpace whiteSpace = (PsiWhiteSpace) sibling; String[] strings = LineTokenizer.tokenize(whiteSpace.getText().toCharArray(), false); if (strings.length > 2) { break; } } endElement = sibling; } while (endElement instanceof PsiWhiteSpace) { endElement = endElement.getPrevSibling(); } result.addAll( expandToWholeLine( editorText, new TextRange( startElement.getTextRange().getStartOffset(), endElement.getTextRange().getEndOffset()))); return result; }
public List<TextRange> select( PsiElement e, CharSequence editorText, int cursorOffset, Editor editor) { List<TextRange> result = new ArrayList<TextRange>(); PsiElement parent = e.getParent(); if (!(parent instanceof PsiCodeBlock) && !(parent instanceof PsiBlockStatement) || parent instanceof JspCodeBlock) { return result; } PsiElement startElement = e; PsiElement endElement = e; while (startElement.getPrevSibling() != null) { PsiElement sibling = startElement.getPrevSibling(); if (sibling instanceof PsiJavaToken) { PsiJavaToken token = (PsiJavaToken) sibling; if (token.getTokenType() == JavaTokenType.LBRACE) { break; } } if (sibling instanceof PsiWhiteSpace) { PsiWhiteSpace whiteSpace = (PsiWhiteSpace) sibling; String[] strings = LineTokenizer.tokenize(whiteSpace.getText().toCharArray(), false); if (strings.length > 2) { break; } } startElement = sibling; } while (startElement instanceof PsiWhiteSpace) { startElement = startElement.getNextSibling(); } while (endElement.getNextSibling() != null) { PsiElement sibling = endElement.getNextSibling(); if (sibling instanceof PsiJavaToken) { PsiJavaToken token = (PsiJavaToken) sibling; if (token.getTokenType() == JavaTokenType.RBRACE) { break; } } if (sibling instanceof PsiWhiteSpace) { PsiWhiteSpace whiteSpace = (PsiWhiteSpace) sibling; String[] strings = LineTokenizer.tokenize(whiteSpace.getText().toCharArray(), false); if (strings.length > 2) { break; } } endElement = sibling; } while (endElement instanceof PsiWhiteSpace) { endElement = endElement.getPrevSibling(); } result.addAll( expandToWholeLine( editorText, new TextRange( startElement.getTextRange().getStartOffset(), endElement.getTextRange().getEndOffset()))); return result; }
@Override public void visitWhiteSpace(PsiWhiteSpace space) { myResult.append(space.getText().replace('\n', ' ').replace("\\", "")); }