diff --git a/config/config.go b/config/config.go index c6136cf..1019297 100644 --- a/config/config.go +++ b/config/config.go @@ -100,7 +100,8 @@ func mapName(raw string) string { func loadAccountConfig(path string) ([]AccountConfig, error) { file, err := ini.Load(path) if err != nil { - return nil, err + // No config triggers account configuration wizard + return nil, nil } file.NameMapper = mapName @@ -153,10 +154,6 @@ func loadAccountConfig(path string) ([]AccountConfig, error) { accounts = append(accounts, account) } - if len(accounts) == 0 { - err = errors.New("No accounts configured in accounts.conf") - return nil, err - } return accounts, nil } @@ -359,7 +356,7 @@ func LoadConfig(root *string) (*AercConfig, error) { func checkConfigPerms(filename string) error { info, err := os.Stat(filename) if err != nil { - return err + return nil // disregard absent files } perms := info.Mode().Perm() goPerms := perms >> 3 diff --git a/lib/ui/textinput.go b/lib/ui/textinput.go index ce443c3..3e7c12f 100644 --- a/lib/ui/textinput.go +++ b/lib/ui/textinput.go @@ -66,7 +66,7 @@ func (ti *TextInput) Draw(ctx *Context) { ctx.Printf(0, 0, tcell.StyleDefault, "%s%s", ti.prompt, string(ti.text)) } cells := runewidth.StringWidth(string(ti.text[:ti.index]) + ti.prompt) - if cells != ti.cells && ti.focus { + if ti.focus { ctx.SetCursor(cells, 0) } } diff --git a/widgets/account-wizard.go b/widgets/account-wizard.go index aa68ed7..6cd541e 100644 --- a/widgets/account-wizard.go +++ b/widgets/account-wizard.go @@ -356,8 +356,8 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { "To add another account in the future, run ':new-account'.")) selecter = newSelecter([]string{ "Previous", - "Finish", "Finish & open tutorial", + "Finish", }, 1).OnChoose(func(option string) { switch option { case "Previous": @@ -436,11 +436,8 @@ func (wizard *AccountWizard) finish(tutorial bool) { } file, err := ini.Load(accountsConf) - if err == os.ErrNotExist { + if err != nil { file = ini.Empty() - } else if err != nil { - wizard.errorFor(nil, err) - return } var sec *ini.Section diff --git a/widgets/aerc.go b/widgets/aerc.go index 484fd88..3c6566d 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -62,6 +62,12 @@ func NewAerc(conf *config.AercConfig, logger *log.Logger, tabs.Add(view, acct.Name) } + if len(conf.Accounts) == 0 { + wizard := NewAccountWizard(aerc.Config(), aerc) + wizard.Focus(true) + aerc.NewTab(wizard, "New account") + } + return aerc }