我有一个插件(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();
是否可以像在编辑器中一样获取光标的位置(行和列),即使是否保存了类。
答案 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