endOffset = startOffset;
startOffset = tmp;
}
// adjust start/end
PsiElement element1 = file.findElementAt(startOffset);
PsiElement element2 = file.findElementAt(endOffset - 1);
if (element1 instanceof PsiWhiteSpace) {
startOffset = element1.getTextRange().getEndOffset();
}
if (element2 instanceof PsiWhiteSpace) {
endOffset = element2.getTextRange().getStartOffset();
}
final PsiElement elementAtStart = file.findElementAt(startOffset);
final PsiElement elementAtEnd = file.findElementAt(endOffset - 1);
if (elementAtStart != null && elementAtEnd != null) {
if (elementAtStart == elementAtEnd && !(elementAtStart instanceof Expression)) {
final PsiElement elementToSurround = elementAtStart.getParent();
if (elementToSurround instanceof Expression) {
return new PsiElement[]{elementToSurround};
}
} else {
final PsiElement commonContext = PsiTreeUtil.findCommonParent(elementAtStart, elementAtEnd);
if (commonContext != null && !(commonContext instanceof PsiFile))
return new PsiElement[]{commonContext};
}
}
return PsiElement.EMPTY_ARRAY;