/** * Convenience. Sometimes <code>PsiFile.findElementAt()</code> * isn't enough. This will never return null. * @throws IllegalArgumentException if it couldn't find an element */ public static @NotNull PsiElement findTargetElement(final Editor editor) { final PsiElement found = TargetElementUtil .findTargetElement(editor, TargetElementUtil.getInstance().getAllAccepted()); if (found == null) { throw new IllegalArgumentException("No element under the cursor"); } return found; }
private static PsiElement findTargetElement(@NotNull Editor editor, @NotNull PsiFile file) { PsiElement targetElement = TargetElementUtil.findTargetElement(editor, TargetElementUtil.getInstance().getReferenceSearchFlags()); if (targetElement != null && targetElement != file) { if (targetElement instanceof NavigationItem) { targetElement = (targetElement).getNavigationElement(); } if (targetElement instanceof NavigationItem) { return targetElement; } } return null; }
/** * This is a copy of {@link TargetElementUtil#findTargetElement(com.intellij.openapi.editor.Editor, int)} without obsolete EDT assertion * fixme remove after assertion removal */ @Nullable private static PsiElement findTargetElement(Editor editor, int flags) { int offset = editor.getCaretModel().getOffset(); final PsiElement result = TargetElementUtil.getInstance().findTargetElement(editor, flags, offset); if (result != null) { return result; } int expectedCaretOffset = editor instanceof EditorEx ? ((EditorEx)editor).getExpectedCaretOffset() : offset; if (expectedCaretOffset != offset) { return TargetElementUtil.getInstance().findTargetElement(editor, flags, expectedCaretOffset); } return null; }
protected void doTestFindUsages() { initWithFileSmart(); int flags = TargetElementUtil.ELEMENT_NAME_ACCEPTED | TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED; PsiElement targetElement = TargetElementUtil.findTargetElement(getEditor(), flags); assertNotNull("Cannot find referenced element", targetElement); UsefulTestCase.assertSameLinesWithFile(getTestResultsFilePath(), checkAndSerializeFindUsages(targetElement)); }