如何在Eclipse 4中覆盖父方案的键绑定?

时间:2012-11-28 12:39:40

标签: eclipse keyboard-shortcuts

我正在升级RCP应用程序以使用Eclipse 4.2.1。我遇到的一个问题是我的自定义方案中的键绑定不再覆盖Eclipse键绑定。

我在示例插件项目中重现了该问题。这是通过跟随,然后调整this tutorial创建的。我无法附加项目本身,因此只包含了plugin.xml文件的内容。

我有自己的方案,扩展了默认方案:

  <scheme
        id="test.MyScheme"
        name="My Scheme"
        parentId="org.eclipse.ui.defaultAcceleratorConfiguration">
  </scheme>

我有一个带键绑定的命令 Ctrl + N

  <key
        commandId="test.MyCommand"
        contextId="org.eclipse.ui.contexts.window"
        schemeId="test.MyScheme"
        sequence="M1+N">
  </key>

在Eclipse 3.7.2中,按 Ctrl + N 将运行我的命令。

在Eclipse 4.2.1中,它会弹出一个框,要求我在运行命令和启动“新建”向导之间进行选择。我需要做些什么才能恢复原来的行为?

下面的plugin.xml的完整内容。

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>

   <extension
         id="application"
         point="org.eclipse.core.runtime.applications">
      <application>
         <run
               class="test.Application">
         </run>
      </application>
   </extension>
   <extension
         point="org.eclipse.ui.perspectives">
      <perspective
            name="RCP Perspective"
            class="test.Perspective"
            id="test.perspective">
      </perspective>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            defaultHandler="test.MyCommandHandler"
            id="test.MyCommand"
            name="My Command">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="menu:org.eclipse.ui.main.menu">
         <menu
               id="fileMenu"
               label="File">
            <command
                  commandId="test.MyCommand"
                  label="My Command"
                  style="push">
            </command>
         </menu>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.bindings">
      <key
            commandId="test.MyCommand"
            contextId="org.eclipse.ui.contexts.window"
            schemeId="test.MyScheme"
            sequence="M1+N">
      </key>
      <scheme
            id="test.MyScheme"
            name="My Scheme"
            parentId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </scheme>
   </extension>
   <extension
         id="product"
         point="org.eclipse.core.runtime.products">
      <product
            application="test.application"
            name="My Product">
         <property
               name="appName"
               value="My Product">
         </property>
         <property
               name="preferenceCustomization"
               value="plugin_customization.ini">
         </property>
      </product>
   </extension>

</plugin>

2 个答案:

答案 0 :(得分:0)

旧机制似乎不起作用,但还有另一种方法。

  1. 添加扩展名org.eclipse.e4.workbench.model
  2. 添加处理器片段
  3. 查找违规密钥绑定:MAppliction-&gt; MBindingTable-&gt; MKeyBinding
  4. 从绑定表中删除键绑定

答案 1 :(得分:0)

plugin.xml旁边的插件目录中可能缺少以下文件:

plugin_customization.ini

其内容应为:

org.eclipse.ui/KEY_CONFIGURATION_ID=test.MyScheme

另请参阅此tutorialchapter here