diff options
author | Julio B <julio.bacel@gmail.com> | 2024-03-06 01:11:05 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-04-13 21:46:32 +0200 |
commit | 941e2e9e7de058f9e6e10efab1ece8be4188468e (patch) | |
tree | 85907c9c23171768c9ba9c41d42f8e802ece3039 | |
parent | 672b4edca7af2303cfcb1d69a676556d12476b5f (diff) | |
download | aerc-941e2e9e7de058f9e6e10efab1ece8be4188468e.tar.gz |
ui: use a custom prefix for dummy root
These messages are not really the root of the thread, and should not be
displayed as such. Add a new special prefix to make them appear like
the first child of a rootless thread.
Signed-off-by: Julio B <julio.bacel@gmail.com>
Tested-by: Inwit <inwit@sindominio.net>
Acked-by: Robin Jarry <robin@jarry.cc>
-rw-r--r-- | app/msglist.go | 6 | ||||
-rw-r--r-- | config/aerc.conf | 14 | ||||
-rw-r--r-- | config/ui.go | 2 | ||||
-rw-r--r-- | doc/aerc-config.5.scd | 11 | ||||
-rw-r--r-- | worker/notmuch/lib/database.go | 1 | ||||
-rw-r--r-- | worker/types/thread.go | 3 |
6 files changed, 36 insertions, 1 deletions
diff --git a/app/msglist.go b/app/msglist.go index 4cdf614a..996ffa0c 100644 --- a/app/msglist.go +++ b/app/msglist.go @@ -438,7 +438,7 @@ func unreadInThread(thread *types.Thread, store *lib.MessageStore) (ctr int) { func threadPrefix(t *types.Thread, reverse bool, msglist bool) string { uiConfig := SelectedAccountUiConfig() - var tip, prefix, firstChild, lastSibling, orphan string + var tip, prefix, firstChild, lastSibling, orphan, dummy string if msglist { tip = uiConfig.ThreadPrefixTip } else { @@ -472,10 +472,12 @@ func threadPrefix(t *types.Thread, reverse bool, msglist bool) string { firstChild = uiConfig.ThreadPrefixFirstChildReverse lastSibling = uiConfig.ThreadPrefixLastSiblingReverse orphan = uiConfig.ThreadPrefixOrphanReverse + dummy = uiConfig.ThreadPrefixDummyReverse } else { firstChild = uiConfig.ThreadPrefixFirstChild lastSibling = uiConfig.ThreadPrefixLastSibling orphan = uiConfig.ThreadPrefixOrphan + dummy = uiConfig.ThreadPrefixDummy } var hiddenOffspring bool = t.FirstChild != nil && t.FirstChild.Hidden > 0 @@ -503,6 +505,8 @@ func threadPrefix(t *types.Thread, reverse bool, msglist bool) string { uiConfig.ThreadPrefixTip case t.Parent == nil && hiddenOffspring: prefix = uiConfig.ThreadPrefixFolded + case t.Parent == nil && t.Dummy: + prefix = dummy + tip case t.Parent == nil && t.FirstChild != nil: prefix = orphan case t.Parent == nil && t.FirstChild == nil: diff --git a/config/aerc.conf b/config/aerc.conf index 17b9d216..a6f287a1 100644 --- a/config/aerc.conf +++ b/config/aerc.conf @@ -478,6 +478,20 @@ #thread-prefix-last-sibling-reverse = "┌─" # +# Customize the thread prefix appearance by selecting the connector for dummy +# thread. +# +# Default: "┬─" +#thread-prefix-dummy = "┬─" + +# +# Customize the reversed thread prefix appearance by selecting the connector for +# dummy thread. +# +# Default: "┴─" +#thread-prefix-dummy-reverse = "┴─" + +# # Customize the reversed thread prefix appearance by selecting the first child # connector. # diff --git a/config/ui.go b/config/ui.go index 7b819192..7da365d6 100644 --- a/config/ui.go +++ b/config/ui.go @@ -95,9 +95,11 @@ type UIConfig struct { ThreadPrefixLone string `ini:"thread-prefix-lone" default:""` ThreadPrefixOrphan string `ini:"thread-prefix-orphan" default:""` ThreadPrefixLastSibling string `ini:"thread-prefix-last-sibling" default:"└─"` + ThreadPrefixDummy string `ini:"thread-prefix-dummy" default:"┬─"` ThreadPrefixLastSiblingReverse string `ini:"thread-prefix-last-sibling-reverse" default:"┌─"` ThreadPrefixFirstChildReverse string `ini:"thread-prefix-first-child-reverse" default:""` ThreadPrefixOrphanReverse string `ini:"thread-prefix-orphan-reverse" default:""` + ThreadPrefixDummyReverse string `ini:"thread-prefix-dummy-reverse" default:"┴─"` // Tab Templates TabTitleAccount *template.Template `ini:"tab-title-account" default:"{{.Account}}"` diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index e72f2c6a..ded49a14 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -577,6 +577,16 @@ following configurable prefix parts: Default: _┌─_ +*thread-prefix-dummy* = _<string>_ + Define the connector for the dummy head. + + Default: _┬─_ + +*thread-prefix-dummy-reverse* = _<string>_ + Define the connector for the dummy head in reversed threads. + + Default: _┴─_ + *thread-prefix-first-child-reverse* = _<string>_ Define the arrow appearance by selecting the first child connector in @@ -631,6 +641,7 @@ thread-prefix-unfolded = "" thread-prefix-first-child = "┬" thread-prefix-has-siblings = "├" thread-prefix-orphan = "┌" +thread-prefix-dummy = "┬" thread-prefix-lone = " " thread-prefix-last-sibling = "╰" ``` diff --git a/worker/notmuch/lib/database.go b/worker/notmuch/lib/database.go index bd0bc639..7216274a 100644 --- a/worker/notmuch/lib/database.go +++ b/worker/notmuch/lib/database.go @@ -138,6 +138,7 @@ func (db *DB) ThreadsFromQuery(ctx context.Context, q string, entireThread bool) tlm := thread.TopLevelMessages() root := db.makeThread(nil, &tlm, entireThread) if len(root) > 1 { + root[0].Dummy = true root[0].FirstChild = root[0].NextSibling root[0].NextSibling.PrevSibling = nil root[0].NextSibling = nil diff --git a/worker/types/thread.go b/worker/types/thread.go index 8705ace1..a79a0b2d 100644 --- a/worker/types/thread.go +++ b/worker/types/thread.go @@ -18,6 +18,9 @@ type Thread struct { Hidden int // if this flag is not zero the message isn't rendered in the UI Deleted bool // if this flag is set the message was deleted + // if this flag is set the message is the root of an incomplete thread + Dummy bool + // Context indicates the message doesn't match the mailbox / query but // is displayed for context Context bool |