Eclipse 4.2 Juno CSS

9
我试图通过CSS样式表简单更新Eclipse Juno 4.2的外观。我看了几个教程和一个stackoverflow问题: 我安装了CSS spy tool,但这只能让我进行临时更改。我进入了org.eclipse.platform_4.2.0.v201206081400插件文件夹,并对plugin.xml进行了修改,但是我在那里做出的任何更改都没有任何效果(即使重启后)。
如何创建并应用一个新的主题,而不需要创建、编译和安装整个Eclipse插件项目到本地环境?或者,更好的方法是,我可以修改现有的主题吗?

1
据我所知,在4.0及以上版本中,您需要使用插件才能实现此功能。请参见:http://www.vogella.com/blog/2012/07/11/eclipse-4-is-beautiful-create-your-own-eclipse-4-theme/和https://dev59.com/ZGw05IYBdhLWcg3w72M0 - Justin Skiles
2个回答

15

以下是我如何使其工作的方法。

使用插件

我已经下载了Eclipse UI Themes插件,如此处所述(直接链接到存档)。但是,我将其解压缩到plugins目录中,而不是dropins目录中。同时,我更改了其权限,以允许每个人修改其文件。

此时,您拥有:

plugins/com.github.eclipsecolortheme.themes_1.0.0.201207121019/
├── com
│   └── github
│       └── eclipsecolortheme
│           └── themes
│               └── Activator.class
├── META-INF
│   └── MANIFEST.MF
├── plugin.xml
└── themes
    └── css
        └── juno.css

juno.css文件是您需要的。启动Eclipse后,该主题将在外观->Dark Juno下可用。

无需插件

在查看plugin.xml之后,我有了一个想法,可以在不使用任何插件的情况下创建新主题。

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.e4.ui.css.swt.theme">
      <theme
            basestylesheeturi="themes/css/juno.css"
            id="com.github.eclipsecolortheme.themes.darkjuno"
            label="Dark Juno">
      </theme>
   </extension>
</plugin>

您可以将org.eclipse.e4.ui.css.swt.theme扩展点添加到现有插件中,比如org.eclipse.platform_4.2.0.v201206081400。此外,它的plugin.xml已经具有此扩展点,您需要做的唯一事情就是添加适当的theme。请注意,它必须具有唯一的id

      <theme
            basestylesheeturi="css/my_theme.css"
            id="org.eclipse.e4.ui.css.theme.my_theme"
            label="My Theme Name">
      </theme>

一个新的CSS文件可以放置在css目录中,该目录已包含默认的主题集。
org.eclipse.platform_4.2.0.v201206081400/
├── ...
├── css
│   ├── e4_basestyle.css
│   ├── e4_classic_win7.css
│   ├── e4_classic_winxp.css
│   ├── e4_default.css
│   ├── e4_default_gtk.css
│   └── ...
├── images
│   ├── gtkGrey.png
│   ├── gtkHandleDark.png
│   ├── gtkHandle.png
│   ├── gtkTSFrameDark.png
│   ├── gtkTSFrame.png
│   └── ...
├── META-INF
│   ├── eclipse.inf
│   ├── ECLIPSE_.RSA
│   ├── ECLIPSE_.SF
│   └── MANIFEST.MF
├── platform.jar
├── plugin.properties
├── plugin.xml
└── ...
使用-clean选项重新启动Eclipse后,您将在所有主题列表中看到一个新创建的项目: The newly registered theme

对于我的安装来说,似乎只有在Eclipse重新启动(文件->重启或手动退出和启动)时才能应用CSS更改。

我注意到的唯一奇怪的行为是,来自~/.e4css目录的CSS文件(如果存在)会覆盖插件目录中的文件。我不确定它来自哪里,但我可以安全地删除其中的任何文件。我也不知道这个目录是否存在于非Linux系统上,但如果存在,我想它应该位于用户的主目录或文档目录中的某个位置。

更新2

我刚刚尝试从头开始添加一个新主题,并注意到上面的XML中有一个小错误。为了正确注册一个新主题,它必须具有唯一的id属性。否则,您将收到一个错误:

java.lang.IllegalArgumentException: A theme with the id 'org.eclipse.e4.ui.css.theme.e4_default' is already registered
    at org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngine.registerTheme(ThemeEngine.java:186)
    ...

看来我之前说只要重新启动Eclipse以注册新主题是不正确的。然而,eclipse -clean可以解决问题。


@altCognito,不客气。关于ID的唯一性:我也注意到了,但是所有具有相同ID的主题都指定了不同的“os”属性。很可能是根据底层系统加载适当的主题。 - Eldar Abusalimov
我在Xubuntu 12.04上尝试了“无插件”方法。我将主题添加到扩展点(并将basestylesheeturi更改为“css / juno.css”),将juno.css文件复制到eclipse中的${ECLIPSE_HOME} / plugins / org.eclipse.platform_4.2.2.v201302041200 / css,但当我选择“Dark Juno”时,它不是暗色的。我错过了什么? - Markus N.
@Markus 你试过 eclipse -clean 吗? - Eldar Abusalimov
是的,我做了。抱歉,在我之前的帖子中忘记提到这一点了。 - Markus N.
@Markus,很抱歉我现在无法回忆起所有的问题,也没有安装Eclipse(我转用Sublime Text了)。对不起。=( - Eldar Abusalimov
显示剩余5条评论

3
在修改css文件后,请使用命令行启动eclipse,并带上-clean选项。否则更改不会反映出来。(或者可以查看http://eclipsecolorthemes.org/)

我使用了Eclipse的颜色主题,但是可能我错过了什么?它只影响编辑器吗? - cgp
在编辑了org.eclipse.platform中的CSS文件后,没有使用“-clean”启动是否有效?对我来说有效。不知道颜色主题只是编辑器而已。 - codejammer
清理操作会重新加载CSS文件。我得尝试一下上面提到的一些方法,但我认为“-clean”是我没有看到任何更改的关键。 - cgp
@altCognito 我在我的回答中添加了一些关于应用更改的话语。在我的情况下,只需重新启动Eclipse即可。 - Eldar Abusalimov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接