From 7fb758cc1d199fdb8c6f7b5eab797f91cdb86bd0 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Wed, 7 Aug 2024 21:28:45 +0200 Subject: [PATCH] Set SelectedPath to SelectedCommitFilePath in CommitFiles context --- .../custom_commands/session_state_loader.go | 11 ++++- .../tests/custom_commands/selected_path.go | 44 +++++++++++++++++++ pkg/integration/tests/test_list.go | 1 + 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 pkg/integration/tests/custom_commands/selected_path.go diff --git a/pkg/gui/services/custom_commands/session_state_loader.go b/pkg/gui/services/custom_commands/session_state_loader.go index a0e486f13..cbd04bb14 100644 --- a/pkg/gui/services/custom_commands/session_state_loader.go +++ b/pkg/gui/services/custom_commands/session_state_loader.go @@ -193,9 +193,16 @@ func (self *SessionStateLoader) call() *SessionState { selectedCommit = selectedSubCommit } + selectedPath := self.c.Contexts().Files.GetSelectedPath() + selectedCommitFilePath := self.c.Contexts().CommitFiles.GetSelectedPath() + + if self.c.Context().IsCurrent(self.c.Contexts().CommitFiles) { + selectedPath = selectedCommitFilePath + } + return &SessionState{ SelectedFile: fileShimFromModelFile(self.c.Contexts().Files.GetSelectedFile()), - SelectedPath: self.c.Contexts().Files.GetSelectedPath(), + SelectedPath: selectedPath, SelectedLocalCommit: selectedLocalCommit, SelectedReflogCommit: selectedReflogCommit, SelectedSubCommit: selectedSubCommit, @@ -206,7 +213,7 @@ func (self *SessionStateLoader) call() *SessionState { SelectedTag: tagShimFromModelRemote(self.c.Contexts().Tags.GetSelected()), SelectedStashEntry: stashEntryShimFromModelRemote(self.c.Contexts().Stash.GetSelected()), SelectedCommitFile: commitFileShimFromModelRemote(self.c.Contexts().CommitFiles.GetSelectedFile()), - SelectedCommitFilePath: self.c.Contexts().CommitFiles.GetSelectedPath(), + SelectedCommitFilePath: selectedCommitFilePath, SelectedWorktree: worktreeShimFromModelRemote(self.c.Contexts().Worktrees.GetSelected()), CheckedOutBranch: branchShimFromModelBranch(self.refsHelper.GetCheckedOutRef()), } diff --git a/pkg/integration/tests/custom_commands/selected_path.go b/pkg/integration/tests/custom_commands/selected_path.go new file mode 100644 index 000000000..f76fb3fba --- /dev/null +++ b/pkg/integration/tests/custom_commands/selected_path.go @@ -0,0 +1,44 @@ +package custom_commands + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var SelectedPath = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Use the {{ .SelectedPath }} template variable in different contexts", + ExtraCmdArgs: []string{}, + Skip: false, + SetupRepo: func(shell *Shell) { + shell.CreateDir("folder1") + shell.CreateFileAndAdd("folder1/file1", "") + shell.Commit("commit") + shell.CreateDir("folder2") + shell.CreateFile("folder2/file2", "") + }, + SetupConfig: func(cfg *config.AppConfig) { + cfg.UserConfig.CustomCommands = []config.CustomCommand{ + { + Key: "X", + Context: "global", + Command: "printf '%s' '{{ .SelectedPath }}' > file.txt", + }, + } + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Files(). + Focus(). + NavigateToLine(Contains("file2")) + t.GlobalPress("X") + t.FileSystem().FileContent("file.txt", Equals("folder2/file2")) + + t.Views().Commits(). + Focus(). + PressEnter() + t.Views().CommitFiles(). + IsFocused(). + NavigateToLine(Contains("file1")) + t.GlobalPress("X") + t.FileSystem().FileContent("file.txt", Equals("folder1/file1")) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index 64123ff05..fc126a949 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -125,6 +125,7 @@ var tests = []*components.IntegrationTest{ custom_commands.MultipleContexts, custom_commands.MultiplePrompts, custom_commands.SelectedCommit, + custom_commands.SelectedPath, custom_commands.ShowOutputInPanel, custom_commands.SuggestionsCommand, custom_commands.SuggestionsPreset,