从打开的编辑器中获取光标的位置

时间:2012-07-25 07:32:59

标签: java eclipse-plugin

我有一个插件(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();

是否可以像在编辑器中一样获取光标的位置(行和列),即使是否保存了类。

1 个答案:

答案 0 :(得分:2)

您可以尝试调用editor.getAdapter(ITextEditor.class)然后将其强制转换 然后从StyledText#getCaretOffset()获取光标位置到StyledText。

另见其他链接:
How to get cursor position in an eclipse TextEditor
Eclipse-plugin how to get current text editor corsor position