0

我有一个插件(eclipse),它将在打开的 java 类中的当前光标位置添加一个代码片段。我使用以下代码获取光标位置:

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

You can try calling editor.getAdapter(ITextEditor.class) and then casting it to a StyledText then get the cursor position from that StyledText#getCaretOffset().

See some other link also :
How to get cursor position in an eclipse TextEditor
Eclipse-plugin how to get current text editor corsor position

于 2012-07-25T07:57:03.703 回答