diff --git a/tools/intellij-plugin/src/line/marker/CommandDeclarationLineMarkerProvider.kt b/tools/intellij-plugin/src/line/marker/CommandDeclarationLineMarkerProvider.kt index fbde5b3fe..ee006718c 100644 --- a/tools/intellij-plugin/src/line/marker/CommandDeclarationLineMarkerProvider.kt +++ b/tools/intellij-plugin/src/line/marker/CommandDeclarationLineMarkerProvider.kt @@ -1,49 +1,44 @@ /* - * Copyright 2019-2020 Mamoe Technologies and contributors. + * Copyright 2019-2021 Mamoe Technologies and contributors. * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found through the following link. + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. * - * https://github.com/mamoe/mirai/blob/master/LICENSE + * https://github.com/mamoe/mirai/blob/master/LICENSE */ package net.mamoe.mirai.console.intellij.line.marker -import com.intellij.codeHighlighting.Pass import com.intellij.codeInsight.daemon.LineMarkerInfo import com.intellij.codeInsight.daemon.LineMarkerProvider -import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.editor.markup.GutterIconRenderer import com.intellij.psi.PsiElement import net.mamoe.mirai.console.intellij.Icons import net.mamoe.mirai.console.intellij.resolve.getElementForLineMark import net.mamoe.mirai.console.intellij.resolve.isSimpleCommandHandlerOrCompositeCommandSubCommand +import net.mamoe.mirai.console.intellij.util.runIgnoringErrors import org.jetbrains.kotlin.psi.KtNamedFunction class CommandDeclarationLineMarkerProvider : LineMarkerProvider { override fun getLineMarkerInfo(element: PsiElement): LineMarkerInfo<*>? { if (element !is KtNamedFunction) return null if (!element.isSimpleCommandHandlerOrCompositeCommandSubCommand()) return null - return Info(getElementForLineMark(element.funKeyword ?: element.identifyingElement ?: element)) + runIgnoringErrors { // not showing icons is better than throwing exception every time doing inspection + return Info(getElementForLineMark(element.funKeyword ?: element.identifyingElement ?: element)) + } } @Suppress("DEPRECATION") - class Info( - callElement: PsiElement, - ) : LineMarkerInfo( + class Info(callElement: PsiElement) : LineMarkerInfo( callElement, callElement.textRange, Icons.CommandDeclaration, - Pass.LINE_MARKERS, - { - "子指令定义" - }, - null, - GutterIconRenderer.Alignment.RIGHT + tooltipProvider, + null, GutterIconRenderer.Alignment.RIGHT ) { - override fun createGutterRenderer(): GutterIconRenderer { - return object : LineMarkerInfo.LineMarkerGutterIconRenderer(this) { - override fun getClickAction(): AnAction? = null + companion object { + val tooltipProvider = { _: PsiElement -> + "子指令定义" } } } diff --git a/tools/intellij-plugin/src/line/marker/PluginMainLineMarkerProvider.kt b/tools/intellij-plugin/src/line/marker/PluginMainLineMarkerProvider.kt index 979822e46..3e350ce76 100644 --- a/tools/intellij-plugin/src/line/marker/PluginMainLineMarkerProvider.kt +++ b/tools/intellij-plugin/src/line/marker/PluginMainLineMarkerProvider.kt @@ -1,50 +1,48 @@ /* - * Copyright 2019-2020 Mamoe Technologies and contributors. + * Copyright 2019-2021 Mamoe Technologies and contributors. * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found through the following link. + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. * - * https://github.com/mamoe/mirai/blob/master/LICENSE + * https://github.com/mamoe/mirai/blob/master/LICENSE */ package net.mamoe.mirai.console.intellij.line.marker -import com.intellij.codeHighlighting.Pass import com.intellij.codeInsight.daemon.LineMarkerInfo import com.intellij.codeInsight.daemon.LineMarkerProvider -import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.editor.markup.GutterIconRenderer import com.intellij.psi.PsiElement import net.mamoe.mirai.console.compiler.common.resolve.PLUGIN_FQ_NAME import net.mamoe.mirai.console.intellij.Icons import net.mamoe.mirai.console.intellij.resolve.allSuperNames import net.mamoe.mirai.console.intellij.resolve.getElementForLineMark +import net.mamoe.mirai.console.intellij.util.runIgnoringErrors import org.jetbrains.kotlin.psi.KtObjectDeclaration class PluginMainLineMarkerProvider : LineMarkerProvider { override fun getLineMarkerInfo(element: PsiElement): LineMarkerInfo<*>? { if (element !is KtObjectDeclaration) return null - if (element.allSuperNames.any { it == PLUGIN_FQ_NAME }) return Info(getElementForLineMark(element)) + runIgnoringErrors { // not showing icons is better than throwing exception every time doing inspection + if (element.allSuperNames.any { it == PLUGIN_FQ_NAME }) return Info(getElementForLineMark(element)) + } return null } + @Suppress("DEPRECATION") - class Info( - callElement: PsiElement, - ) : LineMarkerInfo( + class Info(callElement: PsiElement) : LineMarkerInfo( + // this constructor is deprecated but is not going to be removed. The newer ones are since 203 which is too high. + callElement, callElement.textRange, - Icons.PluginMainDeclaration, - Pass.LINE_MARKERS, - { - "Mirai Console Plugin" - }, - null, - GutterIconRenderer.Alignment.CENTER + Icons.CommandDeclaration, + tooltipProvider, + null, GutterIconRenderer.Alignment.RIGHT ) { - override fun createGutterRenderer(): GutterIconRenderer { - return object : LineMarkerInfo.LineMarkerGutterIconRenderer(this) { - override fun getClickAction(): AnAction? = null + companion object { + val tooltipProvider = { _: PsiElement -> + "Mirai Console Plugin" } } }