Хитрость в том, что: SearchMatch
дает вам SearchRange
, что означает, что несколько строк могут быть потенциально включены в этот диапазон.
Решение состоит в том, чтобы проанализировать Документ , связанный с объектом, возвращенным SearchMatch, чтобы вычислить эти номера строк.
Соответствующий метод getLineOfOffset(int offset)
У вас есть здесь пример , в случае, когда объектом является IMember
ISourceRange range = member.getSourceRange();
if (range == null){
return null;
}
IBuffer buf = null;
ISourceModule compilationUnit = member.getSourceModule();
if (!compilationUnit.isConsistent()) {
return null;
}
buf = compilationUnit.getBuffer();
final int start = range.getOffset();
String contents = buf.getContents();
Document doc = new Document(contents);
try {
int line = doc.getLineOfOffset(start);
...