diff --git a/config/aerc.conf b/config/aerc.conf index 8e503f5..2906381 100644 --- a/config/aerc.conf +++ b/config/aerc.conf @@ -174,6 +174,11 @@ completion-popovers=true # Default: false #threading-enabled=false +# Force client-side thread building +# +# Default: false +#force-client-threads=false + [statusline] # Describes the format string for the statusline. # diff --git a/config/config.go b/config/config.go index 8a243c3..e0c8608 100644 --- a/config/config.go +++ b/config/config.go @@ -46,6 +46,7 @@ type UIConfig struct { EmptyDirlist string `ini:"empty-dirlist"` MouseEnabled bool `ini:"mouse-enabled"` ThreadingEnabled bool `ini:"threading-enabled"` + ForceClientThreads bool `ini:"force-client-threads"` FuzzyComplete bool `ini:"fuzzy-complete"` NewMessageBell bool `ini:"new-message-bell"` Spinner string `ini:"spinner"` diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index a9d0cd9..55bc7a8 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -300,6 +300,12 @@ These options are configured in the *[ui]* section of aerc.conf. Default: false +*force-client-threads* + Force threads to be built client-side. Backends that don't support threading + will always build threads client side. + + Default: false + ## Contextual UI Configuration diff --git a/lib/msgstore.go b/lib/msgstore.go index 0eb5682..99ae594 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -60,13 +60,12 @@ type MessageStore struct { func NewMessageStore(worker *types.Worker, dirInfo *models.DirectoryInfo, defaultSortCriteria []*types.SortCriterion, - thread bool, + thread bool, clientThreads bool, triggerNewEmail func(*models.MessageInfo), triggerDirectoryChange func()) *MessageStore { dirInfoUpdateDelay := 5 * time.Second - var clientThreads bool if !dirInfo.Caps.Thread { clientThreads = true } diff --git a/widgets/account.go b/widgets/account.go index 4fe6df7..6e03160 100644 --- a/widgets/account.go +++ b/widgets/account.go @@ -295,6 +295,7 @@ func (acct *AccountView) onMessage(msg types.WorkerMessage) { store = lib.NewMessageStore(acct.worker, msg.Info, acct.GetSortCriteria(), acct.UiConfig().ThreadingEnabled, + acct.UiConfig().ForceClientThreads, func(msg *models.MessageInfo) { acct.conf.Triggers.ExecNewEmail(acct.acct, acct.conf, msg)