aboutsummaryrefslogtreecommitdiffstats
path: root/config/ui.go
diff options
context:
space:
mode:
authorMoritz Poldrack <git@moritz.sh>2024-01-06 17:40:33 +0100
committerRobin Jarry <robin@jarry.cc>2024-01-08 00:07:51 +0100
commitec0f4a50cf777895ff970fff2900265c8357c2bc (patch)
treef2ad11cc4281ef95ad0bb147cae883c7a572508a /config/ui.go
parentb76bf1b7eecfc885798385960b04b92cb62d75f0 (diff)
downloadaerc-ec0f4a50cf777895ff970fff2900265c8357c2bc.tar.gz
config: remove deprecated settings
Several settings have been deprecated a few versions ago and announced their removal in 0.17. Remove these deprecated sections and their uses. Signed-off-by: Moritz Poldrack <git@moritz.sh> Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'config/ui.go')
-rw-r--r--config/ui.go257
1 files changed, 0 insertions, 257 deletions
diff --git a/config/ui.go b/config/ui.go
index f339066e..ed0b4a33 100644
--- a/config/ui.go
+++ b/config/ui.go
@@ -1,17 +1,13 @@
package config
import (
- "bytes"
"fmt"
"math"
"path"
"regexp"
- "strconv"
- "strings"
"text/template"
"time"
- "git.sr.ht/~rjarry/aerc/lib/templates"
"git.sr.ht/~rjarry/aerc/log"
"github.com/emersion/go-message/mail"
"github.com/gdamore/tcell/v2"
@@ -111,8 +107,6 @@ type uiContextKey struct {
value string
}
-const unreadExists string = `{{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}`
-
var Ui = &UIConfig{
contextualCounts: make(map[uiContextType]int),
contextualCache: make(map[uiContextKey]*UIConfig),
@@ -125,8 +119,6 @@ func parseUi(file *ini.File) error {
return err
}
- var ctxSubjectSections []*ini.Section
-
for _, section := range file.Sections() {
var err error
groups := uiContextualSectionRe.FindStringSubmatch(section.Name())
@@ -134,13 +126,6 @@ func parseUi(file *ini.File) error {
continue
}
ctx, separator, value := groups[1], groups[2], groups[3]
- if ctx == "subject" {
- log.Warnf(
- "%s contextual subject config has been replaced by dynamic msglist_* styles.",
- section.Name())
- ctxSubjectSections = append(ctxSubjectSections, section)
- continue
- }
uiSubConfig := UIConfig{}
if err = uiSubConfig.parse(section); err != nil {
@@ -169,30 +154,6 @@ func parseUi(file *ini.File) error {
Ui.contextualCounts[contextualUi.ContextType]++
}
- if len(ctxSubjectSections) > 0 {
- f := ini.Empty()
- for _, sec := range ctxSubjectSections {
- s, _ := f.NewSection(sec.Name())
- for k, v := range sec.KeysHash() {
- s.NewKey(k, v) //nolint:errcheck // who cares?
- }
- }
- var buf bytes.Buffer
- f.WriteTo(&buf) //nolint:errcheck // who cares?
- w := Warning{
- Title: "DEPRECATION WARNING: SUBJECT UI SECTIONS",
- Body: fmt.Sprintf(`
-Contextual UI configuration based on subject value has been deprecated and
-replaced by dynamic msglist_* styles in stylesets.
-
-The following configuration sections from aerc.conf have been ignored:
-
-%sYou should remove them to get rid of that warning and update your styleset(s)
-accordingly. See aerc-stylesets(7) for more details.`, buf.String()),
- }
- Warnings = append(Warnings, w)
- }
-
// append default paths to styleset-dirs
for _, dir := range SearchDirs {
Ui.StyleSetDirs = append(
@@ -236,70 +197,6 @@ func (config *UIConfig) parse(section *ini.Section) error {
config.MessageViewTimestampFormat = config.TimestampFormat
}
- if key, err := section.GetKey("index-format"); err == nil {
- columns, err := convertIndexFormat(key.String())
- if err != nil {
- return err
- }
- config.IndexColumns = columns
- log.Warnf("%s %s",
- "The index-format setting has been replaced by index-columns.",
- "index-format will be removed in aerc 0.17.")
- w := Warning{
- Title: "DEPRECATION WARNING: [" + section.Name() + "].index-format",
- Body: fmt.Sprintf(`
-The index-format setting is deprecated. It has been replaced by index-columns.
-
-Your configuration in this instance was automatically converted to:
-
-[%s]
-%s
-Your configuration file was not changed. To make this change permanent and to
-dismiss this deprecation warning on launch, copy the above lines into aerc.conf
-and remove index-format from it. See aerc-config(5) for more details.
-
-index-format will be removed in aerc 0.17.
-`, section.Name(), ColumnDefsToIni(columns, "index-columns")),
- }
- Warnings = append(Warnings, w)
- }
- if key, err := section.GetKey("dirlist-format"); err == nil {
- left, right := convertDirlistFormat(key.String())
- l, err := templates.ParseTemplate(left, left)
- if err != nil {
- return err
- }
- r, err := templates.ParseTemplate(right, right)
- if err != nil {
- return err
- }
- config.DirListLeft = l
- config.DirListRight = r
- log.Warnf("%s %s",
- "The dirlist-format setting has been replaced by dirlist-left and dirlist-right.",
- "dirlist-format will be removed in aerc 0.17.")
- w := Warning{
- Title: "DEPRECATION WARNING: [" + section.Name() + "].dirlist-format",
- Body: fmt.Sprintf(`
-The dirlist-format setting is deprecated. It has been replaced by dirlist-left
-and dirlist-right.
-
-Your configuration in this instance was automatically converted to:
-
-[%s]
-dirlist-left = %s
-dirlist-right = %s
-
-Your configuration file was not changed. To make this change permanent and to
-dismiss this deprecation warning on launch, copy the above lines into aerc.conf
-and remove dirlist-format from it. See aerc-config(5) for more details.
-
-dirlist-format will be removed in aerc 0.17.
-`, section.Name(), left, right),
- }
- Warnings = append(Warnings, w)
- }
-
return nil
}
@@ -329,160 +226,6 @@ func (*UIConfig) ParseCompletionMinChars(section *ini.Section, key *ini.Key) (in
return key.Int()
}
-var indexFmtRegexp = regexp.MustCompile(`%(-?\d+)?(\.\d+)?([ACDFRTZadfgilnrstuv])`)
-
-func convertIndexFormat(indexFormat string) ([]*ColumnDef, error) {
- matches := indexFmtRegexp.FindAllStringSubmatch(indexFormat, -1)
- if matches == nil {
- return nil, fmt.Errorf("invalid index-format")
- }
-
- var columns []*ColumnDef
-
- for _, m := range matches {
- alignWidth := m[1]
- verb := m[3]
-
- var width float64 = 0
- var flags ColumnFlags = ALIGN_LEFT
- f, name := indexVerbToTemplate([]rune(verb)[0])
- if verb == "Z" {
- width = 4
- flags = ALIGN_RIGHT
- }
-
- t, err := templates.ParseTemplate(fmt.Sprintf("column-%s", name), f)
- if err != nil {
- return nil, err
- }
-
- if alignWidth != "" {
- width, err = strconv.ParseFloat(alignWidth, 64)
- if err != nil {
- return nil, err
- }
- if width < 0 {
- width = -width
- } else {
- flags = ALIGN_RIGHT
- }
- }
- if width == 0 {
- flags |= WIDTH_AUTO
- } else {
- flags |= WIDTH_EXACT
- }
-
- columns = append(columns, &ColumnDef{
- Name: name,
- Width: width,
- Flags: flags,
- Template: t,
- })
- }
-
- return columns, nil
-}
-
-func indexVerbToTemplate(verb rune) (f, name string) {
- switch verb {
- case '%':
- f = string(verb)
- case 'a':
- f = `{{(index .From 0).Address}}`
- name = "sender"
- case 'A':
- f = `{{if eq (len .ReplyTo) 0}}{{(index .From 0).Address}}{{else}}{{(index .ReplyTo 0).Address}}{{end}}`
- name = "reply-to"
- case 'C':
- f = "{{.Number}}"
- name = "num"
- case 'd', 'D':
- f = "{{.DateAutoFormat .Date.Local}}"
- name = "date"
- case 'f':
- f = `{{index (.From | persons) 0}}`
- name = "from"
- case 'F':
- f = `{{.Peer | names | join ", "}}`
- name = "peers"
- case 'g':
- f = `{{.Labels | join ", "}}`
- name = "labels"
- case 'i':
- f = "{{.MessageId}}"
- name = "msg-id"
- case 'n':
- f = `{{index (.From | names) 0}}`
- name = "name"
- case 'r':
- f = `{{.To | persons | join ", "}}`
- name = "to"
- case 'R':
- f = `{{.Cc | persons | join ", "}}`
- name = "cc"
- case 's':
- f = "{{.ThreadPrefix}}{{.Subject}}"
- name = "subject"
- case 't':
- f = "{{(index .To 0).Address}}"
- name = "to0"
- case 'T':
- f = "{{.Account}}"
- name = "account"
- case 'u':
- f = "{{index (.From | mboxes) 0}}"
- name = "mboxes"
- case 'v':
- f = "{{index (.From | names) 0}}"
- name = "name"
- case 'Z':
- f = `{{.Flags | join ""}}`
- name = "flags"
- case 'l':
- f = "{{.Size}}"
- name = "size"
- default:
- f = "%" + string(verb)
- }
- if name == "" {
- name = columnNameFromTemplate(f)
- }
- return
-}
-
-func convertDirlistFormat(format string) (string, string) {
- tmpl := regexp.MustCompile(`%>?[Nnr]`).ReplaceAllStringFunc(
- format,
- func(s string) string {
- runes := []rune(s)
- switch runes[len(runes)-1] {
- case 'N':
- s = `{{.Folder | compactDir}}`
- case 'n':
- s = `{{.Folder}}`
- case 'r':
- s = unreadExists
- default:
- return s
- }
- if strings.HasPrefix(string(runes), "%>") {
- s = "%>" + s
- }
- return s
- },
- )
- tokens := strings.SplitN(tmpl, "%>", 2)
- switch len(tokens) {
- case 2:
- return strings.TrimSpace(tokens[0]), strings.TrimSpace(tokens[1])
- case 1:
- return strings.TrimSpace(tokens[0]), ""
- default:
- return "", ""
- }
-}
-
func (ui *UIConfig) loadStyleSet(styleSetDirs []string) error {
ui.style = NewStyleSet()
err := ui.style.LoadStyleSet(ui.StyleSetName, styleSetDirs)