aboutsummaryrefslogtreecommitdiff
path: root/widgets/exline.go
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/exline.go')
-rw-r--r--widgets/exline.go19
1 files changed, 14 insertions, 5 deletions
diff --git a/widgets/exline.go b/widgets/exline.go
index e13b50d..0522371 100644
--- a/widgets/exline.go
+++ b/widgets/exline.go
@@ -9,21 +9,24 @@ import (
// TODO: history
// TODO: tab completion
-// TODO: commit
-// TODO: cancel (via esc/ctrl+c)
// TODO: scrolling
type ExLine struct {
command []rune
- commit func(cmd *string)
+ commit func(cmd string)
+ cancel func()
index int
scroll int
onInvalidate func(d ui.Drawable)
}
-func NewExLine() *ExLine {
- return &ExLine{command: []rune{}}
+func NewExLine(commit func (cmd string), cancel func()) *ExLine {
+ return &ExLine{
+ cancel: cancel,
+ commit: commit,
+ command: []rune{},
+ }
}
func (ex *ExLine) OnInvalidate(onInvalidate func(d ui.Drawable)) {
@@ -118,6 +121,12 @@ func (ex *ExLine) Event(event tb.Event) bool {
ex.Invalidate()
case tb.KeyCtrlW:
ex.deleteWord()
+ case tb.KeyEnter:
+ tb.HideCursor()
+ ex.commit(string(ex.command))
+ case tb.KeyEsc, tb.KeyCtrlC:
+ tb.HideCursor()
+ ex.cancel()
default:
if event.Ch != 0 {
ex.insert(event.Ch)