1
0

fix sequence state

This commit is contained in:
Arpad Ryszka 2025-12-07 23:48:21 +01:00
parent 33e2961b64
commit c75c396578
3 changed files with 9 additions and 25 deletions

4
lib.go
View File

@ -145,6 +145,10 @@ func (w *Writer) flush() error {
r := w.editor.ReleaseState(w.state) r := w.editor.ReleaseState(w.state)
w.state = nil 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 { if _, err := w.out.Write([]byte(string(r))); err != nil {
w.err = err w.err = err
return w.err return w.err

View File

@ -5,11 +5,7 @@ func sequenceEdit(e []Editor) func(rune, []any) ([]rune, []any) {
var sr []any var sr []any
rr := []rune{r} rr := []rune{r}
for i, ei := range e { for i, ei := range e {
var si any si := s[i]
if len(s) > i {
si = s[i]
}
rin := rr rin := rr
rr = nil rr = nil
for _, ri := range rin { for _, ri := range rin {
@ -29,26 +25,11 @@ func sequenceRelease(e []Editor) func([]any) []rune {
return func(s []any) []rune { return func(s []any) []rune {
var rr []rune var rr []rune
for i, ei := range e { for i, ei := range e {
var r []rune r := ei.ReleaseState(s[i])
if i < len(s) {
r = ei.ReleaseState(s[i])
}
for _, ri := range r { for _, ri := range r {
var ( rri, ssi := sequenceEdit(e[i+1:])(ri, s[i + 1:])
rri []rune
ssi []any
)
if i < len(s) {
ssi = s[i:]
}
rri, ssi = sequenceEdit(e[i+1:])(ri, ssi)
rr = append(rr, rri...) rr = append(rr, rri...)
if i < len(s) { s = append(s[:i + 1], ssi...)
s = append(s[:i], ssi...)
}
} }
} }

View File

@ -117,8 +117,7 @@ func wrapIndentRelease(first, rest []rune, firstWidth, restWidth int) func(wrapI
ret = append(ret, ' ') ret = append(ret, ' ')
} }
ret = append(ret, state.currentWord...) return append(ret, state.currentWord...)
return ret
} }
} }