mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
@NotNull contextElement in CompletionConfidence
This commit is contained in:
+4
-7
@@ -21,7 +21,6 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.ThreeState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
@@ -35,12 +34,10 @@ public class JavaReflectionCompletionConfidence extends CompletionConfidence {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ThreeState shouldSkipAutopopup(@Nullable PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
if (contextElement != null) {
|
||||
final PsiElement literal = contextElement.getParent();
|
||||
if (literal != null && JavaReflectionReferenceContributor.PATTERN.accepts(literal)) {
|
||||
return ThreeState.NO;
|
||||
}
|
||||
public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
final PsiElement literal = contextElement.getParent();
|
||||
if (literal != null && JavaReflectionReferenceContributor.PATTERN.accepts(literal)) {
|
||||
return ThreeState.NO;
|
||||
}
|
||||
return super.shouldSkipAutopopup(contextElement, psiFile, offset);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.ThreeState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -30,7 +29,7 @@ public abstract class CompletionConfidence {
|
||||
public abstract ThreeState shouldFocusLookup(@NotNull CompletionParameters parameters);
|
||||
|
||||
@NotNull
|
||||
public ThreeState shouldSkipAutopopup(@Nullable PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
return ThreeState.UNSURE;
|
||||
}
|
||||
}
|
||||
|
||||
+6
-14
@@ -25,7 +25,6 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.util.ThreeState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -39,19 +38,12 @@ public class SkipAutopopupInStrings extends CompletionConfidence {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ThreeState shouldSkipAutopopup(@Nullable PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
if (contextElement != null) {
|
||||
ParserDefinition definition = LanguageParserDefinitions.INSTANCE.forLanguage(PsiUtilBase.getLanguageAtOffset(psiFile, offset));
|
||||
if (definition != null) {
|
||||
if (isStringLiteral(contextElement, definition) || isStringLiteral(contextElement.getParent(), definition)) {
|
||||
return ThreeState.YES;
|
||||
}
|
||||
if (offset > 0) {
|
||||
PsiElement prev = psiFile.findElementAt(offset - 1);
|
||||
if (prev != null && (isStringLiteralWithError(prev, definition) || isStringLiteralWithError(prev.getParent(), definition))) {
|
||||
return ThreeState.YES;
|
||||
}
|
||||
}
|
||||
public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
ParserDefinition definition = LanguageParserDefinitions.INSTANCE.forLanguage(PsiUtilBase.getLanguageAtOffset(psiFile, offset));
|
||||
if (definition != null) {
|
||||
if (isStringLiteral(contextElement, definition) || isStringLiteral(contextElement.getParent(), definition) ||
|
||||
isStringLiteralWithError(contextElement, definition) || isStringLiteralWithError(contextElement.getParent(), definition)) {
|
||||
return ThreeState.YES;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -221,17 +221,18 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler {
|
||||
CommandProcessor.getInstance().runUndoTransparentAction(initCmd);
|
||||
|
||||
int offset = editor.getCaretModel().getOffset();
|
||||
int psiOffset = Math.max(0, offset);
|
||||
int psiOffset = Math.max(0, offset - 1);
|
||||
|
||||
PsiElement elementAt = InjectedLanguageUtil.findInjectedElementNoCommit(psiFile, psiOffset);
|
||||
if (elementAt == null) {
|
||||
elementAt = psiFile.findElementAt(psiOffset);
|
||||
}
|
||||
if (elementAt == null) return;
|
||||
|
||||
Language language = elementAt != null ? PsiUtilBase.findLanguageFromElement(elementAt):psiFile.getLanguage();
|
||||
Language language = PsiUtilBase.findLanguageFromElement(elementAt);
|
||||
|
||||
for (CompletionConfidence confidence : CompletionConfidenceEP.forLanguage(language)) {
|
||||
final ThreeState result = confidence.shouldSkipAutopopup(elementAt, psiFile, offset); // TODO: Peter Lazy API
|
||||
final ThreeState result = confidence.shouldSkipAutopopup(elementAt, psiFile, offset);
|
||||
if (result == ThreeState.YES) return;
|
||||
if (result == ThreeState.NO) break;
|
||||
}
|
||||
|
||||
+1
-2
@@ -19,7 +19,6 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.util.ThreeState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.console.GroovyShellAction;
|
||||
import org.jetbrains.plugins.groovy.lang.lexer.TokenSets;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement;
|
||||
@@ -78,7 +77,7 @@ public class GroovyCompletionConfidence extends CompletionConfidence {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ThreeState shouldSkipAutopopup(@Nullable PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
if (PsiUtil.isLeafElementOfType(contextElement, TokenSets.STRING_LITERALS)) {
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
PsiElement parent = contextElement.getParent();
|
||||
|
||||
Reference in New Issue
Block a user