Beispiel #1
0
 private void ReplaceSingleLineText(TextArea textArea, SelectionSegment lineSegment, string newText, out int insertionLength)
 {
     if (lineSegment.Length == 0)
     {
         if (newText.Length > 0 && textArea.ReadOnlySectionProvider.CanInsert(lineSegment.StartOffset))
         {
             newText = AddSpacesIfRequired(newText, new TextViewPosition(document.GetLocation(lineSegment.StartOffset), lineSegment.StartVisualColumn), new TextViewPosition(document.GetLocation(lineSegment.EndOffset), lineSegment.EndVisualColumn));
             textArea.Document.Insert(lineSegment.StartOffset, newText);
         }
     }
     else
     {
         ISegment[] segmentsToDelete = textArea.GetDeletableSegments(lineSegment);
         for (int i = segmentsToDelete.Length - 1; i >= 0; i--)
         {
             if (i == segmentsToDelete.Length - 1)
             {
                 if (segmentsToDelete[i].Offset == SurroundingSegment.Offset && segmentsToDelete[i].Length == SurroundingSegment.Length)
                 {
                     newText = AddSpacesIfRequired(newText, new TextViewPosition(document.GetLocation(lineSegment.StartOffset), lineSegment.StartVisualColumn), new TextViewPosition(document.GetLocation(lineSegment.EndOffset), lineSegment.EndVisualColumn));
                 }
                 textArea.Document.Replace(segmentsToDelete[i], newText);
             }
             else
             {
                 textArea.Document.Remove(segmentsToDelete[i]);
             }
         }
     }
     insertionLength = newText.Length;
 }
Beispiel #2
0
        private TextViewPosition GetEnd()
        {
            SelectionSegment segment = (startLine < endLine ? segments.Last() : segments.First());

            if (startXPos < endXPos)
            {
                return(new TextViewPosition(document.GetLocation(segment.EndOffset), segment.EndVisualColumn));
            }
            else
            {
                return(new TextViewPosition(document.GetLocation(segment.StartOffset), segment.StartVisualColumn));
            }
        }