diff options
author | Tim Culverhouse <tim@timculverhouse.com> | 2022-06-19 16:41:15 -0500 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-06-22 11:30:23 +0200 |
commit | e78540990496cb3f4ff611c680b005022d9d2fad (patch) | |
tree | 98e1c0bce1b5bbb80be5beeb98f5bcb6ee70ee44 | |
parent | 7aa71d334b2755cc5e92fcf83398ce65ede45b40 (diff) | |
download | aerc-e78540990496cb3f4ff611c680b005022d9d2fad.zip |
binds: add folder context for message list binds
Add option to specify folder-specific binds for message lists. The binds
are layered: any existing binds in [messages] are overwritten by a more
specific bind in say, [messages:folder=Drafts]. The order is currently:
[messages] < [messages:account=<account>] < [messages:folder=<folder>]
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
Acked-by: Robin Jarry <robin@jarry.cc>
-rw-r--r-- | config/config.go | 5 | ||||
-rw-r--r-- | doc/aerc-config.5.scd | 10 | ||||
-rw-r--r-- | widgets/aerc.go | 3 |
3 files changed, 17 insertions, 1 deletions
diff --git a/config/config.go b/config/config.go index dae32b7..6410632 100644 --- a/config/config.go +++ b/config/config.go @@ -72,6 +72,7 @@ const ( UI_CONTEXT_ACCOUNT UI_CONTEXT_SUBJECT BIND_CONTEXT_ACCOUNT + BIND_CONTEXT_FOLDER ) type UIConfigContext struct { @@ -910,6 +911,10 @@ func (config *AercConfig) LoadBinds(binds *ini.File, baseName string, baseGroup continue } contextualBind.ContextType = BIND_CONTEXT_ACCOUNT + case "folder": + // No validation needed. If the folder doesn't exist, the binds + // never get used + contextualBind.ContextType = BIND_CONTEXT_FOLDER default: return fmt.Errorf("Unknown Context Bind Section: %s", sectionName) } diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index 47ae752..9f61b94 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -701,12 +701,22 @@ You may also configure account specific key bindings for each context: keybindings for this context and account, where <AccountName> matches the account name you provided in *accounts.conf*. +Folder-specific bindings can be configured for message lists: + +*[messages:folder=<FolderName>]* + keybindings under this section will be specific to the folder named + <FolderName>. Keybindings from a *folder* specifier will take precedence + over *account* specifiers + Example: ``` [messages:account=Mailbox] c = :cf path:mailbox/** and<space> [compose::editor:account=Mailbox2] + +[messages:folder=Drafts] +<Enter> = :recall<Enter> ... ``` diff --git a/widgets/aerc.go b/widgets/aerc.go index 8339180..53d5944 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -194,7 +194,8 @@ func (aerc *Aerc) getBindings() *config.KeyBindings { } switch view := aerc.SelectedTab().(type) { case *AccountView: - return aerc.conf.MergeContextualBinds(aerc.conf.Bindings.MessageList, config.BIND_CONTEXT_ACCOUNT, selectedAccountName, "messages") + 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") case *AccountWizard: return aerc.conf.Bindings.AccountWizard case *Composer: |