diff options
author | delitako <delitako@delitako.xyz> | 2024-01-25 22:50:14 -0600 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-01-26 20:27:08 +0100 |
commit | 936d519a67301bd78a4d737dc47234e3769e639f (patch) | |
tree | 701dc21c0551d4f020cb1c339ba0270c1525c2a7 /app/aerc.go | |
parent | 58585e0a8e264f7a5500b3f24b0b319d59f36882 (diff) | |
download | aerc-936d519a67301bd78a4d737dc47234e3769e639f.tar.gz |
tabs: optimize switching by offsets
I imagine no sane user requires aerc to correctly handle commands like
`:next-tab 1000000000`, but I tried anyway and it froze aerc while
also eating up many GBs of system memory. This behavior is not ideal,
so I improved it.
This commit adds functions for selecting a tab at an offset from the
currently-selected tab and changes the next-tab, prev-tab, and
change-tab commands to use these functions instead of looping.
Signed-off-by: delitako <delitako@delitako.xyz>
Tested-by: Thomas Böhler <witcher@wiredspace.de>
Reviewed-by: Thomas Böhler <witcher@wiredspace.de>
Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'app/aerc.go')
-rw-r--r-- | app/aerc.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/app/aerc.go b/app/aerc.go index c7307540..31d3a44b 100644 --- a/app/aerc.go +++ b/app/aerc.go @@ -525,6 +525,10 @@ func (aerc *Aerc) SelectTabIndex(index int) bool { return ok } +func (aerc *Aerc) SelectTabAtOffset(offset int) { + aerc.tabs.SelectOffset(offset) +} + func (aerc *Aerc) TabNames() []string { return aerc.tabs.Names() } |