override fun getSuggestion()

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
    }