]> git.lizzy.rs Git - micro.git/commitdiff
Fix multiline remove in lineArray
authorZachary Yedidia <zyedidia@gmail.com>
Wed, 8 Jun 2016 14:21:27 +0000 (10:21 -0400)
committerZachary Yedidia <zyedidia@gmail.com>
Wed, 8 Jun 2016 14:21:27 +0000 (10:21 -0400)
I forgot that when you remove lines[n] then lines[n+1] becomes lines[n]
so to remove the range lines[a:b] you need to remove lines[a] for a-b
times. In this case we should delete lines[start.Y + 1] over and over
instead of removing lines[i] because i is contantly increasing.

Fixes #166

cmd/micro/lineArray.go

index 6b5746ec38b725a059e21a2d654673fb845391ca..c6e093abd9f4f11773ecbca2e5f0f439f06820f1 100644 (file)
@@ -92,7 +92,7 @@ func (la *LineArray) remove(start, end Loc) string {
                la.lines[start.Y] = append(la.lines[start.Y][:startX], la.lines[start.Y][endX:]...)
        } else {
                for i := start.Y + 1; i <= end.Y-1; i++ {
-                       la.DeleteLine(i)
+                       la.DeleteLine(start.Y + 1)
                }
                la.DeleteToEnd(Loc{startX, start.Y})
                la.DeleteFromStart(Loc{endX - 1, start.Y + 1})