diff options
| author | Drew DeVault <sir@cmpwn.com> | 2018-02-27 21:33:47 -0500 | 
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2018-02-27 21:33:47 -0500 | 
| commit | cea98463c9fa551c81407edefe48a4fb2763ced0 (patch) | |
| tree | 0f17e361d1f9493a621280e57421c4c53bafd420 | |
| parent | 30c85dd4ab090ee6cec154ecd451129ecd6f0edb (diff) | |
Summon exline on demand
| -rw-r--r-- | widgets/aerc.go | 35 | 
1 files changed, 24 insertions, 11 deletions
| diff --git a/widgets/aerc.go b/widgets/aerc.go index beceb96..5563275 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -48,15 +48,6 @@ func NewAerc(logger *log.Logger) *Aerc {  	statusline := NewStatusLine()  	statusbar.Push(statusline) -	exline := NewExLine(func(command string) { -		statusline.Push(fmt.Sprintf("TODO: execute %s", command), -			3 * time.Second) -		statusbar.Pop() -	}, func() { -		statusbar.Pop() -	}) -	statusbar.Push(exline) -  	go (func() {  		for {  			time.Sleep(1 * time.Second) @@ -66,7 +57,6 @@ func NewAerc(logger *log.Logger) *Aerc {  	return &Aerc{  		grid:        grid, -		interactive: exline,  		statusbar:   statusbar,  		statusline:  statusline,  		tabs:        tabs, @@ -86,5 +76,28 @@ func (aerc *Aerc) Draw(ctx *libui.Context) {  }  func (aerc *Aerc) Event(event tb.Event) bool { -	return aerc.interactive.Event(event) +	switch event.Type { +	case tb.EventKey: +		if event.Ch == ':' { +			exline := NewExLine(func(command string) { +				aerc.statusline.Push(fmt.Sprintf("TODO: execute %s", command), +					3 * time.Second) +				aerc.statusbar.Pop() +				aerc.interactive = nil +			}, func() { +				aerc.statusbar.Pop() +				aerc.interactive = nil +			}) +			aerc.interactive = exline +			aerc.statusbar.Push(exline) +			return true +		} +		fallthrough +	default: +		if aerc.interactive != nil { +			return aerc.interactive.Event(event) +		} else { +			return false +		} +	}  } | 
