1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-23 00:39:13 +02:00

fix some things

This commit is contained in:
Jesse Duffield
2022-01-23 14:40:28 +11:00
parent 1dd7307fde
commit a2318d75b5
30 changed files with 367 additions and 428 deletions

View File

@ -13,9 +13,9 @@ import (
)
type BisectController struct {
c *ControllerCommon
context types.IListContext
git *commands.GitCommand
c *ControllerCommon
getContext func() types.IListContext
git *commands.GitCommand
getSelectedLocalCommit func() *models.Commit
getCommits func() []*models.Commit
@ -25,16 +25,16 @@ var _ types.IController = &BisectController{}
func NewBisectController(
c *ControllerCommon,
context types.IListContext,
getContext func() types.IListContext,
git *commands.GitCommand,
getSelectedLocalCommit func() *models.Commit,
getCommits func() []*models.Commit,
) *BisectController {
return &BisectController{
c: c,
context: context,
git: git,
c: c,
getContext: getContext,
git: git,
getSelectedLocalCommit: getSelectedLocalCommit,
getCommits: getCommits,
@ -249,8 +249,8 @@ 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.HandleFocus()
self.getContext().GetPanelState().SetSelectedLineIdx(i)
_ = self.getContext().HandleFocus()
break
}
}
@ -269,5 +269,5 @@ func (self *BisectController) checkSelected(callback func(*models.Commit) error)
}
func (self *BisectController) Context() types.Context {
return self.context
return self.getContext()
}

View File

