aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--commands/msg/toggle-thread-context.go36
-rw-r--r--doc/aerc.1.scd4
-rw-r--r--lib/msgstore.go8
4 files changed, 49 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e9b3f2a..0897c6a5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,6 +28,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
temporary file from which selected files will be read instead of the standard
output.
- Save drafts in custom folders with `:postpone -t <folder>`.
+- View "thread-context" in notmuch backends with `:toggle-thread-context`.
### Fixed
diff --git a/commands/msg/toggle-thread-context.go b/commands/msg/toggle-thread-context.go
new file mode 100644
index 00000000..09c60b85
--- /dev/null
+++ b/commands/msg/toggle-thread-context.go
@@ -0,0 +1,36 @@
+package msg
+
+import (
+ "errors"
+
+ "git.sr.ht/~rjarry/aerc/lib/ui"
+ "git.sr.ht/~rjarry/aerc/widgets"
+)
+
+type ToggleThreadContext struct{}
+
+func init() {
+ register(ToggleThreadContext{})
+}
+
+func (ToggleThreadContext) Aliases() []string {
+ return []string{"toggle-thread-context"}
+}
+
+func (ToggleThreadContext) Complete(aerc *widgets.Aerc, args []string) []string {
+ return nil
+}
+
+func (ToggleThreadContext) Execute(aerc *widgets.Aerc, args []string) error {
+ if len(args) != 1 {
+ return errors.New("Usage: toggle-entire-thread")
+ }
+ h := newHelper(aerc)
+ store, err := h.store()
+ if err != nil {
+ return err
+ }
+ store.ToggleThreadContext()
+ ui.Invalidate()
+ return nil
+}
diff --git a/doc/aerc.1.scd b/doc/aerc.1.scd
index 8515370a..b2123a54 100644
--- a/doc/aerc.1.scd
+++ b/doc/aerc.1.scd
@@ -503,6 +503,10 @@ message list, the message in the message viewer, etc).
in *[ui].index-columns*. See *aerc-config*(5) and *aerc-templates*(7)
for more details.
+*:toggle-thread-context*
+ Toggles between showing entire thread (when supported) and only showing
+ messages which match the current query / mailbox.
+
*:view* [*-p*]++
*:view-message* [*-p*]
Opens the message viewer to display the selected message. If the peek
diff --git a/lib/msgstore.go b/lib/msgstore.go
index 6186b195..ab48f331 100644
--- a/lib/msgstore.go
+++ b/lib/msgstore.go
@@ -442,6 +442,14 @@ func (store *MessageStore) ThreadedView() bool {
return store.threadedView
}
+func (store *MessageStore) ToggleThreadContext() {
+ if !store.threadedView {
+ return
+ }
+ store.threadContext = !store.threadContext
+ store.Sort(store.sortCriteria, nil)
+}
+
func (store *MessageStore) BuildThreads() bool {
return store.buildThreads
}