diff options
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/account.go | 4 | ||||
-rw-r--r-- | widgets/aerc.go | 19 | ||||
-rw-r--r-- | widgets/compose.go | 5 | ||||
-rw-r--r-- | widgets/dirlist.go | 18 | ||||
-rw-r--r-- | widgets/msglist.go | 14 | ||||
-rw-r--r-- | widgets/msgviewer.go | 7 |
6 files changed, 18 insertions, 49 deletions
diff --git a/widgets/account.go b/widgets/account.go index c8c58b1e..838dd624 100644 --- a/widgets/account.go +++ b/widgets/account.go @@ -58,9 +58,7 @@ func (acct *AccountView) UiConfig() *config.UIConfig { func NewAccountView(aerc *Aerc, conf *config.AercConfig, acct *config.AccountConfig, host TabHost, deferLoop chan struct{}, ) (*AccountView, error) { - acctUiConf := conf.GetUiConfig(map[config.ContextType]string{ - config.UI_CONTEXT_ACCOUNT: acct.Name, - }) + acctUiConf := conf.Ui.ForAccount(acct.Name) view := &AccountView{ acct: acct, diff --git a/widgets/aerc.go b/widgets/aerc.go index ca82ee28..97e3c663 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -229,25 +229,30 @@ func (aerc *Aerc) getBindings() *config.KeyBindings { } switch view := aerc.SelectedTabContent().(type) { case *AccountView: - binds := aerc.conf.MergeContextualBinds(aerc.conf.Bindings.MessageList, config.BIND_CONTEXT_ACCOUNT, selectedAccountName, "messages") - return aerc.conf.MergeContextualBinds(binds, config.BIND_CONTEXT_FOLDER, view.SelectedDirectory(), "messages") + binds := aerc.conf.Bindings.MessageList.ForAccount(selectedAccountName) + return binds.ForFolder(view.SelectedDirectory()) case *AccountWizard: return aerc.conf.Bindings.AccountWizard case *Composer: switch view.Bindings() { case "compose::editor": - return aerc.conf.MergeContextualBinds(aerc.conf.Bindings.ComposeEditor, config.BIND_CONTEXT_ACCOUNT, selectedAccountName, "compose::editor") + return aerc.conf.Bindings.ComposeEditor.ForAccount( + selectedAccountName) case "compose::review": - return aerc.conf.MergeContextualBinds(aerc.conf.Bindings.ComposeReview, config.BIND_CONTEXT_ACCOUNT, selectedAccountName, "compose::review") + return aerc.conf.Bindings.ComposeReview.ForAccount( + selectedAccountName) default: - return aerc.conf.MergeContextualBinds(aerc.conf.Bindings.Compose, config.BIND_CONTEXT_ACCOUNT, selectedAccountName, "compose") + return aerc.conf.Bindings.Compose.ForAccount( + selectedAccountName) } case *MessageViewer: switch view.Bindings() { case "view::passthrough": - return aerc.conf.MergeContextualBinds(aerc.conf.Bindings.MessageViewPassthrough, config.BIND_CONTEXT_ACCOUNT, selectedAccountName, "view::passthrough") + return aerc.conf.Bindings.MessageViewPassthrough.ForAccount( + selectedAccountName) default: - return aerc.conf.MergeContextualBinds(aerc.conf.Bindings.MessageView, config.BIND_CONTEXT_ACCOUNT, selectedAccountName, "view") + return aerc.conf.Bindings.MessageView.ForAccount( + selectedAccountName) } case *Terminal: return aerc.conf.Bindings.Terminal diff --git a/widgets/compose.go b/widgets/compose.go index 37e09ccb..4cf7da16 100644 --- a/widgets/compose.go +++ b/widgets/compose.go @@ -1261,11 +1261,8 @@ type reviewMessage struct { } func newReviewMessage(composer *Composer, err error) *reviewMessage { - bindings := composer.config.MergeContextualBinds( - composer.config.Bindings.ComposeReview, - config.BIND_CONTEXT_ACCOUNT, + bindings := composer.config.Bindings.ComposeReview.ForAccount( composer.acctConfig.Name, - "compose::review", ) reviewCommands := [][]string{ diff --git a/widgets/dirlist.go b/widgets/dirlist.go index e4f867eb..0b41c024 100644 --- a/widgets/dirlist.go +++ b/widgets/dirlist.go @@ -8,7 +8,6 @@ import ( "regexp" "sort" "strings" - "sync" "time" "github.com/gdamore/tcell/v2" @@ -48,7 +47,6 @@ type DirectoryLister interface { } type DirectoryList struct { - sync.Mutex Scrollable aercConf *config.AercConfig acctConf *config.AccountConfig @@ -60,7 +58,6 @@ type DirectoryList struct { worker *types.Worker skipSelect context.Context skipSelectCancel context.CancelFunc - uiConf map[string]*config.UIConfig } func NewDirectoryList(conf *config.AercConfig, acctConf *config.AccountConfig, @@ -68,8 +65,6 @@ func NewDirectoryList(conf *config.AercConfig, acctConf *config.AccountConfig, ) DirectoryLister { ctx, cancel := context.WithCancel(context.Background()) - uiConfMap := make(map[string]*config.UIConfig) - dirlist := &DirectoryList{ aercConf: conf, acctConf: acctConf, @@ -77,7 +72,6 @@ func NewDirectoryList(conf *config.AercConfig, acctConf *config.AccountConfig, worker: worker, skipSelect: ctx, skipSelectCancel: cancel, - uiConf: uiConfMap, } uiConf := dirlist.UiConfig("") dirlist.spinner = NewSpinner(uiConf) @@ -91,20 +85,10 @@ func NewDirectoryList(conf *config.AercConfig, acctConf *config.AccountConfig, } func (dirlist *DirectoryList) UiConfig(dir string) *config.UIConfig { - dirlist.Lock() - defer dirlist.Unlock() if dir == "" { dir = dirlist.Selected() } - if ui, ok := dirlist.uiConf[dir]; ok { - return ui - } - ui := dirlist.aercConf.GetUiConfig(map[config.ContextType]string{ - config.UI_CONTEXT_ACCOUNT: dirlist.acctConf.Name, - config.UI_CONTEXT_FOLDER: dir, - }) - dirlist.uiConf[dir] = ui - return ui + return dirlist.aercConf.Ui.ForAccount(dirlist.acctConf.Name).ForFolder(dir) } func (dirlist *DirectoryList) List() []string { diff --git a/widgets/msglist.go b/widgets/msglist.go index 09ee705e..85b8f168 100644 --- a/widgets/msglist.go +++ b/widgets/msglist.go @@ -202,19 +202,9 @@ func (ml *MessageList) drawRow(textWidth int, ctx *ui.Context, uid uint32, row i // TODO deprecate subject contextual UIs? Only related setting is styleset, // should implement a better per-message styling method // Check if we have any applicable ContextualUIConfigs - confs := ml.aerc.conf.GetContextualUIConfigs() uiConfig := acct.Directories().UiConfig(store.DirInfo.Name) - for _, c := range confs { - if c.ContextType == config.UI_CONTEXT_SUBJECT && msg.Envelope != nil { - if c.Regex.Match([]byte(msg.Envelope.Subject)) { - confParams := map[config.ContextType]string{ - config.UI_CONTEXT_ACCOUNT: acct.AccountConfig().Name, - config.UI_CONTEXT_FOLDER: acct.Directories().Selected(), - config.UI_CONTEXT_SUBJECT: msg.Envelope.Subject, - } - uiConfig = ml.conf.GetUiConfig(confParams) - } - } + if msg.Envelope != nil { + uiConfig = uiConfig.ForSubject(msg.Envelope.Subject) } msg_styles := []config.StyleObject{} diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 6c929578..875ff873 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -738,12 +738,7 @@ var noFilterConfiguredCommands = [][]string{ } func newNoFilterConfigured(pv *PartViewer) *ui.Grid { - bindings := pv.conf.MergeContextualBinds( - pv.conf.Bindings.MessageView, - config.BIND_CONTEXT_ACCOUNT, - pv.acctConfig.Name, - "view", - ) + bindings := pv.conf.Bindings.MessageView.ForAccount(pv.acctConfig.Name) var actions []string |