@ -22,14 +22,14 @@ type FilesController struct {
// case I would actually prefer a _zero_ letter variable name in the form of
// struct embedding, but Go does not allow hiding public fields in an embedded struct
// to the client
c *ControllerCommon
context types.IListContext
git *commands.GitCommand
os *oscommands.OSCommand
c *ControllerCommon
getContext func() types.IListContext
git *commands.GitCommand
os *oscommands.OSCommand
getSelectedFileNode func() *filetree.FileNode
allContexts context.ContextTree
fileTreeViewModel *filetree.FileTreeViewModel
getContexts func() context.ContextTree
getViewModel func() *filetree.FileTreeViewModel
enterSubmodule func(submodule *models.SubmoduleConfig) error
getSubmodules func() []*models.SubmoduleConfig
setCommitMessage func(message string)
@ -49,12 +49,12 @@ var _ types.IController = &FilesController{}
func NewFilesController(
c *ControllerCommon,
context types.IListContext,
getContext func() types.IListContext,
git *commands.GitCommand,
os *oscommands.OSCommand,
getSelectedFileNode func() *filetree.FileNode,
allContexts context.ContextTree,
fileTreeViewModel *filetree.FileTreeViewModel,
allContexts func() context.ContextTree,
getViewModel func() *filetree.FileTreeViewModel,
enterSubmodule func(submodule *models.SubmoduleConfig) error,
getSubmodules func() []*models.SubmoduleConfig,
setCommitMessage func(message string),
@ -70,12 +70,12 @@ func NewFilesController(
) *FilesController {
return &FilesController{
c: c,
context: context,
getContext: getContext,
git: git,
os: os,
getSelectedFileNode: getSelectedFileNode,
allContexts: allContexts,
fileTreeViewModel: fileTreeViewModel,
getContexts: allContexts,
getViewModel: getViewModel,
enterSubmodule: enterSubmodule,
getSubmodules: getSubmodules,
setCommitMessage: setCommitMessage,
@ -100,7 +100,7 @@ func (self *FilesController) Keybindings(getKey func(key string) interface{}, co
},
{
Key: gocui.MouseLeft,
Handler: func() error { return self.context.HandleClick(self.checkSelectedFileNode(self.press)) },
Handler: func() error { return self.getContext().HandleClick(self.checkSelectedFileNode(self.press)) },
},
{
Key: getKey("<c-b>"), // TODO: softcode
@ -129,7 +129,7 @@ func (self *FilesController) Keybindings(getKey func(key string) interface{}, co
},
{
Key: getKey(config.Universal.Edit),
Handler: self.edit,
Handler: self.checkSelectedFileNode(self.edit),
Description: self.c.Tr.LcEditFile,
},
{
@ -139,7 +139,7 @@ func (self *FilesController) Keybindings(getKey func(key string) interface{}, co
},
{
Key: getKey(config.Files.IgnoreFile),
Handler: self.ignore,
Handler: self.checkSelectedFileNode(self.ignore),
Description: self.c.Tr.LcIgnoreFile,
},
{
@ -192,7 +192,7 @@ func (self *FilesController) Keybindings(getKey func(key string) interface{}, co
},
}
return append(bindings, self.context.Keybindings(getKey, config, guards)...)
return append(bindings, self.getContext().Keybindings(getKey, config, guards)...)
}
func (self *FilesController) press(node *filetree.FileNode) error {
@ -200,7 +200,7 @@ func (self *FilesController) press(node *filetree.FileNode) error {
file := node.File
if file.HasInlineMergeConflicts {
return self.c.PushContext(self.allContexts.Merging)
return self.c.PushContext(self.getContexts().Merging)
}
if file.HasUnstagedChanges {
@ -239,7 +239,7 @@ func (self *FilesController) press(node *filetree.FileNode) error {
return err
}
return self.context.HandleFocus()
return self.getContext().HandleFocus()
}
func (self *FilesController) checkSelectedFileNode(callback func(*filetree.FileNode) error) func() error {
@ -253,19 +253,8 @@ func (self *FilesController) checkSelectedFileNode(callback func(*filetree.FileN
}
}
func (self *FilesController) checkSelectedFile(callback func(*models.File) error) func() error {
return func() error {
file := self.getSelectedFile()
if file == nil {
return nil
}
return callback(file)
}
}
func (self *FilesController) Context() types.Context {
return self.context
return self.getContext()
}
func (self *FilesController) getSelectedFile() *models.File {
@ -305,11 +294,11 @@ func (self *FilesController) EnterFile(opts types.OnFocusOpts) error {
return self.c.ErrorMsg(self.c.Tr.FileStagingRequirements)
}
return self.c.PushContext(self.allContexts.Staging, opts)
return self.c.PushContext(self.getContexts().Staging, opts)
}
func (self *FilesController) allFilesStaged() bool {
for _, file := range self.fileTreeViewModel.GetAllFiles() {
for _, file := range self.getViewModel().GetAllFiles() {
if file.HasUnstagedChanges {
return false
}
@ -334,15 +323,10 @@ func (self *FilesController) stageAll() error {
return err
}
return self.allContexts.Files.HandleFocus()
return self.getContexts().Files.HandleFocus()
}
func (self *FilesController) ignore() error {
node := self.getSelectedFileNode()
if node == nil {
return nil
}
func (self *FilesController) ignore(node *filetree.FileNode) error {
if node.GetPath() == ".gitignore" {
return self.c.ErrorMsg("Cannot ignore .gitignore")
}
@ -444,7 +428,7 @@ func (self *FilesController) HandleCommitPress() error {
return self.c.Error(err)
}
if self.fileTreeViewModel.GetItemsLength() == 0 {
if self.getViewModel().GetItemsLength() == 0 {
return self.c.ErrorMsg(self.c.Tr.NoFilesStagedTitle)
}
@ -469,7 +453,7 @@ func (self *FilesController) HandleCommitPress() error {
}
}
if err := self.c.PushContext(self.allContexts.CommitMessage); err != nil {
if err := self.c.PushContext(self.getContexts().CommitMessage); err != nil {
return err
}
@ -495,7 +479,7 @@ func (self *FilesController) promptToStageAllAndRetry(retry func() error) error
}
func (self *FilesController) handleAmendCommitPress() error {
if self.fileTreeViewModel.GetItemsLength() == 0 {
if self.getViewModel().GetItemsLength() == 0 {
return self.c.ErrorMsg(self.c.Tr.NoFilesStagedTitle)
}
@ -521,7 +505,7 @@ func (self *FilesController) handleAmendCommitPress() error {
// HandleCommitEditorPress - handle when the user wants to commit changes via
// their editor rather than via the popup panel
func (self *FilesController) HandleCommitEditorPress() error {
if self.fileTreeViewModel.GetItemsLength() == 0 {
if self.getViewModel().GetItemsLength() == 0 {
return self.c.ErrorMsg(self.c.Tr.NoFilesStagedTitle)
}
@ -562,16 +546,11 @@ func (self *FilesController) handleStatusFilterPressed() error {
}
func (self *FilesController) setStatusFiltering(filter filetree.FileTreeDisplayFilter) error {
self.fileTreeViewModel.SetFilter(filter)
return self.c.PostRefreshUpdate(self.context)
self.getViewModel().SetFilter(filter)
return self.c.PostRefreshUpdate(self.getContext())
}
func (self *FilesController) edit() error {
node := self.getSelectedFileNode()
if node == nil {
return nil
}
func (self *FilesController) edit(node *filetree.FileNode) error {
if node.File == nil {
return self.c.ErrorMsg(self.c.Tr.ErrCannotEditDirectory)
}
@ -594,7 +573,7 @@ func (self *FilesController) switchToMerge() error {
return nil
}
self.switchToMergeFn(path)
return self.switchToMergeFn(file.Name)
}
func (self *FilesController) handleCustomCommand() error {
@ -658,9 +637,9 @@ func (self *FilesController) handleToggleDirCollapsed() error {
return nil
}
self.fileTreeViewModel.ToggleCollapsed(node.GetPath())
self.getViewModel().ToggleCollapsed(node.GetPath())
if err := self.c.PostRefreshUpdate(self.allContexts.Files); err != nil {
if err := self.c.PostRefreshUpdate(self.getContexts().Files); err != nil {
self.c.Log.Error(err)
}
@ -671,18 +650,18 @@ func (self *FilesController) toggleTreeView() error {
// get path of currently selected file
path := self.getSelectedPath()
self.fileTreeViewModel.ToggleShowTree()
self.getViewModel().ToggleShowTree()
// find that same node in the new format and move the cursor to it
if path != "" {
self.fileTreeViewModel.ExpandToPath(path)
index, found := self.fileTreeViewModel.GetIndexForPath(path)
self.getViewModel().ExpandToPath(path)
index, found := self.getViewModel().GetIndexForPath(path)
if found {
self.context.GetPanelState().SetSelectedLineIdx(index)
self.getContext().GetPanelState().SetSelectedLineIdx(index)
}
}
return self.c.PostRefreshUpdate(self.context)
return self.c.PostRefreshUpdate(self.getContext())
}
func (self *FilesController) OpenMergeTool() error {

View File

@ -26,11 +26,11 @@ type (
)
type LocalCommitsController struct {
c *ControllerCommon
context types.IListContext
os *oscommands.OSCommand
git *commands.GitCommand
refHelper IRefHelper
c *ControllerCommon
getContext func() types.IListContext
os *oscommands.OSCommand
git *commands.GitCommand
refHelper IRefHelper
getSelectedLocalCommit func() *models.Commit
getCommits func() []*models.Commit
@ -51,7 +51,7 @@ var _ types.IController = &LocalCommitsController{}
func NewLocalCommitsController(
c *ControllerCommon,
context types.IListContext,
getContext func() types.IListContext,
os *oscommands.OSCommand,
git *commands.GitCommand,
refHelper IRefHelper,
@ -71,7 +71,7 @@ func NewLocalCommitsController(
) *LocalCommitsController {
return &LocalCommitsController{
c: c,
context: context,
getContext: getContext,
os: os,
git: git,
refHelper: refHelper,
@ -178,7 +178,7 @@ func (self *LocalCommitsController) Keybindings(
},
{
Key: gocui.MouseLeft,
Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
Handler: func() error { return self.getContext().HandleClick(self.checkSelected(self.enter)) },
},
}
@ -225,7 +225,7 @@ func (self *LocalCommitsController) Keybindings(
},
}...)
return append(bindings, self.context.Keybindings(getKey, config, guards)...)
return append(bindings, self.getContext().Keybindings(getKey, config, guards)...)
}
func (self *LocalCommitsController) squashDown() error {
@ -420,7 +420,7 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action string) (bool,
}
func (self *LocalCommitsController) handleCommitMoveDown() error {
index := self.context.GetPanelState().GetSelectedLineIdx()
index := self.getContext().GetPanelState().GetSelectedLineIdx()
commits := self.getCommits()
selectedCommit := self.getCommits()[index]
if selectedCommit.Status == "rebasing" {
@ -436,7 +436,7 @@ func (self *LocalCommitsController) handleCommitMoveDown() error {
if err := self.git.Rebase.MoveTodoDown(index); err != nil {
return self.c.Error(err)
}
self.context.HandleNextLine()
_ = self.getContext().HandleNextLine()
return self.c.Refresh(types.RefreshOptions{
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
})
@ -446,14 +446,14 @@ func (self *LocalCommitsController) handleCommitMoveDown() error {
self.c.LogAction(self.c.Tr.Actions.MoveCommitDown)
err := self.git.Rebase.MoveCommitDown(self.getCommits(), index)
if err == nil {
self.context.HandleNextLine()
_ = self.getContext().HandleNextLine()
}
return self.checkMergeOrRebase(err)
})
}
func (self *LocalCommitsController) handleCommitMoveUp() error {
index := self.context.GetPanelState().GetSelectedLineIdx()
index := self.getContext().GetPanelState().GetSelectedLineIdx()
if index == 0 {
return nil
}
@ -471,7 +471,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.getContext().HandlePrevLine()
return self.c.Refresh(types.RefreshOptions{
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
})
@ -481,7 +481,7 @@ func (self *LocalCommitsController) handleCommitMoveUp() error {
self.c.LogAction(self.c.Tr.Actions.MoveCommitUp)
err := self.git.Rebase.MoveCommitDown(self.getCommits(), index-1)
if err == nil {
self.context.HandlePrevLine()
_ = self.getContext().HandlePrevLine()
}
return self.checkMergeOrRebase(err)
})
@ -549,7 +549,7 @@ func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.C
}
func (self *LocalCommitsController) afterRevertCommit() error {
self.context.HandleNextLine()
_ = self.getContext().HandleNextLine()
return self.c.Refresh(types.RefreshOptions{
Mode: types.BLOCK_UI, Scope: []types.RefreshableView{types.COMMITS, types.BRANCHES},
})
@ -559,7 +559,7 @@ func (self *LocalCommitsController) enter(commit *models.Commit) error {
return self.switchToCommitFilesContext(SwitchToCommitFilesContextOpts{
RefName: commit.Sha,
CanRebase: true,
Context: self.context,
Context: self.getContext(),
WindowName: "commits",
})
}
@ -647,7 +647,7 @@ func (self *LocalCommitsController) gotoBottom() error {
}
}
self.context.HandleGotoBottom()
_ = self.getContext().HandleGotoBottom()
return nil
}
@ -779,5 +779,5 @@ func (self *LocalCommitsController) checkSelected(callback func(*models.Commit)
}
func (self *LocalCommitsController) Context() types.Context {
return self.context
return self.getContext()
}

View File

@ -8,8 +8,8 @@ import (
)
type MenuController struct {
c *ControllerCommon
context types.IListContext
c *ControllerCommon
getContext func() types.IListContext
getSelectedMenuItem func() *popup.MenuItem
}
@ -18,12 +18,12 @@ var _ types.IController = &MenuController{}
func NewMenuController(
c *ControllerCommon,
context types.IListContext,
getContext func() types.IListContext,
getSelectedMenuItem func() *popup.MenuItem,
) *MenuController {
return &MenuController{
c: c,
context: context,
getContext: getContext,
getSelectedMenuItem: getSelectedMenuItem,
}
}
@ -44,11 +44,11 @@ func (self *MenuController) Keybindings(getKey func(key string) interface{}, con
},
{
Key: gocui.MouseLeft,
Handler: func() error { return self.context.HandleClick(self.press) },
Handler: func() error { return self.getContext().HandleClick(self.press) },
},
}
return append(bindings, self.context.Keybindings(getKey, config, guards)...)
return append(bindings, self.getContext().Keybindings(getKey, config, guards)...)
}
func (self *MenuController) press() error {
@ -66,5 +66,5 @@ func (self *MenuController) press() error {
}
func (self *MenuController) Context() types.Context {
return self.context
return self.getContext()
}

View File

@ -14,13 +14,13 @@ import (
)
type RemotesController struct {
c *ControllerCommon
context types.IListContext
git *commands.GitCommand
c *ControllerCommon
getContext func() types.IListContext
git *commands.GitCommand
getSelectedRemote func() *models.Remote
setRemoteBranches func([]*models.RemoteBranch)
allContexts context.ContextTree
getContexts func() context.ContextTree
fetchMutex *sync.Mutex
}
@ -28,9 +28,9 @@ var _ types.IController = &RemotesController{}
func NewRemotesController(
c *ControllerCommon,
context types.IListContext,
getContext func() types.IListContext,
git *commands.GitCommand,
allContexts context.ContextTree,
getContexts func() context.ContextTree,
getSelectedRemote func() *models.Remote,
setRemoteBranches func([]*models.RemoteBranch),
fetchMutex *sync.Mutex,
@ -38,8 +38,8 @@ func NewRemotesController(
return &RemotesController{
c: c,
git: git,
allContexts: allContexts,
context: context,
getContexts: getContexts,
getContext: getContext,
getSelectedRemote: getSelectedRemote,
setRemoteBranches: setRemoteBranches,
fetchMutex: fetchMutex,
@ -54,7 +54,7 @@ func (self *RemotesController) Keybindings(getKey func(key string) interface{},
},
{
Key: gocui.MouseLeft,
Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
Handler: func() error { return self.getContext().HandleClick(self.checkSelected(self.enter)) },
},
{
Key: getKey(config.Branches.FetchRemote),
@ -78,7 +78,7 @@ func (self *RemotesController) Keybindings(getKey func(key string) interface{},
},
}
return append(bindings, self.context.Keybindings(getKey, config, guards)...)
return append(bindings, self.getContext().Keybindings(getKey, config, guards)...)
}
func (self *RemotesController) enter(remote *models.Remote) error {
@ -89,9 +89,9 @@ func (self *RemotesController) enter(remote *models.Remote) error {
if len(remote.Branches) == 0 {
newSelectedLine = -1
}
self.allContexts.RemoteBranches.GetPanelState().SetSelectedLineIdx(newSelectedLine)
self.getContexts().RemoteBranches.GetPanelState().SetSelectedLineIdx(newSelectedLine)
return self.c.PushContext(self.allContexts.RemoteBranches)
return self.c.PushContext(self.getContexts().RemoteBranches)
}
func (self *RemotesController) add() error {
@ -200,5 +200,5 @@ func (self *RemotesController) checkSelected(callback func(*models.Remote) error
}
func (self *RemotesController) Context() types.Context {
return self.context
return self.getContext()
}

View File

@ -12,9 +12,9 @@ import (
type TagsController struct {
c *ControllerCommon
context types.IListContext
getContext func() types.IListContext
git *commands.GitCommand
allContexts context.ContextTree
getContexts func() context.ContextTree
refHelper IRefHelper
suggestionsHelper ISuggestionsHelper
@ -27,9 +27,9 @@ var _ types.IController = &TagsController{}
func NewTagsController(
c *ControllerCommon,
context types.IListContext,
getContext func() types.IListContext,
git *commands.GitCommand,
allContexts context.ContextTree,
getContexts func() context.ContextTree,
refHelper IRefHelper,
suggestionsHelper ISuggestionsHelper,
@ -38,9 +38,9 @@ func NewTagsController(
) *TagsController {
return &TagsController{
c: c,
context: context,
getContext: getContext,
git: git,
allContexts: allContexts,
getContexts: getContexts,
refHelper: refHelper,
suggestionsHelper: suggestionsHelper,
@ -84,7 +84,7 @@ func (self *TagsController) Keybindings(getKey func(key string) interface{}, con
},
}
return append(bindings, self.context.Keybindings(getKey, config, guards)...)
return append(bindings, self.getContext().Keybindings(getKey, config, guards)...)
}
func (self *TagsController) checkout(tag *models.Tag) error {
@ -92,7 +92,7 @@ func (self *TagsController) checkout(tag *models.Tag) error {
if err := self.refHelper.CheckoutRef(tag.Name, types.CheckoutRefOptions{}); err != nil {
return err
}
return self.c.PushContext(self.allContexts.Branches)
return self.c.PushContext(self.getContexts().Branches)
}
func (self *TagsController) enter(tag *models.Tag) error {
@ -171,7 +171,7 @@ func (self *TagsController) CreateTagMenu(commitSha string) error {
}
func (self *TagsController) afterTagCreate() error {
self.context.GetPanelState().SetSelectedLineIdx(0)
self.getContext().GetPanelState().SetSelectedLineIdx(0)
return self.c.Refresh(types.RefreshOptions{
Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS},
})
@ -225,5 +225,5 @@ func (self *TagsController) withSelectedTag(f func(tag *models.Tag) error) func(
}
func (self *TagsController) Context() types.Context {
return self.context
return self.getContext()
}