github.com/jmigpin/editor@v1.6.0/util/iout/iorw/rwedit/backspace.go (about) 1 package rwedit 2 3 import "github.com/jmigpin/editor/util/iout/iorw" 4 5 func Backspace(ctx *Ctx) error { 6 a, b, ok := ctx.C.SelectionIndexes() 7 if ok { 8 ctx.C.SetSelectionOff() 9 } else { 10 b = ctx.C.Index() 11 _, size, err := iorw.ReadLastRuneAt(ctx.RW, b) 12 if err != nil { 13 return err 14 } 15 a = b - size 16 } 17 if err := ctx.RW.OverwriteAt(a, b-a, nil); err != nil { 18 return err 19 } 20 ctx.C.SetIndex(a) 21 return nil 22 }