хитрость заключается в том: SearchMatch
дать вам SearchRange
, то есть несколько линий потенциально могут быть включены в этот диапазон.
Решение состоит в анализе Document, связанного с объектом, возвращаемым SearchMatch, для вычисления этих номеров строк.
Соответствующий метод getLineOfOffset(int offset)
Вы here an example, в том случае, когда объект является 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);
...
привет, нет класса, как ISourceModule. ..... не удалось найти в документах – Steven
@Nishan: 'ISourceModule' поставляется с инструментарием динамических языков Eclipse (DLTK). Вам нужно получить документ, связанный с элементом, найденным 'SearchMatch' другим способом. – VonC
@ Нишан: См. Слайд 16 из http://www.eclipsecon.org/2005/presentations/EclipseCON2005_Tutorial29.pdf для возможного пути. – VonC