本文整理汇总了Java中com.intellij.debugger.SourcePosition.getElementAt方法的典型用法代码示例。如果您正苦于以下问题:Java SourcePosition.getElementAt方法的具体用法?Java SourcePosition.getElementAt怎么用?Java SourcePosition.getElementAt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.intellij.debugger.SourcePosition
的用法示例。
在下文中一共展示了SourcePosition.getElementAt方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getClassAt
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
public static PsiClass getClassAt(@Nullable SourcePosition position) {
if (position == null) {
return null;
}
final PsiElement element = position.getElementAt();
return (element != null) ? PsiTreeUtil.getParentOfType(element, PsiClass.class, false) : null;
}
示例2: inTheSameMethod
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
public static boolean inTheSameMethod(@NotNull SourcePosition pos1, @NotNull SourcePosition pos2) {
ApplicationManager.getApplication().assertReadAccessAllowed();
PsiElement elem1 = pos1.getElementAt();
PsiElement elem2 = pos2.getElementAt();
if (elem1 == null) return elem2 == null;
if (elem2 != null) {
PsiElement expectedMethod = getContainingMethod(elem1);
PsiElement currentMethod = getContainingMethod(elem2);
return Comparing.equal(expectedMethod, currentMethod);
}
return false;
}
示例3: getContextElement
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
public static PsiElement getContextElement(@Nullable SourcePosition position) {
return position == null ? null : position.getElementAt();
}
示例4: collectLambdas
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
public static List<PsiLambdaExpression> collectLambdas(@NotNull SourcePosition position, final boolean onlyOnTheLine) {
ApplicationManager.getApplication().assertReadAccessAllowed();
PsiFile file = position.getFile();
final int line = position.getLine();
final Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file);
if (document == null || line >= document.getLineCount()) {
return Collections.emptyList();
}
PsiElement element = position.getElementAt();
final TextRange lineRange = DocumentUtil.getLineTextRange(document, line);
do {
PsiElement parent = element.getParent();
if (parent == null || (parent.getTextOffset() < lineRange.getStartOffset())) {
break;
}
element = parent;
}
while(true);
final List<PsiLambdaExpression> lambdas = new ArrayList<PsiLambdaExpression>(3);
final PsiElementVisitor lambdaCollector = new JavaRecursiveElementVisitor() {
@Override
public void visitLambdaExpression(PsiLambdaExpression expression) {
super.visitLambdaExpression(expression);
if (!onlyOnTheLine || getFirstElementOnTheLine(expression, document, line) != null) {
lambdas.add(expression);
}
}
};
element.accept(lambdaCollector);
// add initial lambda if we're inside already
PsiElement method = getContainingMethod(element);
if (method instanceof PsiLambdaExpression) {
lambdas.add((PsiLambdaExpression)method);
}
for (PsiElement sibling = getNextElement(element); sibling != null; sibling = getNextElement(sibling)) {
if (!intersects(lineRange, sibling)) {
break;
}
sibling.accept(lambdaCollector);
}
return lambdas;
}
示例5: inTheMethod
import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
public static boolean inTheMethod(@NotNull SourcePosition pos, @NotNull PsiElement method) {
PsiElement elem = pos.getElementAt();
if (elem == null) return false;
return Comparing.equal(getContainingMethod(elem), method);
}