From fb124139f3a84c03708079e45c2f7d41d6ededca Mon Sep 17 00:00:00 2001 From: Jeffas Date: Wed, 17 Jul 2019 21:51:02 +0100 Subject: [PATCH] Add option to always show mimetype in viewer A user may want to be able to see what mimetype they are viewing, so that they can determine what program it may be opened in or for some other reason. The config option is under the [viewer] section and is called 'always-show-mime'. It defaults to false to preserve the current behaviour. --- config/aerc.conf.in | 5 +++++ config/config.go | 9 +++++---- doc/aerc-config.5.scd | 5 +++++ widgets/msgviewer.go | 10 ++++++---- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/config/aerc.conf.in b/config/aerc.conf.in index d490831..4219042 100644 --- a/config/aerc.conf.in +++ b/config/aerc.conf.in @@ -69,6 +69,11 @@ show-headers=false # Default: From|To,Cc|Bcc,Date,Subject header-layout=From|To,Cc|Bcc,Date,Subject +# Whether to always show the mimetype of an email, even when it is just a single part +# +# Default: false +always-show-mime=false + [compose] # # Specifies the command to run the editor with. It will be shown in an embedded diff --git a/config/config.go b/config/config.go index 9e081fd..6f3345d 100644 --- a/config/config.go +++ b/config/config.go @@ -77,10 +77,11 @@ type FilterConfig struct { } type ViewerConfig struct { - Pager string - Alternatives []string - ShowHeaders bool `ini:"show-headers"` - HeaderLayout [][]string `ini:"-"` + Pager string + Alternatives []string + ShowHeaders bool `ini:"show-headers"` + AlwaysShowMime bool `ini:"always-show-mime"` + HeaderLayout [][]string `ini:"-"` } type AercConfig struct { diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index 3d39ef6..665f4f4 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -133,6 +133,11 @@ These options are configured in the *[viewer]* section of aerc.conf. Default: false +*always-show-mime* + Whether to always show the mimetype of an email, even when it is just a single part. + + Default: false + ## COMPOSE These options are configured in the *[compose]* section of aerc.conf. diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 1f0b0e4..3f9b7fe 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -38,9 +38,10 @@ type MessageViewer struct { type PartSwitcher struct { ui.Invalidatable - parts []*PartViewer - selected int - showHeaders bool + parts []*PartViewer + selected int + showHeaders bool + alwaysShowMime bool } func NewMessageViewer(acct *AccountView, conf *config.AercConfig, @@ -165,6 +166,7 @@ func createSwitcher(switcher *PartSwitcher, conf *config.AercConfig, store *lib.MessageStore, msg *models.MessageInfo) error { var err error switcher.showHeaders = conf.Viewer.ShowHeaders + switcher.alwaysShowMime = conf.Viewer.AlwaysShowMime if len(msg.BodyStructure.Parts) == 0 { switcher.selected = 0 @@ -312,7 +314,7 @@ func (ps *PartSwitcher) Event(event tcell.Event) bool { func (ps *PartSwitcher) Draw(ctx *ui.Context) { height := len(ps.parts) - if height == 1 { + if height == 1 && !ps.alwaysShowMime { ps.parts[ps.selected].Draw(ctx) return }