Eclipse从光标/插入符下选择文本并返回它

时间:2015-08-17 05:45:55

标签: java eclipse eclipse-plugin editor

使用eclipse插件,并为我的编辑器做一些功能,我有这个方法从编辑器中选择突出显示的文本并将其作为字符串返回:

public String getCurrentSelection() {
    IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
            .getActivePage().getActiveEditor();
    if (part instanceof ITextEditor) {
        final ITextEditor editor = (ITextEditor) part;
        ISelection sel = editor.getSelectionProvider().getSelection();
        if (sel instanceof TextSelection) {
            ITextSelection textSel = (ITextSelection) sel;
            return textSel.getText();
        }
    }
    return null;
}

但是现在我想要的是,如果我将光标放在一个单词中,它将选择整个单词并将其作为字符串返回。

除了一个复杂的算法,我解析整个编辑器,获取光标位置,搜索左右空间等等,是否有更简单的方法来获取文本,光标放在哪里,作为字符串?

1 个答案:

答案 0 :(得分:0)

我设法得到了一些工作。对于遇到相同问题的任何人,以下代码(至少对我而言)有效:

private String getTextFromCursor() {
    IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
            .getActivePage().getActiveEditor();
    TextEditor editor = null;

    if (part instanceof TextEditor) {
        editor = (TextEditor) part;
    }

    if (editor == null) {
        return "";
    }

    StyledText text = (StyledText) editor.getAdapter(Control.class);

    int caretOffset = text.getCaretOffset();

    IDocumentProvider dp = editor.getDocumentProvider();
    IDocument doc = dp.getDocument(editor.getEditorInput());

    IRegion findWord = CWordFinder.findWord(doc, caretOffset);
    String text2 = "";
    if (findWord.getLength() != 0)
        text2 = text.getText(findWord.getOffset(), findWord.getOffset()
                + findWord.getLength() - 1);
    return text2;
}