diff options
author | Jeffas <dev@jeffas.io> | 2019-07-16 18:43:08 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-07-17 17:12:52 -0400 |
commit | d7975132b62942530da6c4907bed3eb3ab99e4a3 (patch) | |
tree | 605a2e0f1dfdf20ddbb6797524d3ea7ef3d90814 /widgets/status.go | |
parent | a1763bf2079400693515772dcb2ad09c53f36e4e (diff) | |
download | aerc-d7975132b62942530da6c4907bed3eb3ab99e4a3.tar.gz |
Show currently pressed keys in statusline
This patch adds the currently pressed keys to the statusline. This is useful when keybindings are multiple keys long and you might forget which keys are already pressed.
Diffstat (limited to 'widgets/status.go')
-rw-r--r-- | widgets/status.go | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/widgets/status.go b/widgets/status.go index c7764f8..8d0a1ae 100644 --- a/widgets/status.go +++ b/widgets/status.go @@ -4,6 +4,7 @@ import ( "time" "github.com/gdamore/tcell" + "github.com/mattn/go-runewidth" "git.sr.ht/~sircmpwn/aerc/lib/ui" ) @@ -12,6 +13,7 @@ type StatusLine struct { ui.Invalidatable stack []*StatusMessage fallback StatusMessage + aerc *Aerc } type StatusMessage struct { @@ -42,7 +44,14 @@ func (status *StatusLine) Draw(ctx *ui.Context) { style := tcell.StyleDefault. Background(line.bg).Foreground(line.fg).Reverse(true) ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', style) - ctx.Printf(0, 0, style, "%s", line.message) + pendingKeys := "" + if status.aerc != nil { + for _, pendingKey := range status.aerc.pendingKeys { + pendingKeys += string(pendingKey.Rune) + } + } + message := runewidth.FillRight(line.message, ctx.Width()-len(pendingKeys)-5) + ctx.Printf(0, 0, style, "%s%s", message, pendingKeys) } func (status *StatusLine) Set(text string) *StatusMessage { @@ -79,6 +88,10 @@ func (status *StatusLine) Expire() { status.stack = nil } +func (status *StatusLine) SetAerc(aerc *Aerc) { + status.aerc = aerc +} + func (msg *StatusMessage) Color(bg tcell.Color, fg tcell.Color) { msg.bg = bg msg.fg = fg |