mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-08-09 09:22:48 +03:00
refactor contexts
This commit is contained in:
@@ -7,6 +7,7 @@ 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/gui/context"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||
)
|
||||
|
||||
@@ -14,23 +15,21 @@ type BisectController struct {
|
||||
baseController
|
||||
|
||||
c *types.ControllerCommon
|
||||
context types.IListContext
|
||||
context *context.LocalCommitsContext
|
||||
git *commands.GitCommand
|
||||
bisectHelper *BisectHelper
|
||||
|
||||
getSelectedLocalCommit func() *models.Commit
|
||||
getCommits func() []*models.Commit
|
||||
getCommits func() []*models.Commit
|
||||
}
|
||||
|
||||
var _ types.IController = &BisectController{}
|
||||
|
||||
func NewBisectController(
|
||||
c *types.ControllerCommon,
|
||||
context types.IListContext,
|
||||
context *context.LocalCommitsContext,
|
||||
git *commands.GitCommand,
|
||||
bisectHelper *BisectHelper,
|
||||
|
||||
getSelectedLocalCommit func() *models.Commit,
|
||||
getCommits func() []*models.Commit,
|
||||
) *BisectController {
|
||||
return &BisectController{
|
||||
@@ -40,8 +39,7 @@ func NewBisectController(
|
||||
git: git,
|
||||
bisectHelper: bisectHelper,
|
||||
|
||||
getSelectedLocalCommit: getSelectedLocalCommit,
|
||||
getCommits: getCommits,
|
||||
getCommits: getCommits,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +232,7 @@ func (self *BisectController) selectCurrentBisectCommit() {
|
||||
// find index of commit with that sha, move cursor to that.
|
||||
for i, commit := range self.getCommits() {
|
||||
if commit.Sha == info.GetCurrentSha() {
|
||||
self.context.GetPanelState().SetSelectedLineIdx(i)
|
||||
self.context.SetSelectedLineIdx(i)
|
||||
_ = self.context.HandleFocus()
|
||||
break
|
||||
}
|
||||
@@ -244,7 +242,7 @@ func (self *BisectController) selectCurrentBisectCommit() {
|
||||
|
||||
func (self *BisectController) checkSelected(callback func(*models.Commit) error) func() error {
|
||||
return func() error {
|
||||
commit := self.getSelectedLocalCommit()
|
||||
commit := self.context.GetSelected()
|
||||
if commit == nil {
|
||||
return nil
|
||||
}
|
||||
|
@@ -94,10 +94,10 @@ func (self *FilesController) GetKeybindings(opts types.KeybindingsOpts) []*types
|
||||
Handler: self.checkSelectedFileNode(self.press),
|
||||
Description: self.c.Tr.LcToggleStaged,
|
||||
},
|
||||
{
|
||||
Key: gocui.MouseLeft,
|
||||
Handler: func() error { return self.context.HandleClick(self.checkSelectedFileNode(self.press)) },
|
||||
},
|
||||
// {
|
||||
// Key: gocui.MouseLeft,
|
||||
// Handler: func() error { return self.context.HandleClick(self.checkSelectedFileNode(self.press)) },
|
||||
// },
|
||||
{
|
||||
Key: opts.GetKey("<c-b>"), // TODO: softcode
|
||||
Handler: self.handleStatusFilterPressed,
|
||||
|
144
pkg/gui/controllers/list_controller.go
Normal file
144
pkg/gui/controllers/list_controller.go
Normal file
@@ -0,0 +1,144 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/gocui"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||
)
|
||||
|
||||
type ListControllerFactory struct {
|
||||
c *types.ControllerCommon
|
||||
}
|
||||
|
||||
func NewListControllerFactory(c *types.ControllerCommon) *ListControllerFactory {
|
||||
return &ListControllerFactory{
|
||||
c: c,
|
||||
}
|
||||
}
|
||||
|
||||
func (self *ListControllerFactory) Create(context types.IListContext) *ListController {
|
||||
return &ListController{
|
||||
baseController: baseController{},
|
||||
c: self.c,
|
||||
context: context,
|
||||
}
|
||||
}
|
||||
|
||||
type ListController struct {
|
||||
baseController
|
||||
c *types.ControllerCommon
|
||||
|
||||
context types.IListContext
|
||||
}
|
||||
|
||||
func (self *ListController) Context() types.Context {
|
||||
return self.context
|
||||
}
|
||||
|
||||
func (self *ListController) HandlePrevLine() error {
|
||||
return self.handleLineChange(-1)
|
||||
}
|
||||
|
||||
func (self *ListController) HandleNextLine() error {
|
||||
return self.handleLineChange(1)
|
||||
}
|
||||
|
||||
func (self *ListController) HandleScrollLeft() error {
|
||||
return self.scroll(self.context.GetViewTrait().ScrollLeft)
|
||||
}
|
||||
|
||||
func (self *ListController) HandleScrollRight() error {
|
||||
return self.scroll(self.context.GetViewTrait().ScrollRight)
|
||||
}
|
||||
|
||||
func (self *ListController) scroll(scrollFunc func()) error {
|
||||
scrollFunc()
|
||||
|
||||
return self.context.HandleFocus()
|
||||
}
|
||||
|
||||
func (self *ListController) handleLineChange(change int) error {
|
||||
before := self.context.GetList().GetSelectedLineIdx()
|
||||
self.context.GetList().MoveSelectedLine(change)
|
||||
after := self.context.GetList().GetSelectedLineIdx()
|
||||
|
||||
// doing this check so that if we're holding the up key at the start of the list
|
||||
// we're not constantly re-rendering the main view.
|
||||
if before != after {
|
||||
return self.context.HandleFocus()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *ListController) HandlePrevPage() error {
|
||||
return self.handleLineChange(-self.context.GetViewTrait().PageDelta())
|
||||
}
|
||||
|
||||
func (self *ListController) HandleNextPage() error {
|
||||
return self.handleLineChange(self.context.GetViewTrait().PageDelta())
|
||||
}
|
||||
|
||||
func (self *ListController) HandleGotoTop() error {
|
||||
return self.handleLineChange(-self.context.GetList().GetItemsLength())
|
||||
}
|
||||
|
||||
func (self *ListController) HandleGotoBottom() error {
|
||||
return self.handleLineChange(self.context.GetList().GetItemsLength())
|
||||
}
|
||||
|
||||
func (self *ListController) HandleClick(onClick func() error) error {
|
||||
prevSelectedLineIdx := self.context.GetList().GetSelectedLineIdx()
|
||||
// because we're handling a click, we need to determine the new line idx based
|
||||
// on the view itself.
|
||||
newSelectedLineIdx := self.context.GetViewTrait().SelectedLineIdx()
|
||||
|
||||
currentContextKey := self.c.CurrentContext().GetKey()
|
||||
alreadyFocused := currentContextKey == self.context.GetKey()
|
||||
|
||||
// we need to focus the view
|
||||
if !alreadyFocused {
|
||||
if err := self.c.PushContext(self.context); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if newSelectedLineIdx > self.context.GetList().GetItemsLength()-1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
self.context.GetList().SetSelectedLineIdx(newSelectedLineIdx)
|
||||
|
||||
if prevSelectedLineIdx == newSelectedLineIdx && alreadyFocused && onClick != nil {
|
||||
return onClick()
|
||||
}
|
||||
return self.context.HandleFocus()
|
||||
}
|
||||
|
||||
func (self *ListController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
|
||||
return []*types.Binding{
|
||||
{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: 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: 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: opts.GetKey(opts.Config.Universal.StartSearch),
|
||||
Handler: func() error { self.c.OpenSearch(); return nil },
|
||||
Description: self.c.Tr.LcStartSearch,
|
||||
Tag: "navigation",
|
||||
},
|
||||
{
|
||||
Key: opts.GetKey(opts.Config.Universal.GotoBottom),
|
||||
Description: self.c.Tr.LcGotoBottom,
|
||||
Handler: self.HandleGotoBottom,
|
||||
Tag: "navigation",
|
||||
},
|
||||
}
|
||||
}
|
@@ -8,6 +8,7 @@ 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/gui/context"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||
"github.com/jesseduffield/lazygit/pkg/utils"
|
||||
)
|
||||
@@ -24,7 +25,7 @@ type (
|
||||
type LocalCommitsController struct {
|
||||
baseController
|
||||
c *types.ControllerCommon
|
||||
context types.IListContext
|
||||
context *context.LocalCommitsContext
|
||||
os *oscommands.OSCommand
|
||||
git *commands.GitCommand
|
||||
tagsHelper *TagsHelper
|
||||
@@ -32,9 +33,7 @@ type LocalCommitsController struct {
|
||||
cherryPickHelper *CherryPickHelper
|
||||
rebaseHelper *RebaseHelper
|
||||
|
||||
getSelectedLocalCommit func() *models.Commit
|
||||
model *types.Model
|
||||
getSelectedLocalCommitIdx func() int
|
||||
CheckMergeOrRebase CheckMergeOrRebase
|
||||
pullFiles PullFilesFn
|
||||
getHostingServiceMgr GetHostingServiceMgrFn
|
||||
@@ -49,16 +48,14 @@ var _ types.IController = &LocalCommitsController{}
|
||||
|
||||
func NewLocalCommitsController(
|
||||
c *types.ControllerCommon,
|
||||
context types.IListContext,
|
||||
context *context.LocalCommitsContext,
|
||||
os *oscommands.OSCommand,
|
||||
git *commands.GitCommand,
|
||||
tagsHelper *TagsHelper,
|
||||
refsHelper IRefsHelper,
|
||||
cherryPickHelper *CherryPickHelper,
|
||||
rebaseHelper *RebaseHelper,
|
||||
getSelectedLocalCommit func() *models.Commit,
|
||||
model *types.Model,
|
||||
getSelectedLocalCommitIdx func() int,
|
||||
CheckMergeOrRebase CheckMergeOrRebase,
|
||||
pullFiles PullFilesFn,
|
||||
getHostingServiceMgr GetHostingServiceMgrFn,
|
||||
@@ -78,9 +75,7 @@ func NewLocalCommitsController(
|
||||
refsHelper: refsHelper,
|
||||
cherryPickHelper: cherryPickHelper,
|
||||
rebaseHelper: rebaseHelper,
|
||||
getSelectedLocalCommit: getSelectedLocalCommit,
|
||||
model: model,
|
||||
getSelectedLocalCommitIdx: getSelectedLocalCommitIdx,
|
||||
CheckMergeOrRebase: CheckMergeOrRebase,
|
||||
pullFiles: pullFiles,
|
||||
getHostingServiceMgr: getHostingServiceMgr,
|
||||
@@ -194,10 +189,10 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [
|
||||
Description: self.c.Tr.LcGotoBottom,
|
||||
Tag: "navigation",
|
||||
},
|
||||
{
|
||||
Key: gocui.MouseLeft,
|
||||
Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
|
||||
},
|
||||
// {
|
||||
// Key: gocui.MouseLeft,
|
||||
// Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
|
||||
// },
|
||||
}
|
||||
|
||||
for _, binding := range outsideFilterModeBindings {
|
||||
@@ -316,7 +311,7 @@ func (self *LocalCommitsController) reword(commit *models.Commit) error {
|
||||
InitialContent: message,
|
||||
HandleConfirm: func(response string) error {
|
||||
self.c.LogAction(self.c.Tr.Actions.RewordCommit)
|
||||
if err := self.git.Rebase.RewordCommit(self.model.Commits, self.getSelectedLocalCommitIdx(), response); err != nil {
|
||||
if err := self.git.Rebase.RewordCommit(self.model.Commits, self.context.GetSelectedLineIdx(), response); err != nil {
|
||||
return self.c.Error(err)
|
||||
}
|
||||
|
||||
@@ -336,7 +331,7 @@ func (self *LocalCommitsController) rewordEditor() error {
|
||||
|
||||
self.c.LogAction(self.c.Tr.Actions.RewordCommit)
|
||||
subProcess, err := self.git.Rebase.RewordCommitInEditor(
|
||||
self.model.Commits, self.getSelectedLocalCommitIdx(),
|
||||
self.model.Commits, self.context.GetSelectedLineIdx(),
|
||||
)
|
||||
if err != nil {
|
||||
return self.c.Error(err)
|
||||
@@ -399,7 +394,7 @@ func (self *LocalCommitsController) pick() error {
|
||||
}
|
||||
|
||||
func (self *LocalCommitsController) interactiveRebase(action string) error {
|
||||
err := self.git.Rebase.InteractiveRebase(self.model.Commits, self.getSelectedLocalCommitIdx(), action)
|
||||
err := self.git.Rebase.InteractiveRebase(self.model.Commits, self.context.GetSelectedLineIdx(), action)
|
||||
return self.CheckMergeOrRebase(err)
|
||||
}
|
||||
|
||||
@@ -407,7 +402,7 @@ func (self *LocalCommitsController) interactiveRebase(action string) error {
|
||||
// commit meaning you are trying to edit the todo file rather than actually
|
||||
// begin a rebase. It then updates the todo file with that action
|
||||
func (self *LocalCommitsController) handleMidRebaseCommand(action string) (bool, error) {
|
||||
selectedCommit := self.getSelectedLocalCommit()
|
||||
selectedCommit := self.context.GetSelected()
|
||||
if selectedCommit.Status != "rebasing" {
|
||||
return false, nil
|
||||
}
|
||||
@@ -427,7 +422,7 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action string) (bool,
|
||||
)
|
||||
|
||||
if err := self.git.Rebase.EditRebaseTodo(
|
||||
self.getSelectedLocalCommitIdx(), action,
|
||||
self.context.GetSelectedLineIdx(), action,
|
||||
); err != nil {
|
||||
return false, self.c.Error(err)
|
||||
}
|
||||
@@ -438,7 +433,7 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action string) (bool,
|
||||
}
|
||||
|
||||
func (self *LocalCommitsController) handleCommitMoveDown() error {
|
||||
index := self.context.GetPanelState().GetSelectedLineIdx()
|
||||
index := self.context.GetSelectedLineIdx()
|
||||
commits := self.model.Commits
|
||||
selectedCommit := self.model.Commits[index]
|
||||
if selectedCommit.Status == "rebasing" {
|
||||
@@ -454,8 +449,7 @@ func (self *LocalCommitsController) handleCommitMoveDown() error {
|
||||
if err := self.git.Rebase.MoveTodoDown(index); err != nil {
|
||||
return self.c.Error(err)
|
||||
}
|
||||
// TODO: use MoveSelectedLine
|
||||
_ = self.context.HandleNextLine()
|
||||
self.context.MoveSelectedLine(1)
|
||||
return self.c.Refresh(types.RefreshOptions{
|
||||
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
||||
})
|
||||
@@ -465,8 +459,7 @@ func (self *LocalCommitsController) handleCommitMoveDown() error {
|
||||
self.c.LogAction(self.c.Tr.Actions.MoveCommitDown)
|
||||
err := self.git.Rebase.MoveCommitDown(self.model.Commits, index)
|
||||
if err == nil {
|
||||
// TODO: use MoveSelectedLine
|
||||
_ = self.context.HandleNextLine()
|
||||
self.context.MoveSelectedLine(1)
|
||||
}
|
||||
return self.CheckMergeOrRebase(err)
|
||||
})
|
||||
@@ -491,7 +484,7 @@ func (self *LocalCommitsController) handleCommitMoveUp() error {
|
||||
if err := self.git.Rebase.MoveTodoDown(index - 1); err != nil {
|
||||
return self.c.Error(err)
|
||||
}
|
||||
_ = self.context.HandlePrevLine()
|
||||
self.context.MoveSelectedLine(-1)
|
||||
return self.c.Refresh(types.RefreshOptions{
|
||||
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
||||
})
|
||||
@@ -501,7 +494,7 @@ func (self *LocalCommitsController) handleCommitMoveUp() error {
|
||||
self.c.LogAction(self.c.Tr.Actions.MoveCommitUp)
|
||||
err := self.git.Rebase.MoveCommitDown(self.model.Commits, index-1)
|
||||
if err == nil {
|
||||
_ = self.context.HandlePrevLine()
|
||||
self.context.MoveSelectedLine(-1)
|
||||
}
|
||||
return self.CheckMergeOrRebase(err)
|
||||
})
|
||||
@@ -514,7 +507,7 @@ func (self *LocalCommitsController) handleCommitAmendTo() error {
|
||||
HandleConfirm: func() error {
|
||||
return self.c.WithWaitingStatus(self.c.Tr.AmendingStatus, func() error {
|
||||
self.c.LogAction(self.c.Tr.Actions.AmendCommit)
|
||||
err := self.git.Rebase.AmendTo(self.getSelectedLocalCommit().Sha)
|
||||
err := self.git.Rebase.AmendTo(self.context.GetSelected().Sha)
|
||||
return self.CheckMergeOrRebase(err)
|
||||
})
|
||||
},
|
||||
@@ -569,7 +562,7 @@ func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.C
|
||||
}
|
||||
|
||||
func (self *LocalCommitsController) afterRevertCommit() error {
|
||||
_ = self.context.HandleNextLine()
|
||||
self.context.MoveSelectedLine(1)
|
||||
return self.c.Refresh(types.RefreshOptions{
|
||||
Mode: types.BLOCK_UI, Scope: []types.RefreshableView{types.COMMITS, types.BRANCHES},
|
||||
})
|
||||
@@ -669,7 +662,7 @@ func (self *LocalCommitsController) gotoBottom() error {
|
||||
}
|
||||
}
|
||||
|
||||
_ = self.context.HandleGotoBottom()
|
||||
self.context.SetSelectedLineIdx(self.context.GetItemsLength() - 1)
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -791,7 +784,7 @@ func (self *LocalCommitsController) handleOpenCommitInBrowser(commit *models.Com
|
||||
|
||||
func (self *LocalCommitsController) checkSelected(callback func(*models.Commit) error) func() error {
|
||||
return func() error {
|
||||
commit := self.getSelectedLocalCommit()
|
||||
commit := self.context.GetSelected()
|
||||
if commit == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -813,7 +806,7 @@ func (self *LocalCommitsController) copy(commit *models.Commit) error {
|
||||
}
|
||||
|
||||
func (self *LocalCommitsController) copyRange(*models.Commit) error {
|
||||
return self.cherryPickHelper.CopyRange(self.context.GetPanelState().GetSelectedLineIdx(), self.model.Commits, self.context)
|
||||
return self.cherryPickHelper.CopyRange(self.context.GetSelectedLineIdx(), self.model.Commits, self.context)
|
||||
}
|
||||
|
||||
func (self *LocalCommitsController) paste() error {
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/gocui"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||
)
|
||||
|
||||
@@ -9,24 +9,20 @@ type MenuController struct {
|
||||
baseController
|
||||
|
||||
c *types.ControllerCommon
|
||||
context types.IListContext
|
||||
|
||||
getSelectedMenuItem func() *types.MenuItem
|
||||
context *context.MenuContext
|
||||
}
|
||||
|
||||
var _ types.IController = &MenuController{}
|
||||
|
||||
func NewMenuController(
|
||||
c *types.ControllerCommon,
|
||||
context types.IListContext,
|
||||
getSelectedMenuItem func() *types.MenuItem,
|
||||
context *context.MenuContext,
|
||||
) *MenuController {
|
||||
return &MenuController{
|
||||
baseController: baseController{},
|
||||
|
||||
c: c,
|
||||
context: context,
|
||||
getSelectedMenuItem: getSelectedMenuItem,
|
||||
c: c,
|
||||
context: context,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,17 +40,17 @@ func (self *MenuController) GetKeybindings(opts types.KeybindingsOpts) []*types.
|
||||
Key: opts.GetKey(opts.Config.Universal.ConfirmAlt1),
|
||||
Handler: self.press,
|
||||
},
|
||||
{
|
||||
Key: gocui.MouseLeft,
|
||||
Handler: func() error { return self.context.HandleClick(self.press) },
|
||||
},
|
||||
// {
|
||||
// Key: gocui.MouseLeft,
|
||||
// Handler: func() error { return self.context.HandleClick(self.press) },
|
||||
// },
|
||||
}
|
||||
|
||||
return bindings
|
||||
}
|
||||
|
||||
func (self *MenuController) press() error {
|
||||
selectedItem := self.getSelectedMenuItem()
|
||||
selectedItem := self.context.GetSelected()
|
||||
|
||||
if err := self.c.PopContext(); err != nil {
|
||||
return err
|
||||
|
@@ -1,7 +1,6 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/gocui"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
||||
@@ -13,10 +12,9 @@ type RemotesController struct {
|
||||
baseController
|
||||
|
||||
c *types.ControllerCommon
|
||||
context types.IListContext
|
||||
context *context.RemotesContext
|
||||
git *commands.GitCommand
|
||||
|
||||
getSelectedRemote func() *models.Remote
|
||||
setRemoteBranches func([]*models.RemoteBranch)
|
||||
contexts *context.ContextTree
|
||||
}
|
||||
@@ -25,10 +23,9 @@ var _ types.IController = &RemotesController{}
|
||||
|
||||
func NewRemotesController(
|
||||
c *types.ControllerCommon,
|
||||
context types.IListContext,
|
||||
context *context.RemotesContext,
|
||||
git *commands.GitCommand,
|
||||
contexts *context.ContextTree,
|
||||
getSelectedRemote func() *models.Remote,
|
||||
setRemoteBranches func([]*models.RemoteBranch),
|
||||
) *RemotesController {
|
||||
return &RemotesController{
|
||||
@@ -37,7 +34,6 @@ func NewRemotesController(
|
||||
git: git,
|
||||
contexts: contexts,
|
||||
context: context,
|
||||
getSelectedRemote: getSelectedRemote,
|
||||
setRemoteBranches: setRemoteBranches,
|
||||
}
|
||||
}
|
||||
@@ -48,10 +44,10 @@ func (self *RemotesController) GetKeybindings(opts types.KeybindingsOpts) []*typ
|
||||
Key: opts.GetKey(opts.Config.Universal.GoInto),
|
||||
Handler: self.checkSelected(self.enter),
|
||||
},
|
||||
{
|
||||
Key: gocui.MouseLeft,
|
||||
Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
|
||||
},
|
||||
// {
|
||||
// Key: gocui.MouseLeft,
|
||||
// Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
|
||||
// },
|
||||
{
|
||||
Key: opts.GetKey(opts.Config.Branches.FetchRemote),
|
||||
Handler: self.checkSelected(self.fetch),
|
||||
@@ -183,7 +179,7 @@ func (self *RemotesController) fetch(remote *models.Remote) error {
|
||||
|
||||
func (self *RemotesController) checkSelected(callback func(*models.Remote) error) func() error {
|
||||
return func() error {
|
||||
file := self.getSelectedRemote()
|
||||
file := self.context.GetSelected()
|
||||
if file == nil {
|
||||
return nil
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/jesseduffield/gocui"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/style"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||
)
|
||||
@@ -16,29 +16,26 @@ type SubmodulesController struct {
|
||||
baseController
|
||||
|
||||
c *types.ControllerCommon
|
||||
context types.IListContext
|
||||
context *context.SubmodulesContext
|
||||
git *commands.GitCommand
|
||||
|
||||
enterSubmodule func(submodule *models.SubmoduleConfig) error
|
||||
getSelectedSubmodule func() *models.SubmoduleConfig
|
||||
enterSubmodule func(submodule *models.SubmoduleConfig) error
|
||||
}
|
||||
|
||||
var _ types.IController = &SubmodulesController{}
|
||||
|
||||
func NewSubmodulesController(
|
||||
c *types.ControllerCommon,
|
||||
context types.IListContext,
|
||||
context *context.SubmodulesContext,
|
||||
git *commands.GitCommand,
|
||||
enterSubmodule func(submodule *models.SubmoduleConfig) error,
|
||||
getSelectedSubmodule func() *models.SubmoduleConfig,
|
||||
) *SubmodulesController {
|
||||
return &SubmodulesController{
|
||||
baseController: baseController{},
|
||||
c: c,
|
||||
context: context,
|
||||
git: git,
|
||||
enterSubmodule: enterSubmodule,
|
||||
getSelectedSubmodule: getSelectedSubmodule,
|
||||
baseController: baseController{},
|
||||
c: c,
|
||||
context: context,
|
||||
git: git,
|
||||
enterSubmodule: enterSubmodule,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,10 +77,10 @@ func (self *SubmodulesController) GetKeybindings(opts types.KeybindingsOpts) []*
|
||||
Description: self.c.Tr.LcViewBulkSubmoduleOptions,
|
||||
OpensMenu: true,
|
||||
},
|
||||
{
|
||||
Key: gocui.MouseLeft,
|
||||
Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
|
||||
},
|
||||
// {
|
||||
// Key: gocui.MouseLeft,
|
||||
// Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
|
||||
// },
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +227,7 @@ func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) erro
|
||||
|
||||
func (self *SubmodulesController) checkSelected(callback func(*models.SubmoduleConfig) error) func() error {
|
||||
return func() error {
|
||||
submodule := self.getSelectedSubmodule()
|
||||
submodule := self.context.GetSelected()
|
||||
if submodule == nil {
|
||||
return nil
|
||||
}
|
||||
|
@@ -158,7 +158,7 @@ func (self *TagsController) create() error {
|
||||
|
||||
func (self *TagsController) withSelectedTag(f func(tag *models.Tag) error) func() error {
|
||||
return func() error {
|
||||
tag := self.context.GetSelectedTag()
|
||||
tag := self.context.GetSelected()
|
||||
if tag == nil {
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user