mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 07:36:27 -04:00
I copied all files except dot files (.github and .gitignore), the _examples folder, and go.mod/go.sum. At some point we may want to copy the files back to the gocui repo when other clients (e.g. lazydocker) want to use the newer versions of them.
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package controllers
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/jesseduffield/lazygit/pkg/gocui"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
"github.com/samber/lo"
|
|
)
|
|
|
|
type JumpToSideWindowController struct {
|
|
baseController
|
|
c *ControllerCommon
|
|
nextTabFunc func() error
|
|
}
|
|
|
|
func NewJumpToSideWindowController(
|
|
c *ControllerCommon,
|
|
nextTabFunc func() error,
|
|
) *JumpToSideWindowController {
|
|
return &JumpToSideWindowController{
|
|
baseController: baseController{},
|
|
c: c,
|
|
nextTabFunc: nextTabFunc,
|
|
}
|
|
}
|
|
|
|
func (self *JumpToSideWindowController) Context() types.Context {
|
|
return nil
|
|
}
|
|
|
|
func (self *JumpToSideWindowController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
|
|
windows := self.c.Helpers().Window.SideWindows()
|
|
|
|
if len(opts.Config.Universal.JumpToBlock) != len(windows) {
|
|
log.Fatal("Jump to block keybindings cannot be set. Exactly 5 keybindings must be supplied.")
|
|
}
|
|
|
|
return lo.Map(windows, func(window string, index int) *types.Binding {
|
|
return &types.Binding{
|
|
ViewName: "",
|
|
// by default the keys are 1, 2, 3, etc
|
|
Key: opts.GetKey(opts.Config.Universal.JumpToBlock[index]),
|
|
Modifier: gocui.ModNone,
|
|
Handler: opts.Guards.NoPopupPanel(self.goToSideWindow(window)),
|
|
}
|
|
})
|
|
}
|
|
|
|
func (self *JumpToSideWindowController) goToSideWindow(window string) func() error {
|
|
return func() error {
|
|
sideWindowAlreadyActive := self.c.Helpers().Window.CurrentWindow() == window
|
|
if sideWindowAlreadyActive && self.c.UserConfig().Gui.SwitchTabsWithPanelJumpKeys {
|
|
return self.nextTabFunc()
|
|
}
|
|
|
|
context := self.c.Helpers().Window.GetContextForWindow(window)
|
|
|
|
self.c.Context().Push(context, types.OnFocusOpts{})
|
|
return nil
|
|
}
|
|
}
|