diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md index 5966fd8fe..b911b0538 100644 --- a/docs/keybindings/Keybindings_en.md +++ b/docs/keybindings/Keybindings_en.md @@ -189,9 +189,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct v: toggle drag select V: toggle drag select a: toggle select hunk - c: commit changes - w: commit changes without pre-commit hook - C: commit changes using git editor ## Reflog diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md index bb081e709..78f266b2e 100644 --- a/docs/keybindings/Keybindings_nl.md +++ b/docs/keybindings/Keybindings_nl.md @@ -227,9 +227,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct v: toggle drag selecteer V: toggle drag selecteer a: toggle selecteer hunk - c: commit veranderingen - w: commit veranderingen zonder pre-commit hook - C: commit veranderingen met de git editor ## Stash diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md index c4fe08d56..7cde6f64b 100644 --- a/docs/keybindings/Keybindings_pl.md +++ b/docs/keybindings/Keybindings_pl.md @@ -168,9 +168,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct v: toggle drag select V: toggle drag select a: toggle select hunk - c: Zatwierdź zmiany - w: zatwierdź zmiany bez skryptu pre-commit - C: Zatwierdź zmiany używając edytora ## Reflog diff --git a/docs/keybindings/Keybindings_zh.md b/docs/keybindings/Keybindings_zh.md index e4b23404a..97f525658 100644 --- a/docs/keybindings/Keybindings_zh.md +++ b/docs/keybindings/Keybindings_zh.md @@ -236,9 +236,6 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct v: 切换拖动选择 V: 切换拖动选择 a: 切换选择区块 - c: 提交更改 - w: 提交更改而无需预先提交钩子 - C: 提交更改(使用编辑器编辑提交信息) ## 正常 diff --git a/pkg/gui/controllers.go b/pkg/gui/controllers.go index 9d55625ea..4987210c9 100644 --- a/pkg/gui/controllers.go +++ b/pkg/gui/controllers.go @@ -30,7 +30,7 @@ func (gui *Gui) resetControllers() { Bisect: helpers.NewBisectHelper(helperCommon, gui.git), Suggestions: helpers.NewSuggestionsHelper(helperCommon, model, gui.refreshSuggestions), Files: helpers.NewFilesHelper(helperCommon, gui.git, osCommand), - WorkingTree: helpers.NewWorkingTreeHelper(model), + WorkingTree: helpers.NewWorkingTreeHelper(helperCommon, gui.git, model), Tags: helpers.NewTagsHelper(helperCommon, gui.git), GPG: helpers.NewGpgHelper(helperCommon, gui.os, gui.git), MergeAndRebase: rebaseHelper, @@ -102,27 +102,22 @@ func (gui *Gui) resetControllers() { remoteBranchesController := controllers.NewRemoteBranchesController(common) - gui.Controllers = Controllers{ - Submodules: submodulesController, - Global: controllers.NewGlobalController(common), - Files: controllers.NewFilesController( - common, - gui.enterSubmodule, - setCommitMessage, - getSavedCommitMessage, - gui.switchToMerge, - ), - Tags: controllers.NewTagsController(common), - LocalCommits: controllers.NewLocalCommitsController(common, syncController.HandlePull), - Remotes: controllers.NewRemotesController( - common, - func(branches []*models.RemoteBranch) { gui.State.Model.RemoteBranches = branches }, - ), - Menu: controllers.NewMenuController(common), - Undo: controllers.NewUndoController(common), - Sync: syncController, - } - + menuController := controllers.NewMenuController(common) + localCommitsController := controllers.NewLocalCommitsController(common, syncController.HandlePull) + tagsController := controllers.NewTagsController(common) + filesController := controllers.NewFilesController( + common, + gui.enterSubmodule, + setCommitMessage, + getSavedCommitMessage, + gui.switchToMerge, + ) + remotesController := controllers.NewRemotesController( + common, + func(branches []*models.RemoteBranch) { gui.State.Model.RemoteBranches = branches }, + ) + undoController := controllers.NewUndoController(common) + globalController := controllers.NewGlobalController(common) branchesController := controllers.NewBranchesController(common) gitFlowController := controllers.NewGitFlowController(common) filesRemoveController := controllers.NewFilesRemoveController(common) @@ -160,18 +155,19 @@ func (gui *Gui) resetControllers() { controllers.AttachControllers(context, controllers.NewBasicCommitsController(common, context)) } + controllers.AttachControllers(gui.State.Contexts.Files, filesController, filesRemoveController) + controllers.AttachControllers(gui.State.Contexts.Tags, tagsController) + controllers.AttachControllers(gui.State.Contexts.Submodules, submodulesController) + controllers.AttachControllers(gui.State.Contexts.LocalCommits, localCommitsController, bisectController) controllers.AttachControllers(gui.State.Contexts.Branches, branchesController, gitFlowController) - controllers.AttachControllers(gui.State.Contexts.Files, gui.Controllers.Files, filesRemoveController) - controllers.AttachControllers(gui.State.Contexts.Tags, gui.Controllers.Tags) - controllers.AttachControllers(gui.State.Contexts.Submodules, gui.Controllers.Submodules) - controllers.AttachControllers(gui.State.Contexts.LocalCommits, gui.Controllers.LocalCommits, bisectController) + controllers.AttachControllers(gui.State.Contexts.LocalCommits, localCommitsController, bisectController) controllers.AttachControllers(gui.State.Contexts.CommitFiles, commitFilesController) - controllers.AttachControllers(gui.State.Contexts.Remotes, gui.Controllers.Remotes) + controllers.AttachControllers(gui.State.Contexts.Remotes, remotesController) controllers.AttachControllers(gui.State.Contexts.Stash, stashController) - controllers.AttachControllers(gui.State.Contexts.Menu, gui.Controllers.Menu) + controllers.AttachControllers(gui.State.Contexts.Menu, menuController) controllers.AttachControllers(gui.State.Contexts.CommitMessage, commitMessageController) controllers.AttachControllers(gui.State.Contexts.RemoteBranches, remoteBranchesController) - controllers.AttachControllers(gui.State.Contexts.Global, gui.Controllers.Sync, gui.Controllers.Undo, gui.Controllers.Global) + controllers.AttachControllers(gui.State.Contexts.Global, syncController, undoController, globalController) // this must come last so that we've got our click handlers defined against the context listControllerFactory := controllers.NewListControllerFactory(gui.c) diff --git a/pkg/gui/controllers/files_controller.go b/pkg/gui/controllers/files_controller.go index db3eca7b1..2c2590699 100644 --- a/pkg/gui/controllers/files_controller.go +++ b/pkg/gui/controllers/files_controller.go @@ -135,7 +135,7 @@ func (self *FilesController) GetKeybindings(opts types.KeybindingsOpts) []*types }, { Key: opts.GetKey(opts.Config.Files.OpenMergeTool), - Handler: self.OpenMergeTool, + Handler: self.helpers.WorkingTree.OpenMergeTool, Description: self.c.Tr.LcOpenMergeTool, }, { @@ -603,19 +603,6 @@ func (self *FilesController) toggleTreeView() error { return self.c.PostRefreshUpdate(self.context()) } -func (self *FilesController) OpenMergeTool() error { - return self.c.Ask(types.AskOpts{ - Title: self.c.Tr.MergeToolTitle, - Prompt: self.c.Tr.MergeToolPrompt, - HandleConfirm: func() error { - self.c.LogAction(self.c.Tr.Actions.OpenMergeTool) - return self.c.RunSubprocessAndRefresh( - self.git.WorkingTree.OpenMergeToolCmdObj(), - ) - }, - }) -} - func (self *FilesController) handleStashSave(stashFunc func(message string) error) error { if !self.helpers.WorkingTree.IsWorkingTreeDirty() { return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash) diff --git a/pkg/gui/controllers/helpers/working_tree_helper.go b/pkg/gui/controllers/helpers/working_tree_helper.go index 273748d6b..3d79ebbc1 100644 --- a/pkg/gui/controllers/helpers/working_tree_helper.go +++ b/pkg/gui/controllers/helpers/working_tree_helper.go @@ -1,6 +1,7 @@ package helpers import ( + "github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/gui/types" ) @@ -13,11 +14,16 @@ type IWorkingTreeHelper interface { } type WorkingTreeHelper struct { + c *types.HelperCommon + git *commands.GitCommand + model *types.Model } -func NewWorkingTreeHelper(model *types.Model) *WorkingTreeHelper { +func NewWorkingTreeHelper(c *types.HelperCommon, git *commands.GitCommand, model *types.Model) *WorkingTreeHelper { return &WorkingTreeHelper{ + c: c, + git: git, model: model, } } @@ -53,3 +59,16 @@ func (self *WorkingTreeHelper) FileForSubmodule(submodule *models.SubmoduleConfi return nil } + +func (self *WorkingTreeHelper) OpenMergeTool() error { + return self.c.Ask(types.AskOpts{ + Title: self.c.Tr.MergeToolTitle, + Prompt: self.c.Tr.MergeToolPrompt, + HandleConfirm: func() error { + self.c.LogAction(self.c.Tr.Actions.OpenMergeTool) + return self.c.RunSubprocessAndRefresh( + self.git.WorkingTree.OpenMergeToolCmdObj(), + ) + }, + }) +} diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index ba2d85a27..3e996e404 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -18,7 +18,6 @@ import ( "github.com/jesseduffield/lazygit/pkg/common" "github.com/jesseduffield/lazygit/pkg/config" "github.com/jesseduffield/lazygit/pkg/gui/context" - "github.com/jesseduffield/lazygit/pkg/gui/controllers" "github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers" "github.com/jesseduffield/lazygit/pkg/gui/lbl" "github.com/jesseduffield/lazygit/pkg/gui/mergeconflicts" @@ -129,9 +128,6 @@ type Gui struct { IsNewRepo bool - // controllers define keybindings for a given context - Controllers Controllers - // flag as to whether or not the diff view should ignore whitespace IgnoreWhitespaceInDiffView bool @@ -203,19 +199,6 @@ type GuiRepoState struct { CurrentPopupOpts *types.CreatePopupPanelOpts } -type Controllers struct { - Submodules *controllers.SubmodulesController - Tags *controllers.TagsController - LocalCommits *controllers.LocalCommitsController - Files *controllers.FilesController - Remotes *controllers.RemotesController - Menu *controllers.MenuController - Bisect *controllers.BisectController - Undo *controllers.UndoController - Sync *controllers.SyncController - Global *controllers.GlobalController -} - // for now the staging panel state, unlike the other panel states, is going to be // non-mutative, so that we don't accidentally end up // with mismatches of data. We might change this in the future diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index cfcd50822..2c2775f45 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -619,7 +619,7 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi ViewName: "main", Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)}, Key: opts.GetKey(opts.Config.Universal.OpenFile), - Handler: self.Controllers.Files.Open, + Handler: self.HandleOpenFile, Description: self.c.Tr.LcOpenFile, }, { @@ -739,27 +739,6 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi Description: self.c.Tr.LcScrollRight, Tag: "navigation", }, - { - ViewName: "main", - Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)}, - Key: opts.GetKey(opts.Config.Files.CommitChanges), - Handler: self.Controllers.Files.HandleCommitPress, - Description: self.c.Tr.CommitChanges, - }, - { - ViewName: "main", - Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)}, - Key: opts.GetKey(opts.Config.Files.CommitChangesWithoutHook), - Handler: self.Controllers.Files.HandleWIPCommitPress, - Description: self.c.Tr.LcCommitChangesWithoutHook, - }, - { - ViewName: "main", - Contexts: []string{string(context.MAIN_STAGING_CONTEXT_KEY)}, - Key: opts.GetKey(opts.Config.Files.CommitChangesWithEditor), - Handler: self.Controllers.Files.HandleCommitEditorPress, - Description: self.c.Tr.CommitChangesWithEditor, - }, { ViewName: "main", Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)}, @@ -771,7 +750,7 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi ViewName: "main", Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)}, Key: opts.GetKey(opts.Config.Files.OpenMergeTool), - Handler: self.Controllers.Files.OpenMergeTool, + Handler: self.helpers.WorkingTree.OpenMergeTool, Description: self.c.Tr.LcOpenMergeTool, }, { diff --git a/pkg/gui/staging_panel.go b/pkg/gui/staging_panel.go index bbb100961..628142446 100644 --- a/pkg/gui/staging_panel.go +++ b/pkg/gui/staging_panel.go @@ -165,3 +165,12 @@ func (gui *Gui) applySelection(reverse bool, state *LblPanelState) error { } return nil } + +func (gui *Gui) HandleOpenFile() error { + file := gui.getSelectedFile() + if file == nil { + return nil + } + + return gui.helpers.Files.OpenFile(file.GetPath()) +}