selection char and line break count

This commit is contained in:
Matt Parker
2025-12-18 11:54:17 +10:00
parent a1cb792375
commit bc5468cd64
4 changed files with 47 additions and 0 deletions

View File

@@ -210,6 +210,25 @@ public partial class SharpIdeCodeEdit : CodeEdit
private void OnCaretChanged()
{
var caretPosition = GetCaretPosition(startAt1: true);
if (HasSelection())
{
// Probably should be debounced
var selectedText = GetSelectedText();
var lineBreakCount = 0;
var slashRsToRemove = 0;
foreach (var c in selectedText.AsSpan())
{
if (c is '\n') lineBreakCount++;
else if (c is '\r') slashRsToRemove++;
}
var charLength = selectedText.Length - lineBreakCount - slashRsToRemove;
_editorCaretPositionService.SelectionInfo = (charLength, lineBreakCount);
}
else
{
_editorCaretPositionService.SelectionInfo = null;
}
_editorCaretPositionService.CaretPosition = caretPosition;
}