diff options
author | Reto Brunner <reto@labrat.space> | 2020-01-24 18:18:49 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2020-01-24 12:25:59 -0500 |
commit | e78b7b85e4792f413175e13ef2fe437839b017a2 (patch) | |
tree | 0e050469f2f3d7768d4cc8f39af27a580d03e7b1 | |
parent | df5d9a3ec7564f0d95e3f92afc0e59588de3c4ce (diff) | |
download | aerc-e78b7b85e4792f413175e13ef2fe437839b017a2.tar.gz |
config: Strongly type context type
The go compiler can't help much with untyped int constants.
Even though the only valid constants are 0-3 it will happily accept 4 as input.
Let's let the go compiler worry about correctness here. This also allows people
not very familiar with the code to use it properly via auto completion.
-rw-r--r-- | config/config.go | 11 | ||||
-rw-r--r-- | widgets/account.go | 4 | ||||
-rw-r--r-- | widgets/msglist.go | 2 |
3 files changed, 10 insertions, 7 deletions
diff --git a/config/config.go b/config/config.go index 0b46014e..0393e467 100644 --- a/config/config.go +++ b/config/config.go @@ -46,14 +46,16 @@ type UIConfig struct { CompletionPopovers bool `ini:"completion-popovers"` } +type ContextType int + const ( - UI_CONTEXT_FOLDER = iota + UI_CONTEXT_FOLDER ContextType = iota UI_CONTEXT_ACCOUNT UI_CONTEXT_SUBJECT ) type UIConfigContext struct { - ContextType int + ContextType ContextType Regex *regexp.Regexp UiConfig UIConfig } @@ -602,7 +604,8 @@ func parseLayout(layout string) [][]string { return l } -func (config *AercConfig) mergeContextualUi(baseUi *UIConfig, contextType int, s string) { +func (config *AercConfig) mergeContextualUi(baseUi *UIConfig, + contextType ContextType, s string) { for _, contextualUi := range config.ContextualUis { if contextualUi.ContextType != contextType { continue @@ -617,7 +620,7 @@ func (config *AercConfig) mergeContextualUi(baseUi *UIConfig, contextType int, s } } -func (config *AercConfig) GetUiConfig(params map[int]string) UIConfig { +func (config *AercConfig) GetUiConfig(params map[ContextType]string) UIConfig { baseUi := config.Ui for k, v := range params { diff --git a/widgets/account.go b/widgets/account.go index 66320a3c..455c28ec 100644 --- a/widgets/account.go +++ b/widgets/account.go @@ -32,7 +32,7 @@ type AccountView struct { } func (acct *AccountView) UiConfig() config.UIConfig { - return acct.conf.GetUiConfig(map[int]string{ + return acct.conf.GetUiConfig(map[config.ContextType]string{ config.UI_CONTEXT_ACCOUNT: acct.AccountConfig().Name, config.UI_CONTEXT_FOLDER: acct.Directories().Selected(), }) @@ -41,7 +41,7 @@ func (acct *AccountView) UiConfig() config.UIConfig { func NewAccountView(aerc *Aerc, conf *config.AercConfig, acct *config.AccountConfig, logger *log.Logger, host TabHost) *AccountView { - acctUiConf := conf.GetUiConfig(map[int]string{ + acctUiConf := conf.GetUiConfig(map[config.ContextType]string{ config.UI_CONTEXT_ACCOUNT: acct.Name, }) diff --git a/widgets/msglist.go b/widgets/msglist.go index 24a99404..9aff0d45 100644 --- a/widgets/msglist.go +++ b/widgets/msglist.go @@ -106,7 +106,7 @@ func (ml *MessageList) Draw(ctx *ui.Context) { } ctx.Fill(0, row, ctx.Width(), 1, ' ', style) - uiConfig := ml.conf.GetUiConfig(map[int]string{ + uiConfig := ml.conf.GetUiConfig(map[config.ContextType]string{ config.UI_CONTEXT_ACCOUNT: ml.aerc.SelectedAccount().AccountConfig().Name, config.UI_CONTEXT_FOLDER: ml.aerc.SelectedAccount().Directories().Selected(), config.UI_CONTEXT_SUBJECT: msg.Envelope.Subject, |