Skip to content

Commit

Permalink
Add config option to disable tab switching with jump keys
Browse files Browse the repository at this point in the history
  • Loading branch information
hgreenstein authored and jesseduffield committed Nov 9, 2024
1 parent 7edf629 commit 8da43af
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 3 deletions.
3 changes: 3 additions & 0 deletions docs/Config.md
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,9 @@ gui:
# If true, jump to the Files panel after applying a stash
switchToFilesAfterStashApply: true

# If true, when using the panel jump keys (default 1 through 5) and target panel is already active, go to next tab instead
switchTabsWithPanelJumpKeys: false

# Config relating to git
git:
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
Expand Down
3 changes: 3 additions & 0 deletions pkg/config/user_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ type GuiConfig struct {
SwitchToFilesAfterStashPop bool `yaml:"switchToFilesAfterStashPop"`
// If true, jump to the Files panel after applying a stash
SwitchToFilesAfterStashApply bool `yaml:"switchToFilesAfterStashApply"`
// If true, when using the panel jump keys (default 1 through 5) and target panel is already active, go to next tab instead
SwitchTabsWithPanelJumpKeys bool `yaml:"switchTabsWithPanelJumpKeys"`
}

func (c *GuiConfig) UseFuzzySearch() bool {
Expand Down Expand Up @@ -736,6 +738,7 @@ func GetDefaultConfig() *UserConfig {
StatusPanelView: "dashboard",
SwitchToFilesAfterStashPop: true,
SwitchToFilesAfterStashApply: true,
SwitchTabsWithPanelJumpKeys: false,
},
Git: GitConfig{
Paging: PagingConfig{
Expand Down
3 changes: 2 additions & 1 deletion pkg/gui/controllers/jump_to_side_window_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ 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 {
sideWindowAlreadyActive := self.c.Helpers().Window.CurrentWindow() == window
if sideWindowAlreadyActive && self.c.UserConfig().Gui.SwitchTabsWithPanelJumpKeys {
return self.nextTabFunc()
}

Expand Down
1 change: 1 addition & 0 deletions pkg/integration/tests/test_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,7 @@ var tests = []*components.IntegrationTest{
tag.ForceTagLightweight,
tag.Reset,
ui.Accordion,
ui.DisableSwitchTabWithPanelJumpKeys,
ui.DoublePopup,
ui.EmptyMenu,
ui.KeybindingSuggestionsWhenSwitchingRepos,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ui

import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)

var DisableSwitchTabWithPanelJumpKeys = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Verify that the tab does not change by default when jumping to an already focused panel",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {
},
SetupRepo: func(shell *Shell) {
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Status().Focus().
Press(keys.Universal.JumpToBlock[1])
t.Views().Files().IsFocused().
Press(keys.Universal.JumpToBlock[1])

// Despite jumping to an already focused panel,
// the tab should not change from the base files view
t.Views().Files().IsFocused()
},
})
6 changes: 4 additions & 2 deletions pkg/integration/tests/ui/switch_tab_with_panel_jump_keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ import (
)

var SwitchTabWithPanelJumpKeys = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Switch tab with the panel jump keys",
Description: "Switch tab with the panel jump keys after enabling the feature",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupConfig: func(config *config.AppConfig) {
config.GetUserConfig().Gui.SwitchTabsWithPanelJumpKeys = true
},
SetupRepo: func(shell *Shell) {
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
Expand Down
5 changes: 5 additions & 0 deletions schema/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,11 @@
"type": "boolean",
"description": "If true, jump to the Files panel after applying a stash",
"default": true
},
"switchTabsWithPanelJumpKeys": {
"type": "boolean",
"description": "If true, when using the panel jump keys (default 1 through 5) and target panel is already active, go to next tab instead",
"default": false
}
},
"additionalProperties": false,
Expand Down

0 comments on commit 8da43af

Please sign in to comment.