Fixed KT-5808 Code completion auto-popup does not appear after typing "?."
#KT-5808 Fixed
This commit is contained in:
committed by
valentin
parent
94c9338e3c
commit
3fcf0f7340
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.plugin.editor;
|
package org.jetbrains.jet.plugin.editor;
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.AutoPopupController;
|
||||||
import com.intellij.codeInsight.CodeInsightSettings;
|
import com.intellij.codeInsight.CodeInsightSettings;
|
||||||
import com.intellij.codeInsight.editorActions.TypedHandlerDelegate;
|
import com.intellij.codeInsight.editorActions.TypedHandlerDelegate;
|
||||||
import com.intellij.codeInsight.highlighting.BraceMatcher;
|
import com.intellij.codeInsight.highlighting.BraceMatcher;
|
||||||
@@ -31,6 +32,7 @@ import com.intellij.openapi.editor.highlighter.EditorHighlighter;
|
|||||||
import com.intellij.openapi.editor.highlighter.HighlighterIterator;
|
import com.intellij.openapi.editor.highlighter.HighlighterIterator;
|
||||||
import com.intellij.openapi.fileTypes.FileType;
|
import com.intellij.openapi.fileTypes.FileType;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
|
import com.intellij.openapi.util.Condition;
|
||||||
import com.intellij.psi.PsiDocumentManager;
|
import com.intellij.psi.PsiDocumentManager;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
@@ -64,6 +66,7 @@ public class KotlinTypedHandler extends TypedHandlerDelegate {
|
|||||||
jetLTTyped = CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET &&
|
jetLTTyped = CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET &&
|
||||||
JetLtGtTypingUtils.shouldAutoCloseAngleBracket(editor.getCaretModel().getOffset(), editor);
|
JetLtGtTypingUtils.shouldAutoCloseAngleBracket(editor.getCaretModel().getOffset(), editor);
|
||||||
return Result.CONTINUE;
|
return Result.CONTINUE;
|
||||||
|
|
||||||
case '>':
|
case '>':
|
||||||
if (CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET) {
|
if (CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET) {
|
||||||
if (JetLtGtTypingUtils.handleJetGTInsert(editor)) {
|
if (JetLtGtTypingUtils.handleJetGTInsert(editor)) {
|
||||||
@@ -71,6 +74,7 @@ public class KotlinTypedHandler extends TypedHandlerDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Result.CONTINUE;
|
return Result.CONTINUE;
|
||||||
|
|
||||||
case '{':
|
case '{':
|
||||||
// Returning Result.CONTINUE will cause inserting "{}" for unmatched '{'
|
// Returning Result.CONTINUE will cause inserting "{}" for unmatched '{'
|
||||||
|
|
||||||
@@ -107,11 +111,30 @@ public class KotlinTypedHandler extends TypedHandlerDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Result.CONTINUE;
|
return Result.CONTINUE;
|
||||||
|
|
||||||
|
case '.':
|
||||||
|
autoPopupMemberLookup(project, editor);
|
||||||
|
return Result.CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result.CONTINUE;
|
return Result.CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void autoPopupMemberLookup(Project project, final Editor editor) {
|
||||||
|
AutoPopupController.getInstance(project).autoPopupMemberLookup(editor, new Condition<PsiFile>() {
|
||||||
|
@Override
|
||||||
|
public boolean value(PsiFile file) {
|
||||||
|
int offset = editor.getCaretModel().getOffset();
|
||||||
|
|
||||||
|
PsiElement lastElement = file.findElementAt(offset - 1);
|
||||||
|
if (lastElement == null) return false;
|
||||||
|
|
||||||
|
String text = lastElement.getText();
|
||||||
|
return ".".equals(text) || "?.".equals(text);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result charTyped(char c, Project project, @NotNull Editor editor, @NotNull PsiFile file) {
|
public Result charTyped(char c, Project project, @NotNull Editor editor, @NotNull PsiFile file) {
|
||||||
if (!(file instanceof JetFile)) {
|
if (!(file instanceof JetFile)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user