override fun addCompletions()

in src/org/jetbrains/r/editor/RCompletionContributor.kt [315:360]


    override fun addCompletions(parameters: CompletionParameters, context: ProcessingContext, _result: CompletionResultSet) {
      val probableIdentifier = PsiTreeUtil.getParentOfType(parameters.position, RExpression::class.java, false)
      val position = if (probableIdentifier != null) {
        // operator surrounded by % or identifier
        PsiTreeUtil.findChildOfType(probableIdentifier, RInfixOperator::class.java) ?: probableIdentifier
      } else {
        // operator with parser error
        PsiTreeUtil.getParentOfType(parameters.position, RPsiElement::class.java, false) ?: return
      }

      val result =
        if (probableIdentifier == null) _result.withPrefixMatcher("%${_result.prefixMatcher.prefix}")
        else _result
      val parent = position.parent
      val shownNames = HashSet<String>()
      val project = position.project
      val originalFile = parameters.originalFile

      // don't complete parameters name
      if (parent is RParameter && position == parent.variable) {
        return
      }

      val file = parameters.originalFile
      val isHelpFromRConsole = file.getUserData(RConsoleViewImpl.IS_R_CONSOLE_KEY)?.let { file.firstChild is RHelpExpression } ?: false
      val elementFactory = if (isHelpFromRConsole) RLookupElementFactory() else rCompletionElementFactory
      addKeywords(position, shownNames, result, isHelpFromRConsole)
      addLocalsFromControlFlow(position, shownNames, result, elementFactory)
      addLocalsFromRuntime(originalFile, shownNames, result, elementFactory)

      // we are completing an assignee, so we don't want to suggest function names here
      if (position is RExpression && position.isAssignee()) {
        return
      }

      RPackageCompletionUtil.addPackageCompletion(position, result)
      addNamedArgumentsCompletion(position, result)
      addArgumentValueCompletion(position, result)
      val prefix = position.name?.let { StringUtil.trimEnd(it, CompletionInitializationContext.DUMMY_IDENTIFIER_TRIMMED) } ?: ""
      RPackageCompletionUtil.addCompletionFromIndices(project, RSearchScopeUtil.getScope(originalFile),
                                                      parameters.originalFile, prefix, shownNames, result, elementFactory)

      for (extension in RLibrarySupportProvider.EP_NAME.extensions) {
        extension.completeIdentifier(parameters.position, rCompletionElementFactory, result)
      }
    }