diff --git a/edit.go b/edit.go index 62b6aed..63d2e17 100644 --- a/edit.go +++ b/edit.go @@ -6,16 +6,11 @@ package gocui // editWrite writes a rune at the cursor position. func (v *View) editWrite(ch rune) error { - maxX, _ := v.Size() v.writeRune(v.cx, v.cy, ch) - if v.cx == maxX-1 { + if err := v.SetCursor(v.cx+1, v.cy); err != nil { if err := v.SetOrigin(v.ox+1, v.oy); err != nil { return err } - } else { - if err := v.SetCursor(v.cx+1, v.cy); err != nil { - return err - } } return nil } @@ -25,14 +20,8 @@ func (v *View) editWrite(ch rune) error { func (v *View) editDelete(back bool) error { if back { v.deleteRune(v.cx-1, v.cy) - if v.cx == 0 { - if v.ox > 0 { - if err := v.SetOrigin(v.ox-1, v.oy); err != nil { - return err - } - } - } else { - if err := v.SetCursor(v.cx-1, v.cy); err != nil { + if err := v.SetCursor(v.cx-1, v.cy); err != nil && v.ox > 0 { + if err := v.SetOrigin(v.ox-1, v.oy); err != nil { return err } } @@ -44,19 +33,17 @@ func (v *View) editDelete(back bool) error { // editLine inserts a new line under the cursor. func (v *View) editLine() error { - _, maxY := v.Size() v.addLine(v.cy + 1) - if v.cy == maxY-1 { - if err := v.SetOrigin(0, v.oy+1); err != nil { - return err - } - if err := v.SetCursor(0, v.cy); err != nil { - return err - } - } else { - if err := v.SetCursor(0, v.cy+1); err != nil { + if err := v.SetCursor(v.cx, v.cy+1); err != nil { + if err := v.SetOrigin(v.ox, v.oy+1); err != nil { return err } } + if err := v.SetCursor(0, v.cy); err != nil { + return err + } + if err := v.SetOrigin(0, v.oy); err != nil { + return err + } return nil }