in jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/upload/LambdaLineMarker.kt [36:76]
override fun getLineMarkerInfo(element: PsiElement): LineMarkerInfo<*>? {
// Only process leaf elements
if (element.firstChild != null) {
return null
}
val runtimeGroup = element.language.runtimeGroup ?: return null
if (element.isTestOrInjectedText()) {
return null
}
val handlerResolver = LambdaHandlerResolver.getInstanceOrNull(runtimeGroup) ?: return null
val handler = handlerResolver.determineHandler(element) ?: return null
return if (handlerResolver.shouldShowLineMarker(handler) || shouldShowLineMarker(element.containingFile, handler, runtimeGroup)) {
val actionGroup = DefaultActionGroup()
val smartPsiElementPointer = SmartPointerManager.createPointer(element)
if (element.language in LambdaBuilder.supportedLanguages()) {
val executorActions = ExecutorAction.getActions(1)
executorActions.forEach {
actionGroup.add(LineMarkerActionWrapper(element, it))
}
actionGroup.add(CreateLambdaFunctionAction(handler, smartPsiElementPointer, handlerResolver))
}
object : LineMarkerInfo<PsiElement>(
element,
element.textRange,
icon,
null,
null,
GutterIconRenderer.Alignment.CENTER
) {
override fun createGutterRenderer(): GutterIconRenderer = LambdaGutterIcon(this, actionGroup)
}
} else null
}