1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-25 12:24:47 +02:00

Allow using </> and ,/. in sticky range select mode in patch explorer

They still cancel hunk selection mode, setting it to line selection mode, but if
range selection mode is on, we keep it on.
This commit is contained in:
Stefan Haller 2024-08-18 21:41:49 +02:00
parent 56a6ee6afb
commit d3940729eb
2 changed files with 14 additions and 8 deletions

View File

@ -123,6 +123,12 @@ func (s *State) SetLineSelectMode() {
s.selectMode = LINE
}
func (s *State) DismissHunkSelectMode() {
if s.SelectingHunk() {
s.selectMode = LINE
}
}
// For when you move the cursor without holding shift (meaning if we're in
// a non-sticky range select, we'll cancel it)
func (s *State) SelectLine(newSelectedLineIdx int) {
@ -239,7 +245,7 @@ func (s *State) CurrentLineNumber() int {
}
func (s *State) AdjustSelectedLineIdx(change int) {
s.SetLineSelectMode()
s.DismissHunkSelectMode()
s.SelectLine(s.selectedLineIdx + change)
}
@ -256,12 +262,12 @@ func (s *State) PlainRenderSelected() string {
}
func (s *State) SelectBottom() {
s.SetLineSelectMode()
s.DismissHunkSelectMode()
s.SelectLine(s.patch.LineCount() - 1)
}
func (s *State) SelectTop() {
s.SetLineSelectMode()
s.DismissHunkSelectMode()
s.SelectLine(0)
}

View File

@ -14,6 +14,7 @@ import (
// (sticky range, press 'v') -> no range
// (sticky range, press 'escape') -> no range
// (sticky range, press arrow) -> sticky range
// (sticky range, press `<`/`>` or `,`/`.`) -> sticky range
// (sticky range, press shift+arrow) -> nonsticky range
// (nonsticky range, press 'v') -> no range
// (nonsticky range, press 'escape') -> no range
@ -138,19 +139,18 @@ var RangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
SelectedLines(
Contains("line 8"),
).
// (sticky range, press '>') -> sticky range
Press(keys.Universal.ToggleRangeSelect).
SelectedLines(
Contains("line 8"),
).
SelectNextItem().
Press(keys.Universal.GotoBottom).
SelectedLines(
Contains("line 8"),
Contains("line 9"),
Contains("line 10"),
).
// (sticky range, press 'escape') -> no range
PressEscape().
SelectedLines(
Contains("line 9"),
Contains("line 10"),
)
}