在我自己的eclipse编辑器中折叠某些前一行时,获取当前行中的文本

时间:2015-02-04 13:06:02

标签: java eclipse eclipse-plugin swt text-editor

我试图将当前行的文本开头到鼠标光标。

ITextSelection textSelection= (ITextSelection) textEditor.getSelectionProvider().getSelection();
IRegion lineInfo = null;
int offsetCurrentCursor = textSelection.getOffset();
int offsetLine; // THIS IS THE VALUE THAT I WANT
try {
    int lineNumber = document.getLineOfOffset(offsetCurrentCursor);
    lineInfo = document.getLineInformation(lineNumber);
    offsetLine = lineInfo.getOffset();
} catch (BadLocationException e) {
}

StyledText styledText = (StyledText) textEditor.getAdapter(Control.class);
String currentText = "";
if (offsetLine <= offsetCurrentCursor - 1) {
    currentText = styledText.getText(offsetLine, offsetCurrentCursor - 1);
}

但是,getText的方法StyledText在前一行被折叠时无效。

另一个问题是我试图使用StyledText.setCaretOffset(int offset)移动光标,而且当前一行被折叠时它也不起作用。

1 个答案:

答案 0 :(得分:1)

使用IDocument

public String get(int offset, int length)

获取文本的方法。

要从模型(文档)偏移量到StyledText偏移量,AbstractTextViewer使用:

protected static int modelOffset2WidgetOffset(ISourceViewer viewer, int modelOffset) {
    if (viewer instanceof ITextViewerExtension5) {
        ITextViewerExtension5 extension = (ITextViewerExtension5) viewer;
        return extension.modelOffset2WidgetOffset(modelOffset);
    }
    return modelOffset - viewer.getVisibleRegion().getOffset();
}

要使用此功能,您需要访问文本编辑器ISourceViewer