• IDEA插件开发(25)--Color Scheme Management


    前言
    IntelliJ IDEA 12.1 中的配色方案管理进行了更改,以简化方案设计人员的工作,并使方案对于不同的编程语言看起来同样好,即使不是专门为这些语言设计的。以前的语言插件使用不兼容的固定默认颜色,例如,与深色方案。

    新实现允许指定对链接到方案但不链接到任何特定语言的一组标准文本属性的依赖关系。如果需要,方案设计者仍然可以设置特定于语言的属性,但它是可选的。新配色方案有一个新的.icls (Idea CoLor Scheme) 扩展名,以避免混淆与旧平台版本的兼容性问题:如果只设置标准属性,12.1 之前的版本将不会使用它们,从而导致不同的突出显示颜色。

    插件开发者
    文本属性键依赖
    指定突出显示文本属性的最简单和最好的方法是指定对以下定义的标准键之一的依赖DefaultLanguageHighlighterColors:

    static final TextAttributesKey MY_KEYWORD =
    TextAttributesKey.createTextAttributesKey(“MY_KEYWORD”, DefaultLanguageHighlighterColors.KEYWORD);
    颜色方案管理器将首先搜索MY_KEYWORD键指定的文本属性。如果这些没有明确定义或者所有属性都是空的(未定义),它将使用DEFAULT_KEYWORD键搜索它们。如果两者都没有定义,它将进一步回退到默认方案。

    文本属性键可以链接,例如,您可以将另一个键定义为:

    static final TextAttributesKey MY_PREDEFINED_SYMBOL =
    TextAttributesKey.createTextAttributesKey(“MY_PREDEFINED_SYMBOL”, MY_KEYWORD);
    规则是一样的:如果 text 属性无法通过MY_PREDEFINED_SYMBOLkey 找到或为空,配色方案管理器将搜索MY_KEYWORD,如果未找到(为空)将进一步查找DEFAULT_KEYWORD。

    强烈建议不要使用固定的默认属性。

    如果您不确定要使用哪个基本键,最好选择最通用的一个,例如DefaultLanguageHighlighterColors.IDENTIFIER. 请记住,使用固定的默认属性将迫使方案设计者明确设置此元素的颜色。否则,其默认颜色可能会在视觉上与配色方案发生冲突。如果方案设计者没有语言插件,他根本无法解决这个问题。

    为特定方案提供属性
    语言插件可以为“Default”和“Darcula”捆绑方案提供默认文本属性,或者如果方案名称已知,则基本上可以为任何其他方案提供默认文本属性。这可以在plugin.xml中通过添加一个com.intellij.additionalTextAttributes扩展名来完成,该扩展名提供包含所需文本属性的文件名,例如:

    ... ... 它告诉 IDE必须在 colorSchemes 下的资源中搜索文件MyLangDefault.xml。请注意,路径不应以反斜杠开头,并且其完全限定名称(在我们的示例中为 colorSchemes/MyLangDefault.xml)必须是唯一的,以避免不同提供者之间的命名冲突。因此,强烈建议添加语言前缀,例如“MyLang”。

    该文件本身是从具有所需属性的配色方案中提取的,例如:

    注意:当通过“另存为...”复制方案时,其所有属性,包括在扩展中定义的属性,都将被复制到新方案中。方案设计者可能需要检查这些复制的属性是否与他/她的配色方案冲突,尽管在这种情况下,插件已安装,并且不会引起任何问题。无论如何,如果可能的话,尽量坚持一个简单的键依赖(注意它对“Darcula”很有效)并且只在必要时提供显式属性。

    方案设计师
    创建新方案的典型工作流程
    选择将用作基础的方案,例如“默认”

    单击“另存为…”并为新方案命名

    首先在General部分设置属性,然后使用Language Defaults

    检查所有语言并在必要时调整特定于语言的文本属性。在大多数情况下,这可能不需要,但有两种情况可能需要额外的操作:

    有一个过时的插件不使用新的配色方案管理 API,因此不使用“语言默认值”中设置的属性。理想情况下,必须为语言插件创建一个报告,以便其作者最终修复它。

    插件有意设置一些默认颜色,如果方案是从默认颜色创建的,则颜色将复制到新创建的方案中。这可以通过重置所有属性以恢复从语言默认值(见下文)的继承或通过设置适合该方案的其他颜色来解决。第一种方式更可取,因为以后更改配色方案所需的工作量更少。

    文本属性继承
    对于许多没有任何值的语言文本属性,会有一行指示属性是从特定部分/属性继承的,例如“关键字(语言默认值)”。如果一个元素设置了任何属性,则仅使用这些属性。基本元素的所有属性都被忽略。要恢复继承,请取消选中所有框,然后单击Apply。

  • 相关阅读:
    C#构造函数
    电磁兼容试验数据的单位转换 笔记
    Flask框架——基于Celery的后台任务
    (0 , _login.default) is not a function ES6,小程序浮点数精度问题
    工业设计里的四个细节你知道吗?
    对NotNull字段插入Null值有啥现象?
    基于JAVA医患辅助系统计算机毕业设计源码+系统+数据库+lw文档+部署
    [THUPC2022初赛]搬砖
    使用Nexus搭建maven私服的教程
    Golang单元测试举例
  • 原文地址:https://blog.csdn.net/jiangguilong2000/article/details/126062214