diff options
| author | Galen Abell <galen@galenabell.com> | 2019-07-23 12:52:33 -0400 | 
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2019-07-26 14:29:34 -0400 | 
| commit | 8635c70fda20b91f97c42f4e23e97bc01a14a89d (patch) | |
| tree | ea70a40f7617782ca28060965ad253fa0e686161 /widgets/aerc.go | |
| parent | 67fb0938a66605a0b6a837005804637b348b250d (diff) | |
Add command history and cycling
Aerc will keep track of the previous 1000 commands, which the user can
cycle through using the arrow keys while in the ex-line. Pressing up
will move backwards in history while pressing down will move forward.
Diffstat (limited to 'widgets/aerc.go')
| -rw-r--r-- | widgets/aerc.go | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/widgets/aerc.go b/widgets/aerc.go index 050ba77..458c2f9 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -11,6 +11,7 @@ import (  	"github.com/google/shlex"  	"git.sr.ht/~sircmpwn/aerc/config" +	"git.sr.ht/~sircmpwn/aerc/lib"  	"git.sr.ht/~sircmpwn/aerc/lib/ui"  	libui "git.sr.ht/~sircmpwn/aerc/lib/ui"  ) @@ -18,6 +19,7 @@ import (  type Aerc struct {  	accounts    map[string]*AccountView  	cmd         func(cmd []string) error +	cmdHistory  lib.History  	complete    func(cmd string) []string  	conf        *config.AercConfig  	focused     libui.Interactive @@ -31,7 +33,8 @@ type Aerc struct {  }  func NewAerc(conf *config.AercConfig, logger *log.Logger, -	cmd func(cmd []string) error, complete func(cmd string) []string) *Aerc { +	cmd func(cmd []string) error, complete func(cmd string) []string, +	cmdHistory lib.History) *Aerc {  	tabs := libui.NewTabs() @@ -54,6 +57,7 @@ func NewAerc(conf *config.AercConfig, logger *log.Logger,  		accounts:   make(map[string]*AccountView),  		conf:       conf,  		cmd:        cmd, +		cmdHistory: cmdHistory,  		complete:   complete,  		grid:       grid,  		logger:     logger, @@ -323,6 +327,11 @@ func (aerc *Aerc) BeginExCommand() {  			aerc.PushStatus(" "+err.Error(), 10*time.Second).  				Color(tcell.ColorDefault, tcell.ColorRed)  		} +		// only add to history if this is an unsimulated command, +		// ie one not executed from a keybinding +		if aerc.simulating == 0 { +			aerc.cmdHistory.Add(cmd) +		}  		aerc.statusbar.Pop()  		aerc.focus(previous)  	}, func() { @@ -330,7 +339,7 @@ func (aerc *Aerc) BeginExCommand() {  		aerc.focus(previous)  	}, func(cmd string) []string {  		return aerc.complete(cmd) -	}) +	}, aerc.cmdHistory)  	aerc.statusbar.Push(exline)  	aerc.focus(exline)  } | 
