Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add config option to disable switching tabs with panel jump keys #3927

Conversation

hgreenstein
Copy link
Contributor

@hgreenstein hgreenstein commented Sep 20, 2024

PR Description

Problem this PR attempts to solve

I really appreciate the feature added in #3794 that allows switching tabs using panel jump keys when the side panel is already active and see how it is convenient for many users. However, after using lazygit for quite some time, I've developed muscle memory where I rely on pressing a number key to instantly switch to a panel and perform an action, regardless of which panel is currently active. I have found myself several times in the past few days clicking '2' and going to hit 'a' + 'c' to commit all and find I was already had window 2 active and my tab was instead switched to 'Worktrees' and the keybindings no longer apply to stage or commit.

Solution

  • Add a config SwitchTabsWithPanelJumpKeys as a gui boolean that is true by default, keeping the current new behavior added by Switch tabs with panel jump keys #3794
  • When SwitchTabsWithPanelJumpKeys is set to false in the user's config, the old behavior is returned which does not switch tabs using the side panel jump keys.
  • This is behavior is verified with an integration test with ``SwitchTabsWithPanelJumpKeys` set to false that shows the expected behavior that jumping to window 2 while window 2 is already active does not switch tabs within window 2

To disable switching tabs with panel jump keys, add the following to your config.yml:

gui:
  # 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

P.S.

This is my first contribution to lazygit and while I absolutely strived to read all documentation and follow all standards, I accept that this PR may not be perfect and am very open to feedback and suggestions to improve both this code and any future contributions. I absolutely love lazygit, I use it everyday and swear by it as the most powerful and efficient tool for managing git, I love and appreciate all the work all the maintainers do to constantly improve it. So thank you to all who are reading this and I look forward to contributing more to make lazygit even more of the best git tool available!

  • Cheatsheets are up-to-date (run go generate ./...)
  • Code has been formatted (see here)
  • Tests have been added/updated (see here for the integration test guide)
  • No text rendered to user -> Text is internationalised (see here)
  • If a new UserConfig entry was added, make sure it can be hot-reloaded (see here)
  • Docs have been updated if necessary
  • You've read through your own file changes for silly mistakes etc

@stefanhaller stefanhaller added the enhancement New feature or request label Oct 17, 2024
@stefanhaller
Copy link
Collaborator

Sorry for taking so long to review this. It looks very good! Great job, especially considering it's your first contribution.

My only complaint is a git history nitpick: please don't merge master into your branch, this creates an ugly git history that is hard to make sense of. Please rebase on master instead.

I'm not merging this right away because there's now a discussion whether the default for the option should be false; waiting for that to be decided.

@jesseduffield
Copy link
Owner

@hgreenstein as per that linked discussion, let's disable the option by default.

@peauc
Copy link

peauc commented Nov 6, 2024

Looking forward for this feature to land on master 👀. With whatever default

@jesseduffield jesseduffield force-pushed the disable-switch-tab-with-panel-jump-keys branch 2 times, most recently from 30f963a to af43071 Compare November 9, 2024 06:09
@jesseduffield jesseduffield force-pushed the disable-switch-tab-with-panel-jump-keys branch from af43071 to 8da43af Compare November 9, 2024 06:19
@jesseduffield jesseduffield merged commit b2cbd93 into jesseduffield:master Nov 9, 2024
15 checks passed
@jesseduffield
Copy link
Owner

Thanks for the PR @hgreenstein !

tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jan 28, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.44.1` -> `v0.45.2` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>jesseduffield/lazygit (jesseduffield/lazygit)</summary>

### [`v0.45.2`](https://github.com/jesseduffield/lazygit/releases/tag/v0.45.2)

[Compare Source](jesseduffield/lazygit@v0.45.0...v0.45.2)

<!-- Release notes generated using configuration in .github/release.yml at v0.45.2 -->

#### What's Changed

##### Enhancements 🔥

