]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/cursor.go
Merge pull request #613 from GeigerCounter/build_tools
[micro.git] / cmd / micro / cursor.go
index a0d3477f19f84fe23e99eac6eff01e95fab1a355..a4a243d12798b5becc886a1e8dba013ecaf2bf43 100644 (file)
@@ -250,19 +250,19 @@ func (c *Cursor) UpN(amount int) {
        proposedY := c.Y - amount
        if proposedY < 0 {
                proposedY = 0
+               c.LastVisualX = 0
        } else if proposedY >= c.buf.NumLines {
                proposedY = c.buf.NumLines - 1
        }
-       if proposedY == c.Y {
-               return
-       }
 
-       c.Y = proposedY
        runes := []rune(c.buf.Line(c.Y))
-       c.X = c.GetCharPosInLine(c.Y, c.LastVisualX)
-       if c.X > len(runes) {
+       c.X = c.GetCharPosInLine(proposedY, c.LastVisualX)
+
+       if c.X > len(runes) || (amount < 0 && proposedY == c.Y) {
                c.X = len(runes)
        }
+
+       c.Y = proposedY
 }
 
 // DownN moves the cursor down N lines (if possible)