in src/main/kotlin/org/jetbrains/plugins/feature/suggester/suggesters/CompletionPopupSuggester.kt [63:106]
override fun getSuggestion(action: Action): Suggestion {
val language = action.language ?: return NoSuggestion
val langSupport = LanguageSupport.getForLanguage(language) ?: return NoSuggestion
when (action) {
is BeforeEditorTextRemovedAction -> {
if (action.textFragment.text == ".") {
State.reset()
val psiFile = action.psiFile ?: return NoSuggestion
if (!langSupport.isInsideCommentOrLiteral(psiFile, action.caretOffset)) {
State.applyDotRemoving(action.caretOffset, action.timeMillis)
}
}
}
is BeforeEditorTextInsertedAction -> {
if (action.text == ".") {
if (State.isDotRemoved &&
action.caretOffset == State.dotOffset &&
!State.isOutOfDate(action.timeMillis)
) {
State.applyCompletionStarting(action.timeMillis)
} else {
State.reset()
}
}
}
is BeforeCompletionChooseItemAction -> {
try {
if (State.isCompletionStarted &&
State.isAroundDot(action.caretOffset) &&
!State.isOutOfDate(action.timeMillis)
) {
return createSuggestion()
}
} finally {
State.reset()
}
}
is EditorEscapeAction -> {
State.reset()
}
}
return NoSuggestion
}