本文整理汇总了Java中com.intellij.patterns.PsiJavaPatterns类的典型用法代码示例。如果您正苦于以下问题:Java PsiJavaPatterns类的具体用法?Java PsiJavaPatterns怎么用?Java PsiJavaPatterns使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PsiJavaPatterns类属于com.intellij.patterns包,在下文中一共展示了PsiJavaPatterns类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: recursionFilter
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@Nullable
static ElementFilter recursionFilter(PsiElement element) {
if (PsiJavaPatterns.psiElement().afterLeaf(PsiKeyword.RETURN).inside(PsiReturnStatement.class).accepts(element)) {
return new ExcludeDeclaredFilter(ElementClassFilter.METHOD);
}
if (PsiJavaPatterns.psiElement().inside(
StandardPatterns.or(
PsiJavaPatterns.psiElement(PsiAssignmentExpression.class),
PsiJavaPatterns.psiElement(PsiVariable.class))).
andNot(PsiJavaPatterns.psiElement().afterLeaf(".")).accepts(element)) {
return new AndFilter(new ExcludeSillyAssignment(),
new ExcludeDeclaredFilter(new ClassFilter(PsiVariable.class)));
}
return null;
}
示例2: registerReferenceProviders
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
public void registerReferenceProviders(final PsiReferenceRegistrar registrar) {
registrar.registerReferenceProvider(literalExpression(), new PropertiesReferenceProvider(true));
registrar.registerReferenceProvider(literalExpression().withParent(
psiNameValuePair().withName(AnnotationUtil.PROPERTY_KEY_RESOURCE_BUNDLE_PARAMETER)),
new ResourceBundleReferenceProvider());
registrar.registerReferenceProvider(PsiJavaPatterns.psiElement(PropertyValueImpl.class), new PsiReferenceProvider() {
@NotNull
@Override
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
String text = element.getText();
String[] words = text.split("\\s");
if (words.length != 1) return PsiReference.EMPTY_ARRAY;
return CLASS_REFERENCE_PROVIDER.getReferencesByString(words[0], element, 0);
}
});
}
示例3: fillCompletionVariants
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@Override
public void fillCompletionVariants(@NotNull final CompletionParameters parameters, @NotNull final CompletionResultSet result) {
PsiElement position = parameters.getPosition();
if (PsiJavaPatterns.psiElement(JavaDocTokenType.DOC_COMMENT_DATA).accepts(position)) {
final PsiParameter param = getDocTagParam(position.getParent());
if (param != null) {
suggestSimilarParameterDescriptions(result, position, param);
}
return;
}
super.fillCompletionVariants(parameters, result);
}
示例4: fun
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@Override
@Nullable
public ExpectedTypeInfo[] fun(final CompletionLocation location) {
if (PsiJavaPatterns.psiElement().beforeLeaf(PsiJavaPatterns.psiElement().withText("."))
.accepts(location.getCompletionParameters().getPosition())) {
return ExpectedTypeInfo.EMPTY_ARRAY;
}
return JavaSmartCompletionContributor.getExpectedTypes(location.getCompletionParameters());
}
示例5: addJavaSorting
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
public static CompletionResultSet addJavaSorting(final CompletionParameters parameters, CompletionResultSet result) {
final PsiElement position = parameters.getPosition();
final ExpectedTypeInfo[] expectedTypes = PsiJavaPatterns.psiElement().beforeLeaf(PsiJavaPatterns.psiElement().withText(".")).accepts(position) ? ExpectedTypeInfo.EMPTY_ARRAY : JavaSmartCompletionContributor.getExpectedTypes(parameters);
final CompletionType type = parameters.getCompletionType();
final boolean smart = type == CompletionType.SMART;
final boolean afterNew = JavaSmartCompletionContributor.AFTER_NEW.accepts(position);
List<LookupElementWeigher> afterProximity = new ArrayList<LookupElementWeigher>();
afterProximity.add(new PreferContainingSameWords(expectedTypes));
afterProximity.add(new PreferShorter(expectedTypes));
CompletionSorter sorter = CompletionSorter.defaultSorter(parameters, result.getPrefixMatcher());
if (!smart && afterNew) {
sorter = sorter.weighBefore("liftShorter", new PreferExpected(true, expectedTypes));
} else if (PsiTreeUtil.getParentOfType(position, PsiReferenceList.class) == null) {
sorter = ((CompletionSorterImpl)sorter).withClassifier("liftShorterClasses", true, new LiftShorterClasses(position));
}
if (smart) {
sorter = sorter.weighAfter("priority", new PreferDefaultTypeWeigher(expectedTypes, parameters));
}
List<LookupElementWeigher> afterPrefix = ContainerUtil.newArrayList();
afterPrefix.add(new PreferByKindWeigher(type, position));
if (!smart) {
ContainerUtil.addIfNotNull(afterPrefix, preferStatics(position, expectedTypes));
if (!afterNew) {
afterPrefix.add(new PreferExpected(false, expectedTypes));
}
}
ContainerUtil.addIfNotNull(afterPrefix, recursion(parameters, expectedTypes));
Collections.addAll(afterPrefix, new PreferSimilarlyEnding(expectedTypes),
new PreferNonGeneric(), new PreferAccessible(position), new PreferSimple());
sorter = sorter.weighAfter("prefix", afterPrefix.toArray(new LookupElementWeigher[afterPrefix.size()]));
sorter = sorter.weighAfter("proximity", afterProximity.toArray(new LookupElementWeigher[afterProximity.size()]));
return result.withRelevanceSorter(sorter);
}
示例6: getElementPattern
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
private static PsiJavaElementPattern.Capture<PsiLiteralExpression> getElementPattern(String annotationParamName) {
return PsiJavaPatterns.literalExpression().
annotationParam(annotationParamName, PsiJavaPatterns.psiAnnotation().with(new PatternCondition<PsiAnnotation>("isTestNGAnnotation") {
@Override
public boolean accepts(@NotNull PsiAnnotation annotation, ProcessingContext context) {
return TestNGUtil.isTestNGAnnotation(annotation);
}
}));
}
示例7: isPossibleClosureParameter
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
private static boolean isPossibleClosureParameter(GrReferenceExpression ref) {
return PsiJavaPatterns.psiElement().afterLeaf(CLOSURE_LBRACE).accepts(ref) ||
PsiJavaPatterns.psiElement().afterLeaf(
PsiJavaPatterns.psiElement().afterLeaf(",").withParent(
PsiJavaPatterns.psiElement(GrVariable.class).withParent(
PsiJavaPatterns.psiElement(GrVariableDeclaration.class).afterLeaf(CLOSURE_LBRACE)))).accepts(ref) ||
GroovyCompletionUtil.isInPossibleClosureParameter(ref);
}
示例8: shouldFocusLookup
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@NotNull
@Override
public ThreeState shouldFocusLookup(@NotNull CompletionParameters parameters) {
final PsiElement position = parameters.getPosition();
PsiFile file = position.getContainingFile();
if (file instanceof GroovyFile && GroovyScriptUtil.getScriptType((GroovyFile)file) != GroovyScriptUtil.DEFAULT_TYPE) {
return ThreeState.NO;
}
if (position.getParent() instanceof GrReferenceElement &&
PsiJavaPatterns.psiElement().afterLeaf(PsiJavaPatterns.psiElement().withText("(").withParent(GrForStatement.class)).accepts(position)) {
return ThreeState.NO;
}
if (position.getParent() instanceof GrReferenceExpression) {
final GrReferenceExpression ref = (GrReferenceExpression)position.getParent();
final GrExpression qualifier = ref.getQualifierExpression();
if (qualifier == null) {
if (isPossibleClosureParameter(ref)) return ThreeState.NO;
if (parameters.getOriginalFile().getUserData(GROOVY_SHELL_FILE) == Boolean.TRUE) {
return ThreeState.NO;
}
GrExpression runtimeQualifier = PsiImplUtil.getRuntimeQualifier(ref);
if (runtimeQualifier != null && runtimeQualifier.getType() == null) {
return ThreeState.NO;
}
return ThreeState.YES;
}
if (qualifier.getType() == null) {
return ThreeState.NO;
}
return ThreeState.YES;
}
return ThreeState.UNSURE;
}
示例9: shouldSkipAutopopup
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@NotNull
@Override
public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
if (CodeInsightSettings.getInstance().SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS && psiFile.getUserData(GROOVY_SHELL_FILE) == Boolean.TRUE) {
return ThreeState.YES;
}
if (com.intellij.psi.impl.PsiImplUtil.isLeafElementOfType(contextElement, TokenSets.STRING_LITERALS)) {
@SuppressWarnings("ConstantConditions")
PsiElement parent = contextElement.getParent();
if (parent != null) {
for (PsiReference reference : parent.getReferences()) {
if (!reference.isSoft() && reference.getRangeInElement().shiftRight(parent.getTextOffset()).containsOffset(offset)) {
return ThreeState.NO;
}
}
}
return ThreeState.YES;
}
if (PsiJavaPatterns.psiElement().afterLeaf("def").accepts(contextElement)) {
return ThreeState.YES;
}
return ThreeState.UNSURE;
}
示例10: fillCompletionVariants
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@Override
public void fillCompletionVariants(final CompletionParameters parameters, final CompletionResultSet result) {
PsiElement position = parameters.getPosition();
if (PsiJavaPatterns.psiElement(JavaDocTokenType.DOC_COMMENT_DATA).accepts(position)) {
final PsiParameter param = getDocTagParam(position.getParent());
if (param != null) {
suggestSimilarParameterDescriptions(result, position, param);
}
return;
}
super.fillCompletionVariants(parameters, result);
}
示例11: addJavaSorting
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
public static CompletionResultSet addJavaSorting(final CompletionParameters parameters, CompletionResultSet result) {
final PsiElement position = parameters.getPosition();
final ExpectedTypeInfo[] expectedTypes = PsiJavaPatterns.psiElement().beforeLeaf(PsiJavaPatterns.psiElement().withText(".")).accepts(position) ? ExpectedTypeInfo.EMPTY_ARRAY : JavaSmartCompletionContributor.getExpectedTypes(parameters);
final CompletionType type = parameters.getCompletionType();
final boolean smart = type == CompletionType.SMART;
final boolean afterNew = JavaSmartCompletionContributor.AFTER_NEW.accepts(position);
List<LookupElementWeigher> afterProximity = new ArrayList<LookupElementWeigher>();
afterProximity.add(new PreferContainingSameWords(expectedTypes));
if (smart) {
afterProximity.add(new PreferFieldsAndGetters());
}
afterProximity.add(new PreferShorter(expectedTypes));
CompletionSorter sorter = CompletionSorter.defaultSorter(parameters, result.getPrefixMatcher());
if (!smart && afterNew) {
sorter = sorter.weighBefore("liftShorter", new PreferExpected(true, expectedTypes));
} else if (PsiTreeUtil.getParentOfType(position, PsiReferenceList.class) == null) {
sorter = ((CompletionSorterImpl)sorter).withClassifier("liftShorterClasses", true, new LiftShorterClasses(position));
}
if (smart) {
sorter = sorter.weighAfter("priority", new PreferDefaultTypeWeigher(expectedTypes, parameters));
}
List<LookupElementWeigher> afterPrefix = ContainerUtil.newArrayList();
if (!smart) {
ContainerUtil.addIfNotNull(afterPrefix, preferStatics(position, expectedTypes));
}
ContainerUtil.addIfNotNull(afterPrefix, recursion(parameters, expectedTypes));
if (!smart && !afterNew) {
afterPrefix.add(new PreferExpected(false, expectedTypes));
}
Collections.addAll(afterPrefix, new PreferByKindWeigher(type, position), new PreferSimilarlyEnding(expectedTypes),
new PreferNonGeneric(), new PreferAccessible(position), new PreferSimple(),
new PreferEnumConstants(parameters));
sorter = sorter.weighAfter("prefix", afterPrefix.toArray(new LookupElementWeigher[afterPrefix.size()]));
sorter = sorter.weighAfter("proximity", afterProximity.toArray(new LookupElementWeigher[afterProximity.size()]));
return result.withRelevanceSorter(sorter);
}
示例12: isInsideDecodeOrGetColorMethod
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
public static boolean isInsideDecodeOrGetColorMethod(PsiElement element) {
if (element instanceof PsiJavaToken && ((PsiJavaToken)element).getTokenType() == JavaTokenType.STRING_LITERAL) {
element = element.getParent();
}
return PsiJavaPatterns.psiExpression().methodCallParameter(0, DECODE_METHOD).accepts(element) ||
PsiJavaPatterns.psiExpression().methodCallParameter(0, GET_COLOR_METHOD).accepts(element);
}
示例13: fillCompletionVariants
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@Override
public void fillCompletionVariants(@NotNull final CompletionParameters parameters, @NotNull final CompletionResultSet result)
{
PsiElement position = parameters.getPosition();
if(PsiJavaPatterns.psiElement(JavaDocTokenType.DOC_COMMENT_DATA).accepts(position))
{
final PsiParameter param = getDocTagParam(position.getParent());
if(param != null)
{
suggestSimilarParameterDescriptions(result, position, param);
}
suggestLinkWrappingVariants(parameters, result.withPrefixMatcher(CompletionUtil.findJavaIdentifierPrefix(parameters)), position);
if(!result.getPrefixMatcher().getPrefix().isEmpty())
{
for(String keyword : ContainerUtil.ar("null", "true", "false"))
{
String tagText = "{@code " + keyword + "}";
result.addElement(LookupElementBuilder.create(keyword).withPresentableText(tagText).withInsertHandler((context, item) -> context.getDocument().replaceString(context
.getStartOffset(), context.getTailOffset(), tagText)));
}
}
return;
}
super.fillCompletionVariants(parameters, result);
}
示例14: recursionFilter
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@Nullable
static ElementFilter recursionFilter(PsiElement element)
{
if(PsiJavaPatterns.psiElement().afterLeaf(PsiKeyword.RETURN).inside(PsiReturnStatement.class).accepts(element))
{
return new ExcludeDeclaredFilter(ElementClassFilter.METHOD);
}
if(PsiJavaPatterns.psiElement().inside(StandardPatterns.or(PsiJavaPatterns.psiElement(PsiAssignmentExpression.class), PsiJavaPatterns.psiElement(PsiVariable.class))).
andNot(PsiJavaPatterns.psiElement().afterLeaf(".")).accepts(element))
{
return new AndFilter(new ExcludeSillyAssignment(), new ExcludeDeclaredFilter(new ClassFilter(PsiVariable.class)));
}
return null;
}
示例15: fun
import com.intellij.patterns.PsiJavaPatterns; //导入依赖的package包/类
@Override
@Nullable
public ExpectedTypeInfo[] fun(final CompletionLocation location)
{
if(PsiJavaPatterns.psiElement().beforeLeaf(PsiJavaPatterns.psiElement().withText(".")).accepts(location.getCompletionParameters().getPosition()))
{
return ExpectedTypeInfo.EMPTY_ARRAY;
}
return JavaSmartCompletionContributor.getExpectedTypes(location.getCompletionParameters());
}