override fun isAcceptable()

in src/org/jetbrains/r/codeInsight/table/RGgplotTableContextManager.kt [121:143]


  override fun isAcceptable(element: Any?, context: PsiElement?): Boolean {
    var expression: PsiElement? = PsiTreeUtil.getParentOfType(context, RExpression::class.java, false)

    if (expression !is RIdentifierExpression) return false
    val parent = expression.parent ?: return false
    if (parent is RNamedArgument && parent.assignedValue == expression) {
      expression = parent
    }
    if (expression !is PsiElementBase) {
      return false
    }

    val argumentList = expression.parent ?: return false
    if (argumentList !is RArgumentList) return false

    val columnContainerCall = argumentList.parent
    if (columnContainerCall !is RCallExpression) return false
    val columnContainerCallIdentifier = columnContainerCall.expression
    if (columnContainerCallIdentifier !is RIdentifierExpression
        || columnContainerCallIdentifier.name !in GGPLOT_COLUMN_ARGUMENTS.keys) return false
    val columnArgumentArgumentCriterion = GGPLOT_COLUMN_ARGUMENTS[columnContainerCallIdentifier.name]
    return columnArgumentArgumentCriterion!!.isEmpty() || expression.name in columnArgumentArgumentCriterion
  }