jesseduffield.lazygit/pkg/gui/controllers/edit_config_action.go
Stefan Haller f3ea0ab902 Extract editConfig into a shared EditConfigAction
The "edit config file" command is about to gain a second, global
keybinding alongside the existing status-panel one. Moving its body into
an action struct (the convention GlobalController already follows for
all its handlers) lets both controllers delegate to one implementation.
2026-06-24 22:03:57 +02:00

37 lines
772 B
Go

package controllers
import (
"errors"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/samber/lo"
)
type EditConfigAction struct {
c *ControllerCommon
}
func (self *EditConfigAction) Call() error {
confPaths := self.c.GetConfig().GetUserConfigPaths()
switch len(confPaths) {
case 0:
return errors.New(self.c.Tr.NoConfigFileFoundErr)
case 1:
return self.c.Helpers().Files.EditFiles(confPaths)
default:
menuItems := lo.Map(confPaths, func(path string, _ int) *types.MenuItem {
return &types.MenuItem{
Label: path,
OnPress: func() error {
return self.c.Helpers().Files.EditFiles([]string{path})
},
}
})
return self.c.Menu(types.CreateMenuOptions{
Title: self.c.Tr.SelectConfigFile,
Items: menuItems,
})
}
}