From c75c3965789f800a9b8aee47322e2f9c89c3376d Mon Sep 17 00:00:00 2001 From: Arpad Ryszka Date: Sun, 7 Dec 2025 23:48:21 +0100 Subject: [PATCH] fix sequence state --- lib.go | 4 ++++ sequence.go | 27 ++++----------------------- wrap.go | 3 +-- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/lib.go b/lib.go index 774aa59..5beb9e2 100644 --- a/lib.go +++ b/lib.go @@ -145,6 +145,10 @@ func (w *Writer) flush() error { r := w.editor.ReleaseState(w.state) w.state = nil + if initializer, ok := w.editor.(interface{initialize() any}); ok { + w.state = initializer.initialize() + } + if _, err := w.out.Write([]byte(string(r))); err != nil { w.err = err return w.err diff --git a/sequence.go b/sequence.go index cb59afd..8db3b3e 100644 --- a/sequence.go +++ b/sequence.go @@ -5,11 +5,7 @@ func sequenceEdit(e []Editor) func(rune, []any) ([]rune, []any) { var sr []any rr := []rune{r} for i, ei := range e { - var si any - if len(s) > i { - si = s[i] - } - + si := s[i] rin := rr rr = nil for _, ri := range rin { @@ -29,26 +25,11 @@ func sequenceRelease(e []Editor) func([]any) []rune { return func(s []any) []rune { var rr []rune for i, ei := range e { - var r []rune - if i < len(s) { - r = ei.ReleaseState(s[i]) - } - + r := ei.ReleaseState(s[i]) for _, ri := range r { - var ( - rri []rune - ssi []any - ) - - if i < len(s) { - ssi = s[i:] - } - - rri, ssi = sequenceEdit(e[i+1:])(ri, ssi) + rri, ssi := sequenceEdit(e[i+1:])(ri, s[i + 1:]) rr = append(rr, rri...) - if i < len(s) { - s = append(s[:i], ssi...) - } + s = append(s[:i + 1], ssi...) } } diff --git a/wrap.go b/wrap.go index 0071ae7..59871ed 100644 --- a/wrap.go +++ b/wrap.go @@ -117,8 +117,7 @@ func wrapIndentRelease(first, rest []rune, firstWidth, restWidth int) func(wrapI ret = append(ret, ' ') } - ret = append(ret, state.currentWord...) - return ret + return append(ret, state.currentWord...) } }