summaryrefslogtreecommitdiffstats
path: root/pkg/gui/context/sub_commits_context.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/context/sub_commits_context.go')
-rw-r--r--pkg/gui/context/sub_commits_context.go65
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}
+}