In plugin.xml add:
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<usageFilteringRuleProvider implementation="org.jetbrains.plugins.template.MyUsageFilteringRuleProvider"/>
</extensions>
<actions>
<action id="myAction"
icon="com.intellij.execution.testframework.sm.runner.ui.SMPoolOfTestIcons.FAILED_E_ICON"
class="com.intellij.openapi.actionSystem.EmptyAction"/>
</actions>
</idea-plugin>And the MyUsageFilteringRuleProvider implementation:
package org.jetbrains.plugins.template
import com.intellij.openapi.project.Project
import com.intellij.usages.Usage
import com.intellij.usages.rules.UsageFilteringRule
import com.intellij.usages.rules.UsageFilteringRuleProvider
import org.jetbrains.annotations.Unmodifiable
class MyUsageFilteringRuleProvider : UsageFilteringRuleProvider {
override fun getApplicableRules(project: Project): @Unmodifiable Collection<out UsageFilteringRule> {
return listOf(MyUsageFilteringRule())
}
}
private class MyUsageFilteringRule : UsageFilteringRule {
override fun getRuleId() = "myRule"
override fun getActionId() = "myAction"
override fun isVisible(usage: Usage) = true
}