在我自己的 eclipse 编辑器中折叠一些先前的行时获取当前行中的文本
Get text in current line when some previous lines was collapsed in my own eclipse 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);
}
但是StyledText
的方法getText
在折叠之前的一些行时不起作用。
另一个问题是我正在尝试使用 StyledText.setCaretOffset(int offset)
移动光标,但在折叠前几行时它也不起作用。
使用 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
。
我正在尝试获取鼠标光标当前行的文本开头。
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);
}
但是StyledText
的方法getText
在折叠之前的一些行时不起作用。
另一个问题是我正在尝试使用 StyledText.setCaretOffset(int offset)
移动光标,但在折叠前几行时它也不起作用。
使用 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
。