diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-22 11:05:37 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-23 14:29:18 +1000 |
commit | fbd61fcd17d495e9605bcf1f765663f861839cac (patch) | |
tree | d5d9eaa12e3e5fbefa5c50282af8f8207d5bb6a3 /pkg | |
parent | b1529f19ad527d29a469de09c11c37d7f61d8d16 (diff) |
refactor how we handle different modes
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/gui/cherry_picking.go | 44 | ||||
-rw-r--r-- | pkg/gui/commits_panel.go | 8 | ||||
-rw-r--r-- | pkg/gui/diffing.go | 69 | ||||
-rw-r--r-- | pkg/gui/filtering.go | 4 | ||||
-rw-r--r-- | pkg/gui/filtering_menu_panel.go | 6 | ||||
-rw-r--r-- | pkg/gui/gui.go | 45 | ||||
-rw-r--r-- | pkg/gui/keybindings.go | 13 | ||||
-rw-r--r-- | pkg/gui/layout.go | 6 | ||||
-rw-r--r-- | pkg/gui/list_context.go | 20 | ||||
-rw-r--r-- | pkg/gui/recent_repos_panel.go | 2 | ||||
-rw-r--r-- | pkg/gui/reflog_panel.go | 4 | ||||
-rw-r--r-- | pkg/gui/stash_panel.go | 2 | ||||
-rw-r--r-- | pkg/gui/sub_commits_panel.go | 6 |
13 files changed, 124 insertions, 105 deletions
diff --git a/pkg/gui/cherry_picking.go b/pkg/gui/cherry_picking.go index b1cbf84e5..c87ba7a73 100644 --- a/pkg/gui/cherry_picking.go +++ b/pkg/gui/cherry_picking.go @@ -1,40 +1,52 @@ package gui import ( - "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands" ) -func (gui *Gui) handleCopyCommit(g *gocui.Gui, v *gocui.View) error { +// you can only copy from one context at a time, because the order and position of commits matter + +func (gui *Gui) handleCopyCommit() error { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { return err } // get currently selected commit, add the sha to state. - commit := gui.State.Commits[gui.State.Panels.Commits.SelectedLineIdx] + context := gui.currentSideContext() + if context == nil { + return nil + } + + commit, ok := context.SelectedItem().(*commands.Commit) + if !ok { + gui.Log.Error("type cast failed for handling copy commit") + } + if commit == nil { + return nil + } // we will un-copy it if it's already copied - for index, cherryPickedCommit := range gui.State.CherryPickedCommits { + for index, cherryPickedCommit := range gui.State.Modes.CherryPicking.CherryPickedCommits { if commit.Sha == cherryPickedCommit.Sha { - gui.State.CherryPickedCommits = append(gui.State.CherryPickedCommits[0:index], gui.State.CherryPickedCommits[index+1:]...) - return gui.Contexts.BranchCommits.Context.HandleRender() + gui.State.Modes.CherryPicking.CherryPickedCommits = append(gui.State.Modes.CherryPicking.CherryPickedCommits[0:index], gui.State.Modes.CherryPicking.CherryPickedCommits[index+1:]...) + return context.HandleRender() } } gui.addCommitToCherryPickedCommits(gui.State.Panels.Commits.SelectedLineIdx) - return gui.Contexts.BranchCommits.Context.HandleRender() + return context.HandleRender() } -func (gui *Gui) cherryPickedCommitShaMap() map[string]bool { +func (gui *Gui) CherryPickedCommitShaMap() map[string]bool { commitShaMap := map[string]bool{} - for _, commit := range gui.State.CherryPickedCommits { + for _, commit := range gui.State.Modes.CherryPicking.CherryPickedCommits { commitShaMap[commit.Sha] = true } return commitShaMap } func (gui *Gui) addCommitToCherryPickedCommits(index int) { - commitShaMap := gui.cherryPickedCommitShaMap() + commitShaMap := gui.CherryPickedCommitShaMap() commitShaMap[gui.State.Commits[index].Sha] = true newCommits := []*commands.Commit{} @@ -45,15 +57,15 @@ func (gui *Gui) addCommitToCherryPickedCommits(index int) { } } - gui.State.CherryPickedCommits = newCommits + gui.State.Modes.CherryPicking.CherryPickedCommits = newCommits } -func (gui *Gui) handleCopyCommitRange(g *gocui.Gui, v *gocui.View) error { +func (gui *Gui) handleCopyCommitRange() error { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { return err } - commitShaMap := gui.cherryPickedCommitShaMap() + commitShaMap := gui.CherryPickedCommitShaMap() // find the last commit that is copied that's above our position // if there are none, startIndex = 0 @@ -72,19 +84,19 @@ func (gui *Gui) handleCopyCommitRange(g *gocui.Gui, v *gocui.View) error { } // HandlePasteCommits begins a cherry-pick rebase with the commits the user has copied -func (gui *Gui) HandlePasteCommits(g *gocui.Gui, v *gocui.View) error { +func (gui *Gui) HandlePasteCommits() error { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { return err } return gui.ask(askOpts{ - returnToView: v, + returnToView: gui.getCommitsView(), returnFocusOnClose: true, title: gui.Tr.SLocalize("CherryPick"), prompt: gui.Tr.SLocalize("SureCherryPick"), handleConfirm: func() error { return gui.WithWaitingStatus(gui.Tr.SLocalize("CherryPickingStatus"), func() error { - err := gui.GitCommand.CherryPickCommits(gui.State.CherryPickedCommits) + err := gui.GitCommand.CherryPickCommits(gui.State.Modes.CherryPicking.CherryPickedCommits) return gui.handleGenericMergeCommandResult(err) }) }, diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go index 6db2d71d6..d74eec550 100644 --- a/pkg/gui/commits_panel.go +++ b/pkg/gui/commits_panel.go @@ -37,7 +37,7 @@ func (gui *Gui) handleCommitSelect() error { task = gui.createRenderStringTask(gui.Tr.SLocalize("NoCommitsThisBranch")) } else { cmd := gui.OSCommand.ExecutableFromString( - gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.FilterPath), + gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.Modes.Filtering.Path), ) task = gui.createRunPtyTask(cmd) } @@ -97,12 +97,12 @@ func (gui *Gui) refreshCommits() error { } func (gui *Gui) refreshCommitsWithLimit() error { - builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.CherryPickedCommits) + builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.Modes.CherryPicking.CherryPickedCommits) commits, err := builder.GetCommits( commands.GetCommitsOptions{ Limit: gui.State.Panels.Commits.LimitCommits, - FilterPath: gui.State.FilterPath, + FilterPath: gui.State.Modes.Filtering.Path, IncludeRebaseCommits: true, RefName: "HEAD", }, @@ -555,7 +555,7 @@ func (gui *Gui) handleOpenSearchForCommitsPanel(g *gocui.Gui, v *gocui.View) err } func (gui *Gui) handleResetCherryPick(g *gocui.Gui, v *gocui.View) error { - gui.State.CherryPickedCommits = []*commands.Commit{} + gui.State.Modes.CherryPicking.CherryPickedCommits = []*commands.Commit{} return gui.Contexts.BranchCommits.Context.HandleRender() } diff --git a/pkg/gui/diffing.go b/pkg/gui/diffing.go index 85b6f2e6b..2093e1170 100644 --- a/pkg/gui/diffing.go +++ b/pkg/gui/diffing.go @@ -8,11 +8,11 @@ import ( ) func (gui *Gui) inDiffMode() bool { - return gui.State.Diff.Ref != "" + return gui.State.Modes.Diffing.Ref != "" } func (gui *Gui) exitDiffMode() error { - gui.State.Diff = DiffState{} + gui.State.Modes.Diffing = Diffing{} return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) } @@ -20,7 +20,7 @@ func (gui *Gui) renderDiff() error { filterArg := "" if gui.inFilterMode() { - filterArg = fmt.Sprintf(" -- %s", gui.State.FilterPath) + filterArg = fmt.Sprintf(" -- %s", gui.State.Modes.Filtering.Path) } cmd := gui.OSCommand.ExecutableFromString( @@ -42,54 +42,33 @@ func (gui *Gui) renderDiff() error { // flicking through branches it will be using the local branch name. func (gui *Gui) currentDiffTerminals() []string { switch gui.currentContextKey() { - case FILES_CONTEXT_KEY: - // not supporting files for now - case COMMIT_FILES_CONTEXT_KEY: - // not supporting commit files for now - case BRANCH_COMMITS_CONTEXT_KEY: - item := gui.getSelectedLocalCommit() - if item != nil { - return []string{item.RefName()} - } - case REFLOG_COMMITS_CONTEXT_KEY: - item := gui.getSelectedReflogCommit() - if item != nil { - return []string{item.RefName()} - } - case STASH_CONTEXT_KEY: - item := gui.getSelectedStashEntry() - if item != nil { - return []string{item.RefName()} - } - + case "": + return nil + case FILES_CONTEXT_KEY, COMMIT_FILES_CONTEXT_KEY: + // not supporting these for now because I'm not sure how it would actually work + return nil case LOCAL_BRANCHES_CONTEXT_KEY: + // for our local branches we want to include both the branch and its upstream branch := gui.getSelectedBranch() if branch != nil { - names := []string{branch.RefName()} + names := []string{branch.ID()} if branch.UpstreamName != "" { names = append(names, branch.UpstreamName) } return names } return nil - case REMOTES_CONTEXT_KEY: - item := gui.getSelectedRemote() - if item != nil { - return []string{item.RefName()} + default: + context := gui.currentSideContext() + if context == nil { + return nil } - case REMOTE_BRANCHES_CONTEXT_KEY: - item := gui.getSelectedRemoteBranch() - if item != nil { - return []string{item.RefName()} - } - case TAGS_CONTEXT_KEY: - item := gui.getSelectedTag() - if item != nil { - return []string{item.RefName()} + item := context.GetSelectedItem() + if item == nil { + return nil } + return []string{item.ID()} } - - return nil } func (gui *Gui) currentDiffTerminal() string { @@ -101,13 +80,13 @@ func (gui *Gui) currentDiffTerminal() string { } func (gui *Gui) diffStr() string { - output := gui.State.Diff.Ref + output := gui.State.Modes.Diffing.Ref right := gui.currentDiffTerminal() if right != "" { output += " " + right } - if gui.State.Diff.Reverse { + if gui.State.Modes.Diffing.Reverse { output += " -R" } return output @@ -127,7 +106,7 @@ func (gui *Gui) handleCreateDiffingMenuPanel(g *gocui.Gui, v *gocui.View) error { displayString: fmt.Sprintf("%s %s", gui.Tr.SLocalize("diff"), name), onPress: func() error { - gui.State.Diff.Ref = name + gui.State.Modes.Diffing.Ref = name // can scope this down based on current view but too lazy right now return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) }, @@ -140,7 +119,7 @@ func (gui *Gui) handleCreateDiffingMenuPanel(g *gocui.Gui, v *gocui.View) error displayString: gui.Tr.SLocalize("enterRefToDiff"), onPress: func() error { return gui.prompt(v, gui.Tr.SLocalize("enteRefName"), "", func(response string) error { - gui.State.Diff.Ref = strings.TrimSpace(response) + gui.State.Modes.Diffing.Ref = strings.TrimSpace(response) return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) }) }, @@ -152,14 +131,14 @@ func (gui *Gui) handleCreateDiffingMenuPanel(g *gocui.Gui, v *gocui.View) error { displayString: gui.Tr.SLocalize("swapDiff"), onPress: func() error { - gui.State.Diff.Reverse = !gui.State.Diff.Reverse + gui.State.Modes.Diffing.Reverse = !gui.State.Modes.Diffing.Reverse return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) }, }, { displayString: gui.Tr.SLocalize("exitDiffMode"), onPress: func() error { - gui.State.Diff = DiffState{} + gui.State.Modes.Diffing = Diffing{} return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) }, }, diff --git a/pkg/gui/filtering.go b/pkg/gui/filtering.go index efca602f3..6f6968bdd 100644 --- a/pkg/gui/filtering.go +++ b/pkg/gui/filtering.go @@ -1,7 +1,7 @@ package gui func (gui *Gui) inFilterMode() bool { - return gui.State.FilterPath != "" + return gui.State.Modes.Filtering.Path != "" } func (gui *Gui) validateNotInFilterMode() (bool, error) { @@ -22,6 +22,6 @@ func (gui *Gui) validateNotInFilterMode() (bool, error) { } func (gui *Gui) exitFilterMode() error { - gui.State.FilterPath = "" + gui.State.Modes.Filtering.Path = "" return gui.Errors.ErrRestart } diff --git a/pkg/gui/filtering_menu_panel.go b/pkg/gui/filtering_menu_panel.go index f5781e072..4d603a5bb 100644 --- a/pkg/gui/filtering_menu_panel.go +++ b/pkg/gui/filtering_menu_panel.go @@ -32,7 +32,7 @@ func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) erro menuItems = append(menuItems, &menuItem{ displayString: fmt.Sprintf("%s '%s'", gui.Tr.SLocalize("filterBy"), fileName), onPress: func() error { - gui.State.FilterPath = fileName + gui.State.Modes.Filtering.Path = fileName return gui.Errors.ErrRestart }, }) @@ -42,7 +42,7 @@ func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) erro displayString: gui.Tr.SLocalize("filterPathOption"), onPress: func() error { return gui.prompt(v, gui.Tr.SLocalize("enterFileName"), "", func(response string) error { - gui.State.FilterPath = strings.TrimSpace(response) + gui.State.Modes.Filtering.Path = strings.TrimSpace(response) return gui.Errors.ErrRestart }) }, @@ -52,7 +52,7 @@ func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) erro menuItems = append(menuItems, &menuItem{ displayString: gui.Tr.SLocalize("exitFilterMode"), onPress: func() error { - gui.State.FilterPath = "" + gui.State.Modes.Filtering.Path = "" return gui.Errors.ErrRestart }, }) diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index b0249b37a..7cebf5362 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -227,11 +227,25 @@ const ( ) // if ref is blank we're not diffing anything -type DiffState struct { +type Diffing struct { Ref string Reverse bool } +type Filtering struct { + Path string // the filename that gets passed to git log +} + +type CherryPicking struct { + CherryPickedCommits []*commands.Commit +} + +type Modes struct { + Filtering Filtering + CherryPicking CherryPicking + Diffing Diffing +} + type guiState struct { Files []*commands.File Branches []*commands.Branch @@ -253,7 +267,6 @@ type guiState struct { Updating bool Panels *panelStates MainContext string // used to keep the main and secondary views' contexts in sync - CherryPickedCommits []*commands.Commit SplitMainPanel bool RetainOriginalDir bool IsRefreshingFiles bool @@ -266,9 +279,9 @@ type guiState struct { PrevMainWidth int PrevMainHeight int OldInformation string - StartupStage int // one of INITIAL and COMPLETE. Allows us to not load everything at once - FilterPath string // the filename that gets passed to git log - Diff DiffState + StartupStage int // one of INITIAL and COMPLETE. Allows us to not load everything at once + + Modes Modes ContextStack []Context ViewContextMap map[string]Context @@ -284,10 +297,20 @@ type guiState struct { func (gui *Gui) resetState() { // we carry over the filter path and diff state prevFilterPath := "" - prevDiff := DiffState{} + prevDiff := Diffing{} if gui.State != nil { - prevFilterPath = gui.State.FilterPath - prevDiff = gui.State.Diff + prevFilterPath = gui.State.Modes.Filtering.Path + prevDiff = gui.State.Modes.Diffing + } + + modes := Modes{ + Filtering: Filtering{ + Path: prevFilterPath, + }, + CherryPicking: CherryPicking{ + CherryPickedCommits: make([]*commands.Commit, 0), + }, + Diffing: prevDiff, } gui.State = &guiState{ @@ -295,7 +318,6 @@ func (gui *Gui) resetState() { Commits: make([]*commands.Commit, 0), FilteredReflogCommits: make([]*commands.Commit, 0), ReflogCommits: make([]*commands.Commit, 0), - CherryPickedCommits: make([]*commands.Commit, 0), StashEntries: make([]*commands.StashEntry, 0), Panels: &panelStates{ // TODO: work out why some of these are -1 and some are 0. Last time I checked there was a good reason but I'm less certain now @@ -319,8 +341,7 @@ func (gui *Gui) resetState() { }, SideView: nil, Ptmx: nil, - FilterPath: prevFilterPath, - Diff: prevDiff, + Modes: modes, ViewContextMap: gui.initialViewContextMap(), } } @@ -341,7 +362,7 @@ func NewGui(log *logrus.Entry, gitCommand *commands.GitCommand, oSCommand *comma } gui.resetState() - gui.State.FilterPath = filterPath + gui.State.Modes.Filtering.Path = filterPath gui.Contexts = gui.contextTree() gui.ViewTabContextMap = gui.viewTabContextMap() diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index fed17e291..23724f385 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -758,7 +758,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { ViewName: "commits", Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Key: gui.getKey("commits.cherryPickCopy"), - Handler: gui.handleCopyCommit, + Handler: gui.wrappedHandler(gui.handleCopyCommit), Description: gui.Tr.SLocalize("cherryPickCopy"), }, { @@ -772,14 +772,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { ViewName: "commits", Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Key: gui.getKey("commits.cherryPickCopyRange"), - Handler: gui.handleCopyCommitRange, + Handler: gui.wrappedHandler(gui.handleCopyCommitRange), Description: gui.Tr.SLocalize("cherryPickCopyRange"), }, { ViewName: "commits", Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Key: gui.getKey("commits.pasteCommits"), - Handler: gui.HandlePasteCommits, + Handler: gui.wrappedHandler(gui.HandlePasteCommits), Description: gui.Tr.SLocalize("pasteCommits"), }, { @@ -868,6 +868,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { Description: gui.Tr.SLocalize("newBranch"), }, { + ViewName: "commits", + Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, + Key: gui.getKey("commits.cherryPickCopy"), + Handler: gui.wrappedHandler(gui.handleCopyCommit), + Description: gui.Tr.SLocalize("cherryPickCopy"), + }, + { ViewName: "stash", Key: gui.getKey("universal.goInto"), Handler: gui.wrappedHandler(gui.handleViewStashFiles), diff --git a/pkg/gui/layout.go b/pkg/gui/layout.go index 1687a26dd..8fb180e8b 100644 --- a/pkg/gui/layout.go +++ b/pkg/gui/layout.go @@ -16,11 +16,11 @@ func (gui *Gui) informationStr() string { if gui.inDiffMode() { return utils.ColoredString(fmt.Sprintf("%s %s %s", gui.Tr.SLocalize("showingGitDiff"), "git diff "+gui.diffStr(), utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgMagenta) } else if gui.inFilterMode() { - return utils.ColoredString(fmt.Sprintf("%s '%s' %s", gui.Tr.SLocalize("filteringBy"), gui.State.FilterPath, utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgRed, color.Bold) + return utils.ColoredString(fmt.Sprintf("%s '%s' %s", gui.Tr.SLocalize("filteringBy"), gui.State.Modes.Filtering.Path, utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgRed, color.Bold) } else if gui.GitCommand.PatchManager.Active() { return utils.ColoredString(fmt.Sprintf("%s %s", gui.Tr.SLocalize("buildingPatch"), utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgYellow, color.Bold) - } else if len(gui.State.CherryPickedCommits) > 0 { - return utils.ColoredString(fmt.Sprintf("%d commits copied", len(gui.State.CherryPickedCommits)), color.FgCyan) + } else if len(gui.State.Modes.CherryPicking.CherryPickedCommits) > 0 { + return utils.ColoredString(fmt.Sprintf("%d commits copied", len(gui.State.Modes.CherryPicking.CherryPickedCommits)), color.FgCyan) } else if gui.g.Mouse { donate := color.New(color.FgMagenta, color.Underline).Sprint(gui.Tr.SLocalize("Donate")) return donate + " " + gui.Config.GetVersion() diff --git a/pkg/gui/list_context.go b/pkg/gui/list_context.go index 25b427b25..80eea1545 100644 --- a/pkg/gui/list_context.go +++ b/pkg/gui/list_context.go @@ -275,7 +275,7 @@ func (gui *Gui) filesListContext() *ListContext { RendersToMainView: false, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetFileListDisplayStrings(gui.State.Files, gui.State.Diff.Ref) + return presentation.GetFileListDisplayStrings(gui.State.Files, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_NOTHING, SelectedItem: func() ListItem { return gui.getSelectedFile() }, @@ -293,7 +293,7 @@ func (gui *Gui) branchesListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetBranchListDisplayStrings(gui.State.Branches, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Diff.Ref) + return presentation.GetBranchListDisplayStrings(gui.State.Branches, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_COMMITS, SelectedItem: func() ListItem { return gui.getSelectedBranch() }, @@ -312,7 +312,7 @@ func (gui *Gui) remotesListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetRemoteListDisplayStrings(gui.State.Remotes, gui.State.Diff.Ref) + return presentation.GetRemoteListDisplayStrings(gui.State.Remotes, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_BRANCHES, SelectedItem: func() ListItem { return gui.getSelectedRemote() }, @@ -330,7 +330,7 @@ func (gui *Gui) remoteBranchesListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetRemoteBranchListDisplayStrings(gui.State.RemoteBranches, gui.State.Diff.Ref) + return presentation.GetRemoteBranchListDisplayStrings(gui.State.RemoteBranches, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_COMMITS, SelectedItem: func() ListItem { return gui.getSelectedRemoteBranch() }, @@ -348,7 +348,7 @@ func (gui *Gui) tagsListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetTagListDisplayStrings(gui.State.Tags, gui.State.Diff.Ref) + return presentation.GetTagListDisplayStrings(gui.State.Tags, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_COMMITS, SelectedItem: func() ListItem { return gui.getSelectedTag() }, @@ -367,7 +367,7 @@ func (gui *Gui) branchCommitsListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetCommitListDisplayStrings(gui.State.Commits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Diff.Ref) + return presentation.GetCommitListDisplayStrings(gui.State.Commits, gui.State.ScreenMode != SCREEN_NORMAL, gui.CherryPickedCommitShaMap(), gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_FILES, SelectedItem: func() ListItem { return gui.getSelectedLocalCommit() }, @@ -385,7 +385,7 @@ func (gui *Gui) reflogCommitsListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetReflogCommitListDisplayStrings(gui.State.FilteredReflogCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Diff.Ref) + return presentation.GetReflogCommitListDisplayStrings(gui.State.FilteredReflogCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_FILES, SelectedItem: func() ListItem { return gui.getSelectedReflogCommit() }, @@ -403,7 +403,7 @@ func (gui *Gui) subCommitsListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetCommitListDisplayStrings(gui.State.SubCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Diff.Ref) + return presentation.GetCommitListDisplayStrings(gui.State.SubCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.CherryPickedCommitShaMap(), gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_COMMITS, SelectedItem: func() ListItem { return gui.getSelectedSubCommit() }, @@ -421,7 +421,7 @@ func (gui *Gui) stashListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetStashEntryListDisplayStrings(gui.State.StashEntries, gui.State.Diff.Ref) + return presentation.GetStashEntryListDisplayStrings(gui.State.StashEntries, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_FILES, SelectedItem: func() ListItem { return gui.getSelectedStashEntry() }, @@ -440,7 +440,7 @@ func (gui *Gui) commitFilesListContext() *ListContext { RendersToMainView: true, Kind: SIDE_CONTEXT, GetDisplayStrings: func() [][]string { - return presentation.GetCommitFileListDisplayStrings(gui.State.CommitFiles, gui.State.Diff.Ref) + return presentation.GetCommitFileListDisplayStrings(gui.State.CommitFiles, gui.State.Modes.Diffing.Ref) }, Contains: CONTAINS_NOTHING, SelectedItem: func() ListItem { return gui.getSelectedCommitFile() }, diff --git a/pkg/gui/recent_repos_panel.go b/pkg/gui/recent_repos_panel.go index eed55b903..d9174e0d1 100644 --- a/pkg/gui/recent_repos_panel.go +++ b/pkg/gui/recent_repos_panel.go @@ -31,7 +31,7 @@ func (gui *Gui) handleCreateRecentReposMenu() error { return err } gui.GitCommand = newGitCommand - gui.State.FilterPath = "" + gui.State.Modes.Filtering.Path = "" return gui.Errors.ErrSwitchRepo }, } diff --git a/pkg/gui/reflog_panel.go b/pkg/gui/reflog_panel.go index c30ae96e9..35dfd542c 100644 --- a/pkg/gui/reflog_panel.go +++ b/pkg/gui/reflog_panel.go @@ -24,7 +24,7 @@ func (gui *Gui) handleReflogCommitSelect() error { task = gui.createRenderStringTask("No reflog history") } else { cmd := gui.OSCommand.ExecutableFromString( - gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.FilterPath), + gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.Modes.Filtering.Path), ) task = gui.createRunPtyTask(cmd) @@ -73,7 +73,7 @@ func (gui *Gui) refreshReflogCommits() error { } if gui.inFilterMode() { - if err := refresh(&state.FilteredReflogCommits, state.FilterPath); err != nil { + if err := refresh(&state.FilteredReflogCommits, state.Modes.Filtering.Path); err != nil { return err } } else { diff --git a/pkg/gui/stash_panel.go b/pkg/gui/stash_panel.go index 37a82890e..dce5ebc72 100644 --- a/pkg/gui/stash_panel.go +++ b/pkg/gui/stash_panel.go @@ -37,7 +37,7 @@ func (gui *Gui) handleStashEntrySelect() error { } func (gui *Gui) refreshStashEntries() error { - gui.State.StashEntries = gui.GitCommand.GetStashEntries(gui.State.FilterPath) + gui.State.StashEntries = gui.GitCommand.GetStashEntries(gui.State.Modes.Filtering.Path) return gui.Contexts.Stash.Context.HandleRender() } diff --git a/pkg/gui/sub_commits_panel.go b/pkg/gui/sub_commits_panel.go index b892364e6..3ac5282d7 100644 --- a/pkg/gui/sub_commits_panel.go +++ b/pkg/gui/sub_commits_panel.go @@ -24,7 +24,7 @@ func (gui *Gui) handleSubCommitSelect() error { task = gui.createRenderStringTask("No commits") } else { cmd := gui.OSCommand.ExecutableFromString( - gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.FilterPath), + gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.Modes.Filtering.Path), ) task = gui.createRunPtyTask(cmd) @@ -79,12 +79,12 @@ func (gui *Gui) handleViewSubCommitFiles() error { func (gui *Gui) switchToSubCommitsContext(refName string) error { // need to populate my sub commits - builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.CherryPickedCommits) + builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.Modes.CherryPicking.CherryPickedCommits) commits, err := builder.GetCommits( commands.GetCommitsOptions{ Limit: gui.State.Panels.Commits.LimitCommits, - FilterPath: gui.State.FilterPath, + FilterPath: gui.State.Modes.Filtering.Path, IncludeRebaseCommits: false, RefName: refName, }, |