1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-15 01:34:26 +02:00

Switch tabs with panel jump keys (#3794)

- **PR Description**

When using the panel jump keybindings (`1` through `5` by default), and
the target panel is already the active one, go to the next tab instead.
This commit is contained in:
Stefan Haller
2024-08-17 10:39:57 +02:00
committed by GitHub
4 changed files with 44 additions and 2 deletions

View File

@ -197,7 +197,7 @@ func (gui *Gui) resetHelpersAndControllers() {
commandLogController := controllers.NewCommandLogController(common)
confirmationController := controllers.NewConfirmationController(common)
suggestionsController := controllers.NewSuggestionsController(common)
jumpToSideWindowController := controllers.NewJumpToSideWindowController(common)
jumpToSideWindowController := controllers.NewJumpToSideWindowController(common, gui.handleNextTab)
sideWindowControllerFactory := controllers.NewSideWindowControllerFactory(common)

View File

@ -10,15 +10,18 @@ import (
type JumpToSideWindowController struct {
baseController
c *ControllerCommon
c *ControllerCommon
nextTabFunc func() error
}
func NewJumpToSideWindowController(
c *ControllerCommon,
nextTabFunc func() error,
) *JumpToSideWindowController {
return &JumpToSideWindowController{
baseController: baseController{},
c: c,
nextTabFunc: nextTabFunc,
}
}
@ -46,6 +49,10 @@ func (self *JumpToSideWindowController) GetKeybindings(opts types.KeybindingsOpt
func (self *JumpToSideWindowController) goToSideWindow(window string) func() error {
return func() error {
if self.c.Helpers().Window.CurrentWindow() == window {
return self.nextTabFunc()
}
context := self.c.Helpers().Window.GetContextForWindow(window)
return self.c.PushContext(context)

View File

@ -338,6 +338,7 @@ var tests = []*components.IntegrationTest{
ui.OpenLinkFailure,
ui.RangeSelect,
ui.SwitchTabFromMenu,
ui.SwitchTabWithPanelJumpKeys,
undo.UndoCheckoutAndDrop,
undo.UndoDrop,
worktree.AddFromBranch,

View File

@ -0,0 +1,34 @@
package ui
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var SwitchTabWithPanelJumpKeys = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Switch tab with the panel jump keys",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Worktrees().Focus().
Press(keys.Universal.JumpToBlock[2])
t.Views().Branches().IsFocused().
Press(keys.Universal.JumpToBlock[2])
t.Views().Remotes().IsFocused().
Press(keys.Universal.JumpToBlock[2])
t.Views().Tags().IsFocused().
Press(keys.Universal.JumpToBlock[2])
t.Views().Branches().IsFocused().
Press(keys.Universal.JumpToBlock[1])
// When jumping to a panel from a different one, keep its current tab:
t.Views().Worktrees().IsFocused()
},
})