From 6a84f1331f1c18dccfbe58601a4243995ac5c7d2 Mon Sep 17 00:00:00 2001 From: Jason Cox Date: Thu, 29 Feb 2024 22:21:30 -0500 Subject: templates: add visual mode indicator to TrayInfo It's useful to have some indicator of whether or not aerc is in visual mark mode. Add such an indicator to the TrayInfo available in the status line. Changelog-changed: The `TrayInfo` template variable now includes a visual mark mode indicator. Signed-off-by: Jason Cox Acked-by: Robin Jarry --- lib/marker/marker.go | 6 ++++++ lib/state/templates.go | 9 +++++++++ lib/state/texter.go | 9 +++++++++ 3 files changed, 24 insertions(+) (limited to 'lib') diff --git a/lib/marker/marker.go b/lib/marker/marker.go index 21c151f3..a0860be9 100644 --- a/lib/marker/marker.go +++ b/lib/marker/marker.go @@ -8,6 +8,7 @@ type Marker interface { Remark() Marked() []uint32 IsMarked(uint32) bool + IsVisualMark() bool ToggleVisualMark(bool) UpdateVisualMark() ClearVisualMark() @@ -114,6 +115,11 @@ func (mc *controller) Marked() []uint32 { return marked } +// IsVisualMark indicates whether visual marking mode is enabled. +func (mc *controller) IsVisualMark() bool { + return mc.visualMarkMode +} + // ToggleVisualMark enters or leaves the visual marking mode func (mc *controller) ToggleVisualMark(clear bool) { mc.visualMarkMode = !mc.visualMarkMode diff --git a/lib/state/templates.go b/lib/state/templates.go index e1570cd3..37767660 100644 --- a/lib/state/templates.go +++ b/lib/state/templates.go @@ -27,6 +27,7 @@ type DataSetter interface { Data() models.TemplateData SetHeaders(*mail.Header, *models.OriginalMail) SetInfo(*models.MessageInfo, int, bool) + SetVisual(bool) SetThreading(string, bool, int, int, bool, bool) SetComposer(Composer) SetAccount(*config.AccountConfig) @@ -54,6 +55,7 @@ type templateData struct { info *models.MessageInfo marked bool msgNum int + visual bool // message list threading threadInfo ThreadInfo @@ -94,6 +96,10 @@ func (d *templateData) SetInfo(info *models.MessageInfo, num int, marked bool, d.marked = marked } +func (d *templateData) SetVisual(visual bool) { + d.visual = visual +} + func (d *templateData) SetThreading(prefix string, same bool, count int, unread int, folded bool, context bool, ) { @@ -624,6 +630,9 @@ func (d *templateData) TrayInfo() string { if d.state.passthrough { tray = append(tray, texter().Passthrough()) } + if d.visual { + tray = append(tray, texter().Visual()) + } return strings.Join(tray, config.Statusline.Separator) } diff --git a/lib/state/texter.go b/lib/state/texter.go index 9212108d..f51d4d33 100644 --- a/lib/state/texter.go +++ b/lib/state/texter.go @@ -12,6 +12,7 @@ type texterInterface interface { Passthrough() string Sorting() string Threading() string + Visual() string FormatFilter(string) string FormatSearch(string) string } @@ -40,6 +41,10 @@ func (t text) Threading() string { return "threading" } +func (t text) Visual() string { + return "visual" +} + func (t text) FormatFilter(s string) string { return s } @@ -72,6 +77,10 @@ func (i icon) Threading() string { return "๐Ÿงต" } +func (i icon) Visual() string { + return "๐Ÿ•ถ" +} + func (i icon) FormatFilter(s string) string { return strings.ReplaceAll(s, "filter", "๐Ÿ”ฆ") } -- cgit