diff options
-rw-r--r-- | app/account.go | 1 | ||||
-rw-r--r-- | config/aerc.conf | 6 | ||||
-rw-r--r-- | config/ui.go | 1 | ||||
-rw-r--r-- | doc/aerc-config.5.scd | 6 | ||||
-rw-r--r-- | lib/msgstore.go | 9 |
5 files changed, 22 insertions, 1 deletions
diff --git a/app/account.go b/app/account.go index ab5793bc..07c6801d 100644 --- a/app/account.go +++ b/app/account.go @@ -247,6 +247,7 @@ func (acct *AccountView) newStore(name string) *lib.MessageStore { uiConf.ThreadingEnabled, uiConf.ForceClientThreads, uiConf.ClientThreadsDelay, + uiConf.SelectLast, uiConf.ReverseOrder, uiConf.ReverseThreadOrder, uiConf.SortThreadSiblings, diff --git a/config/aerc.conf b/config/aerc.conf index ccfbe748..a7d763d7 100644 --- a/config/aerc.conf +++ b/config/aerc.conf @@ -371,6 +371,12 @@ # Default: false #reverse-thread-order=false +# Positions the cursor on the last message in the message list (at the +# bottom of the view) when opening a new folder. +# +# Default: false +#select-last-message=false + # Sort the thread siblings according to the sort criteria for the messages. If # sort-thread-siblings is false, the thread siblings will be sorted based on # the message UID in ascending order. This option is only applicable for diff --git a/config/ui.go b/config/ui.go index 7da365d6..7c7f1869 100644 --- a/config/ui.go +++ b/config/ui.go @@ -80,6 +80,7 @@ type UIConfig struct { BorderCharVertical rune `ini:"border-char-vertical" default:"│" type:"rune"` BorderCharHorizontal rune `ini:"border-char-horizontal" default:"─" type:"rune"` + SelectLast bool `ini:"select-last-message" default:"false"` ReverseOrder bool `ini:"reverse-msglist-order"` ReverseThreadOrder bool `ini:"reverse-thread-order"` SortThreadSiblings bool `ini:"sort-thread-siblings"` diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index c8c7604c..17cea5ff 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -469,6 +469,12 @@ These options are configured in the *[ui]* section of _aerc.conf_. Default: _false_ +*select-last-message* = _true_|_false_ + Positions the cursor on the last message in the message list (at the + bottom of the view) when opening a new folder. + + Default: _false_ + *sort-thread-siblings* = _true_|_false_ Sort the thread siblings according to the sort criteria for the messages. If sort-thread-siblings is false, the thread siblings will be sorted based on diff --git a/lib/msgstore.go b/lib/msgstore.go index 8f626eb8..b4790735 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -48,6 +48,7 @@ type MessageStore struct { sortDefault []*types.SortCriterion threadedView bool + selectLast bool reverseThreadOrder bool threadContext bool sortThreadSiblings bool @@ -89,6 +90,7 @@ const MagicUid = 0xFFFFFFFF func NewMessageStore(worker *types.Worker, defaultSortCriteria []*types.SortCriterion, thread bool, clientThreads bool, clientThreadsDelay time.Duration, + selectLast bool, reverseOrder bool, reverseThreadOrder bool, sortThreadSiblings bool, triggerNewEmail func(*models.MessageInfo), triggerDirectoryChange func(), triggerMailDeleted func(), @@ -116,6 +118,7 @@ func NewMessageStore(worker *types.Worker, threadedView: thread, buildThreads: clientThreads, threadContext: threadContext, + selectLast: selectLast, reverseThreadOrder: reverseThreadOrder, sortThreadSiblings: sortThreadSiblings, @@ -745,7 +748,11 @@ func (store *MessageStore) Selected() *models.MessageInfo { func (store *MessageStore) SelectedUid() uint32 { if store.selectedUid == MagicUid && len(store.Uids()) > 0 { iter := store.UidsIterator() - store.Select(store.Uids()[iter.StartIndex()]) + idx := iter.StartIndex() + if store.selectLast { + idx = iter.EndIndex() + } + store.Select(store.Uids()[idx]) } return store.selectedUid } |