我已经实现了一个内容辅助提案计算机作为eclipse插件(使用org.eclipse.jdt.ui.javaCompletionProposalComputer
)。我现在想将它绑定到它自己的密钥组合(否则自定义提案将显示在提案列表的底部)。
我尝试通过扩展org.eclipse.ui.bindings
来实现这一点,但这需要定义org.eclipse.ui.commands
、handler
,以及可能更多的东西。
似乎已经为我的自定义内容辅助计算机创建了一个命令,因为它出现在密钥绑定菜单下(在Windows->Preferences->Keys
中),但我不知道这个命令的id是什么。如果该命令是在运行时创建的,那么我甚至可以在plugin.xml中引用它的commandId
吗?
还有其他更简单的方法吗?
在尝试了许多不同的实现方法后,我发现:
1) 与自定义完成建议计算机关联的命令是org.eclipse.jdt.ui.specific_content_assist.command
,它在org.eclipse.jdt.ui
插件(由eclipse提供)的plugin.xml
中定义。
2) 这是一个参数化命令,这意味着它采用了一个带有id=org.eclipse.jdt.ui.specific_content_assist.category_id
的commandParameter。此参数的值应该是javaCompletionProposalComputer
的proposalCategory
的id。
以下是我如何定义自定义密钥绑定的示例:
<extension point="org.eclipse.ui.bindings">
<key
sequence="CTRL+ALT+SPACE"
contextId="org.eclipse.ui.contexts.dialogAndWindow"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
commandId="org.eclipse.jdt.ui.specific_content_assist.command">
<parameter
id="org.eclipse.jdt.ui.specific_content_assist.category_id"
value="YOUR_PROPOSAL_CATEGORY_GOES_HERE"/>
</key>
</extension>
无需定义新的命令或处理程序!