-
Notifications
You must be signed in to change notification settings - Fork 187
/
PluginLineMarkerProvider.kt
49 lines (40 loc) · 1.35 KB
/
PluginLineMarkerProvider.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
* Minecraft Dev for IntelliJ
*
* https://minecraftdev.org
*
* Copyright (c) 2021 minecraft-dev
*
* MIT License
*/
package com.demonwav.mcdev.insight
import com.demonwav.mcdev.asset.GeneralAssets
import com.demonwav.mcdev.facet.MinecraftFacet
import com.intellij.codeInsight.daemon.LineMarkerInfo
import com.intellij.codeInsight.daemon.LineMarkerProviderDescriptor
import com.intellij.openapi.editor.markup.GutterIconRenderer
import com.intellij.openapi.module.ModuleUtilCore
import com.intellij.psi.PsiElement
import com.intellij.util.FunctionUtil
class PluginLineMarkerProvider : LineMarkerProviderDescriptor() {
override fun getName() = "Minecraft Plugin line marker"
override fun getLineMarkerInfo(element: PsiElement): LineMarkerInfo<*>? {
if (!element.isValid) {
return null
}
val module = ModuleUtilCore.findModuleForPsiElement(element) ?: return null
val instance = MinecraftFacet.getInstance(module) ?: return null
if (!instance.shouldShowPluginIcon(element)) {
return null
}
return LineMarkerInfo(
element,
element.textRange,
GeneralAssets.PLUGIN,
FunctionUtil.nullConstant(),
null,
GutterIconRenderer.Alignment.RIGHT,
{ "minecraft plugin entry point indicator" }
)
}
}