widget: add some rudimentary exported editing methods

Editor.Delete
Editor.Move
Editor.Insert

Move the Editor.command method up above all the functions it calls.

Signed-off-by: Larry Clapp <larry@theclapp.org>
This commit is contained in:
Larry Clapp
2019-12-16 08:27:29 -05:00
committed by Elias Naur
parent 8a4d0007f3
commit 2b4e9ad426
2 changed files with 65 additions and 66 deletions
+21 -22
View File
@@ -35,20 +35,19 @@ func (e *editBuffer) Changed() bool {
return c
}
func (e *editBuffer) deleteRuneForward() {
func (e *editBuffer) deleteRunes(runes int) {
e.moveGap(0)
_, s := utf8.DecodeRune(e.text[e.gapend:])
e.gapend += s
e.changed = e.changed || s > 0
e.dump()
}
func (e *editBuffer) deleteRune() {
e.moveGap(0)
_, s := utf8.DecodeLastRune(e.text[:e.gapstart])
e.gapstart -= s
e.caret -= s
e.changed = e.changed || s > 0
for ; runes < 0 && e.gapstart > 0; runes++ {
_, s := utf8.DecodeLastRune(e.text[:e.gapstart])
e.gapstart -= s
e.caret -= s
e.changed = e.changed || s > 0
}
for ; runes > 0 && e.gapend < len(e.text); runes-- {
_, s := utf8.DecodeRune(e.text[e.gapend:])
e.gapend += s
e.changed = e.changed || s > 0
}
e.dump()
}
@@ -141,15 +140,15 @@ func (e *editBuffer) dump() {
}
}
func (e *editBuffer) moveLeft() {
_, s := e.runeBefore(e.caret)
e.caret -= s
e.dump()
}
func (e *editBuffer) moveRight() {
_, s := e.runeAt(e.caret)
e.caret += s
func (e *editBuffer) move(runes int) {
for ; runes < 0 && e.caret > 0; runes++ {
_, s := e.runeBefore(e.caret)
e.caret -= s
}
for ; runes > 0 && e.caret < len(e.text); runes-- {
_, s := e.runeAt(e.caret)
e.caret += s
}
e.dump()
}