aboutsummaryrefslogtreecommitdiffstats
path: root/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'widgets')
-rw-r--r--widgets/account-wizard.go79
-rw-r--r--widgets/account.go22
-rw-r--r--widgets/aerc.go95
-rw-r--r--widgets/compose.go42
-rw-r--r--widgets/dirlist.go6
-rw-r--r--widgets/exline.go26
-rw-r--r--widgets/getpasswd.go12
-rw-r--r--widgets/msglist.go8
-rw-r--r--widgets/msgviewer.go74
-rw-r--r--widgets/status.go2
10 files changed, 168 insertions, 198 deletions
diff --git a/widgets/account-wizard.go b/widgets/account-wizard.go
index b6210cb7..0e2bda1e 100644
--- a/widgets/account-wizard.go
+++ b/widgets/account-wizard.go
@@ -41,7 +41,6 @@ const (
type AccountWizard struct {
aerc *Aerc
- conf *config.AercConfig
step int
steps []*ui.Grid
focus int
@@ -87,23 +86,22 @@ func showPasswordWarning(aerc *Aerc) {
aerc.AddDialog(warning)
}
-func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
+func NewAccountWizard(aerc *Aerc) *AccountWizard {
wizard := &AccountWizard{
- accountName: ui.NewTextInput("", &conf.Ui).Prompt("> "),
+ accountName: ui.NewTextInput("", config.Ui).Prompt("> "),
aerc: aerc,
- conf: conf,
temporary: false,
copySent: true,
- email: ui.NewTextInput("", &conf.Ui).Prompt("> "),
- fullName: ui.NewTextInput("", &conf.Ui).Prompt("> "),
- imapPassword: ui.NewTextInput("", &conf.Ui).Prompt("] ").Password(true),
- imapServer: ui.NewTextInput("", &conf.Ui).Prompt("> "),
- imapStr: ui.NewText("imaps://", conf.Ui.GetStyle(config.STYLE_DEFAULT)),
- imapUsername: ui.NewTextInput("", &conf.Ui).Prompt("> "),
- smtpPassword: ui.NewTextInput("", &conf.Ui).Prompt("] ").Password(true),
- smtpServer: ui.NewTextInput("", &conf.Ui).Prompt("> "),
- smtpStr: ui.NewText("smtps://", conf.Ui.GetStyle(config.STYLE_DEFAULT)),
- smtpUsername: ui.NewTextInput("", &conf.Ui).Prompt("> "),
+ email: ui.NewTextInput("", config.Ui).Prompt("> "),
+ fullName: ui.NewTextInput("", config.Ui).Prompt("> "),
+ imapPassword: ui.NewTextInput("", config.Ui).Prompt("] ").Password(true),
+ imapServer: ui.NewTextInput("", config.Ui).Prompt("> "),
+ imapStr: ui.NewText("imaps://", config.Ui.GetStyle(config.STYLE_DEFAULT)),
+ imapUsername: ui.NewTextInput("", config.Ui).Prompt("> "),
+ smtpPassword: ui.NewTextInput("", config.Ui).Prompt("] ").Password(true),
+ smtpServer: ui.NewTextInput("", config.Ui).Prompt("> "),
+ smtpStr: ui.NewText("smtps://", config.Ui.GetStyle(config.STYLE_DEFAULT)),
+ smtpUsername: ui.NewTextInput("", config.Ui).Prompt("> "),
}
// Autofill some stuff for the user
@@ -172,10 +170,10 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
"aerc-accounts(5) man page.\n"+
"Press <Tab> and <Shift+Tab> to cycle between each field in this form, "+
"or <Ctrl+j> and <Ctrl+k>.",
- conf.Ui.GetStyle(config.STYLE_DEFAULT)))
+ config.Ui.GetStyle(config.STYLE_DEFAULT)))
basics.AddChild(
ui.NewText("Name for this account? (e.g. 'Personal' or 'Work')",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(1, 0)
basics.AddChild(wizard.accountName).
At(2, 0)
@@ -183,7 +181,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
At(3, 0)
basics.AddChild(
ui.NewText("Full name for outgoing emails? (e.g. 'John Doe')",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(4, 0)
basics.AddChild(wizard.fullName).
At(5, 0)
@@ -191,11 +189,11 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
At(6, 0)
basics.AddChild(
ui.NewText("Your email address? (e.g. 'john@example.org')",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(7, 0)
basics.AddChild(wizard.email).
At(8, 0)
- selector := NewSelector([]string{"Next"}, 0, &conf.Ui).
+ selector := NewSelector([]string{"Next"}, 0, config.Ui).
OnChoose(func(option string) {
email := wizard.email.String()
if strings.ContainsRune(email, '@') {
@@ -244,10 +242,10 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
{Strategy: ui.SIZE_WEIGHT, Size: ui.Const(1)},
})
incoming.AddChild(ui.NewText("\nConfigure incoming mail (IMAP)",
- conf.Ui.GetStyle(config.STYLE_DEFAULT)))
+ config.Ui.GetStyle(config.STYLE_DEFAULT)))
incoming.AddChild(
ui.NewText("Username",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(1, 0)
incoming.AddChild(wizard.imapUsername).
At(2, 0)
@@ -255,7 +253,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
At(3, 0)
incoming.AddChild(
ui.NewText("Password",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(4, 0)
incoming.AddChild(wizard.imapPassword).
At(5, 0)
@@ -264,7 +262,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
incoming.AddChild(
ui.NewText("Server address "+
"(e.g. 'mail.example.org' or 'mail.example.org:1313')",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(7, 0)
incoming.AddChild(wizard.imapServer).
At(8, 0)
@@ -272,13 +270,13 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
At(9, 0)
incoming.AddChild(
ui.NewText("Connection mode",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(10, 0)
imapMode := NewSelector([]string{
"IMAP over SSL/TLS",
"IMAP with STARTTLS",
"Insecure IMAP",
- }, 0, &conf.Ui).Chooser(true).OnSelect(func(option string) {
+ }, 0, config.Ui).Chooser(true).OnSelect(func(option string) {
switch option {
case "IMAP over SSL/TLS":
wizard.imapMode = IMAP_OVER_TLS
@@ -290,7 +288,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
wizard.imapUri()
})
incoming.AddChild(imapMode).At(11, 0)
- selector = NewSelector([]string{"Previous", "Next"}, 1, &conf.Ui).
+ selector = NewSelector([]string{"Previous", "Next"}, 1, config.Ui).
OnChoose(wizard.advance)
incoming.AddChild(ui.NewFill(' ', tcell.StyleDefault)).At(12, 0)
incoming.AddChild(wizard.imapStr).At(13, 0)
@@ -323,10 +321,10 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
{Strategy: ui.SIZE_WEIGHT, Size: ui.Const(1)},
})
outgoing.AddChild(ui.NewText("\nConfigure outgoing mail (SMTP)",
- conf.Ui.GetStyle(config.STYLE_DEFAULT)))
+ config.Ui.GetStyle(config.STYLE_DEFAULT)))
outgoing.AddChild(
ui.NewText("Username",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(1, 0)
outgoing.AddChild(wizard.smtpUsername).
At(2, 0)
@@ -334,7 +332,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
At(3, 0)
outgoing.AddChild(
ui.NewText("Password",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(4, 0)
outgoing.AddChild(wizard.smtpPassword).
At(5, 0)
@@ -343,7 +341,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
outgoing.AddChild(
ui.NewText("Server address "+
"(e.g. 'mail.example.org' or 'mail.example.org:1313')",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(7, 0)
outgoing.AddChild(wizard.smtpServer).
At(8, 0)
@@ -351,13 +349,13 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
At(9, 0)
outgoing.AddChild(
ui.NewText("Connection mode",
- conf.Ui.GetStyle(config.STYLE_HEADER))).
+ config.Ui.GetStyle(config.STYLE_HEADER))).
At(10, 0)
smtpMode := NewSelector([]string{
"SMTP over SSL/TLS",
"SMTP with STARTTLS",
"Insecure SMTP",
- }, 0, &conf.Ui).Chooser(true).OnSelect(func(option string) {
+ }, 0, config.Ui).Chooser(true).OnSelect(func(option string) {
switch option {
case "SMTP over SSL/TLS":
wizard.smtpMode = SMTP_OVER_TLS
@@ -369,15 +367,15 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
wizard.smtpUri()
})
outgoing.AddChild(smtpMode).At(11, 0)
- selector = NewSelector([]string{"Previous", "Next"}, 1, &conf.Ui).
+ selector = NewSelector([]string{"Previous", "Next"}, 1, config.Ui).
OnChoose(wizard.advance)
outgoing.AddChild(ui.NewFill(' ', tcell.StyleDefault)).At(12, 0)
outgoing.AddChild(wizard.smtpStr).At(13, 0)
outgoing.AddChild(ui.NewFill(' ', tcell.StyleDefault)).At(14, 0)
outgoing.AddChild(
ui.NewText("Copy sent messages to 'Sent' folder?",
- conf.Ui.GetStyle(config.STYLE_HEADER))).At(15, 0)
- copySent := NewSelector([]string{"Yes", "No"}, 0, &conf.Ui).
+ config.Ui.GetStyle(config.STYLE_HEADER))).At(15, 0)
+ copySent := NewSelector([]string{"Yes", "No"}, 0, config.Ui).
Chooser(true).OnChoose(func(option string) {
switch option {
case "Yes":
@@ -404,12 +402,12 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
"You can go back and double check your settings, or choose 'Finish' to\n"+
"save your settings to accounts.conf.\n\n"+
"To add another account in the future, run ':new-account'.",
- conf.Ui.GetStyle(config.STYLE_DEFAULT)))
+ config.Ui.GetStyle(config.STYLE_DEFAULT)))
selector = NewSelector([]string{
"Previous",
"Finish & open tutorial",
"Finish",
- }, 1, &conf.Ui).OnChoose(func(option string) {
+ }, 1, config.Ui).OnChoose(func(option string) {
switch option {
case "Previous":
wizard.advance("Previous")
@@ -537,12 +535,11 @@ func (wizard *AccountWizard) finish(tutorial bool) {
if wizard.copySent {
account.CopyTo = "Sent"
}
- wizard.conf.Accounts = append(wizard.conf.Accounts, account)
+ config.Accounts = append(config.Accounts, &account)
- view, err := NewAccountView(wizard.aerc, wizard.conf, &account, wizard.aerc, nil)
+ view, err := NewAccountView(wizard.aerc, &account, wizard.aerc, nil)
if err != nil {
- wizard.aerc.NewTab(errorScreen(err.Error(), wizard.conf.Ui),
- account.Name)
+ wizard.aerc.NewTab(errorScreen(err.Error()), account.Name)
return
}
wizard.aerc.accounts[account.Name] = view
diff --git a/widgets/account.go b/widgets/account.go
index 838dd624..6bcb5b83 100644
--- a/widgets/account.go
+++ b/widgets/account.go
@@ -26,7 +26,6 @@ type AccountView struct {
sync.Mutex
acct *config.AccountConfig
aerc *Aerc
- conf *config.AercConfig
dirlist DirectoryLister
labels []string
grid *ui.Grid
@@ -55,17 +54,17 @@ func (acct *AccountView) UiConfig() *config.UIConfig {
return acct.uiConf
}
-func NewAccountView(aerc *Aerc, conf *config.AercConfig, acct *config.AccountConfig,
+func NewAccountView(
+ aerc *Aerc, acct *config.AccountConfig,
host TabHost, deferLoop chan struct{},
) (*AccountView, error) {
- acctUiConf := conf.Ui.ForAccount(acct.Name)
+ acctUiConf := config.Ui.ForAccount(acct.Name)
view := &AccountView{
acct: acct,
aerc: aerc,
- conf: conf,
host: host,
- state: statusline.NewState(acct.Name, len(conf.Accounts) > 1, conf.Statusline),
+ state: statusline.NewState(acct.Name, len(config.Accounts) > 1),
uiConf: acctUiConf,
}
@@ -86,12 +85,12 @@ func NewAccountView(aerc *Aerc, conf *config.AercConfig, acct *config.AccountCon
}
view.worker = worker
- view.dirlist = NewDirectoryList(conf, acct, worker)
+ view.dirlist = NewDirectoryList(acct, worker)
if acctUiConf.SidebarWidth > 0 {
view.grid.AddChild(ui.NewBordered(view.dirlist, ui.BORDER_RIGHT, acctUiConf))
}
- view.msglist = NewMessageList(conf, aerc)
+ view.msglist = NewMessageList(aerc, view)
view.grid.AddChild(view.msglist).At(0, 1)
go func() {
@@ -291,8 +290,7 @@ func (acct *AccountView) onMessage(msg types.WorkerMessage) {
acct.dirlist.UiConfig(name).ReverseThreadOrder,
acct.dirlist.UiConfig(name).SortThreadSiblings,
func(msg *models.MessageInfo) {
- acct.conf.Triggers.ExecNewEmail(acct.acct,
- acct.conf, msg)
+ config.Triggers.ExecNewEmail(acct.acct, msg)
}, func() {
if acct.dirlist.UiConfig(name).NewMessageBell {
acct.host.Beep()
@@ -526,7 +524,7 @@ func (acct *AccountView) UpdateSplitView() {
return
}
orig := acct.split
- acct.split = NewMessageViewer(acct, acct.conf, view)
+ acct.split = NewMessageViewer(acct, view)
acct.grid.ReplaceChild(orig, acct.split)
if orig != nil {
orig.Close()
@@ -585,7 +583,7 @@ func (acct *AccountView) Split(n int) error {
acct.aerc.PushError(err.Error())
return
}
- acct.split = NewMessageViewer(acct, acct.conf, view)
+ acct.split = NewMessageViewer(acct, view)
acct.grid.AddChild(acct.split).At(1, 1)
})
ui.Invalidate()
@@ -628,7 +626,7 @@ func (acct *AccountView) Vsplit(n int) error {
acct.aerc.PushError(err.Error())
return
}
- acct.split = NewMessageViewer(acct, acct.conf, view)
+ acct.split = NewMessageViewer(acct, view)
acct.grid.AddChild(acct.split).At(0, 2)
})
ui.Invalidate()
diff --git a/widgets/aerc.go b/widgets/aerc.go
index 97e3c663..cf893a7d 100644
--- a/widgets/aerc.go
+++ b/widgets/aerc.go
@@ -29,7 +29,6 @@ type Aerc struct {
cmd func(cmd []string) error
cmdHistory lib.History
complete func(cmd string) []string
- conf *config.AercConfig
focused ui.Interactive
grid *ui.Grid
simulating int
@@ -52,15 +51,15 @@ type Choice struct {
Command []string
}
-func NewAerc(conf *config.AercConfig,
+func NewAerc(
crypto crypto.Provider, cmd func(cmd []string) error,
complete func(cmd string) []string, cmdHistory lib.History,
deferLoop chan struct{},
) *Aerc {
- tabs := ui.NewTabs(&conf.Ui)
+ tabs := ui.NewTabs(config.Ui)
- statusbar := ui.NewStack(conf.Ui)
- statusline := NewStatusLine(conf.Ui)
+ statusbar := ui.NewStack(config.Ui)
+ statusline := NewStatusLine(config.Ui)
statusbar.Push(statusline)
grid := ui.NewGrid().Rows([]ui.GridSpec{
@@ -76,34 +75,32 @@ func NewAerc(conf *config.AercConfig,
aerc := &Aerc{
accounts: make(map[string]*AccountView),
- conf: conf,
cmd: cmd,
cmdHistory: cmdHistory,
complete: complete,
grid: grid,
statusbar: statusbar,
statusline: statusline,
- prompts: ui.NewStack(conf.Ui),
+ prompts: ui.NewStack(config.Ui),
tabs: tabs,
Crypto: crypto,
}
statusline.SetAerc(aerc)
- conf.Triggers.ExecuteCommand = cmd
+ config.Triggers.ExecuteCommand = cmd
- for i, acct := range conf.Accounts {
- view, err := NewAccountView(aerc, conf, &conf.Accounts[i], aerc, deferLoop)
+ for _, acct := range config.Accounts {
+ view, err := NewAccountView(aerc, acct, aerc, deferLoop)
if err != nil {
- tabs.Add(errorScreen(err.Error(), conf.Ui), acct.Name, nil)
+ tabs.Add(errorScreen(err.Error()), acct.Name, nil)
} else {
aerc.accounts[acct.Name] = view
- conf := view.UiConfig()
- tabs.Add(view, acct.Name, conf)
+ tabs.Add(view, acct.Name, view.UiConfig())
}
}
- if len(conf.Accounts) == 0 {
- wizard := NewAccountWizard(aerc.Config(), aerc)
+ if len(config.Accounts) == 0 {
+ wizard := NewAccountWizard(aerc)
wizard.Focus(true)
aerc.NewTab(wizard, "New account")
}
@@ -202,8 +199,8 @@ func (aerc *Aerc) HumanReadableBindings() []string {
format(config.FormatKeyStrokes(bind.Output)),
))
}
- if binds.Globals && aerc.conf.Bindings.Global != nil {
- for _, bind := range aerc.conf.Bindings.Global.Bindings {
+ if binds.Globals && config.Binds.Global != nil {
+ for _, bind := range config.Binds.Global.Bindings {
result = append(result, fmt.Sprintf(fmtStr+" (Globals)",
format(config.FormatKeyStrokes(bind.Input)),
format(config.FormatKeyStrokes(bind.Output)),
@@ -229,35 +226,35 @@ func (aerc *Aerc) getBindings() *config.KeyBindings {
}
switch view := aerc.SelectedTabContent().(type) {
case *AccountView:
- binds := aerc.conf.Bindings.MessageList.ForAccount(selectedAccountName)
+ binds := config.Binds.MessageList.ForAccount(selectedAccountName)
return binds.ForFolder(view.SelectedDirectory())
case *AccountWizard:
- return aerc.conf.Bindings.AccountWizard
+ return config.Binds.AccountWizard
case *Composer:
switch view.Bindings() {
case "compose::editor":
- return aerc.conf.Bindings.ComposeEditor.ForAccount(
+ return config.Binds.ComposeEditor.ForAccount(
selectedAccountName)
case "compose::review":
- return aerc.conf.Bindings.ComposeReview.ForAccount(
+ return config.Binds.ComposeReview.ForAccount(
selectedAccountName)
default:
- return aerc.conf.Bindings.Compose.ForAccount(
+ return config.Binds.Compose.ForAccount(
selectedAccountName)
}
case *MessageViewer:
switch view.Bindings() {
case "view::passthrough":
- return aerc.conf.Bindings.MessageViewPassthrough.ForAccount(
+ return config.Binds.MessageViewPassthrough.ForAccount(
selectedAccountName)
default:
- return aerc.conf.Bindings.MessageView.ForAccount(
+ return config.Binds.MessageView.ForAccount(
selectedAccountName)
}
case *Terminal:
- return aerc.conf.Bindings.Terminal
+ return config.Binds.Terminal
default:
- return aerc.conf.Bindings.Global
+ return config.Binds.Global
}
}
@@ -319,8 +316,7 @@ func (aerc *Aerc) Event(event tcell.Event) bool {
case config.BINDING_NOT_FOUND:
}
if bindings.Globals {
- result, strokes = aerc.conf.Bindings.Global.
- GetBinding(aerc.pendingKeys)
+ result, strokes = config.Binds.Global.GetBinding(aerc.pendingKeys)
switch result {
case config.BINDING_FOUND:
aerc.simulate(strokes)
@@ -335,7 +331,7 @@ func (aerc *Aerc) Event(event tcell.Event) bool {
exKey := bindings.ExKey
if aerc.simulating > 0 {
// Keybindings still use : even if you change the ex key
- exKey = aerc.conf.Bindings.Global.ExKey
+ exKey = config.Binds.Global.ExKey
}
if aerc.isExKey(event, exKey) {
aerc.BeginExCommand("")
@@ -367,10 +363,6 @@ func (aerc *Aerc) Event(event tcell.Event) bool {
return false
}
-func (aerc *Aerc) Config() *config.AercConfig {
- return aerc.conf
-}
-
func (aerc *Aerc) SelectedAccount() *AccountView {
return aerc.account(aerc.SelectedTabContent())
}
@@ -387,13 +379,13 @@ func (aerc *Aerc) PrevAccount() (*AccountView, error) {
if cur == nil {
return nil, fmt.Errorf("no account selected, cannot get prev")
}
- for i, conf := range aerc.conf.Accounts {
+ for i, conf := range config.Accounts {
if conf.Name == cur.Name() {
i -= 1
if i == -1 {
- i = len(aerc.conf.Accounts) - 1
+ i = len(config.Accounts) - 1
}
- conf = aerc.conf.Accounts[i]
+ conf = config.Accounts[i]
return aerc.Account(conf.Name)
}
}
@@ -405,13 +397,13 @@ func (aerc *Aerc) NextAccount() (*AccountView, error) {
if cur == nil {
return nil, fmt.Errorf("no account selected, cannot get next")
}
- for i, conf := range aerc.conf.Accounts {
+ for i, conf := range config.Accounts {
if conf.Name == cur.Name() {
i += 1
- if i == len(aerc.conf.Accounts) {
+ if i == len(config.Accounts) {
i = 0
}
- conf = aerc.conf.Accounts[i]
+ conf = config.Accounts[i]
return aerc.Account(conf.Name)
}
}
@@ -441,7 +433,7 @@ func (aerc *Aerc) account(d ui.Drawable) *AccountView {
func (aerc *Aerc) SelectedAccountUiConfig() *config.UIConfig {
acct := aerc.SelectedAccount()
if acct == nil {
- return &aerc.conf.Ui
+ return config.Ui
}
return acct.UiConfig()
}
@@ -459,10 +451,9 @@ func (aerc *Aerc) SelectedTab() *ui.Tab {
}
func (aerc *Aerc) NewTab(clickable ui.Drawable, name string) *ui.Tab {
- var uiConf *config.UIConfig = nil
+ uiConf := config.Ui
if acct := aerc.account(clickable); acct != nil {
- conf := acct.UiConfig()
- uiConf = conf
+ uiConf = acct.UiConfig()
}
tab := aerc.tabs.Add(clickable, name, uiConf)
aerc.UpdateStatus()
@@ -588,7 +579,7 @@ func (aerc *Aerc) BeginExCommand(cmd string) {
return aerc.complete(cmd), ""
}
}
- exline := NewExLine(aerc.conf, cmd, func(cmd string) {
+ exline := NewExLine(cmd, func(cmd string) {
parts, err := shlex.Split(cmd)
if err != nil {
aerc.PushError(err.Error())
@@ -615,7 +606,7 @@ func (aerc *Aerc) PushPrompt(prompt *ExLine) {
}
func (aerc *Aerc) RegisterPrompt(prompt string, cmd []string) {
- p := NewPrompt(aerc.conf, prompt, func(text string) {
+ p := NewPrompt(prompt, func(text string) {
if text != "" {
cmd = append(cmd, text)
}
@@ -641,7 +632,7 @@ func (aerc *Aerc) RegisterChoices(choices []Choice) {
cmds[c.Key] = c.Command
}
prompt := strings.Join(texts, ", ") + "? "
- p := NewPrompt(aerc.conf, prompt, func(text string) {
+ p := NewPrompt(prompt, func(text string) {
cmd, ok := cmds[text]
if !ok {
return
@@ -718,7 +709,7 @@ func (aerc *Aerc) Mailto(addr *url.URL) error {
return errors.New("No account selected")
}
- composer, err := NewComposer(aerc, acct, aerc.Config(),
+ composer, err := NewComposer(aerc, acct,
acct.AccountConfig(), acct.Worker(), "", h, models.OriginalMail{})
if err != nil {
return nil
@@ -766,9 +757,9 @@ func (aerc *Aerc) Mbox(source string) error {
acctConf.Postpone = "Drafts"
acctConf.CopyTo = "Sent"
- mboxView, err := NewAccountView(aerc, aerc.conf, &acctConf, aerc, nil)
+ mboxView, err := NewAccountView(aerc, &acctConf, aerc, nil)
if err != nil {
- aerc.NewTab(errorScreen(err.Error(), aerc.conf.Ui), acctConf.Name)
+ aerc.NewTab(errorScreen(err.Error()), acctConf.Name)
} else {
aerc.accounts[acctConf.Name] = mboxView
aerc.NewTab(mboxView, acctConf.Name)
@@ -806,7 +797,7 @@ func (aerc *Aerc) CloseDialog() {
func (aerc *Aerc) GetPassword(title string, prompt string) (chText chan string, chErr chan error) {
chText = make(chan string, 1)
chErr = make(chan error, 1)
- getPasswd := NewGetPasswd(title, prompt, aerc.conf, func(pw string, err error) {
+ getPasswd := NewGetPasswd(title, prompt, func(pw string, err error) {
defer func() {
close(chErr)
close(chText)
@@ -848,8 +839,8 @@ func (aerc *Aerc) DecryptKeys(keys []openpgp.Key, symmetric bool) (b []byte, err
}
// errorScreen is a widget that draws an error in the middle of the context
-func errorScreen(s string, conf config.UIConfig) ui.Drawable {
- errstyle := conf.GetStyle(config.STYLE_ERROR)
+func errorScreen(s string) ui.Drawable {
+ errstyle := config.Ui.GetStyle(config.STYLE_ERROR)
text := ui.NewText(s, errstyle).Strategy(ui.TEXT_CENTER)
grid := ui.NewGrid().Rows([]ui.GridSpec{
{Strategy: ui.SIZE_WEIGHT, Size: ui.Const(1)},
diff --git a/widgets/compose.go b/widgets/compose.go
index 4cf7da16..4f08afa3 100644
--- a/widgets/compose.go
+++ b/widgets/compose.go
@@ -36,7 +36,6 @@ type Composer struct {
parent models.OriginalMail // parent of current message, only set if reply
acctConfig *config.AccountConfig
- config *config.AercConfig
acct *AccountView
aerc *Aerc
@@ -65,8 +64,9 @@ type Composer struct {
textParts []*lib.Part
}
-func NewComposer(aerc *Aerc, acct *AccountView, conf *config.AercConfig,
- acctConfig *config.AccountConfig, worker *types.Worker, template string,
+func NewComposer(
+ aerc *Aerc, acct *AccountView, acctConfig *config.AccountConfig,
+ worker *types.Worker, template string,
h *mail.Header, orig models.OriginalMail,
) (*Composer, error) {
if h == nil {
@@ -83,7 +83,6 @@ func NewComposer(aerc *Aerc, acct *AccountView, conf *config.AercConfig,
acct: acct,
acctConfig: acctConfig,
aerc: aerc,
- config: conf,
header: h,
parent: orig,
email: email,
@@ -132,17 +131,16 @@ func (c *Composer) SwitchAccount(newAcct *AccountView) error {
return nil
}
-func (c *Composer) setupFor(acct *AccountView) error {
+func (c *Composer) setupFor(view *AccountView) error {
c.Lock()
defer c.Unlock()
- // set new account and accountConfig
- c.acct = acct
- c.acctConfig = acct.AccountConfig()
- c.worker = acct.Worker()
+ // set new account
+ c.acct = view
+ c.worker = view.Worker()
// Set from header if not already in header
if fl, err := c.header.AddressList("from"); err != nil || fl == nil {
- fl, err = mail.ParseAddressList(c.acctConfig.From)
+ fl, err = mail.ParseAddressList(view.acct.From)
if err != nil {
return err
}
@@ -152,9 +150,9 @@ func (c *Composer) setupFor(acct *AccountView) error {
}
// update completer
- cmd := c.acctConfig.AddressBookCmd
+ cmd := view.acct.AddressBookCmd
if cmd == "" {
- cmd = c.config.Compose.AddressBookCmd
+ cmd = config.Compose.AddressBookCmd
}
cmpl := completer.New(cmd, func(err error) {
c.aerc.PushError(
@@ -187,12 +185,12 @@ func (c *Composer) setupFor(acct *AccountView) error {
// update the crypto parts
c.crypto = nil
c.sign = false
- if c.acctConfig.PgpAutoSign {
+ if c.acct.acct.PgpAutoSign {
err := c.SetSign(true)
log.Warnf("failed to enable message signing: %v", err)
}
c.encrypt = false
- if c.acctConfig.PgpOpportunisticEncrypt {
+ if c.acct.acct.PgpOpportunisticEncrypt {
c.SetEncrypt(true)
}
err := c.updateCrypto()
@@ -204,7 +202,7 @@ func (c *Composer) setupFor(acct *AccountView) error {
}
func (c *Composer) buildComposeHeader(aerc *Aerc, cmpl *completer.Completer) {
- c.layout = aerc.conf.Compose.HeaderLayout
+ c.layout = config.Compose.HeaderLayout
c.editors = make(map[string]*headerEditor)
c.focusable = make([]ui.MouseableDrawableInteractive, 0)
uiConfig := c.acct.UiConfig()
@@ -214,7 +212,7 @@ func (c *Composer) buildComposeHeader(aerc *Aerc, cmpl *completer.Completer) {
h = strings.ToLower(h)
c.layout[i][j] = h // normalize to lowercase
e := newHeaderEditor(h, c.header, uiConfig)
- if aerc.conf.Ui.CompletionPopovers {
+ if uiConfig.CompletionPopovers {
e.input.TabComplete(
cmpl.ForHeader(h),
uiConfig.CompletionDelay,
@@ -237,7 +235,7 @@ func (c *Composer) buildComposeHeader(aerc *Aerc, cmpl *completer.Completer) {
if c.header.Has(h) {
if _, ok := c.editors[h]; !ok {
e := newHeaderEditor(h, c.header, uiConfig)
- if aerc.conf.Ui.CompletionPopovers {
+ if uiConfig.CompletionPopovers {
e.input.TabComplete(
cmpl.ForHeader(h),
uiConfig.CompletionDelay,
@@ -499,7 +497,7 @@ func (c *Composer) AddTemplate(template string, data interface{}) error {
}
templateText, err := templates.ParseTemplateFromFile(
- template, c.config.Templates.TemplateDirs, data)
+ template, config.Templates.TemplateDirs, data)
if err != nil {
return err
}
@@ -815,7 +813,7 @@ func (c *Composer) WriteMessage(header *mail.Header, writer io.Writer) error {
}
func (c *Composer) ShouldWarnAttachment() (bool, error) {
- regex := c.config.Compose.NoAttachmentWarning
+ regex := config.Compose.NoAttachmentWarning
if regex == nil || len(c.attachments) > 0 {
return false, nil
@@ -987,7 +985,7 @@ func (c *Composer) ShowTerminal() {
c.grid.RemoveChild(c.review)
}
cmds := []string{
- c.config.Compose.Editor,
+ config.Compose.Editor,
os.Getenv("EDITOR"),
"vi",
"nano",
@@ -1261,7 +1259,7 @@ type reviewMessage struct {
}
func newReviewMessage(composer *Composer, err error) *reviewMessage {
- bindings := composer.config.Bindings.ComposeReview.ForAccount(
+ bindings := config.Binds.ComposeReview.ForAccount(
composer.acctConfig.Name,
)
@@ -1400,7 +1398,7 @@ func newReviewMessage(composer *Composer, err error) *reviewMessage {
}
func (c *Composer) updateMultipart(p *lib.Part) error {
- command, found := c.aerc.Config().Converters[p.MimeType]
+ command, found := config.Converters[p.MimeType]
if !found {
// unreachable
return fmt.Errorf("no command defined for mime/type")
diff --git a/widgets/dirlist.go b/widgets/dirlist.go
index 0b41c024..4d27def2 100644
--- a/widgets/dirlist.go
+++ b/widgets/dirlist.go
@@ -48,7 +48,6 @@ type DirectoryLister interface {
type DirectoryList struct {
Scrollable
- aercConf *config.AercConfig
acctConf *config.AccountConfig
store *lib.DirStore
dirs []string
@@ -60,13 +59,12 @@ type DirectoryList struct {
skipSelectCancel context.CancelFunc
}
-func NewDirectoryList(conf *config.AercConfig, acctConf *config.AccountConfig,
+func NewDirectoryList(acctConf *config.AccountConfig,
worker *types.Worker,
) DirectoryLister {
ctx, cancel := context.WithCancel(context.Background())
dirlist := &DirectoryList{
- aercConf: conf,
acctConf: acctConf,
store: lib.NewDirStore(),
worker: worker,
@@ -88,7 +86,7 @@ func (dirlist *DirectoryList) UiConfig(dir string) *config.UIConfig {
if dir == "" {
dir = dirlist.Selected()
}
- return dirlist.aercConf.Ui.ForAccount(dirlist.acctConf.Name).ForFolder(dir)
+ return config.Ui.ForAccount(dirlist.acctConf.Name).ForFolder(dir)
}
func (dirlist *DirectoryList) List() []string {
diff --git a/widgets/exline.go b/widgets/exline.go
index 5cf4338d..1f2d71e4 100644
--- a/widgets/exline.go
+++ b/widgets/exline.go
@@ -14,19 +14,18 @@ type ExLine struct {
tabcomplete func(cmd string) ([]string, string)
cmdHistory lib.History
input *ui.TextInput
- conf *config.AercConfig
}
-func NewExLine(conf *config.AercConfig, cmd string, commit func(cmd string), finish func(),
+func NewExLine(cmd string, commit func(cmd string), finish func(),
tabcomplete func(cmd string) ([]string, string),
cmdHistory lib.History,
) *ExLine {
- input := ui.NewTextInput("", &conf.Ui).Prompt(":").Set(cmd)
- if conf.Ui.CompletionPopovers {
+ input := ui.NewTextInput("", config.Ui).Prompt(":").Set(cmd)
+ if config.Ui.CompletionPopovers {
input.TabComplete(
tabcomplete,
- conf.Ui.CompletionDelay,
- conf.Ui.CompletionMinChars,
+ config.Ui.CompletionDelay,
+ config.Ui.CompletionMinChars,
)
}
exline := &ExLine{
@@ -35,7 +34,6 @@ func NewExLine(conf *config.AercConfig, cmd string, commit func(cmd string), fin
tabcomplete: tabcomplete,
cmdHistory: cmdHistory,
input: input,
- conf: conf,
}
return exline
}
@@ -43,20 +41,20 @@ func NewExLine(conf *config.AercConfig, cmd string, commit func(cmd string), fin
func (x *ExLine) TabComplete(tabComplete func(string) ([]string, string)) {
x.input.TabComplete(
tabComplete,
- x.conf.Ui.CompletionDelay,
- x.conf.Ui.CompletionMinChars,
+ config.Ui.CompletionDelay,
+ config.Ui.CompletionMinChars,
)
}
-func NewPrompt(conf *config.AercConfig, prompt string, commit func(text string),
+func NewPrompt(prompt string, commit func(text string),
tabcomplete func(cmd string) ([]string, string),
) *ExLine {
- input := ui.NewTextInput("", &conf.Ui).Prompt(prompt)
- if conf.Ui.CompletionPopovers {
+ input := ui.NewTextInput("", config.Ui).Prompt(prompt)
+ if config.Ui.CompletionPopovers {
input.TabComplete(
tabcomplete,
- conf.Ui.CompletionDelay,
- conf.Ui.CompletionMinChars,
+ config.Ui.CompletionDelay,
+ config.Ui.CompletionMinChars,
)
}
exline := &ExLine{
diff --git a/widgets/getpasswd.go b/widgets/getpasswd.go
index 70a2648d..17274626 100644
--- a/widgets/getpasswd.go
+++ b/widgets/getpasswd.go
@@ -14,26 +14,24 @@ type GetPasswd struct {
title string
prompt string
input *ui.TextInput
- conf *config.AercConfig
}
-func NewGetPasswd(title string, prompt string, conf *config.AercConfig,
- cb func(string, error),
+func NewGetPasswd(
+ title string, prompt string, cb func(string, error),
) *GetPasswd {
getpasswd := &GetPasswd{
callback: cb,
title: title,
prompt: prompt,
- conf: conf,
- input: ui.NewTextInput("", &conf.Ui).Password(true).Prompt("Password: "),
+ input: ui.NewTextInput("", config.Ui).Password(true).Prompt("Password: "),
}
getpasswd.input.Focus(true)
return getpasswd
}
func (gp *GetPasswd) Draw(ctx *ui.Context) {
- defaultStyle := gp.conf.Ui.GetStyle(config.STYLE_DEFAULT)
- titleStyle := gp.conf.Ui.GetStyle(config.STYLE_TITLE)
+ defaultStyle := config.Ui.GetStyle(config.STYLE_DEFAULT)
+ titleStyle := config.Ui.GetStyle(config.STYLE_TITLE)
ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', defaultStyle)
ctx.Fill(0, 0, ctx.Width(), 1, ' ', titleStyle)
diff --git a/widgets/msglist.go b/widgets/msglist.go
index 85b8f168..4c805d51 100644
--- a/widgets/msglist.go
+++ b/widgets/msglist.go
@@ -21,7 +21,6 @@ import (
type MessageList struct {
Scrollable
- conf *config.AercConfig
height int
nmsgs int
spinner *Spinner
@@ -30,10 +29,9 @@ type MessageList struct {
aerc *Aerc
}
-func NewMessageList(conf *config.AercConfig, aerc *Aerc) *MessageList {
+func NewMessageList(aerc *Aerc, account *AccountView) *MessageList {
ml := &MessageList{
- conf: conf,
- spinner: NewSpinner(&conf.Ui),
+ spinner: NewSpinner(account.uiConf),
isInitalizing: true,
aerc: aerc,
}
@@ -310,7 +308,7 @@ func (ml *MessageList) MouseEvent(localX int, localY int, event tcell.Event) {
ml.aerc.PushError(err.Error())
return
}
- viewer := NewMessageViewer(acct, ml.aerc.Config(), view)
+ viewer := NewMessageViewer(acct, view)
ml.aerc.NewTab(viewer, msg.Envelope.Subject)
})
}
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go
index 875ff873..0c72fa79 100644
--- a/widgets/msgviewer.go
+++ b/widgets/msgviewer.go
@@ -28,7 +28,6 @@ var _ ProvidesMessages = (*MessageViewer)(nil)
type MessageViewer struct {
acct *AccountView
- conf *config.AercConfig
err error
grid *ui.Grid
switcher *PartSwitcher
@@ -46,11 +45,11 @@ type PartSwitcher struct {
mv *MessageViewer
}
-func NewMessageViewer(acct *AccountView,
- conf *config.AercConfig, msg lib.MessageView,
+func NewMessageViewer(
+ acct *AccountView, msg lib.MessageView,
) *MessageViewer {
hf := HeaderLayoutFilter{
- layout: HeaderLayout(conf.Viewer.HeaderLayout),
+ layout: HeaderLayout(config.Viewer.HeaderLayout),
keep: func(msg *models.MessageInfo, header string) bool {
return fmtHeader(msg, header, "2", "3", "4", "5") != ""
},
@@ -59,7 +58,6 @@ func NewMessageViewer(acct *AccountView,
header, headerHeight := layout.grid(
func(header string) ui.Drawable {
hv := &HeaderView{
- conf: conf,
Name: header,
Value: fmtHeader(
msg.MessageInfo(),
@@ -94,7 +92,7 @@ func NewMessageViewer(acct *AccountView,
{Strategy: ui.SIZE_EXACT, Size: ui.Const(headerHeight)},
}
- if msg.MessageDetails() != nil || conf.Ui.IconUnencrypted != "" {
+ if msg.MessageDetails() != nil || acct.UiConfig().IconUnencrypted != "" {
height := 1
if msg.MessageDetails() != nil && msg.MessageDetails().IsSigned && msg.MessageDetails().IsEncrypted {
height = 2
@@ -112,7 +110,7 @@ func NewMessageViewer(acct *AccountView,
})
switcher := &PartSwitcher{}
- err := createSwitcher(acct, switcher, conf, msg)
+ err := createSwitcher(acct, switcher, msg)
if err != nil {
return &MessageViewer{
acct: acct,
@@ -127,7 +125,7 @@ func NewMessageViewer(acct *AccountView,
borderChar := acct.UiConfig().BorderCharHorizontal
grid.AddChild(header).At(0, 0)
- if msg.MessageDetails() != nil || conf.Ui.IconUnencrypted != "" {
+ if msg.MessageDetails() != nil || acct.UiConfig().IconUnencrypted != "" {
grid.AddChild(NewPGPInfo(msg.MessageDetails(), acct.UiConfig())).At(1, 0)
grid.AddChild(ui.NewFill(borderChar, borderStyle)).At(2, 0)
grid.AddChild(switcher).At(3, 0)
@@ -138,7 +136,6 @@ func NewMessageViewer(acct *AccountView,
mv := &MessageViewer{
acct: acct,
- conf: conf,
grid: grid,
msg: msg,
switcher: switcher,
@@ -186,9 +183,9 @@ func fmtHeader(msg *models.MessageInfo, header string,
}
}
-func enumerateParts(acct *AccountView, conf *config.AercConfig,
- msg lib.MessageView, body *models.BodyStructure,
- index []int,
+func enumerateParts(
+ acct *AccountView, msg lib.MessageView,
+ body *models.BodyStructure, index []int,
) ([]*PartViewer, error) {
var parts []*PartViewer
for i, part := range body.Parts {
@@ -198,14 +195,14 @@ func enumerateParts(acct *AccountView, conf *config.AercConfig,
pv := &PartViewer{part: part}
parts = append(parts, pv)
subParts, err := enumerateParts(
- acct, conf, msg, part, curindex)
+ acct, msg, part, curindex)
if err != nil {
return nil, err
}
parts = append(parts, subParts...)
continue
}
- pv, err := NewPartViewer(acct, conf, msg, part, curindex)
+ pv, err := NewPartViewer(acct, msg, part, curindex)
if err != nil {
return nil, err
}
@@ -214,13 +211,13 @@ func enumerateParts(acct *AccountView, conf *config.AercConfig,
return parts, nil
}
-func createSwitcher(acct *AccountView, switcher *PartSwitcher,
- conf *config.AercConfig, msg lib.MessageView,
+func createSwitcher(
+ acct *AccountView, switcher *PartSwitcher, msg lib.MessageView,
) error {
var err error
switcher.selected = -1
- switcher.showHeaders = conf.Viewer.ShowHeaders
- switcher.alwaysShowMime = conf.Viewer.AlwaysShowMime
+ switcher.showHeaders = config.Viewer.ShowHeaders
+ switcher.alwaysShowMime = config.Viewer.AlwaysShowMime
if msg.MessageInfo().Error != nil {
return fmt.Errorf("could not view message: %w", msg.MessageInfo().Error)
@@ -228,30 +225,30 @@ func createSwitcher(acct *AccountView, switcher *PartSwitcher,
if len(msg.BodyStructure().Parts) == 0 {
switcher.selected = 0
- pv, err := NewPartViewer(acct, conf, msg, msg.BodyStructure(), nil)
+ pv, err := NewPartViewer(acct, msg, msg.BodyStructure(), nil)
if err != nil {
return err
}
switcher.parts = []*PartViewer{pv}
} else {
- switcher.parts, err = enumerateParts(acct, conf, msg,
+ switcher.parts, err = enumerateParts(acct, msg,
msg.BodyStructure(), []int{})
if err != nil {
return err
}
selectedPriority := -1
- log.Tracef("Selecting best message from %v", conf.Viewer.Alternatives)
+ log.Tracef("Selecting best message from %v", config.Viewer.Alternatives)
for i, pv := range switcher.parts {
// Switch to user's preferred mimetype
if switcher.selected == -1 && pv.part.MIMEType != "multipart" {
switcher.selected = i
}
mime := pv.part.FullMIMEType()
- for idx, m := range conf.Viewer.Alternatives {
+ for idx, m := range config.Viewer.Alternatives {
if m != mime {
continue
}
- priority := len(conf.Viewer.Alternatives) - idx
+ priority := len(config.Viewer.Alternatives) - idx
if priority > selectedPriority {
selectedPriority = priority
switcher.selected = i
@@ -309,8 +306,8 @@ func (mv *MessageViewer) MarkedMessages() ([]uint32, error) {
func (mv *MessageViewer) ToggleHeaders() {
switcher := mv.switcher
switcher.Cleanup()
- mv.conf.Viewer.ShowHeaders = !mv.conf.Viewer.ShowHeaders
- err := createSwitcher(mv.acct, switcher, mv.conf, mv.msg)
+ config.Viewer.ShowHeaders = !config.Viewer.ShowHeaders
+ err := createSwitcher(mv.acct, switcher, mv.msg)
if err != nil {
log.Errorf("cannot create switcher: %v", err)
}
@@ -318,8 +315,8 @@ func (mv *MessageViewer) ToggleHeaders() {
}
func (mv *MessageViewer) ToggleKeyPassthrough() bool {
- mv.conf.Viewer.KeyPassthrough = !mv.conf.Viewer.KeyPassthrough
- return mv.conf.Viewer.KeyPassthrough
+ config.Viewer.KeyPassthrough = !config.Viewer.KeyPassthrough
+ return config.Viewer.KeyPassthrough
}
func (mv *MessageViewer) SelectedMessagePart() *PartInfo {
@@ -380,7 +377,7 @@ func (mv *MessageViewer) NextPart() {
}
func (mv *MessageViewer) Bindings() string {
- if mv.conf.Viewer.KeyPassthrough {
+ if config.Viewer.KeyPassthrough {
return "view::passthrough"
} else {
return "view"
@@ -410,7 +407,7 @@ func (ps *PartSwitcher) Event(event tcell.Event) bool {
func (ps *PartSwitcher) Draw(ctx *ui.Context) {
height := len(ps.parts)
- if height == 1 && !ps.alwaysShowMime {
+ if height == 1 && !config.Viewer.AlwaysShowMime {
ps.parts[ps.selected].Draw(ctx)
return
}
@@ -504,7 +501,6 @@ func (mv *MessageViewer) Focus(focus bool) {
}
type PartViewer struct {
- conf *config.AercConfig
acctConfig *config.AccountConfig
err error
fetched bool
@@ -526,8 +522,8 @@ type PartViewer struct {
const copying int32 = 1
-func NewPartViewer(acct *AccountView, conf *config.AercConfig,
- msg lib.MessageView, part *models.BodyStructure,
+func NewPartViewer(
+ acct *AccountView, msg lib.MessageView, part *models.BodyStructure,
curindex []int,
) (*PartViewer, error) {
var (
@@ -537,7 +533,7 @@ func NewPartViewer(acct *AccountView, conf *config.AercConfig,
term *Terminal
)
cmds := []string{
- conf.Viewer.Pager,
+ config.Viewer.Pager,
os.Getenv("PAGER"),
"less -R",
}
@@ -556,7 +552,7 @@ func NewPartViewer(acct *AccountView, conf *config.AercConfig,
info := msg.MessageInfo()
mime := part.FullMIMEType()
- for _, f := range conf.Filters {
+ for _, f := range config.Filters {
switch f.Type {
case config.FILTER_MIMETYPE:
if fnmatch.Match(f.Filter, mime, 0) {
@@ -624,7 +620,6 @@ func NewPartViewer(acct *AccountView, conf *config.AercConfig,
copy(index, curindex)
pv := &PartViewer{
- conf: conf,
acctConfig: acct.AccountConfig(),
filter: filter,
index: index,
@@ -632,7 +627,7 @@ func NewPartViewer(acct *AccountView, conf *config.AercConfig,
pager: pager,
pagerin: pagerin,
part: part,
- showHeaders: conf.Viewer.ShowHeaders,
+ showHeaders: config.Viewer.ShowHeaders,
term: term,
grid: grid,
uiConfig: acct.UiConfig(),
@@ -724,7 +719,7 @@ func (pv *PartViewer) writeMailHeaders() {
}
func (pv *PartViewer) hyperlinks(r io.Reader) (reader io.Reader) {
- if !pv.conf.Viewer.ParseHttpLinks {
+ if !config.Viewer.ParseHttpLinks {
return r
}
reader, pv.links = parse.HttpLinks(r)
@@ -738,7 +733,7 @@ var noFilterConfiguredCommands = [][]string{
}
func newNoFilterConfigured(pv *PartViewer) *ui.Grid {
- bindings := pv.conf.Bindings.MessageView.ForAccount(pv.acctConfig.Name)
+ bindings := config.Binds.MessageView.ForAccount(pv.acctConfig.Name)
var actions []string
@@ -774,7 +769,7 @@ func newNoFilterConfigured(pv *PartViewer) *ui.Grid {
{Strategy: ui.SIZE_WEIGHT, Size: ui.Const(1)},
})
- uiConfig := pv.conf.Ui
+ uiConfig := config.Ui
noFilter := fmt.Sprintf(`No filter configured for this mimetype ('%s')
What would you like to do?`, pv.part.FullMIMEType())
@@ -827,7 +822,6 @@ func (pv *PartViewer) Event(event tcell.Event) bool {
}
type HeaderView struct {
- conf *config.AercConfig
Name string
Value string
ValueField ui.Drawable
diff --git a/widgets/status.go b/widgets/status.go
index 97ff9441..571fa8b0 100644
--- a/widgets/status.go
+++ b/widgets/status.go
@@ -22,7 +22,7 @@ type StatusMessage struct {
message string
}
-func NewStatusLine(uiConfig config.UIConfig) *StatusLine {
+func NewStatusLine(uiConfig *config.UIConfig) *StatusLine {
return &StatusLine{
fallback: StatusMessage{
style: uiConfig.GetStyle(config.STYLE_STATUSLINE_DEFAULT),