微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ElementColorProvider-确定PSIElement或引用的类

如何解决ElementColorProvider-确定PSIElement或引用的类

我正在基于现有的自定义框架添加颜色预览。我有确定颜色正常工作和GutterIcons是否正确应用的逻辑,但是我是Intellij SDK的新手,可以就如何检查PsiElement是否至少满足以下两个条件之一使用一些指导:

  1. 该元素是给定类型的类或派生类(例如Kotlin中的Bar类)
  2. 正在调用作为给定类型的类或派生类的变量(例如Kotlin中的Bar类)

这很像查找用法

谢谢!

internal class FooColorProvider : ElementColorProvider {

    override fun getColorFrom(element: PsiElement): Color? {
        if (element !is LeafPsiElement && element.firstChild != null) {
            return null
        }


        if (element.elementType.toString() != IDENTIFIER) {
            return null
        }


        //todo@patches - figure out how to determine if this is a reference to the specified class or the specified class itself

        return getColorForElement(element)
    }

    override fun setColorTo(element: PsiElement,color: Color) {
        if (element !is LeafPsiElement && element.firstChild != null) {
            return
        }
        NavigationGutterIconBuilder.create(ColorIcon(GUTTER_ICON_SIZE,color))
            .setTarget(element)
    }

    /*
     * Private functions
     */

    private fun getColorForElement(element: PsiElement): Color? {
        // Omitted for brevity
        return null
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。