diff options
author | Jason Cox <me@jasoncarloscox.com> | 2024-02-17 12:34:23 -0500 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-02-26 09:30:35 +0100 |
commit | f3a61a341c81d70b51d91a71e1b0909acdcdb8f4 (patch) | |
tree | 58a3156dc63500fd4e0cd0034a59e86cdbb6a3cb /app | |
parent | d8d5fc8d31f358c6425dfa18a9f8d2767bc6df40 (diff) | |
download | aerc-f3a61a341c81d70b51d91a71e1b0909acdcdb8f4.tar.gz |
commands: add :query to create named notmuch dirs
The current :cf command can be used to create folders for arbitrary
notmuch queries. These folders use the query as their namee. In some
cases, though, it's useful to give a more human-readable name. Create a
new :query command to allow doing so.
The :query command accepts an optional -n flag to specify a name. The
remaining arguments are interpreted verbatim as a notmuch query. If no
name is specified, the query itself is used as the name.
For example, to create a new folder with the full thread of the current
message, named by its subject, run the following command:
:query -n "{{.SubjectBase}}" thread:"{mid:{{.MessageId}}}"
:query could have been implemented as an additional flag to :cf. Giving
a name to the created folder would make the smantics of :cf strange,
though. For example, to create a named query folder, one would use
:cf -n <name> <query>. This syntax feels odd; the name of the folder
seems like it ought to be the positional argument of the change folder
command. Alternatively, the usage could be :cf -q <query> <name>, but
this feels wrong as well: the query, which is provided as a positional
parameter when no name is specified, becomes a flag parameter when a
name is specified. What's more, both of these potential usages add a
notmuch-specific flag to an otherwise general command. Creating a new
command feels cleaner. Perhaps the current query functionality of the
:cf command could eventually be deprecated to remove the duplicate
functionality and keep :cf limited to changing to existing folders.
Changelog-added: Create notmuch named queries with the `:query`
command.
Signed-off-by: Jason Cox <me@jasoncarloscox.com>
Tested-by: Inwit <inwit@sindominio.net>
Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'app')
-rw-r--r-- | app/dirlist.go | 7 | ||||
-rw-r--r-- | app/dirtree.go | 6 |
2 files changed, 7 insertions, 6 deletions
diff --git a/app/dirlist.go b/app/dirlist.go index 898b8130..1fc2dd63 100644 --- a/app/dirlist.go +++ b/app/dirlist.go @@ -24,7 +24,7 @@ type DirectoryLister interface { Selected() string Select(string) - Open(string, time.Duration, func(types.WorkerMessage)) + Open(string, string, time.Duration, func(types.WorkerMessage)) Update(types.WorkerMessage) List() []string @@ -175,10 +175,10 @@ func (dirlist *DirectoryList) ExpandFolder() { } func (dirlist *DirectoryList) Select(name string) { - dirlist.Open(name, dirlist.UiConfig(name).DirListDelay, nil) + dirlist.Open(name, "", dirlist.UiConfig(name).DirListDelay, nil) } -func (dirlist *DirectoryList) Open(name string, delay time.Duration, +func (dirlist *DirectoryList) Open(name string, query string, delay time.Duration, cb func(types.WorkerMessage), ) { dirlist.selecting = name @@ -193,6 +193,7 @@ func (dirlist *DirectoryList) Open(name string, delay time.Duration, dirlist.worker.PostAction(&types.OpenDirectory{ Context: ctx, Directory: name, + Query: query, }, func(msg types.WorkerMessage) { switch msg := msg.(type) { diff --git a/app/dirtree.go b/app/dirtree.go index 53ab4aad..b735dacd 100644 --- a/app/dirtree.go +++ b/app/dirtree.go @@ -239,10 +239,10 @@ func (dt *DirectoryTree) Select(name string) { if name == "" { return } - dt.Open(name, dt.UiConfig(name).DirListDelay, nil) + dt.Open(name, "", dt.UiConfig(name).DirListDelay, nil) } -func (dt *DirectoryTree) Open(name string, delay time.Duration, cb func(types.WorkerMessage)) { +func (dt *DirectoryTree) Open(name string, query string, delay time.Duration, cb func(types.WorkerMessage)) { if name == "" { return } @@ -252,7 +252,7 @@ func (dt *DirectoryTree) Open(name string, delay time.Duration, cb func(types.Wo } else { dt.reindex(name) } - dt.DirectoryList.Open(name, delay, func(msg types.WorkerMessage) { + dt.DirectoryList.Open(name, query, delay, func(msg types.WorkerMessage) { if cb != nil { cb(msg) } |