【发布时间】:2019-08-20 15:21:02
【问题描述】:
我正在编写一个小插件来将 Eclipse 文本编辑器的插入符号位置移动到选定块的另一侧。问题是我找不到一个很好的方法来发现选择是从左到右还是从右到左。
我知道有以下选择:
- 以某种方式使用 CarretListener。这似乎没有必要,我不想这样做。
- 抓住底层
StyledText并将选择与插入符号位置进行比较。似乎打破了抽象,因为我必须知道编辑器是如何实现的。另一个缺点是您必须在文本查看器上使用widgetOffset2ModelOffset方法来调整位置。
我不能从我的ITextEditor 或ISelectionProvider 或其他东西中获得插入符号的位置吗?
这是我的代码:
public class SwapCursorSelectionHandler extends AbstractHandler {
public Object execute( ExecutionEvent event )
{
ITextEditor editor;
try {
editor = (ITextEditor) HandlerUtil.getActivePartChecked( event );
} catch ( ExecutionException exc ) {
throw new RuntimeException( exc );
}
ITextSelection sel = (ITextSelection) editor.getSelectionProvider().getSelection();
// How to find out if sel is left-to-right or right-to-left?!
editor.selectAndReveal( ... );
return null;
}
}
更新:如果不使用StyledText,似乎没有办法做到这一点。我认为这很奇怪,我考虑放置一个错误报告,建议应将选择方向信息添加到ITextSelection。在我这样做之前,我会很有趣地了解 SO 这里的人们对这个提议的看法。
【问题讨论】: