如何在 Eclipse TextEditor 中获取光标位置

Posted

技术标签:

【中文标题】如何在 Eclipse TextEditor 中获取光标位置【英文标题】:How to get cursor position in an eclipse TextEditor 【发布时间】:2011-07-26 09:14:07 【问题描述】:

我一直在尝试获取 jface TextEditor 中光标位置的行号和列号。我尝试了函数 getCursorPosition()。但是在打印时它只显示一个“?”。请注意,我需要编辑器中的行号和列号,而不是相对于屏幕。 我看到有一个函数JTextArea.getCaretPosition。但我不知道如何将文本编辑器转换为 JTextArea。 还有,光标所在的单词能读出来吗?

谢谢

【问题讨论】:

【参考方案1】:

从文本编辑器中,您可以获得文档、文档提供者和选择。这将使您能够访问当前的光标偏移量。

ITextEditor editor = (ITextEditor) editorPart
        .getAdapter(ITextEditor.class);
IDocumentProvider provider = editor.getDocumentProvider();
IDocument document = provider.getDocument(editorPart
        .getEditorInput());
ITextSelection textSelection = (ITextSelection) editorPart
        .getSite().getSelectionProvider().getSelection();
int offset = textSelection.getOffset();
int lineNumber = document.getLineOfOffset(offset);

IDocument 提供了其他方法来获取行的开头(您可以从中计算列)。

欲了解更多信息,请参阅http://wiki.eclipse.org/The_Official_Eclipse_FAQs#Text_Editors

【讨论】:

错误,因为没有检查转换 请注意,这不会获得实际插入符号的位置,而是选择的位置。插入符号可以位于所选内容的任一端。 如果不在编辑器中选择一个部分,我就不能真正获得职位吗? AFAIK getSelection() 返回数据结构,当光标在编辑器中以及有选择时有效 getSelection() 提供最后的选择位置。如果你清除它并将光标移动到其他地方,你仍然会得到与光标完全无关的最后一个选择位置。

以上是关于如何在 Eclipse TextEditor 中获取光标位置的主要内容,如果未能解决你的问题,请参考以下文章

如何修改Eclipse为黑色主题

eclipse中tab步长的修改

设置:ftl模板文件编辑器

如何在 SwiftUI TextEditor 中获取用户选择的文本

SwiftUI TextEditor 如何隐藏键盘

如何在 MacOS 的 SwiftUI 中向 TextEditor 添加焦点环