如何解决从当前用户选择的主题中获取颜色
我开始用 Java 制作一个 IntelliJ 插件,想知道是否有办法以编程方式从 当前 IDE 主题,例如获取品红色终端前景色。
我的目标是从用户安装的配色方案中获得精确的颜色。例如,我使用插件商店中的 Atom One Dark
主题。
我希望获取当前选定 ColorScheme 中的颜色,主题中的所有颜色都按以下格式存储到 .icls
文件中:
<option name="CONSOLE_ERROR_OUTPUT">
<value>
<option name="FOREGROUND" value="e06c75" />
</value>
</option>
感谢您的帮助,祝您有美好的一天。
解决方法
你可以检查 class: UIUtil 例如 UIUtil.getTreeTextBackground() 它应该返回 Color
,非常感谢你们带领我走向正确的方向! 我找到了我正在寻找的东西。 你可以在这篇文章的底部获得我收集配色方案颜色的功能。
解决方案是:
ColorSchemes 文件或 .icls
文件如下所示:
<scheme name="ThemeName" version="142" parent_scheme="Darcula">
<metaInfo>
</metaInfo>
<colors>
<option name="ADDED_LINES_COLOR" value="98c379" />
</colors>
<attributes>
<option name="ABSTRACT_CLASS_NAME_ATTRIBUTES">
<value>
<option name="FOREGROUND" value="e6c07b" />
</value>
</option>
</attributes>
</scheme>
您可以通过编程方式获取这些颜色,在 Java 中(抱歉我不知道如何在 Kotlin 中实现),您可以通过执行以下操作获取当前的配色方案:
EditorColorsScheme colorsScheme = EditorColorsManager.getInstance().getSchemeForCurrentUITheme();
或者您可以通过执行以下操作获得默认配色方案:
EditorColorsScheme colorsScheme = = EditorColorsManager.getInstance().getScheme(EditorColorsManager.getInstance().getAllSchemes()[0].getName());
从中我制作了一个简单的函数,可以通过名称(属性和颜色)获取特定颜色。如果给定的名称与
这是功能:
public Color fetchIJColor(String name,boolean isBackground){
Color c = colorsScheme.getAttributes(TextAttributesKey.createTextAttributesKey(name)).getForegroundColor();
if(c == null || isBackground){
c = colorsScheme.getAttributes(TextAttributesKey.createTextAttributesKey(name)).getBackgroundColor();
}
if(c == null){
c = colorsScheme.getColor(ColorKey.createColorKey(name));
}
return c;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。