summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/gui/context/base_context.go24
-rw-r--r--pkg/gui/context/commit_files_context.go2
-rw-r--r--pkg/gui/context/list_context_trait.go29
-rw-r--r--pkg/gui/context/tags_context.go2
-rw-r--r--pkg/gui/context/working_tree_context.go2
-rw-r--r--pkg/gui/controllers/bisect_controller.go7
-rw-r--r--pkg/gui/controllers/files_controller.go44
-rw-r--r--pkg/gui/controllers/local_commits_controller.go65
-rw-r--r--pkg/gui/controllers/menu_controller.go11
-rw-r--r--pkg/gui/controllers/remotes_controller.go15
-rw-r--r--pkg/gui/controllers/submodules_controller.go21
-rw-r--r--pkg/gui/controllers/sync_controller.go11
-rw-r--r--pkg/gui/controllers/tags_controller.go17
-rw-r--r--pkg/gui/controllers/undo_controller.go11
-rw-r--r--pkg/gui/gui.go27
-rw-r--r--pkg/gui/keybindings.go36
-rw-r--r--pkg/gui/list_context.go35
-rw-r--r--pkg/gui/list_context_config.go40
-rw-r--r--pkg/gui/types/context.go17
19 files changed, 215 insertions, 201 deletions
diff --git a/pkg/gui/context/base_context.go b/pkg/gui/context/base_context.go
index f6007fe5f..c61f57cf4 100644
--- a/pkg/gui/context/base_context.go
+++ b/pkg/gui/context/base_context.go
@@ -1,6 +1,8 @@
package context
-import "github.com/jesseduffield/lazygit/pkg/gui/types"
+import (
+ "github.com/jesseduffield/lazygit/pkg/gui/types"
+)
type BaseContext struct {
kind types.ContextKind
@@ -9,9 +11,14 @@ type BaseContext struct {
windowName string
onGetOptionsMap func() map[string]string
+ keybindingsFns []types.KeybindingsFn
+ keybindings []*types.Binding
+
*ParentContextMgr
}
+var _ types.IBaseContext = &BaseContext{}
+
type NewBaseContextOpts struct {
Kind types.ContextKind
Key types.ContextKey
@@ -58,3 +65,18 @@ func (self *BaseContext) GetKind() types.ContextKind {
func (self *BaseContext) GetKey() types.ContextKey {
return self.key
}
+
+func (self *BaseContext) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
+ bindings := []*types.Binding{}
+ for i := range self.keybindingsFns {
+ // the first binding in the bindings array takes precedence but we want the
+ // last keybindingsFn to take precedence to we add them in reverse
+ bindings = append(bindings, self.keybindingsFns[len(self.keybindingsFns)-1-i](opts)...)
+ }
+
+ return bindings
+}
+
+func (self *BaseContext) AddKeybindingsFn(fn types.KeybindingsFn) {
+ self.keybindingsFns = append(self.keybindingsFns, fn)
+}
diff --git a/pkg/gui/context/commit_files_context.go b/pkg/gui/context/commit_files_context.go
index dd557f6b2..49a9f34da 100644
--- a/pkg/gui/context/commit_files_context.go
+++ b/pkg/gui/context/commit_files_context.go
@@ -55,6 +55,8 @@ func NewCommitFilesContext(
c: c,
}
+ baseContext.AddKeybindingsFn(listContextTrait.keybindings)
+
self.BaseContext = baseContext
self.ListContextTrait = listContextTrait
self.CommitFileTreeViewModel = viewModel
diff --git a/pkg/gui/context/list_context_trait.go b/pkg/gui/context/list_context_trait.go
index c1d45eb4e..50a91b827 100644
--- a/pkg/gui/context/list_context_trait.go
+++ b/pkg/gui/context/list_context_trait.go
@@ -4,7 +4,6 @@ import (
"fmt"
"github.com/jesseduffield/gocui"
- "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/utils"
)
@@ -182,32 +181,28 @@ func (self *ListContextTrait) HandleRenderToMain() error {
return nil
}
-func (self *ListContextTrait) Keybindings(
- getKey func(key string) interface{},
- config config.KeybindingConfig,
- guards types.KeybindingGuards,
-) []*types.Binding {
+func (self *ListContextTrait) keybindings(opts types.KeybindingsOpts) []*types.Binding {
return []*types.Binding{
- {Tag: "navigation", Key: getKey(config.Universal.PrevItemAlt), Modifier: gocui.ModNone, Handler: self.HandlePrevLine},
- {Tag: "navigation", Key: getKey(config.Universal.PrevItem), Modifier: gocui.ModNone, Handler: self.HandlePrevLine},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.PrevItemAlt), Modifier: gocui.ModNone, Handler: self.HandlePrevLine},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.PrevItem), Modifier: gocui.ModNone, Handler: self.HandlePrevLine},
{Tag: "navigation", Key: gocui.MouseWheelUp, Modifier: gocui.ModNone, Handler: self.HandlePrevLine},
- {Tag: "navigation", Key: getKey(config.Universal.NextItemAlt), Modifier: gocui.ModNone, Handler: self.HandleNextLine},
- {Tag: "navigation", Key: getKey(config.Universal.NextItem), Modifier: gocui.ModNone, Handler: self.HandleNextLine},
- {Tag: "navigation", Key: getKey(config.Universal.PrevPage), Modifier: gocui.ModNone, Handler: self.HandlePrevPage, Description: self.c.Tr.LcPrevPage},
- {Tag: "navigation", Key: getKey(config.Universal.NextPage), Modifier: gocui.ModNone, Handler: self.HandleNextPage, Description: self.c.Tr.LcNextPage},
- {Tag: "navigation", Key: getKey(config.Universal.GotoTop), Modifier: gocui.ModNone, Handler: self.HandleGotoTop, Description: self.c.Tr.LcGotoTop},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.NextItemAlt), Modifier: gocui.ModNone, Handler: self.HandleNextLine},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.NextItem), Modifier: gocui.ModNone, Handler: self.HandleNextLine},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.PrevPage), Modifier: gocui.ModNone, Handler: self.HandlePrevPage, Description: self.c.Tr.LcPrevPage},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.NextPage), Modifier: gocui.ModNone, Handler: self.HandleNextPage, Description: self.c.Tr.LcNextPage},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.GotoTop), Modifier: gocui.ModNone, Handler: self.HandleGotoTop, Description: self.c.Tr.LcGotoTop},
{Key: gocui.MouseLeft, Modifier: gocui.ModNone, Handler: func() error { return self.HandleClick(nil) }},
{Tag: "navigation", Key: gocui.MouseWheelDown, Modifier: gocui.ModNone, Handler: self.HandleNextLine},
- {Tag: "navigation", Key: getKey(config.Universal.ScrollLeft), Modifier: gocui.ModNone, Handler: self.HandleScrollLeft},
- {Tag: "navigation", Key: getKey(config.Universal.ScrollRight), Modifier: gocui.ModNone, Handler: self.HandleScrollRight},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.ScrollLeft), Modifier: gocui.ModNone, Handler: self.HandleScrollLeft},
+ {Tag: "navigation", Key: opts.GetKey(opts.Config.Universal.ScrollRight), Modifier: gocui.ModNone, Handler: self.HandleScrollRight},
{
- Key: getKey(config.Universal.StartSearch),
+ Key: opts.GetKey(opts.Config.Universal.StartSearch),
Handler: func() error { self.c.OpenSearch(); return nil },
Description: self.c.Tr.LcStartSearch,
Tag: "navigation",
},
{
- Key: getKey(config.Universal.GotoBottom),
+ Key: opts.GetKey(opts.Config.Universal.GotoBottom),
Description: self.c.Tr.LcGotoBottom,
Handler: self.HandleGotoBottom,
Tag: "navigation",
diff --git a/pkg/gui/context/tags_context.go b/pkg/gui/context/tags_context.go
index fc6e1bde1..8644b15dc 100644
--- a/pkg/gui/context/tags_context.go
+++ b/pkg/gui/context/tags_context.go
@@ -55,6 +55,8 @@ func NewTagsContext(
c: c,
}
+ baseContext.AddKeybindingsFn(listContextTrait.keybindings)
+
self.BaseContext = baseContext
self.ListContextTrait = listContextTrait
self.TagsViewModel = list
diff --git a/pkg/gui/context/working_tree_context.go b/pkg/gui/context/working_tree_context.go
index fafddf9e8..8ab4a1403 100644
--- a/pkg/gui/context/working_tree_context.go
+++ b/pkg/gui/context/working_tree_context.go
@@ -55,6 +55,8 @@ func NewWorkingTreeContext(
c: c,
}
+ baseContext.AddKeybindingsFn(listContextTrait.keybindings)
+
self.BaseContext = baseContext
self.ListContextTrait = listContextTrait
self.FileTreeViewModel = viewModel
diff --git a/pkg/gui/controllers/bisect_controller.go b/pkg/gui/controllers/bisect_controller.go
index bb7ba642d..9841b5e59 100644
--- a/pkg/gui/controllers/bisect_controller.go
+++ b/pkg/gui/controllers/bisect_controller.go
@@ -7,7 +7,6 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
"github.com/jesseduffield/lazygit/pkg/commands/models"
- "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@@ -43,11 +42,11 @@ func NewBisectController(
}
}
-func (self *BisectController) Keybindings(getKey func(key string) interface{}, config config.KeybindingConfig, guards types.KeybindingGuards) []*types.Binding {
+func (self *BisectController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
bindings := []*types.Binding{
{
- Key: getKey(config.Commits.ViewBisectOptions),
- Handler: guards.OutsideFilterMode(self.checkSelected(self.openMenu)),
+ Key: opts.GetKey(opts.Config.Commits.ViewBisectOptions),
+ Handler: opts.Guards.OutsideFilterMode(self.checkSelected(self.openMenu)),
Description: self.c.Tr.LcViewBisectOptions,
OpensMenu: true,
},
diff --git a/pkg/gui/controllers/files_controller.go b/pkg/gui/controllers/files_controller.go
index a7c4ff374..1f9521867 100644
--- a/pkg/gui/controllers/files_controller.go
+++ b/pkg/gui/controllers/files_controller.go
@@ -87,10 +87,10 @@ func NewFilesController(
}
}
-func (self *FilesController) Keybindings(getKey func(key string) interface{}, config config.KeybindingConfig, guards types.KeybindingGuards) []*types.Binding {
- bindings := []*types.Binding{
+func (self *FilesController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
+ return []*types.Binding{
{
- Key: getKey(config.Universal.Select),
+ Key: opts.GetKey(opts.Config.Universal.Select),
Handler: self.checkSelectedFileNode(self.press),
Description: self.c.Tr.LcToggleStaged,
},
@@ -99,103 +99,101 @@ func (self *FilesController) Keybindings(getKey func(key string) interface{}, co
Handler: func() error { return self.context.HandleClick(self.checkSelectedFileNode(self.press)) },
},
{
- Key: getKey("<c-b>"), // TODO: softcode
+ Key: opts.GetKey("<c-b>"), // TODO: softcode
Handler: self.handleStatusFilterPressed,
Description: self.c.Tr.LcFileFilter,
},
{
- Key: getKey(config.Files.CommitChanges),
+ Key: opts.GetKey(opts.Config.Files.CommitChanges),
Handler: self.HandleCommitPress,
Description: self.c.Tr.CommitChanges,
},
{
- Key: getKey(config.Files.CommitChangesWithoutHook),
+ Key: opts.GetKey(opts.Config.Files.CommitChangesWithoutHook),
Handler: self.HandleWIPCommitPress,
Description: self.c.Tr.LcCommitChangesWithoutHook,
},
{
- Key: getKey(config.Files.AmendLastCommit),
+ Key: opts.GetKey(opts.Config.Files.AmendLastCommit),
Handler: self.handleAmendCommitPress,
Description: self.c.Tr.AmendLastCommit,
},
{
- Key: getKey(config.Files.CommitChangesWithEditor),
+ Key: opts.GetKey(opts.Config.Files.CommitChangesWithEditor),
Handler: self.HandleCommitEditorPress,
Description: self.c.Tr.CommitChangesWithEditor,
},
{
- Key: getKey(config.Universal.Edit),
+ Key: opts.GetKey(opts.Config.Universal.Edit),
Handler: self.checkSelectedFileNode(self.edit),
Description: self.c.Tr.LcEditFile,
},
{
- Key: getKey(config.Universal.OpenFile),
+ Key: opts.GetKey(opts.Config.Universal.OpenFile),
Handler: self.Open,
Description: self.c.Tr.LcOpenFile,
},
{
- Key: getKey(config.Files.IgnoreFile),
+ Key: opts.GetKey(opts.Config.Files.IgnoreFile),
Handler: self.checkSelectedFileNode(self.ignore),
Description: self.c.Tr.LcIgnoreFile,
},
{
- Key: getKey(config.Universal.Remove),
+ Key: opts.GetKey(opts.Config.Universal.Remove),
Handler: self.checkSelectedFileNode(self.remove),
Description: self.c.Tr.LcViewDiscardOptions,
OpensMenu: true,
},
{
- Key: getKey(config.Files.RefreshFiles),
+ Key: opts.GetKey(opts.Config.Files.RefreshFiles),
Handler: self.refresh,
Description: self.c.Tr.LcRefreshFiles,
},
{
- Key: getKey(config.Files.StashAllChanges),
+ Key: opts.GetKey(opts.Config.Files.StashAllChanges),
Handler: self.stash,
Description: self.c.Tr.LcStashAllChanges,
},
{
- Key: getKey(config.Files.ViewStashOptions),
+ Key: opts.GetKey(opts.Config.Files.ViewStashOptions),
Handler: self.createStashMenu,
Description: self.c.Tr.LcViewStashOptions,
OpensMenu: true,
},
{
- Key: getKey(config.Files.ToggleStagedAll),
+ Key: opts.GetKey(opts.Config.Files.ToggleStagedAll),
Handler: self.stageAll,
Description: self.c.Tr.LcToggleStagedAll,
},
{
- Key: getKey(config.Universal.GoInto),
+ Key: opts.GetKey(opts.Config.Universal.GoInto),
Handler: self.enter,
Description: self.c.Tr.FileEnter,
},
{
ViewName: "",
- Key: getKey(config.Universal.ExecuteCustomCommand),
+ Key: opts.GetKey(opts.Config.Universal.ExecuteCustomCommand),
Handler: self.handleCustomCommand,
Description: self.c.Tr.LcExecuteCustomCommand,
},
{
- Key: getKey(config.Commits.ViewResetOptions),
+ Key: opts.GetKey(opts.Config.Commits.ViewResetOptions),
Handler: self.createResetMenu,
Description: self.c.Tr.LcViewResetToUpstreamOptions,
OpensMenu: true,
},
// here
{
- Key: getKey(config.Files.ToggleTreeView),
+ Key: opts.GetKey(opts.Config.Files.ToggleTreeView),
Handler: self.toggleTreeView,
Description: self.c.Tr.LcToggleTreeView,
},
{
- Key: getKey(config.Files.OpenMergeTool),
+ Key: opts.GetKey(opts.Config.Files.OpenMergeTool),
Handler: self.OpenMergeTool,
Description: self.c.Tr.LcOpenMergeTool,
},
}
-
- return append(bindings, self.context.Keybindings(getKey, config, guards)...)
}
func (self *FilesController) press(node *filetree.FileNode) error {
diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go
index 749199c1e..5458697e3 100644
--- a/pkg/gui/controllers/local_commits_controller.go
+++ b/pkg/gui/controllers/local_commits_controller.go
@@ -8,7 +8,6 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands/hosting_service"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
- "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/utils"
)
@@ -91,108 +90,104 @@ func NewLocalCommitsController(
}
}
-func (self *LocalCommitsController) Keybindings(
- getKey func(key string) interface{},
- config config.KeybindingConfig,
- guards types.KeybindingGuards,
-) []*types.Binding {
+func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
outsideFilterModeBindings := []*types.Binding{
{
- Key: getKey(config.Commits.SquashDown),
+ Key: opts.GetKey(opts.Config.Commits.SquashDown),
Handler: self.squashDown,
Description: self.c.Tr.LcSquashDown,
},
{
- Key: getKey(config.Commits.MarkCommitAsFixup),
+ Key: opts.GetKey(opts.Config.Commits.MarkCommitAsFixup),
Handler: self.fixup,
Description: self.c.Tr.LcFixupCommit,
},
{
- Key: getKey(config.Commits.RenameCommit),
+ Key: opts.GetKey(opts.Config.Commits.RenameCommit),
Handler: self.checkSelected(self.reword),
Description: self.c.Tr.LcRewordCommit,
},
{
- Key: getKey(config.Commits.RenameCommitWithEditor),
+ Key: opts.GetKey(opts.Config.Commits.RenameCommitWithEditor),
Handler: self.rewordEditor,
Description: self.c.Tr.LcRenameCommitEditor,
},
{
- Key: getKey(config.Universal.Remove),
+ Key: opts.GetKey(opts.Config.Universal.Remove),
Handler: self.drop,
Description: self.c.Tr.LcDeleteCommit,
},
{
- Key: getKey(config.Universal.Edit),
+ Key: opts.GetKey(opts.Config.Universal.Edit),
Handler: self.edit,
Description: self.c.Tr.LcEditCommit,
},
{
- Key: getKey(config.Commits.PickCommit),
+ Key: opts.GetKey(opts.Config.Commits.PickCommit),
Handler: self.pick,
Description: self.c.Tr.LcPickCommit,
},
{
- Key: getKey(config.Commits.CreateFixupCommit),
+ Key: opts.GetKey(opts.Config.Commits.CreateFixupCommit),
Handler: self.checkSelected(self.handleCreateFixupCommit),
Description: self.c.Tr.LcCreateFixupCommit,
},
{
- Key: getKey(config.Commits.SquashAboveCommits),
+ Key: opts.GetKey(opts.Config.Commits.SquashAboveCommits),
Handler: self.checkSelected(self.handleSquashAllAboveFixupCommits),
Description: self.c.Tr.LcSquashAboveCommits,
},
{
- Key: getKey(config.Commits.MoveDownCommit),
+ Key: opts.GetKey(opts.Config.Commits.MoveDownCommit),
Handler: self.handleCommitMoveDown,
Description: self.c.Tr.LcMoveDownCommit,
},
{
- Key: getKey(config.Commits.MoveUpCommit),
+ Key: opts.GetKey(opts.Config.Commits.MoveUpCommit),
Handler: self.handleCommitMoveUp,
Description: self.c.Tr.LcMoveUpCommit,
},
{
- Key: getKey(config.Commits.AmendToCommit),
+ Key: opts.GetKey(opts.Config.Commits.AmendToCommit),
Handler: self.handleCommitAmendTo,
Description: self.c.Tr.LcAmendToCommit,
},
{
- Key: getKey(config.Commits.RevertCommit),
+ Key: opts.GetKey(opts.Config.Commits.RevertCommit),
Handler: self.checkSelected(self.handleCommitRevert),
Description: self.c.Tr.LcRevertCommit,
},
{
- Key: getKey(config.Universal.New),
+ Key: opts.GetKey(opts.Config.Universal.New),
Modifier: gocui.ModNone,
Handler: self.checkSelected(self.newBranch),
Description: self.c.Tr.LcCreateNewBranchFromCommit,
},
{
- Key: getKey(config.Commits.CherryPickCopy),
+ Key: opts.GetKey(opts.Config.Commits.CherryPickCopy),
Handler: self.checkSelected(self.copy),
Description: self.c.Tr.LcCherryPickCopy,
},
{
- Key: getKey(config.Commits.CherryPickCopyRange),
+ Key: opts.GetKey(opts.Config.Commits.CherryPickCopyRange),
Handler: self.checkSelected(self.copyRange),
Description: self.c.Tr.LcCherryPickCopyRange,
},
{
- Key: getKey(config.Commits.PasteCommits),
- Handler: guards.OutsideFilterMode(self.paste),
+ Key: opts.GetKey(opts.Config.Commits.PasteCommits),
+ Handler: opts.Guards.OutsideFilterMode(self.paste),
Description: self.c.Tr.LcPasteCommits,
},
// overriding these navigation keybindings because we might need to load
// more commits on demand
{
- Key: getKey(config.Universal.StartSearch),
+ Key: opts.GetKey(opts.Config.Universal.StartSearch),
Handler: self.openSearch,
Description: self.c.Tr.LcStartSearch,
Tag: "navigation",
},
{
- Key: getKey(config.Universal.GotoBottom),
+ Key: opts.GetKey(opts.Config.Universal.GotoBottom),
Handler: self.gotoBottom,
Description: self.c.Tr.LcGotoBottom,
Tag: "navigation",
@@ -204,49 +199,49 @@ func (self *LocalCommitsController) Keybindings(
}
for _, binding := range outsideFilterModeBindings {
- binding.Handler = guards.OutsideFilterMode(binding.Handler)
+ binding.Handler = opts.Guards.OutsideFilterMode(binding.Handler)
}
bindings := append(outsideFilterModeBindings, []*types.Binding{
{
- Key: getKey(config.Commits.OpenLogMenu),
+ Key: opts.GetKey(opts.Config.Commits.OpenLogMenu),
Handler: self.handleOpenLogMenu,
Description: self.c.Tr.LcOpenLogMenu,
OpensMenu: true,
},
{
- Key: getKey(config.Commits.ViewResetOptions),
+ Key: opts.GetKey(opts.Config.Commits.ViewResetOptions),
Handler: self.checkSelected(self.handleCreateCommitResetMenu),
Description: self.c.Tr.LcResetToThisCommit,
},
{
- Key: getKey(config.Universal.GoInto),
+ Key: opts.GetKey(opts.Config.Universal.GoInto),
Handler: self.checkSelected(self.enter),
Description: self.c.Tr.LcViewCommitFiles,
},
{
- Key: getKey(config.Commits.CheckoutCommit),
+ Key: opts.GetKey(opts.Config.Commits.CheckoutCommit),
Handler: self.checkSelected(self.handleCheckoutCommit),
Description: self.c.Tr.LcCheckoutCommit,
},
{
- Key: getKey(config.Commits.TagCommit),
+ Key: opts.GetKey(opts.Config.Commits.TagCommit),
Handler: self.checkSelected(self.handleTagCommit),
Description: self.c.Tr.LcTagCommit,
},
{
- Key: getKey(config.Commits.CopyCommitMessageToClipboard),
+ Key: opts.GetKey(opts.Config.Commits.CopyCommitMessageToClipboard),
Handler: self.checkSelected(self.handleCopySelectedCommitMessageToClipboard),
Description: self.c.Tr.LcCopyCommitMessageToClipboard,
},
{
- Key: getKey(config.Commits.OpenInBrowser),
+ Key: opts.GetKey(opts.Config.Commits.OpenInBrowser),
Handler: self.checkSelected(self.handleOpenCommitInBrowser),
Description: self.c.Tr.LcOpenCommitInBrowser,
},
}...)
- return append(bindings, self.context.Keybindings(getKey, config, guards)...)
+ return bindings
}
func (self *LocalCommitsController) squashDown() error {
diff --git a/pkg/gui/controllers/menu_controller.go b/pkg/gui/controllers/menu_controller.go
index 7773a0148..7c93ef6f7 100644
--- a/pkg/gui/controllers/menu_controller.go
+++ b/pkg/gui/controllers/menu_controller.go
@@ -2,7 +2,6 @@ package controllers
import (
"github.com/jesseduffield/gocui"
- "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@@ -27,18 +26,18 @@ func NewMenuController(
}
}
-func (self *MenuController) Keybindings(getKey func(key string) interface{}, config config.KeybindingConfig, guards types.KeybindingGuards) []*types.Binding {
+func (self *MenuController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
bindings := []*types.Binding{
{
- Key: getKey(config.Universal.Select),
+ Key: opts.GetKey(opts.Config.Universal.Select),
Handler: self.press,
},
{
- Key: getKey(config.Universal.Confirm),
+ Key: opts.GetKey(opts.Config.Universal.Confirm),
Handler: self.press,
},
{
- Key: getKey(config.Universal.ConfirmAlt1),
+ Key: opts.GetKey(opts.Config.Universal.ConfirmAlt1),
Handler: self.press,
},
{
@@ -47,7 +46,7 @@ func (self *MenuController) Keybindings(getKey func(key string) interface{}, con
},
}
- return append(bindings, self.context.Keybindings(getKey, config, guards)...)
+ return bindings
}
func (self *MenuController) press() error {
diff --git a/pkg/gui/controllers/remotes_controller.go b/pkg/gui/controllers/remotes_controller.go
index d9812d213..9f7acb9d0 100644
--- a/pkg/gui/controllers/remotes_controller.go
+++ b/pkg/gui/controllers/remotes_controller.go
@@ -4,7 +4,6 @@ import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models"
- "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/context"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/utils"
@@ -40,10 +39,10 @@ func NewRemotesController(
}
}
-func (self *RemotesController) Keybindings(getKey func(key string) interface{}, config config.KeybindingConfig, guards types.KeybindingGuards) []*types.Binding {
+func (self *RemotesController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
bindings := []*types.Binding{
{
- Key: getKey(config.Universal.GoInto),
+ Key: opts.GetKey(opts.Config.Universal.GoInto),
Handler: self.checkSelected(self.enter),
},
{
@@ -51,28 +50,28 @@ func (self *RemotesController) Keybindings(getKey func(key string) interface{},
Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
},
{
- Key: getKey(config.Branches.FetchRemote),
+ Key: opts.GetKey(opts.Config.Branches.FetchRemote),
Handler: self.checkSelected(self.fetch),
Description: self.c.Tr.LcFetchRemote,
},
{
- Key: getKey(config.Universal.New),
+ Key: opts.GetKey(opts.Config.Universal.New),
Handler: self.add,
Description: self.c.Tr.LcAddNewRemote,
},
{
- Key: getKey(config.Universal.Remove),
+ Key: opts.GetKey(opts.Config.Universal.Remove),
Handler: self.checkSelected(self.remove),
Description: self.c.Tr.LcRemoveRemote,
},
{
- Key: getKey(config.Universal.Edit),
+ Key: opts.GetKey(opts.Config.Universal.Edit),
Handler: self.checkSelected(self.edit),
Description: self.c.Tr.LcEditRemote,
},
}
- return append(bindings, self.context.Keybindings(getKey, config, guards)...)
+ return bindings
}
func (self *RemotesController) enter(remote *models.Remote) error {
diff --git a/pkg/gui/controllers/submodules_controller.go b/pkg/gui/controllers/submodules_controller.go
index 851d11983..f1ac7acf3 100644
--- a/pkg/gui/controllers/submodules_controller.go
+++ b/pkg/gui/controllers/submodules_controller.go
@@ -8,7 +8,6 @@ import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models"
- "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/style"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@@ -40,40 +39,40 @@ func NewSubmodulesController(
}
}
-func (self *SubmodulesController) Keybindings(getKey func(key string) interface{}, config config.KeybindingConfig, guards types.KeybindingGuards) []*types.Binding {
- bindings := []*types.Binding{
+func (self *SubmodulesController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
+ return []*types.Binding{
{
- Key: getKey(config.Universal.GoInto),
+ Key: opts.GetKey(opts.Config.Universal.GoInto),
Handler: self.checkSelected(self.enter),
Description: self.c.Tr.LcEnterSubmodule,
},
{
- Key: getKey(config.Universal.Remove),
+ Key: opts.GetKey(opts.Config.Universal.Remove),
Handler: self.checkSelected(self.remove),
Description: self.c.Tr.LcRemoveSubmodule,
},
{
- Key: getKey(config.Submodules.Update),
+ Key: opts.GetKey(opts.Config.Submodules.Update),
Handler: self.checkSelected(self.update),
Description: self.c.Tr.LcSubmoduleUpdate,
},
{
- Key: getKey(config.Universal.New),
+ Key: opts.GetKey(opts.Config.Universal.New),
Handler: self.add,
Description: self.c.Tr.LcAddSubmodule,
},
{
- Key: getKey(config.Universal.Edit),
+ Key: opts.GetKey(opts.Config.Universal.Edit),
Handler: self.checkSelected(self.editURL),
Description: self.c.Tr.LcEditSubmoduleUrl,
},
{
- Key: getKey(config.Submodules.Init),
+ Key: opts.GetKey(opts.Config.Submodules.Init),
Handler: self.checkSelected(self.init),
Description: self.c.Tr.LcInitSubmodule,
},
{
- Key: getKey(config.Submodules.BulkMenu),
+ Key: opts.GetKey(opts.Config.Submodules.BulkMenu),
Handler: self.openBulkActionsMenu,
Description: self.c.Tr.LcViewBulkSubmoduleOptions,
OpensMenu: true,
@@ -83,8 +82,6 @@ func (self *SubmodulesController) Keybindings(getKey func(key string) interface{
Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
},
}
-
- return append(bindings, self.context.Keybindings(getKey, config, guards)...)
}
func (self *SubmodulesController) enter(submodule *models.SubmoduleConfig) error {
diff --git a/pkg/gui/controllers/sync_controller.go b/pkg/gui/controllers/sync_controller.go
index 582d8a9de..106b4c516 100644
--- a/pkg/gui/controllers/sync_controller.go
+++ b/pkg/gui/controllers/sync_controller.go
@@ -7,7 +7,6 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
"github.com/jesseduffield/lazygit/pkg/commands/models"
- "github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@@ -46,16 +45,16 @@ func NewSyncController(
}
}
-func (self *SyncController) Keybindings(getKey func(key string) interface{}, config config.KeybindingConfig, guards types.KeybindingGuards) []*types.Binding {
+func (self *SyncController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
bindings := []*types.Binding{
{
- Key: getKey(config.Universal.PushFiles),
- Handler: guards.NoPopupPanel(self.HandlePush),
+ Key: opts.GetKey(opts.Config.Universal.PushFiles),
+ Handler: opts.Guards.NoPopupPanel(self.HandlePush),
Description: self.c.Tr.LcPush,
},
{
- Key: getKey(config.Universal.PullFiles),
- Handler: guards.NoPopupPanel(self.HandlePull),
+ Key: opts.GetKey(opts.Config.Universal.PullFiles),
+ Handler: opts.Guards.NoPopupPanel(self.HandlePull),
Description: self.c.Tr.LcPull,
},
}
diff --git a/pkg/gui/controllers/tags_controller.go b/pkg/gui/controllers/tags_controller.go
index 424f5a4b0..231f12736 100644
--- a/pkg/gui/controllers/tags_controller.go
+++ b/pkg/