From 220f06052ad114cafde4d106524b7ceaf41446e6 Mon Sep 17 00:00:00 2001 From: Partho Kunda <76593389+parthokunda@users.noreply.github.com> Date: Mon, 17 Mar 2025 22:44:07 +0600 Subject: [PATCH] Show staged but untracked files in tracked only filter view --- pkg/gui/filetree/file_tree.go | 6 ++++-- .../filter_and_search/filter_by_file_status.go | 14 ++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/pkg/gui/filetree/file_tree.go b/pkg/gui/filetree/file_tree.go index bd201b7dd..fe18db0c0 100644 --- a/pkg/gui/filetree/file_tree.go +++ b/pkg/gui/filetree/file_tree.go @@ -88,9 +88,11 @@ func (self *FileTree) getFilesForDisplay() []*models.File { case DisplayUnstaged: return self.FilterFiles(func(file *models.File) bool { return file.HasUnstagedChanges }) case DisplayTracked: - return self.FilterFiles(func(file *models.File) bool { return file.Tracked }) + // untracked but staged files are technically not tracked by git + // but including such files in the filtered mode helps see what files are getting committed + return self.FilterFiles(func(file *models.File) bool { return file.Tracked || file.HasStagedChanges }) case DisplayUntracked: - return self.FilterFiles(func(file *models.File) bool { return !file.Tracked }) + return self.FilterFiles(func(file *models.File) bool { return !(file.Tracked || file.HasStagedChanges) }) case DisplayConflicted: return self.FilterFiles(func(file *models.File) bool { return file.HasMergeConflicts }) default: diff --git a/pkg/integration/tests/filter_and_search/filter_by_file_status.go b/pkg/integration/tests/filter_and_search/filter_by_file_status.go index f2335d28c..0c5f95e1d 100644 --- a/pkg/integration/tests/filter_and_search/filter_by_file_status.go +++ b/pkg/integration/tests/filter_and_search/filter_by_file_status.go @@ -21,12 +21,16 @@ var FilterByFileStatus = NewIntegrationTest(NewIntegrationTestArgs{ shell.CreateFile("file-untracked", "bar") shell.UpdateFile("file-tracked", "baz") + + shell.CreateFile("file-staged-but-untracked", "qux") + shell.GitAdd("file-staged-but-untracked") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Files(). Focus(). Lines( - Contains(`file-tracked`).IsSelected(), + Equals("A file-staged-but-untracked").IsSelected(), + Equals(" M file-tracked"), ). Press(keys.Files.OpenStatusFilter). Tap(func() { @@ -36,7 +40,7 @@ var FilterByFileStatus = NewIntegrationTest(NewIntegrationTestArgs{ Confirm() }). Lines( - Contains(`file-untracked`).IsSelected(), + Equals("?? file-untracked").IsSelected(), ). Press(keys.Files.OpenStatusFilter). Tap(func() { @@ -46,7 +50,8 @@ var FilterByFileStatus = NewIntegrationTest(NewIntegrationTestArgs{ Confirm() }). Lines( - Contains(`file-tracked`).IsSelected(), + Equals("A file-staged-but-untracked").IsSelected(), + Equals(" M file-tracked"), ). Press(keys.Files.OpenStatusFilter). Tap(func() { @@ -56,7 +61,8 @@ var FilterByFileStatus = NewIntegrationTest(NewIntegrationTestArgs{ Confirm() }). Lines( - Contains(`file-tracked`).IsSelected(), + Equals("A file-staged-but-untracked").IsSelected(), + Equals(" M file-tracked"), ) }, })