開いているJavaクラスの現在のカーソル位置にコードスニペットを追加するプラグイン(Eclipse)があります。以下のコードを使用してカーソル位置を取得します。
final ITextSelection selection = (ITextSelection) editorPart.getEditorSite().getSelectionProvider().getSelection();
final ITextEditor editor = (ITextEditor) editorPart.getAdapter(ITextEditor.class);
final IDocumentProvider documentProvider = editor.getDocumentProvider();
final IDocument document = documentProvider.getDocument(editor.getEditorInput());
final String finalSnippet = snippet.trim();
document.replace(selection.getOffset(), 0, finalSnippet);
保存した Java クラスからプラグインを呼び出すと、カーソルの正しい位置が得られます。しかし、Java クラスに変更を加え、Java クラスを保存せずにプラグインを呼び出すと、カーソル位置が正しくありません。のように見えます。上記のコードは、Java クラスの保存されたコピーを考慮し、エディターで開いている現在のコピーではなく位置を計算します。
以下のコードでエディター オブジェクトを取得します。
editorPart = this.window.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
クラスが保存されているかどうかにかかわらず、エディターとまったく同じようにカーソルの位置 (行と列) を取得する方法はありますか?