mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-08-24 10:13:41 -05:00
Keep the last conflict file selected after resolution
When there is a single conflicting file left to be resolved, lazygit dismisses the conflicted-files-only filter when the file no longer has conflict markers. However, the selection moved to the top, which is annoying because very often it is useful to look at that file's resulting diff once more to confirm that conflicts were resolved correctly, and finding it again can be cumbersome when there are many changed files. So keep it selected. Of course, this only helps for the last (or only) conflicted files; when there are multiple, a resolved file disappears from the panel until all are resolved, which makes it hard to double-check the resulting diffs. Doing it afterwards is not easy because you'd have to remember which files were conflicting. This needs a different solution, but for the special case of only a single conflicting file this is already a big improvement.
This commit is contained in:
@@ -1413,7 +1413,7 @@ func (self *RefreshHelper) refreshStateFiles(captured capturedFilesState, env re
|
||||
self.c.Contexts().Files.GetView().Subtitle = self.c.Tr.FilterLabelConflictingFiles
|
||||
}
|
||||
} else if conflictFileCount == 0 && fileTreeViewModel.GetStatusFilter() == filetree.DisplayConflicted {
|
||||
fileTreeViewModel.SetStatusFilter(filetree.DisplayAll)
|
||||
fileTreeViewModel.SetStatusFilterPreservingSelection(filetree.DisplayAll)
|
||||
self.c.Contexts().Files.GetView().Subtitle = ""
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -75,8 +75,8 @@ var RebaseConflictsFixBuildErrorsWithOutOfDateSubmodule = NewIntegrationTest(New
|
||||
|
||||
t.Views().Files().
|
||||
Lines(
|
||||
Equals("▼ /").IsSelected(),
|
||||
Equals(" MM file"),
|
||||
Equals("▼ /"),
|
||||
Equals(" MM file").IsSelected(),
|
||||
Equals(" M submodule (submodule)"),
|
||||
Equals(" ?? untracked-file"),
|
||||
)
|
||||
@@ -90,8 +90,8 @@ var RebaseConflictsFixBuildErrorsWithOutOfDateSubmodule = NewIntegrationTest(New
|
||||
|
||||
t.Views().Files().
|
||||
Lines(
|
||||
Equals("▼ /").IsSelected(),
|
||||
Equals(" M submodule (submodule)"),
|
||||
Equals("▼ /"),
|
||||
Equals(" M submodule (submodule)").IsSelected(),
|
||||
Equals(" ?? untracked-file"),
|
||||
)
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ var ResolveMultipleFiles = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Contains("First Change"),
|
||||
Contains("======="),
|
||||
).
|
||||
SelectNextItem().
|
||||
PressPrimaryAction()
|
||||
|
||||
t.Views().Files().
|
||||
@@ -47,12 +48,14 @@ var ResolveMultipleFiles = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
t.Views().MergeConflicts().
|
||||
IsFocused().
|
||||
SelectedLines(
|
||||
Contains("<<<<<<< HEAD"),
|
||||
Contains("First Change"),
|
||||
Contains("======="),
|
||||
Contains("Second Change"),
|
||||
Contains(">>>>>>>"),
|
||||
).
|
||||
PressPrimaryAction()
|
||||
|
||||
t.Views().Files().SelectedLines(Contains("file2"))
|
||||
|
||||
t.Common().ContinueOnConflictsResolved("merge")
|
||||
},
|
||||
})
|
||||
|
||||
@@ -46,12 +46,12 @@ var DiscardVariousChangesRangeSelect = NewIntegrationTest(NewIntegrationTestArgs
|
||||
Cancel()
|
||||
}).
|
||||
Lines(
|
||||
Equals("▼ /").IsSelected(),
|
||||
Equals("▼ /"),
|
||||
Equals(" AM added-changed.txt"),
|
||||
Equals(" MD change-delete.txt"),
|
||||
Equals(" D delete-change.txt"),
|
||||
Equals(" D deleted-staged.txt"),
|
||||
Equals(" D deleted.txt"),
|
||||
Equals(" D deleted.txt").IsSelected(),
|
||||
Equals(" MM double-modded.txt"),
|
||||
Equals(" M modded-staged.txt"),
|
||||
Equals(" M modded.txt"),
|
||||
@@ -59,6 +59,7 @@ var DiscardVariousChangesRangeSelect = NewIntegrationTest(NewIntegrationTestArgs
|
||||
Equals(" ?? new.txt"),
|
||||
Equals(" R renamed.txt → renamed2.txt"),
|
||||
).
|
||||
NavigateToLine(Equals("▼ /")).
|
||||
Press(keys.Universal.ToggleRangeSelect).
|
||||
NavigateToLine(Contains("renamed.txt")).
|
||||
Press(keys.Universal.Remove).
|
||||
|
||||
@@ -83,11 +83,10 @@ var ApplyInReverseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
t.Views().Files().
|
||||
Focus().
|
||||
Lines(
|
||||
Equals("▼ /").IsSelected(),
|
||||
Equals(" M file1"),
|
||||
Equals("▼ /"),
|
||||
Equals(" M file1").IsSelected(),
|
||||
Equals(" M file2"),
|
||||
).
|
||||
SelectNextItem()
|
||||
)
|
||||
|
||||
t.Views().Main().
|
||||
ContainsLines(
|
||||
|
||||
Reference in New Issue
Block a user