diff options
author | Koni Marti <koni.marti@gmail.com> | 2024-05-14 23:43:12 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-05-28 23:52:40 +0200 |
commit | 2276a796f36cb6e213aca3b760b411202ed24e0e (patch) | |
tree | fb3f172cd733e1d768ff6099b4a6f3a6de439c98 | |
parent | 9f97c698e3dd8bb98242f0db40946dee514e3ee8 (diff) | |
download | aerc-2276a796f36cb6e213aca3b760b411202ed24e0e.tar.gz |
ui: add select-last-message option
Add a [ui].select-last-message option to position the cursor at the
bottom of the message list view.
Fixes: https://todo.sr.ht/~rjarry/aerc/254
Changelog-added: Add `[ui].select-last-message` option to position
cursor at the bottom of the view.
Suggested-by: Bence Ferdinandy <bence@ferdinandy.com>
Requested-by: Tomasz Kramkowski <tomasz@kramkow.ski>
Signed-off-by: Koni Marti <koni.marti@gmail.com>
Tested-by: Tomasz Kramkowski <tomasz@kramkow.ski>
Acked-by: Robin Jarry <robin@jarry.cc>
-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 } |