Eclipse テキスト エディターのキャレット位置を選択したブロックの反対側に移動する小さなプラグインを作成しています。問題は、選択が左から右か右から左かを発見する良い方法が見つからないことです。
これらの代替手段があることを理解しています:
- 何らかの方法で CarretListener を使用します。それは不必要に思えますし、したくありません。
- 下敷きを手に取り
StyledText
、選択範囲をキャレットの位置と比較します。エディターがどのように実装されているかを知る必要があるため、抽象化が壊れているようです。もう 1 つの欠点はwidgetOffset2ModelOffset
、テキスト ビューアのメソッドを使用して位置を調整する必要があることです。
ITextEditor
or ISelectionProvider
or somethingからキャレットの位置を取得できませんか?
これが私のコードです:
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 の人々の意見を聞くことは興味深いでしょう。