Beispiel #1
0
 public TextImageLine GetLineFromLineNumber(int lineNumber)
 {
     if (TextBuffer.IsSafeToAccessDocumentFromSnapshot(this))
     {
         var docLine = TextBuffer.Document.GetLineByNumber(lineNumber + 1);
         return(new TextImageLine(this, lineNumber, new Span(docLine.Offset, docLine.Length), docLine.DelimiterLength));
     }
     if (lineOffsets is null)
     {
         lineOffsets = TextImageUtils.CreateLineOffsets(this);
     }
     TextImageUtils.GetLineInfo(lineOffsets, lineNumber, Length, out int start, out int end, out int lineBreakLength);
     return(new TextImageLine(this, lineNumber, new Span(start, end - start), lineBreakLength));
 }
Beispiel #2
0
 public int GetLineNumberFromPosition(int position)
 {
     if ((uint)position > (uint)Length)
     {
         throw new ArgumentOutOfRangeException(nameof(position));
     }
     if (TextBuffer.IsSafeToAccessDocumentFromSnapshot(this))
     {
         return(TextBuffer.Document.GetLineByOffset(position).LineNumber - 1);
     }
     if (lineOffsets is null)
     {
         lineOffsets = TextImageUtils.CreateLineOffsets(this);
     }
     return(TextImageUtils.GetLineNumberFromPosition(lineOffsets, position, Length));
 }
Beispiel #3
0
 internal uint[] GetOrCreateLineOffsets() => lineOffsets ??= TextImageUtils.CreateLineOffsets(this);