0

開いている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();

クラスが保存されているかどうかにかかわらず、エディターとまったく同じようにカーソルの位置 (行と列) を取得する方法はありますか?

4

1 に答える 1

2

editor.getAdapter(ITextEditor.class)を呼び出して、それをStyledTextにキャストし、そのStyledText#getCaretOffset()からカーソル位置を取得してみてください。

他のリンクも参照してください: EclipseTextEditorEclipse
でカーソル位置を取得する
方法-プラグイン現在のテキストエディタのcorsor位置を取得する方法

于 2012-07-25T07:57:03.703 に答える