Skip to content

Commit 882878d

Browse files
committed
refactor: text diff view go to next/prev change
Signed-off-by: leo <[email protected]>
1 parent 52c7388 commit 882878d

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

src/Views/TextDiffView.axaml.cs

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -516,11 +516,16 @@ public void GotoPrevChange()
516516
firstLineIdx = index;
517517
}
518518

519+
if (firstLineIdx <= 1)
520+
return;
521+
519522
var firstLineType = lines[firstLineIdx].Type;
523+
var prevLineType = lines[firstLineIdx - 1].Type;
520524
var isChangeFirstLine = firstLineType != Models.TextDiffLineType.Normal && firstLineType != Models.TextDiffLineType.Indicator;
521-
if (isChangeFirstLine)
525+
var isChangePrevLine = prevLineType != Models.TextDiffLineType.Normal && prevLineType != Models.TextDiffLineType.Indicator;
526+
if (isChangeFirstLine && isChangePrevLine)
522527
{
523-
for (var i = firstLineIdx - 1; i >= 0; i--)
528+
for (var i = firstLineIdx - 2; i >= 0; i--)
524529
{
525530
var prevType = lines[i].Type;
526531
if (prevType == Models.TextDiffLineType.Normal || prevType == Models.TextDiffLineType.Indicator)
@@ -530,33 +535,23 @@ public void GotoPrevChange()
530535
}
531536
}
532537
}
533-
else
534-
{
535-
var prevChangeEnd = -1;
536-
for (var i = firstLineIdx - 1; i >= 0; i--)
537-
{
538-
var prevType = lines[i].Type;
539-
if (prevType == Models.TextDiffLineType.None ||
540-
prevType == Models.TextDiffLineType.Added ||
541-
prevType == Models.TextDiffLineType.Deleted)
542-
{
543-
prevChangeEnd = i;
544-
break;
545-
}
546-
}
547538

548-
if (prevChangeEnd <= 0)
549-
return;
550-
551-
for (var i = prevChangeEnd - 1; i >= 0; i--)
539+
var findChange = false;
540+
for (var i = firstLineIdx - 1; i >= 0; i--)
541+
{
542+
var prevType = lines[i].Type;
543+
if (prevType == Models.TextDiffLineType.Normal || prevType == Models.TextDiffLineType.Indicator)
552544
{
553-
var prevType = lines[i].Type;
554-
if (prevType == Models.TextDiffLineType.Normal || prevType == Models.TextDiffLineType.Indicator)
545+
if (findChange)
555546
{
556547
ScrollToLine(i + 2);
557548
return;
558549
}
559550
}
551+
else if (!findChange)
552+
{
553+
findChange = true;
554+
}
560555
}
561556
}
562557

@@ -578,6 +573,9 @@ public void GotoNextChange()
578573
lastLineIdx = index;
579574
}
580575

576+
if (lastLineIdx >= lines.Count - 1)
577+
return;
578+
581579
var lastLineType = lines[lastLineIdx].Type;
582580
var findNormalLine = lastLineType == Models.TextDiffLineType.Normal || lastLineType == Models.TextDiffLineType.Indicator;
583581
for (var idx = lastLineIdx + 1; idx < lines.Count; idx++)

0 commit comments

Comments
 (0)