aboutsummaryrefslogtreecommitdiffstats
path: root/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'widgets')
-rw-r--r--widgets/account.go4
-rw-r--r--widgets/aerc.go19
-rw-r--r--widgets/compose.go5
-rw-r--r--widgets/dirlist.go18
-rw-r--r--widgets/msglist.go14
-rw-r--r--widgets/msgviewer.go7
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