widget: make Editor implement io.Seeker, io.Reader and io.WriterTo

The WriteTo, Seek, Read methods implement a more efficient access to
the Editor content than Text.

Signed-off-by: pierre <pierre.curto@gmail.com>
This commit is contained in:
pierre
2021-05-19 16:23:30 +02:00
committed by Elias Naur
parent df0e058ea6
commit b6e9c0324d
3 changed files with 67 additions and 0 deletions
+10
View File
@@ -142,6 +142,16 @@ func (e *editBuffer) ReadRune() (rune, int, error) {
return r, s, nil
}
// WriteTo implements io.WriterTo.
func (e *editBuffer) WriteTo(w io.Writer) (int64, error) {
n1, err := w.Write(e.text[:e.gapstart])
if err != nil {
return int64(n1), err
}
n2, err := w.Write(e.text[e.gapend:])
return int64(n1 + n2), err
}
func (e *editBuffer) String() string {
var b strings.Builder
b.Grow(e.len())