From 6ba65a24c45ae55e0af5ad9c0b7d65155f551211 Mon Sep 17 00:00:00 2001 From: Petter Rodhelind Date: Fri, 23 Feb 2018 19:34:14 +0100 Subject: Implement ^W using PrevWord(). --- view.go | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/view.go b/view.go index ff272a6..d0e6bba 100644 --- a/view.go +++ b/view.go @@ -402,30 +402,14 @@ func (v *View) HandleEvent(ev tcell.Event) { v.Delete() return case tcell.KeyCtrlW: // delete word backwards - offset := v.text.q0 - 1 - c, _ := v.text.buf.ByteAt(offset) - if unicode.IsSpace(rune(c)) { - if c == '\n' { - v.Delete() - return - } - for unicode.IsSpace(rune(c)) && c != '\n' { - v.Delete() - if v.text.q0 <= 0 { - break - } - offset-- - c, _ = v.text.buf.ByteAt(offset) - } - } - for !unicode.IsSpace(rune(c)) { - v.Delete() - if v.text.q0 <= 0 { - break - } - offset-- - c, _ = v.text.buf.ByteAt(offset) + startpos := v.Cursor() + offset := v.text.PrevWord(v.Cursor()) + if offset == 0 { + v.SetCursor(-1, io.SeekCurrent) + offset = v.text.PrevWord(v.Cursor()) } + v.text.SetDot(v.Cursor()-offset, startpos) + v.Delete() return case tcell.KeyCtrlZ: v.text.Undo() -- cgit v1.2.3