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"), ) }, })