diff options
Diffstat (limited to 'pkg/gui/context/sub_commits_context.go')
-rw-r--r-- | pkg/gui/context/sub_commits_context.go | 65 |
1 files changed, 45 insertions, 20 deletions
diff --git a/pkg/gui/context/sub_commits_context.go b/pkg/gui/context/sub_commits_context.go index 5fdea8e6d..16712f982 100644 --- a/pkg/gui/context/sub_commits_context.go +++ b/pkg/gui/context/sub_commits_context.go @@ -3,8 +3,9 @@ package context import ( "fmt" - "github.com/jesseduffield/gocui" + "github.com/jesseduffield/lazygit/pkg/commands/git_commands" "github.com/jesseduffield/lazygit/pkg/commands/models" + "github.com/jesseduffield/lazygit/pkg/gui/presentation" "github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/jesseduffield/lazygit/pkg/utils" ) @@ -15,23 +16,45 @@ type SubCommitsContext struct { *DynamicTitleBuilder } -var _ types.IListContext = (*SubCommitsContext)(nil) +var ( + _ types.IListContext = (*SubCommitsContext)(nil) + _ types.DiffableContext = (*SubCommitsContext)(nil) +) func NewSubCommitsContext( - getModel func() []*models.Commit, - view *gocui.View, - getDisplayStrings func(startIdx int, length int) [][]string, - - onFocus func(types.OnFocusOpts) error, - onRenderToMain func() error, - onFocusLost func(opts types.OnFocusLostOpts) error, - - c *types.HelperCommon, + c *ContextCommon, ) *SubCommitsContext { viewModel := &SubCommitsViewModel{ - BasicViewModel: NewBasicViewModel(getModel), - ref: nil, - limitCommits: true, + BasicViewModel: NewBasicViewModel( + func() []*models.Commit { return c.Model().SubCommits }, + ), + ref: nil, + limitCommits: true, + } + + getDisplayStrings := func(startIdx int, length int) [][]string { + selectedCommitSha := "" + if c.CurrentContext().GetKey() == SUB_COMMITS_CONTEXT_KEY { + selectedCommit := viewModel.GetSelected() + if selectedCommit != nil { + selectedCommitSha = selectedCommit.Sha + } + } + return presentation.GetCommitListDisplayStrings( + c.Common, + c.Model().SubCommits, + c.State().GetRepoState().GetScreenMode() != types.SCREEN_NORMAL, + c.Modes().CherryPicking.SelectedShaSet(), + c.Modes().Diffing.Ref, + c.UserConfig.Gui.TimeFormat, + c.UserConfig.Git.ParseEmoji, + selectedCommitSha, + startIdx, + length, + shouldShowGraph(c), + git_commands.NewNullBisectInfo(), + false, + ) } return &SubCommitsContext{ @@ -40,17 +63,13 @@ func NewSubCommitsContext( ViewportListContextTrait: &ViewportListContextTrait{ ListContextTrait: &ListContextTrait{ Context: NewSimpleContext(NewBaseContext(NewBaseContextOpts{ - View: view, + View: c.Views().SubCommits, WindowName: "branches", Key: SUB_COMMITS_CONTEXT_KEY, Kind: types.SIDE_CONTEXT, Focusable: true, Transient: true, - }), ContextCallbackOpts{ - OnFocus: onFocus, - OnFocusLost: onFocusLost, - OnRenderToMain: onRenderToMain, - }), + })), list: viewModel, getDisplayStrings: getDisplayStrings, c: c, @@ -111,3 +130,9 @@ func (self *SubCommitsContext) SetLimitCommits(value bool) { func (self *SubCommitsContext) GetLimitCommits() bool { return self.limitCommits } + +func (self *SubCommitsContext) GetDiffTerminals() []string { + itemId := self.GetSelectedItemId() + + return []string{itemId} +} |