List<TextRange> (@NotNull PsiElement e, @NotNull CharSequence editorText, int cursorOffset, @NotNull Editor editor) { List<TextRange> result; if (!(e instanceof XmlToken) || XmlTokenSelectioner.shouldSelectToken((XmlToken)e) || ((XmlToken)e).getTokenType() == XmlTokenType.XML_DATA_CHARACTERS) { result = super.select(e, editorText, cursorOffset, editor); } else { result = new ArrayList<>(); } final PsiElement parent = e.getParent(); if (parent instanceof XmlComment) { result.addAll(expandToWholeLine(editorText, parent.getTextRange(), true)); } PsiFile psiFile = e.getContainingFile(); addAttributeSelection(result, editor, cursorOffset, editorText, e); final FileViewProvider fileViewProvider = psiFile.getViewProvider(); for (Language lang : fileViewProvider.getLanguages()) { final PsiFile langFile = fileViewProvider.getPsi(lang); if (langFile != psiFile) addAttributeSelection(result, editor, cursorOffset, editorText, fileViewProvider.findElementAt(cursorOffset, lang)); } EditorHighlighter highlighter = HighlighterFactory.createHighlighter(e.getProject(), psiFile.getVirtualFile()); highlighter.setText(editorText); addTagSelection2(e, result); return result; }