我正在尝试覆盖Eclipse中的现有命令处理程序。具体来说,我想覆盖Run命令(org.eclipse.debug.ui.commands.RunLast),以便它在启动新进程之前首先终止上一次启动的进程。我读了this article,编写了一个处理程序并将其与Run命令相关联:
<extension point="org.eclipse.ui.handlers">
<handler commandId="org.eclipse.debug.ui.commands.RunLast"
class="net.anggo.tnr.TnRHandler">
<activeWhen>
<with variable="activeContexts">
<iterate operator="or">
<equals value="net.anggo.tnr.TnREnabled"></equals>
</iterate>
</with>
</activeWhen>
</handler>
</extension>
我添加了activeWhen
子句,以便新处理程序的优先级高于默认处理程序。我在IStartup
中激活了TnREnabled上下文。但是,当我点击Run菜单项时,会运行默认处理程序。我假设这是因为默认处理程序的优先级仍然高于新处理程序的优先级。所以我的问题是......
如何计算默认处理程序的优先级,以便将其与新处理程序的优先级进行比较?我的假设是否正确,这是一个优先问题?有没有诊断方法,我可以看到问题是什么,例如插件间谍?我很感激任何帮助。