summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMateusz Czapliński <czapkofan@gmail.com>2018-03-11 14:56:28 +0100
committerMateusz Czapliński <czapkofan@gmail.com>2018-03-11 14:56:28 +0100
commit57e5492d14a5a0086b5c382bc5cd88daf082426b (patch)
treeef59d1b4b55e1731f1e1fa0d2de21c0174aa3f64
parent25f8ccb6c4d0da7d9f1fd741db6c0043c2162ead (diff)
in Editor, ignore arrow keys with modifiers
-rw-r--r--up.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/up.go b/up.go
index 9ca1005..f2f80cb 100644
--- a/up.go
+++ b/up.go
@@ -294,21 +294,25 @@ func (e *Editor) Draw(tui tcell.Screen, x, y int, setcursor bool) {
}
func (e *Editor) HandleKey(ev *tcell.EventKey) bool {
- if ev.Key() == tcell.KeyRune {
+ if ev.Key() == tcell.KeyRune && ev.Modifiers()&(^tcell.ModShift) == 0 {
e.insert(ev.Rune())
return true
}
- switch ev.Key() {
- case tcell.KeyBackspace, tcell.KeyBackspace2:
+ type keymod struct {
+ tcell.Key
+ tcell.ModMask
+ }
+ switch (keymod{ev.Key(), ev.Modifiers()}) {
+ case keymod{tcell.KeyBackspace, 0}, keymod{tcell.KeyBackspace2, 0}:
// See https://github.com/nsf/termbox-go/issues/145
e.delete(-1)
- case tcell.KeyDelete:
+ case keymod{tcell.KeyDelete, 0}:
e.delete(0)
- case tcell.KeyLeft:
+ case keymod{tcell.KeyLeft, 0}:
if e.cursor > 0 {
e.cursor--
}
- case tcell.KeyRight:
+ case keymod{tcell.KeyRight, 0}:
if e.cursor < len(e.command) {
e.cursor++
}