From 790b4d4e6d20d43cccf4ebf2c4723d3ed5d65733 Mon Sep 17 00:00:00 2001 From: Petter Rodhelind Date: Fri, 23 Feb 2018 19:35:10 +0100 Subject: Add Next/Prev Space offset search. --- text.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/text.go b/text.go index 41d7dbe..548f792 100644 --- a/text.go +++ b/text.go @@ -276,6 +276,51 @@ func (t *Text) Select(offset int) { t.SetDot(start, end) } +func (t *Text) NextSpace(offset int) (n int) { + offset, _ = t.Seek(offset, io.SeekStart) + + r, size, err := t.ReadRune() + if err != nil { + return 0 + } + for !unicode.IsSpace(r) { + n += size + r, size, err = t.ReadRune() + if err != nil { + if err == io.EOF { + return n + } + return 0 + } + } + + return n +} + +func (t *Text) PrevSpace(offset int) (n int) { + offset, _ = t.Seek(offset, io.SeekStart) + + r, size, err := t.ReadRuneAt(offset) + if err != nil { + return 0 + } + for !unicode.IsSpace(r) { + r, size, err = t.UnreadRune() + if err != nil { + if err == gapbuffer.ErrOutOfRange { + return n + } + } + n += size + } + + if n > 0 { + n -= size // remove last iteration + } + + return n +} + func (t *Text) NextWord(offset int) (n int) { offset, _ = t.Seek(offset, io.SeekStart) -- cgit v1.2.3