diff --git a/src/main/java/org/jf/smalidea/util/PsiUtil.java b/src/main/java/org/jf/smalidea/util/PsiUtil.java index 72c5a133..5255046f 100644 --- a/src/main/java/org/jf/smalidea/util/PsiUtil.java +++ b/src/main/java/org/jf/smalidea/util/PsiUtil.java @@ -32,13 +32,20 @@ package org.jf.smalidea.util; import com.intellij.psi.PsiElement; +import com.intellij.psi.util.PsiMatcher; import com.intellij.psi.util.PsiMatcherExpression; +import com.intellij.psi.util.PsiMatchers; +import org.jf.smalidea.psi.impl.SmaliField; +import org.jf.smalidea.psi.impl.SmaliFile; public class PsiUtil { public static PsiElement searchBackward(PsiElement element, PsiMatcherExpression matcher, PsiMatcherExpression until) { + while (!matcher.match(element)) { - if (until.match(element)) { + if (until.match(element) + || PsiMatchers.hasClass(SmaliField.class).match(element) + || PsiMatchers.hasClass(SmaliFile.class).match(element)) { return null; } PsiElement prev = element.getPrevSibling(); @@ -56,7 +63,9 @@ public static PsiElement searchBackward(PsiElement element, PsiMatcherExpression public static PsiElement searchForward(PsiElement element, PsiMatcherExpression matcher, PsiMatcherExpression until) { while (!matcher.match(element)) { - if (until.match(element)) { + if (until.match(element) + || PsiMatchers.hasClass(SmaliFile.class).match(element) + || PsiMatchers.hasClass(SmaliField.class).match(element)) { return null; } PsiElement next = element.getNextSibling();