diff options
author | Galen Abell <galen@galenabell.com> | 2019-05-26 17:37:39 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-05-27 09:37:07 -0400 |
commit | 28fc9fa53da1449498392f83d63a8502a5a958a3 (patch) | |
tree | 5c940758d297ca88f47f24344da3e8ee08e998bc /widgets | |
parent | 62cd0b08aa82fe19e6d5d96b0341f7cffbb4cb7b (diff) | |
download | aerc-28fc9fa53da1449498392f83d63a8502a5a958a3.tar.gz |
Add :save and :pipe commands to viewer
* :save takes a path and saves the current message part to that location * :pipe is the same as pipe on the account page, but uses the current message part rather than the whole email (ie :pipe gzip -d) * Refactored account:pipe and extracted common pipe code to commands.util.QuickTerm * Added helper command aerc.PushError
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/aerc.go | 4 | ||||
-rw-r--r-- | widgets/msgviewer.go | 19 |
2 files changed, 23 insertions, 0 deletions
diff --git a/widgets/aerc.go b/widgets/aerc.go index 3c6566d..5b1b151 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -243,6 +243,10 @@ func (aerc *Aerc) PushStatus(text string, expiry time.Duration) *StatusMessage { return aerc.statusline.Push(text, expiry) } +func (aerc *Aerc) PushError(text string) { + aerc.PushStatus(text, 10*time.Second).Color(tcell.ColorDefault, tcell.ColorRed) +} + func (aerc *Aerc) focus(item libui.Interactive) { if aerc.focused == item { return diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index e0fe6aa..d31e051 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -199,6 +199,18 @@ func (mv *MessageViewer) OnInvalidate(fn func(d ui.Drawable)) { }) } +func (mv *MessageViewer) CurrentPart() *PartInfo { + switcher := mv.switcher + part := switcher.parts[switcher.selected] + + return &PartInfo{ + Index: part.index, + Msg: part.msg, + Part: part.part, + Store: part.store, + } +} + func (mv *MessageViewer) PreviousPart() { switcher := mv.switcher for { @@ -291,6 +303,13 @@ type PartViewer struct { term *Terminal } +type PartInfo struct { + Index []int + Msg *types.MessageInfo + Part *imap.BodyStructure + Store *lib.MessageStore +} + func NewPartViewer(conf *config.AercConfig, store *lib.MessageStore, msg *types.MessageInfo, part *imap.BodyStructure, index []int) (*PartViewer, error) { |