diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-01-23 14:40:28 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-17 19:13:40 +1100 |
commit | a2318d75b5a81aba6f79ffbd76c8a602121ac20c (patch) | |
tree | 4288c9265a2ed3d70761f3295783a53d718c5230 /pkg/gui/controllers | |
parent | 1dd7307fde033dae5fececac15810a99e26c3d91 (diff) |
fix some things
Diffstat (limited to 'pkg/gui/controllers')
-rw-r--r-- | pkg/gui/controllers/bisect_controller.go | 20 | ||||
-rw-r--r-- | pkg/gui/controllers/files_controller.go | 97 | ||||
-rw-r--r-- | pkg/gui/controllers/local_commits_controller.go | 38 | ||||
-rw-r--r-- | pkg/gui/controllers/menu_controller.go | 14 | ||||
-rw-r--r-- | pkg/gui/controllers/remotes_controller.go | 26 | ||||
-rw-r--r-- | pkg/gui/controllers/tags_controller.go | 20 |
6 files changed, 97 insertions, 118 deletions
diff --git a/pkg/gui/controllers/bisect_controller.go b/pkg/gui/controllers/bisect_controller.go index 674e79f76..06602a445 100644 --- a/pkg/gui/controllers/bisect_controller.go +++ b/pkg/gui/controllers/bisect_controller.go @@ -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() } diff --git a/pkg/gui/controllers/files_controller.go b/pkg/gui/controllers/files_controller.go index 10d378f9f..8f4641147 100644 --- a/pkg/gui/controllers/files_controller.go +++ b/pkg/gui/controllers/files_controller.go @@ -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 { diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 1d79bd2dd..8bc6f5d9e 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -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() } diff --git a/pkg/gui/controllers/menu_controller.go b/pkg/gui/controllers/menu_controller.go index 329cab1f6..fe545657b 100644 --- a/pkg/gui/controllers/menu_controller.go +++ b/pkg/gui/controllers/menu_controller.go @@ -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() } diff --git a/pkg/gui/controllers/remotes_controller.go b/pkg/gui/controllers/remotes_controller.go index f37c8efef..262217a11 100644 --- a/pkg/gui/controllers/remotes_controller.go +++ b/pkg/gui/controllers/remotes_controller.go @@ -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() } diff --git a/pkg/gui/controllers/tags_controller.go b/pkg/gui/controllers/tags_controller.go index 723a1074b..a8a60f8b8 100644 --- a/pkg/gui/controllers/tags_controller.go +++ b/pkg/gui/controllers/tags_controller.go @@ -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() } |