-   Add ability to configure branch color patterns using regex by [@&#8203;mtrajano](https://github.com/mtrajano) in jesseduffield/lazygit#4130
-   Collapse/uncollapse all files in tree by [@&#8203;mtrajano](https://github.com/mtrajano) in jesseduffield/lazygit#4131
-   Improve undo action to restore files upon undoing a commit by [@&#8203;gabriellanata](https://github.com/gabriellanata) in jesseduffield/lazygit#4167

##### Fixes 🔧

-   Bump gocui (and tcell) by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4166

##### Maintenance ⚙️

-   Cut a new release automatically each month by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4146
-   Bump tcell to fix broken deployment by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4178

#### New Contributors

-   [@&#8203;mtrajano](https://github.com/mtrajano) made their first contribution in jesseduffield/lazygit#4130
-   [@&#8203;gabriellanata](https://github.com/gabriellanata) made their first contribution in jesseduffield/lazygit#4167

**Full Changelog**: jesseduffield/lazygit@v0.45.0...v0.45.2

### [`v0.45.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.45.0)

[Compare Source](jesseduffield/lazygit@v0.44.1...v0.45.0)

<!-- Release notes generated using configuration in .github/release.yml at v0.45.0 -->

Lots of great improvements in this one! Thanks to all the contributors who helped make this release happen.

Apologies for the long waits between releases. As of jesseduffield/lazygit#4146 we're now (almost) guaranteed to do monthly releases.

#### What's Changed

##### Enhancements 🔥

-   Better branch delete confirmation by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3915
-   Add a menu item to delete both local and remote branch at once by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3916
-   Auto-render hyperlinks by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3914
-   Allow pasting commits multiple times by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3983
-   Add config option to disable switching tabs with panel jump keys (and disable by default) by [@&#8203;hgreenstein](https://github.com/hgreenstein) in jesseduffield/lazygit#3927
    -   We jumped the gun on this change in the last release: having the number key both select a panel and switch tabs was bad for muscle memory so it's that behaviour is now disabled by default.
-   Add new filter to only show tracked files in Files panel by [@&#8203;veremenko-y](https://github.com/veremenko-y) in jesseduffield/lazygit#4024
-   Allow DiffContextSize to be decreased to zero by [@&#8203;LuxxxLucy](https://github.com/LuxxxLucy) in jesseduffield/lazygit#4050
-   Allow user to select remote and branch when creating a MR by [@&#8203;moha-gh](https://github.com/moha-gh) in jesseduffield/lazygit#1889
-   Delete range selection of branches by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4073
-   Show the number of lines changed per file in working file tree view by [@&#8203;johannaschwarz](https://github.com/johannaschwarz) in jesseduffield/lazygit#4015
-   Drop merge commits by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4094
-   Wrap lines in staging view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4098
-   Allow to switch branches in Commit View ([#&#8203;4115](jesseduffield/lazygit#4115)) by [@&#8203;seflue](https://github.com/seflue) in jesseduffield/lazygit#4117
-   Allow on prem Azure DevOps Server pull request by [@&#8203;waynebowie99](https://github.com/waynebowie99) in jesseduffield/lazygit#3954
-   Add screen-mode command line argument by [@&#8203;alewis001](https://github.com/alewis001) in jesseduffield/lazygit#4103
-   Default to half-screen mode when opening with certain CLI args by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4141
-   Show the alt-enter keybinding at bottom of commit description view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4136
-   Add number of commits to cherry-pick confirmation prompt by [@&#8203;brandondong](https://github.com/brandondong) in jesseduffield/lazygit#4158

##### Fixes 🔧

-   Fix copying commit author to clipboard by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3936
-   Fix merge conflict resolution when file doesn't end with a LF by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3976
-   Fix file icons by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3975
-   Fix non-sticky range select after clicking in staging view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3998
-   Fix scroll position when entering staging view by clicking in the main view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#3992
-   Fix mouse wheel scrolling of custom patch view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4089
-   Improve editing a commit by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4090
-   Use custom context size in range diff by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4082
-   commits panel: add missing default sort order by [@&#8203;phanirithvij](https://github.com/phanirithvij) in jesseduffield/lazygit#4097
-   Fix issues with opening links and files using WSL by [@&#8203;bottino](https://github.com/bottino) in jesseduffield/lazygit#3850
-   Fix moving a commit across a branch boundary in a stack of branches by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4096
-   Don't preserve commit message when it's unchanged from initial message by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4110
-   Fix hang when returning from shell command by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4126
-   Prevent killing of unrelated processes on windows by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4137
-   Add worktree option to fast forwarding operation by [@&#8203;john-mutuma](https://github.com/john-mutuma) in jesseduffield/lazygit#4051
-   Don't show keybindings option in bottom line when panel is open by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4143
-   Fix reset/rebase to upstream by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4151
-   Avoid blank line at end of view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4152
-   Adjust line number for working copy when editing a line by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4119
-   Fix `micro` editor preset by [@&#8203;kytta](https://github.com/kytta) in jesseduffield/lazygit#4156
-   Use interactive shell for running shell commands only if shell is bash or zsh by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4159

##### Maintenance ⚙️

-   Add performance improvements section to release notes by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#3922
-   ci: update `upload-artifact` and `download-artifact` actions to v4 by [@&#8203;Juneezee](https://github.com/Juneezee) in jesseduffield/lazygit#4063
-   Let schema/config.json end with a line feed by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4092
-   Saner view geometry by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4085
-   Cleanup background fetch by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4084
-   remove duplicate secondary MouseWheelUp keybind by [@&#8203;samueldominguez](https://github.com/samueldominguez) in jesseduffield/lazygit#4120
-   enhancement: Use HEX colors on file icons instead of C256 colors by [@&#8203;hasecilu](https://github.com/hasecilu) in jesseduffield/lazygit#4029
-   chore: use errors.New to replace fmt.Errorf with no parameters by [@&#8203;RiceChuan](https://github.com/RiceChuan) in jesseduffield/lazygit#4107
-   Fix typos by [@&#8203;NathanBaulch](https://github.com/NathanBaulch) in jesseduffield/lazygit#3920
-   Bump crypto and net packages by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4144
-   Tweak file icons by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4145
-   Standardise on 'screen mode' naming convention by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4142

##### Docs 📖

-   Fix installation for Ubuntu in README.md by [@&#8203;shaobosong](https://github.com/shaobosong) in jesseduffield/lazygit#4031
-   Fixes to lazygit Ubuntu install instructions in README.md by [@&#8203;wrecklass](https://github.com/wrecklass) in jesseduffield/lazygit#3970
-   Fix typos by [@&#8203;skoch13](https://github.com/skoch13) in jesseduffield/lazygit#4121
-   Add vision and design principles doc by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4053
-   docs: Stylize and correct the NixOS section in README.md by [@&#8203;wadsaek](https://github.com/wadsaek) in jesseduffield/lazygit#4135
-   Update chinese translation for pull requests by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4140
-   Set repology table to 3 columns by [@&#8203;hasecilu](https://github.com/hasecilu) in jesseduffield/lazygit#4138
-   Update instructions for using OSC52 with tmux by [@&#8203;EliasA5](https://github.com/EliasA5) in jesseduffield/lazygit#3597
-   Update docs to describe use of custom commands without keybindings by [@&#8203;a-jentleman](https://github.com/a-jentleman) in jesseduffield/lazygit#3846
-   documentation - describe os.openLink by [@&#8203;smangels](https://github.com/smangels) in jesseduffield/lazygit#3094
-   Clarify commit message prefix mechanics by [@&#8203;zeromask1337](https://github.com/zeromask1337) in jesseduffield/lazygit#4114

#### New Contributors

-   [@&#8203;shaobosong](https://github.com/shaobosong) made their first contribution in jesseduffield/lazygit#4031
-   [@&#8203;hgreenstein](https://github.com/hgreenstein) made their first contribution in jesseduffield/lazygit#3927
-   [@&#8203;wrecklass](https://github.com/wrecklass) made their first contribution in jesseduffield/lazygit#3970
-   [@&#8203;veremenko-y](https://github.com/veremenko-y) made their first contribution in jesseduffield/lazygit#4024
-   [@&#8203;LuxxxLucy](https://github.com/LuxxxLucy) made their first contribution in jesseduffield/lazygit#4050
-   [@&#8203;phanirithvij](https://github.com/phanirithvij) made their first contribution in jesseduffield/lazygit#4097
-   [@&#8203;bottino](https://github.com/bottino) made their first contribution in jesseduffield/lazygit#3850
-   [@&#8203;johannaschwarz](https://github.com/johannaschwarz) made their first contribution in jesseduffield/lazygit#4015
-   [@&#8203;samueldominguez](https://github.com/samueldominguez) made their first contribution in jesseduffield/lazygit#4120
-   [@&#8203;skoch13](https://github.com/skoch13) made their first contribution in jesseduffield/lazygit#4121
-   [@&#8203;wadsaek](https://github.com/wadsaek) made their first contribution in jesseduffield/lazygit#4135
-   [@&#8203;seflue](https://github.com/seflue) made their first contribution in jesseduffield/lazygit#4117
-   [@&#8203;waynebowie99](https://github.com/waynebowie99) made their first contribution in jesseduffield/lazygit#3954
-   [@&#8203;EliasA5](https://github.com/EliasA5) made their first contribution in jesseduffield/lazygit#3597
-   [@&#8203;alewis001](https://github.com/alewis001) made their first contribution in jesseduffield/lazygit#4103
-   [@&#8203;a-jentleman](https://github.com/a-jentleman) made their first contribution in jesseduffield/lazygit#3846
-   [@&#8203;john-mutuma](https://github.com/john-mutuma) made their first contribution in jesseduffield/lazygit#4051
-   [@&#8203;RiceChuan](https://github.com/RiceChuan) made their first contribution in jesseduffield/lazygit#4107
-   [@&#8203;NathanBaulch](https://github.com/NathanBaulch) made their first contribution in jesseduffield/lazygit#3920

**Full Changelog**: jesseduffield/lazygit@v0.44.1...v0.45.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjEzNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants