}
return line[x]
}
-
// UpN moves the cursor up N lines (if possible)
func (c *Cursor) UpN(amount int) {
proposedY := c.Y - amount
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)
}
c.LastVisualX = c.GetVisualX()
}
-// StartOfText moves the cursor to the first non-whitespace rune of
+// StartOfText moves the cursor to the first non-whitespace rune of
// the line it is on
func (c *Cursor) StartOfText() {
c.Start()