J'ai besoin pour déterminer si une sélection donnée est entre une ligne de départ et une ligne d'extrémité. J'ai un ILineRange
et un décalage donné dans la fenêtre d'éclipse. (Je dois savoir, si la sélection (d'une partie à distance) a été faite dans la fenêtre actuelle de l'utilisateur local. Malheureusement, je ne peux pas obtenir un ILineRange
de la sélection. Je dois compter sur getOffset() et getLength() .. .
Toute personne a une idée?
Je pense qu'il n'y a pas une solution propre pour cela, comme le décalage (ou les caractères par ligne varient (nouvelles lignes de ligne ou un gros bloc de commentaire).Déterminer si un décalage est entre les numéros de ligne?
4
A
Répondre
1
La conversion entre les positions et les compensations peut être fait avec l'API de IDocument (méthodes autour getLine *()). (Je ne suis pas sûr que je bien compris votre question, mais j'espère que cette information est utile.)
1
peut-être que vous pouvez vérifier si cette org.eclipse.linuxtools.dataviewers.annotatedsourceeditor.STOverviewRuler
class traite le même genre de problème que vous avez
Quelque chose le long des lignes de.
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);
Quand vous dites « fenêtre », vous voulez dire la fenêtre de sortie de l'éclipse? –
avec « fenêtre » Je veux dire les lignes visibles de la fenêtre de l'éditeur actuellement ouvert pour l'utilisateur local. – Gnark
aucune des 2 réponses données ne s'applique? –