Has anyone encountered this situation?
this is my code
class GradleAliyuMirrorImageInlay : CodeVisionProviderBase() {
private val logger = thisLogger()
override fun acceptsFile(file: PsiFile): Boolean {
return file is GroovyFile
}
override fun acceptsElement(element: PsiElement): Boolean {
return element is GrMethodCallExpression
&& element.hasClosureArguments()
&& element.closureArguments.isNotEmpty()
&& element.invokedExpression.text == "repositories"
}
override fun getHint(element: PsiElement, file: PsiFile): String {
return PluginBundle.get("inlay.change.to.aliyun.mirror.image")
}
override fun handleClick(
editor: Editor,
element: PsiElement,
event: MouseEvent?
) {
val factory = MyGrPsiElementFactory(element.project)
val methodCallExpression = element as GrMethodCallExpression
GrPsiElementHelper.methodCallAddMethodCall(
element.project,
methodCallExpression,
aliyunGradleMirrorImages.reversed().map(factory::createMethodCall)
)
}
override fun computeForEditor(editor: Editor, file: PsiFile): List<Pair<TextRange, CodeVisionEntry>> {
val result = super.computeForEditor(editor, file)
return result.map {
val second = it.second as ClickableTextCodeVisionEntry
Pair(
first = it.first,
second = ClickableTextCodeVisionEntry(
text = second.text,
providerId = second.providerId,
onClick = second.onClick,
icon = MyIcons.flutter,
)
)
}
}
override val name: String
get() = "Change AliYun Mirror Image"
override val relativeOrderings: List<CodeVisionRelativeOrdering>
get() = listOf(CodeVisionRelativeOrdering.CodeVisionRelativeOrderingLast)
override val id: String
get() = "flutter-aliyun-mirror-image-inlay"
}
plugin.xml
<codeInsight.daemonBoundCodeVisionProvider
implementation="xxx.GradleAliyuMirrorImageInlay"/>
