about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-05-22 11:35:55 -0400
committerDrew DeVault <sir@cmpwn.com>2019-05-22 11:35:55 -0400
commit9b19e3ad054132fdab4062915f70122faaa5c163 (patch)
tree4a41b871550f6fd692711a56aa9b2b7898c8c8f2
parent1a45b793c7d1d59e209be3eb4b4f794a78085e5d (diff)
downloadaerc-9b19e3ad054132fdab4062915f70122faaa5c163.tar.gz
Show account wizard if no accounts configured
-rw-r--r--config/config.go9
-rw-r--r--lib/ui/textinput.go2
-rw-r--r--widgets/account-wizard.go7
-rw-r--r--widgets/aerc.go6
4 files changed, 12 insertions, 12 deletions
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
 }