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
}