Определение смещения между номерами строк? - PullRequest
4 голосов
/ 19 марта 2010

Мне нужно определить, находится ли данный выбор между начальной и конечной линиями. У меня есть ILineRange и заданное смещение в области просмотра затмения. (Мне нужно знать, если выбор (из удаленной стороны) был сделан в текущем окне просмотра локального пользователя. К сожалению, я не могу получить ILineRange из выбора. Я должен полагаться на getOffset () и getLength () ...
У кого-нибудь есть идея?
Я думаю, что нет чистого решения для этого, так как смещение (или количество символов в строке меняется (строки новой строки или большой блок комментария).

Ответы [ 2 ]

1 голос
/ 21 марта 2010

Преобразование между позициями и смещениями может быть выполнено с помощью API IDocument (методы вокруг getLine * ()). (Я не уверен, что полностью понял ваш вопрос, но надеюсь, что это полезная информация.)

1 голос
/ 19 марта 2010

Может быть, вы можете проверить, имеет ли org.eclipse.linuxtools.dataviewers.annotatedsourceeditor.STOverviewRuler класс такую ​​же проблему, как у вас.
Нечто по линиям из:

if (ANNOTATION_HEIGHT_SCALABLE) {
  int numbersOfLines= document.getNumberOfLines(annotationOffset, annotationLength);
  // don't count empty trailing lines
  IRegion lastLine= document.getLineInformationOfOffset(annotationOffset + annotationLength);
  if (lastLine.getOffset() == annotationOffset + annotationLength) {
    numbersOfLines -= 2;
    hh= (numbersOfLines * size.y) / maxLines + ANNOTATION_HEIGHT;
    if (hh < ANNOTATION_HEIGHT)
      hh= ANNOTATION_HEIGHT;
    } else
      hh= ANNOTATION_HEIGHT;
  }
  fAnnotationHeight= hh;

  int startLine= textWidget.getLineAtOffset(annotationOffset - visible.getOffset());
                        yy= Math.min((startLine * size.y) / maxLines, size.y - hh);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...