Skip to content

Instantly share code, notes, and snippets.

@hsz
Created June 24, 2026 12:09
Show Gist options
  • Select an option

  • Save hsz/93f5f2bab84fc4747b7b4c4ecdd230a0 to your computer and use it in GitHub Desktop.

Select an option

Save hsz/93f5f2bab84fc4747b7b4c4ecdd230a0 to your computer and use it in GitHub Desktop.

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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment