Eclipse plugin 如何使用E4(活动_选择)捕获零长度ITextSelections?

Eclipse plugin 如何使用E4(活动_选择)捕获零长度ITextSelections?,eclipse-plugin,eclipse-rcp,e4,Eclipse Plugin,Eclipse Rcp,E4,我正在尝试将现有的Eclipse插件移植到E4编程模型,但我正在努力进行从列表到文本选择的更改。旧的实现使用ISelectionService#addPostSelectionListener注册一个postISelectionListener。这导致对selectionChanged的调用,即使对于长度为零的ITextSelections(即纯光标移动) 我尝试使用E4的@Inject实现相同的功能,不幸的是,只捕获了“正确”的文本选择,即具有正长度的文本选择: @Inject @Option

我正在尝试将现有的Eclipse插件移植到E4编程模型,但我正在努力进行从列表到文本选择的更改。旧的实现使用
ISelectionService#addPostSelectionListener
注册一个post
ISelectionListener
。这导致对
selectionChanged
的调用,即使对于长度为零的ITextSelections(即纯光标移动)

我尝试使用E4的
@Inject
实现相同的功能,不幸的是,只捕获了“正确”的文本选择,即具有正长度的文本选择:

@Inject
@Optional
public void onCursorMovement(
        @Named(IServiceConstants.ACTIVE_SELECTION) ITextSelection selection) {
   // selection.getLength() > 0
}
如何使用
ISelectionService#addPostSelectionListener
,尽可能地监听(使用
@Inject
)每个光标移动


(我知道我可以直接使用
ESelectionService#addPostSelectionListener
来实现这一点,但我更喜欢使用
@Inject
样式。)

您是否尝试过直接使用
ESelectionService
?实际生成选择的是什么?您是对的:
ESelectionServer#addSelectionListener
的行为与
活动选择
一致,也与E3的
ISelectionService#addSelectionListener
一致。我犯的错误是旧代码使用了
ISelectionService#addPostSelectionListener
。因此,问题变成了如何在E4中注入“主动后选择”,而不是
主动后选择
。有什么建议吗,@greg-449?我认为@Inject不支持后期选择,您可能必须使用ESelectionService addPostSelectionListener。我注意到一些东西被放入
IEclipseContext
中,其键为
org.eclipse.ui.output.postSelection
,但是,将它与名为的
@Inject
一起使用对我来说不起作用。