Fixed UpN Cursor functionality to properly handle moving from long line to shorter line

This commit is contained in:
rexy712
2018-08-25 14:49:58 -07:00
parent e11d9deb6e
commit 6e9b8c1bd5

View File

@@ -255,7 +255,6 @@ func (c *Cursor) RuneUnder(x int) rune {
}
return line[x]
}
// UpN moves the cursor up N lines (if possible)
func (c *Cursor) UpN(amount int) {
proposedY := c.Y - amount
@@ -266,9 +265,8 @@ func (c *Cursor) UpN(amount int) {
proposedY = c.buf.NumLines - 1
}
runes := []rune(c.buf.Line(c.Y))
runes := []rune(c.buf.Line(proposedY))
c.X = c.GetCharPosInLine(proposedY, c.LastVisualX)
if c.X > len(runes) || (amount < 0 && proposedY == c.Y) {
c.X = len(runes)
}