我正在编写一个小插件来将 Eclipse 文本编辑器的插入符号位置移动到选定块的另一侧。问题是我找不到一个很好的方法来发现选择是从左到右还是从右到左。
我知道有这些选择:
- 以某种方式使用 CarretListener。这似乎没有必要,我不想这样做。
- 抓住底层
StyledText
并将选择与插入符号位置进行比较。似乎打破了抽象,因为我必须知道编辑器是如何实现的。另一个缺点是您必须使用widgetOffset2ModelOffset
文本查看器上的方法来调整位置。
我不能从我的ITextEditor
orISelectionProvider
或其他东西中获得插入符号的位置吗?
这是我的代码:
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 这里的人们对这个提案的看法会很有趣。