diff options
Diffstat (limited to 'pkg/gui/status_panel.go')
-rw-r--r-- | pkg/gui/status_panel.go | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/pkg/gui/status_panel.go b/pkg/gui/status_panel.go index a3f8deb10..2800a6bf2 100644 --- a/pkg/gui/status_panel.go +++ b/pkg/gui/status_panel.go @@ -1,6 +1,7 @@ package gui import ( + "errors" "fmt" "strings" @@ -114,13 +115,38 @@ func (gui *Gui) handleStatusSelect() error { }) } +func (gui *Gui) askForConfigFile(action func(file string) error) error { + confFiles := gui.Config.GetUserConfigFiles() + switch len(confFiles) { + case 0: + return errors.New("no config file found") + case 1: + return action(confFiles[0]) + default: + menuItems := make([]*menuItem, len(confFiles)) + for i, file := range confFiles { + i := i + menuItems[i] = &menuItem{ + displayString: file, + onPress: func() error { + return action(confFiles[i]) + }, + } + } + return gui.createMenu("select config file", menuItems, createMenuOptions{}) + } +} + func (gui *Gui) handleOpenConfig() error { - return gui.openFile(gui.Config.GetUserConfigPath()) + return gui.askForConfigFile(func(file string) error { + return gui.openFile(file) + }) } func (gui *Gui) handleEditConfig() error { - filename := gui.Config.GetUserConfigPath() - return gui.editFile(filename) + return gui.askForConfigFile(func(file string) error { + return gui.editFile(file) + }) } func lazygitTitle() string { |