summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2022-03-26 15:52:35 +1100
committerJesse Duffield <jessedduffield@gmail.com>2022-03-27 18:16:16 +1100
commit0dfb7c08b75659e161ad8fe69ea20aff7b259703 (patch)
tree2d43751610844e49f6b642e91eedb2f0d72a0803
parentf0a4dcfdc39dfb881522959c13b97744a9d12fea (diff)
remove controllers struct
-rw-r--r--docs/keybindings/Keybindings_en.md3
-rw-r--r--docs/keybindings/Keybindings_nl.md3
-rw-r--r--docs/keybindings/Keybindings_pl.md3
-rw-r--r--docs/keybindings/Keybindings_zh.md3
-rw-r--r--pkg/gui/controllers.go54
-rw-r--r--pkg/gui/controllers/files_controller.go15
-rw-r--r--pkg/gui/controllers/helpers/working_tree_helper.go21
-rw-r--r--pkg/gui/gui.go17
-rw-r--r--pkg/gui/keybindings.go25
-rw-r--r--pkg/gui/staging_panel.go9
10 files changed, 57 insertions, 96 deletions
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
<kbd>v</kbd>: toggle drag select
<kbd>V</kbd>: toggle drag select
<kbd>a</kbd>: toggle select hunk
- <kbd>c</kbd>: commit changes
- <kbd>w</kbd>: commit changes without pre-commit hook
- <kbd>C</kbd>: commit changes using git editor
</pre>
## 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
<kbd>v</kbd>: toggle drag selecteer
<kbd>V</kbd>: toggle drag selecteer
<kbd>a</kbd>: toggle selecteer hunk
- <kbd>c</kbd>: commit veranderingen
- <kbd>w</kbd>: commit veranderingen zonder pre-commit hook
- <kbd>C</kbd>: commit veranderingen met de git editor
</pre>
## 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
<kbd>v</kbd>: toggle drag select
<kbd>V</kbd>: toggle drag select
<kbd>a</kbd>: toggle select hunk
- <kbd>c</kbd>: Zatwierdź zmiany
- <kbd>w</kbd>: zatwierdź zmiany bez skryptu pre-commit
- <kbd>C</kbd>: Zatwierdź zmiany używając edytora
</pre>
## 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
<kbd>v</kbd>: 切换拖动选择
<kbd>V</kbd>: 切换拖动选择
<kbd>a</kbd>: 切换选择区块
- <kbd>c</kbd>: 提交更改
- <kbd>w</kbd>: 提交更改而无需预先提交钩子
- <kbd>C</kbd>: 提交更改(使用编辑器编辑提交信息)
</pre>
## 正常
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,
},
{
@@ -741,27 +741,6 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
},
{
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)},
Key: opts.GetKey(opts.Config.Universal.Return),
Handler: self.handleEscapeMerge,
@@ -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())
+}