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  }