1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-17 21:18:31 +02:00

get rid of these positively ghastly method signatures

This commit is contained in:
Jesse Duffield 2021-04-02 19:20:40 +11:00
parent 6e4860b523
commit f863684d6d
33 changed files with 351 additions and 303 deletions

View File

@ -4,7 +4,6 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/presentation" "github.com/jesseduffield/lazygit/pkg/gui/presentation"
@ -79,7 +78,7 @@ func (gui *Gui) refreshBranches() {
// specific functions // specific functions
func (gui *Gui) handleBranchPress(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleBranchPress() error {
if gui.State.Panels.Branches.SelectedLineIdx == -1 { if gui.State.Panels.Branches.SelectedLineIdx == -1 {
return nil return nil
} }
@ -90,7 +89,7 @@ func (gui *Gui) handleBranchPress(g *gocui.Gui, v *gocui.View) error {
return gui.handleCheckoutRef(branch.Name, handleCheckoutRefOptions{}) return gui.handleCheckoutRef(branch.Name, handleCheckoutRefOptions{})
} }
func (gui *Gui) handleCreatePullRequestPress(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreatePullRequestPress() error {
pullRequest := commands.NewPullRequest(gui.GitCommand) pullRequest := commands.NewPullRequest(gui.GitCommand)
branch := gui.getSelectedBranch() branch := gui.getSelectedBranch()
@ -101,7 +100,7 @@ func (gui *Gui) handleCreatePullRequestPress(g *gocui.Gui, v *gocui.View) error
return nil return nil
} }
func (gui *Gui) handleCopyPullRequestURLPress(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCopyPullRequestURLPress() error {
pullRequest := commands.NewPullRequest(gui.GitCommand) pullRequest := commands.NewPullRequest(gui.GitCommand)
branch := gui.getSelectedBranch() branch := gui.getSelectedBranch()
@ -114,7 +113,7 @@ func (gui *Gui) handleCopyPullRequestURLPress(g *gocui.Gui, v *gocui.View) error
return nil return nil
} }
func (gui *Gui) handleGitFetch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleGitFetch() error {
if err := gui.createLoaderPanel(gui.Tr.FetchWait); err != nil { if err := gui.createLoaderPanel(gui.Tr.FetchWait); err != nil {
return err return err
} }
@ -126,7 +125,7 @@ func (gui *Gui) handleGitFetch(g *gocui.Gui, v *gocui.View) error {
return nil return nil
} }
func (gui *Gui) handleForceCheckout(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleForceCheckout() error {
branch := gui.getSelectedBranch() branch := gui.getSelectedBranch()
message := gui.Tr.SureForceCheckout message := gui.Tr.SureForceCheckout
title := gui.Tr.ForceCheckoutBranch title := gui.Tr.ForceCheckoutBranch
@ -208,7 +207,7 @@ func (gui *Gui) handleCheckoutRef(ref string, options handleCheckoutRefOptions)
}) })
} }
func (gui *Gui) handleCheckoutByName(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCheckoutByName() error {
return gui.prompt(promptOpts{ return gui.prompt(promptOpts{
title: gui.Tr.BranchName + ":", title: gui.Tr.BranchName + ":",
findSuggestionsFunc: gui.findBranchNameSuggestions, findSuggestionsFunc: gui.findBranchNameSuggestions,
@ -251,7 +250,7 @@ func (gui *Gui) createNewBranchWithName(newBranchName string) error {
return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
} }
func (gui *Gui) handleDeleteBranch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleDeleteBranch() error {
return gui.deleteBranch(false) return gui.deleteBranch(false)
} }
@ -328,7 +327,7 @@ func (gui *Gui) mergeBranchIntoCheckedOutBranch(branchName string) error {
}) })
} }
func (gui *Gui) handleMerge(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleMerge() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -337,7 +336,7 @@ func (gui *Gui) handleMerge(g *gocui.Gui, v *gocui.View) error {
return gui.mergeBranchIntoCheckedOutBranch(selectedBranchName) return gui.mergeBranchIntoCheckedOutBranch(selectedBranchName)
} }
func (gui *Gui) handleRebaseOntoLocalBranch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRebaseOntoLocalBranch() error {
selectedBranchName := gui.getSelectedBranch().Name selectedBranchName := gui.getSelectedBranch().Name
return gui.handleRebaseOntoBranch(selectedBranchName) return gui.handleRebaseOntoBranch(selectedBranchName)
} }
@ -369,7 +368,7 @@ func (gui *Gui) handleRebaseOntoBranch(selectedBranchName string) error {
}) })
} }
func (gui *Gui) handleFastForward(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleFastForward() error {
branch := gui.getSelectedBranch() branch := gui.getSelectedBranch()
if branch == nil { if branch == nil {
return nil return nil
@ -414,7 +413,7 @@ func (gui *Gui) handleFastForward(g *gocui.Gui, v *gocui.View) error {
return nil return nil
} }
func (gui *Gui) handleCreateResetToBranchMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateResetToBranchMenu() error {
branch := gui.getSelectedBranch() branch := gui.getSelectedBranch()
if branch == nil { if branch == nil {
return nil return nil
@ -423,7 +422,7 @@ func (gui *Gui) handleCreateResetToBranchMenu(g *gocui.Gui, v *gocui.View) error
return gui.createResetMenu(branch.Name) return gui.createResetMenu(branch.Name)
} }
func (gui *Gui) handleRenameBranch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRenameBranch() error {
branch := gui.getSelectedBranch() branch := gui.getSelectedBranch()
if branch == nil { if branch == nil {
return nil return nil

View File

@ -1,7 +1,6 @@
package gui package gui
import ( import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/patch" "github.com/jesseduffield/lazygit/pkg/commands/patch"
"github.com/jesseduffield/lazygit/pkg/gui/filetree" "github.com/jesseduffield/lazygit/pkg/gui/filetree"
@ -57,7 +56,7 @@ func (gui *Gui) handleCommitFileSelect() error {
}) })
} }
func (gui *Gui) handleCheckoutCommitFile(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCheckoutCommitFile() error {
node := gui.getSelectedCommitFileNode() node := gui.getSelectedCommitFileNode()
if node == nil { if node == nil {
return nil return nil
@ -70,7 +69,7 @@ func (gui *Gui) handleCheckoutCommitFile(g *gocui.Gui, v *gocui.View) error {
return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
} }
func (gui *Gui) handleDiscardOldFileChange(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleDiscardOldFileChange() error {
if ok, err := gui.validateNormalWorkingTreeState(); !ok { if ok, err := gui.validateNormalWorkingTreeState(); !ok {
return err return err
} }
@ -111,7 +110,7 @@ func (gui *Gui) refreshCommitFilesView() error {
return gui.postRefreshUpdate(gui.Contexts.CommitFiles.Context) return gui.postRefreshUpdate(gui.Contexts.CommitFiles.Context)
} }
func (gui *Gui) handleOpenOldCommitFile(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleOpenOldCommitFile() error {
node := gui.getSelectedCommitFileNode() node := gui.getSelectedCommitFileNode()
if node == nil { if node == nil {
return nil return nil
@ -120,7 +119,7 @@ func (gui *Gui) handleOpenOldCommitFile(g *gocui.Gui, v *gocui.View) error {
return gui.openFile(node.GetPath()) return gui.openFile(node.GetPath())
} }
func (gui *Gui) handleEditCommitFile(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleEditCommitFile() error {
node := gui.getSelectedCommitFileNode() node := gui.getSelectedCommitFileNode()
if node == nil { if node == nil {
return nil return nil
@ -133,7 +132,7 @@ func (gui *Gui) handleEditCommitFile(g *gocui.Gui, v *gocui.View) error {
return gui.editFile(node.GetPath()) return gui.editFile(node.GetPath())
} }
func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleToggleFileForPatch() error {
node := gui.getSelectedCommitFileNode() node := gui.getSelectedCommitFileNode()
if node == nil { if node == nil {
return nil return nil
@ -195,7 +194,7 @@ func (gui *Gui) startPatchManager() error {
return nil return nil
} }
func (gui *Gui) handleEnterCommitFile(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleEnterCommitFile() error {
return gui.enterCommitFile(-1) return gui.enterCommitFile(-1)
} }

View File

@ -26,8 +26,9 @@ func (gui *Gui) runSyncOrAsyncCommand(sub *exec.Cmd, err error) (bool, error) {
return true, nil return true, nil
} }
func (gui *Gui) handleCommitConfirm(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitConfirm() error {
message := gui.trimmedContent(v) commitMessageView := gui.getCommitMessageView()
message := gui.trimmedContent(commitMessageView)
if message == "" { if message == "" {
return gui.createErrorPanel(gui.Tr.CommitWithoutMessageErr) return gui.createErrorPanel(gui.Tr.CommitWithoutMessageErr)
} }
@ -44,12 +45,12 @@ func (gui *Gui) handleCommitConfirm(g *gocui.Gui, v *gocui.View) error {
return nil return nil
} }
gui.clearEditorView(v) gui.clearEditorView(commitMessageView)
_ = gui.returnFromContext() _ = gui.returnFromContext()
return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
} }
func (gui *Gui) handleCommitClose(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitClose() error {
return gui.returnFromContext() return gui.returnFromContext()
} }

View File

@ -3,7 +3,6 @@ package gui
import ( import (
"sync" "sync"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
@ -148,7 +147,7 @@ func (gui *Gui) refreshRebaseCommits() error {
// specific functions // specific functions
func (gui *Gui) handleCommitSquashDown(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitSquashDown() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -177,7 +176,7 @@ func (gui *Gui) handleCommitSquashDown(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCommitFixup(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitFixup() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -206,7 +205,7 @@ func (gui *Gui) handleCommitFixup(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleRenameCommit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRenameCommit() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -246,7 +245,7 @@ func (gui *Gui) handleRenameCommit(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleRenameCommitEditor(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRenameCommitEditor() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -295,7 +294,7 @@ func (gui *Gui) handleMidRebaseCommand(action string) (bool, error) {
return true, gui.refreshRebaseCommits() return true, gui.refreshRebaseCommits()
} }
func (gui *Gui) handleCommitDelete(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitDelete() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -320,7 +319,7 @@ func (gui *Gui) handleCommitDelete(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCommitMoveDown(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitMoveDown() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -347,7 +346,7 @@ func (gui *Gui) handleCommitMoveDown(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCommitMoveUp(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitMoveUp() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -374,7 +373,7 @@ func (gui *Gui) handleCommitMoveUp(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCommitEdit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitEdit() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -393,7 +392,7 @@ func (gui *Gui) handleCommitEdit(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCommitAmendTo(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitAmendTo() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -410,7 +409,7 @@ func (gui *Gui) handleCommitAmendTo(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCommitPick(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitPick() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -425,10 +424,10 @@ func (gui *Gui) handleCommitPick(g *gocui.Gui, v *gocui.View) error {
// at this point we aren't actually rebasing so we will interpret this as an // at this point we aren't actually rebasing so we will interpret this as an
// attempt to pull. We might revoke this later after enabling configurable keybindings // attempt to pull. We might revoke this later after enabling configurable keybindings
return gui.handlePullFiles(g, v) return gui.handlePullFiles()
} }
func (gui *Gui) handleCommitRevert(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCommitRevert() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -449,7 +448,7 @@ func (gui *Gui) handleViewCommitFiles() error {
return gui.switchToCommitFilesContext(commit.Sha, true, gui.Contexts.BranchCommits.Context, "commits") return gui.switchToCommitFilesContext(commit.Sha, true, gui.Contexts.BranchCommits.Context, "commits")
} }
func (gui *Gui) handleCreateFixupCommit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateFixupCommit() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -479,7 +478,7 @@ func (gui *Gui) handleCreateFixupCommit(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleSquashAllAboveFixupCommits(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleSquashAllAboveFixupCommits() error {
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok { if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
return err return err
} }
@ -508,7 +507,7 @@ func (gui *Gui) handleSquashAllAboveFixupCommits(g *gocui.Gui, v *gocui.View) er
}) })
} }
func (gui *Gui) handleTagCommit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleTagCommit() error {
// TODO: bring up menu asking if you want to make a lightweight or annotated tag // TODO: bring up menu asking if you want to make a lightweight or annotated tag
// if annotated, switch to a subprocess to create the message // if annotated, switch to a subprocess to create the message
@ -532,7 +531,7 @@ func (gui *Gui) handleCreateLightweightTag(commitSha string) error {
}) })
} }
func (gui *Gui) handleCheckoutCommit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCheckoutCommit() error {
commit := gui.getSelectedLocalCommit() commit := gui.getSelectedLocalCommit()
if commit == nil { if commit == nil {
return nil return nil
@ -547,7 +546,7 @@ func (gui *Gui) handleCheckoutCommit(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCreateCommitResetMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateCommitResetMenu() error {
commit := gui.getSelectedLocalCommit() commit := gui.getSelectedLocalCommit()
if commit == nil { if commit == nil {
return gui.createErrorPanel(gui.Tr.NoCommitsThisBranch) return gui.createErrorPanel(gui.Tr.NoCommitsThisBranch)
@ -556,7 +555,7 @@ func (gui *Gui) handleCreateCommitResetMenu(g *gocui.Gui, v *gocui.View) error {
return gui.createResetMenu(commit.Sha) return gui.createResetMenu(commit.Sha)
} }
func (gui *Gui) handleOpenSearchForCommitsPanel(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleOpenSearchForCommitsPanel(_viewName string) error {
// we usually lazyload these commits but now that we're searching we need to load them now // we usually lazyload these commits but now that we're searching we need to load them now
if gui.State.Panels.Commits.LimitCommits { if gui.State.Panels.Commits.LimitCommits {
gui.State.Panels.Commits.LimitCommits = false gui.State.Panels.Commits.LimitCommits = false
@ -565,10 +564,10 @@ func (gui *Gui) handleOpenSearchForCommitsPanel(g *gocui.Gui, v *gocui.View) err
} }
} }
return gui.handleOpenSearch(gui.g, v) return gui.handleOpenSearch("commits")
} }
func (gui *Gui) handleGotoBottomForCommitsPanel(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleGotoBottomForCommitsPanel() error {
// we usually lazyload these commits but now that we're searching we need to load them now // we usually lazyload these commits but now that we're searching we need to load them now
if gui.State.Panels.Commits.LimitCommits { if gui.State.Panels.Commits.LimitCommits {
gui.State.Panels.Commits.LimitCommits = false gui.State.Panels.Commits.LimitCommits = false
@ -579,7 +578,7 @@ func (gui *Gui) handleGotoBottomForCommitsPanel(g *gocui.Gui, v *gocui.View) err
for _, context := range gui.getListContexts() { for _, context := range gui.getListContexts() {
if context.ViewName == "commits" { if context.ViewName == "commits" {
return context.handleGotoBottom(g, v) return context.handleGotoBottom()
} }
} }

View File

@ -317,6 +317,12 @@ func (gui *Gui) setKeyBindings(opts createPopupPanelOpts) error {
return nil return nil
} }
func (gui *Gui) wrappedHandler(f func() error) func(g *gocui.Gui, v *gocui.View) error {
return func(g *gocui.Gui, v *gocui.View) error {
return f()
}
}
func (gui *Gui) createErrorPanel(message string) error { func (gui *Gui) createErrorPanel(message string) error {
colorFunction := color.New(color.FgRed).SprintFunc() colorFunction := color.New(color.FgRed).SprintFunc()
coloredMessage := colorFunction(strings.TrimSpace(message)) coloredMessage := colorFunction(strings.TrimSpace(message))

View File

@ -39,10 +39,11 @@ func (gui *Gui) promptUserForCredential(passOrUname string) string {
return userInput + "\n" return userInput + "\n"
} }
func (gui *Gui) handleSubmitCredential(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleSubmitCredential() error {
message := gui.trimmedContent(v) credentialsView := gui.getCredentialsView()
message := gui.trimmedContent(credentialsView)
gui.credentials <- message gui.credentials <- message
gui.clearEditorView(v) gui.clearEditorView(credentialsView)
if err := gui.returnFromContext(); err != nil { if err := gui.returnFromContext(); err != nil {
return err return err
} }
@ -50,7 +51,7 @@ func (gui *Gui) handleSubmitCredential(g *gocui.Gui, v *gocui.View) error {
return gui.refreshSidePanels(refreshOptions{}) return gui.refreshSidePanels(refreshOptions{})
} }
func (gui *Gui) handleCloseCredentialsView(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCloseCredentialsView() error {
gui.credentials <- "" gui.credentials <- ""
return gui.returnFromContext() return gui.returnFromContext()
} }

View File

@ -198,7 +198,7 @@ func (gui *Gui) GetCustomCommandKeybindings() []*Binding {
Contexts: contexts, Contexts: contexts,
Key: gui.getKey(customCommand.Key), Key: gui.getKey(customCommand.Key),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleCustomCommandKeybinding(customCommand)), Handler: gui.handleCustomCommandKeybinding(customCommand),
Description: description, Description: description,
}) })
} }

View File

@ -3,8 +3,6 @@ package gui
import ( import (
"fmt" "fmt"
"strings" "strings"
"github.com/jesseduffield/gocui"
) )
func (gui *Gui) exitDiffMode() error { func (gui *Gui) exitDiffMode() error {
@ -102,7 +100,7 @@ func (gui *Gui) diffStr() string {
return output return output
} }
func (gui *Gui) handleCreateDiffingMenuPanel(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateDiffingMenuPanel() error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }

View File

@ -183,7 +183,7 @@ func (gui *Gui) stageSelectedFile() error {
return gui.GitCommand.StageFile(file.Name) return gui.GitCommand.StageFile(file.Name)
} }
func (gui *Gui) handleEnterFile(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleEnterFile() error {
return gui.enterFile(false, -1) return gui.enterFile(false, -1)
} }
@ -277,7 +277,7 @@ func (gui *Gui) focusAndSelectFile() error {
return gui.selectFile(false) return gui.selectFile(false)
} }
func (gui *Gui) handleStageAll(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleStageAll() error {
var err error var err error
if gui.allFilesStaged() { if gui.allFilesStaged() {
err = gui.GitCommand.UnstageAll() err = gui.GitCommand.UnstageAll()
@ -350,7 +350,7 @@ func (gui *Gui) handleIgnoreFile() error {
return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}) return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}})
} }
func (gui *Gui) handleWIPCommitPress(g *gocui.Gui, filesView *gocui.View) error { func (gui *Gui) handleWIPCommitPress() error {
skipHookPreifx := gui.Config.GetUserConfig().Git.SkipHookPrefix skipHookPreifx := gui.Config.GetUserConfig().Git.SkipHookPrefix
if skipHookPreifx == "" { if skipHookPreifx == "" {
return gui.createErrorPanel(gui.Tr.SkipHookPrefixNotConfigured) return gui.createErrorPanel(gui.Tr.SkipHookPrefixNotConfigured)
@ -500,7 +500,7 @@ func (gui *Gui) editFile(filename string) error {
return err return err
} }
func (gui *Gui) handleFileEdit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleFileEdit() error {
node := gui.getSelectedFileNode() node := gui.getSelectedFileNode()
if node == nil { if node == nil {
return nil return nil
@ -513,7 +513,7 @@ func (gui *Gui) handleFileEdit(g *gocui.Gui, v *gocui.View) error {
return gui.editFile(node.GetPath()) return gui.editFile(node.GetPath())
} }
func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleFileOpen() error {
node := gui.getSelectedFileNode() node := gui.getSelectedFileNode()
if node == nil { if node == nil {
return nil return nil
@ -522,7 +522,7 @@ func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error {
return gui.openFile(node.GetPath()) return gui.openFile(node.GetPath())
} }
func (gui *Gui) handleRefreshFiles(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRefreshFiles() error {
return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}) return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}})
} }
@ -615,7 +615,7 @@ func (gui *Gui) findNewSelectedIdx(prevNodes []*filetree.FileNode, currNodes []*
return -1 return -1
} }
func (gui *Gui) handlePullFiles(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handlePullFiles() error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }
@ -706,7 +706,7 @@ func (gui *Gui) pullWithMode(mode string, opts PullFilesOptions) error {
} }
} }
func (gui *Gui) pushWithForceFlag(v *gocui.View, force bool, upstream string, args string) error { func (gui *Gui) pushWithForceFlag(force bool, upstream string, args string) error {
if err := gui.createLoaderPanel(gui.Tr.PushWait); err != nil { if err := gui.createLoaderPanel(gui.Tr.PushWait); err != nil {
return err return err
} }
@ -723,7 +723,7 @@ func (gui *Gui) pushWithForceFlag(v *gocui.View, force bool, upstream string, ar
title: gui.Tr.ForcePush, title: gui.Tr.ForcePush,
prompt: gui.Tr.ForcePushPrompt, prompt: gui.Tr.ForcePushPrompt,
handleConfirm: func() error { handleConfirm: func() error {
return gui.pushWithForceFlag(v, true, upstream, args) return gui.pushWithForceFlag(true, upstream, args)
}, },
}) })
return return
@ -734,7 +734,7 @@ func (gui *Gui) pushWithForceFlag(v *gocui.View, force bool, upstream string, ar
return nil return nil
} }
func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) pushFiles() error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }
@ -750,23 +750,23 @@ func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error {
} }
for branchName, branch := range conf.Branches { for branchName, branch := range conf.Branches {
if branchName == currentBranch.Name { if branchName == currentBranch.Name {
return gui.pushWithForceFlag(v, false, "", fmt.Sprintf("%s %s", branch.Remote, branchName)) return gui.pushWithForceFlag(false, "", fmt.Sprintf("%s %s", branch.Remote, branchName))
} }
} }
if gui.GitCommand.PushToCurrent { if gui.GitCommand.PushToCurrent {
return gui.pushWithForceFlag(v, false, "", "--set-upstream") return gui.pushWithForceFlag(false, "", "--set-upstream")
} else { } else {
return gui.prompt(promptOpts{ return gui.prompt(promptOpts{
title: gui.Tr.EnterUpstream, title: gui.Tr.EnterUpstream,
initialContent: "origin " + currentBranch.Name, initialContent: "origin " + currentBranch.Name,
handleConfirm: func(response string) error { handleConfirm: func(response string) error {
return gui.pushWithForceFlag(v, false, response, "") return gui.pushWithForceFlag(false, response, "")
}, },
}) })
} }
} else if currentBranch.Pullables == "0" { } else if currentBranch.Pullables == "0" {
return gui.pushWithForceFlag(v, false, "", "") return gui.pushWithForceFlag(false, "", "")
} }
forcePushDisabled := gui.Config.GetUserConfig().Git.DisableForcePushing forcePushDisabled := gui.Config.GetUserConfig().Git.DisableForcePushing
@ -778,7 +778,7 @@ func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error {
title: gui.Tr.ForcePush, title: gui.Tr.ForcePush,
prompt: gui.Tr.ForcePushPrompt, prompt: gui.Tr.ForcePushPrompt,
handleConfirm: func() error { handleConfirm: func() error {
return gui.pushWithForceFlag(v, true, "", "") return gui.pushWithForceFlag(true, "", "")
}, },
}) })
} }
@ -812,7 +812,7 @@ func (gui *Gui) anyFilesWithMergeConflicts() bool {
return false return false
} }
func (gui *Gui) handleCustomCommand(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCustomCommand() error {
return gui.prompt(promptOpts{ return gui.prompt(promptOpts{
title: gui.Tr.CustomCommand, title: gui.Tr.CustomCommand,
handleConfirm: func(command string) error { handleConfirm: func(command string) error {
@ -822,7 +822,7 @@ func (gui *Gui) handleCustomCommand(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCreateStashMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateStashMenu() error {
menuItems := []*menuItem{ menuItems := []*menuItem{
{ {
displayString: gui.Tr.LcStashAllChanges, displayString: gui.Tr.LcStashAllChanges,
@ -841,11 +841,11 @@ func (gui *Gui) handleCreateStashMenu(g *gocui.Gui, v *gocui.View) error {
return gui.createMenu(gui.Tr.LcStashOptions, menuItems, createMenuOptions{showCancel: true}) return gui.createMenu(gui.Tr.LcStashOptions, menuItems, createMenuOptions{showCancel: true})
} }
func (gui *Gui) handleStashChanges(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleStashChanges() error {
return gui.handleStashSave(gui.GitCommand.StashSave) return gui.handleStashSave(gui.GitCommand.StashSave)
} }
func (gui *Gui) handleCreateResetToUpstreamMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateResetToUpstreamMenu() error {
return gui.createResetMenu("@{upstream}") return gui.createResetMenu("@{upstream}")
} }

View File

@ -3,17 +3,15 @@ package gui
import ( import (
"fmt" "fmt"
"strings" "strings"
"github.com/jesseduffield/gocui"
) )
func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateFilteringMenuPanel() error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }
fileName := "" fileName := ""
switch v.Name() { switch gui.currentViewName() {
case "files": case "files":
node := gui.getSelectedFileNode() node := gui.getSelectedFileNode()
if node != nil { if node != nil {

View File

@ -5,7 +5,6 @@ import (
"regexp" "regexp"
"strings" "strings"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -37,7 +36,7 @@ func (gui *Gui) gitFlowFinishBranch(gitFlowConfig string, branchName string) err
return gui.Errors.ErrSubProcess return gui.Errors.ErrSubProcess
} }
func (gui *Gui) handleCreateGitFlowMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateGitFlowMenu() error {
branch := gui.getSelectedBranch() branch := gui.getSelectedBranch()
if branch == nil { if branch == nil {
return nil return nil

View File

@ -5,7 +5,6 @@ import (
"math" "math"
"strings" "strings"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -48,13 +47,13 @@ func prevIntInCycle(sl []WindowMaximisation, current WindowMaximisation) WindowM
return sl[len(sl)-1] return sl[len(sl)-1]
} }
func (gui *Gui) nextScreenMode(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) nextScreenMode() error {
gui.State.ScreenMode = nextIntInCycle([]WindowMaximisation{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode) gui.State.ScreenMode = nextIntInCycle([]WindowMaximisation{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode)
return gui.rerenderViewsWithScreenModeDependentContent() return gui.rerenderViewsWithScreenModeDependentContent()
} }
func (gui *Gui) prevScreenMode(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) prevScreenMode() error {
gui.State.ScreenMode = prevIntInCycle([]WindowMaximisation{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode) gui.State.ScreenMode = prevIntInCycle([]WindowMaximisation{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode)
return gui.rerenderViewsWithScreenModeDependentContent() return gui.rerenderViewsWithScreenModeDependentContent()
@ -121,70 +120,80 @@ func (gui *Gui) scrollDownMain() error {
return gui.scrollDownView("main") return gui.scrollDownView("main")
} }
func (gui *Gui) scrollUpSecondary(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) scrollUpSecondary() error {
return gui.scrollUpView("secondary") return gui.scrollUpView("secondary")
} }
func (gui *Gui) scrollDownSecondary(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) scrollDownSecondary() error {
return gui.scrollDownView("secondary") return gui.scrollDownView("secondary")
} }
func (gui *Gui) scrollUpConfirmationPanel(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) scrollUpConfirmationPanel() error {
if v.Editable { view := gui.getConfirmationView()
if view != nil || view.Editable {
return nil return nil
} }
return gui.scrollUpView("confirmation") return gui.scrollUpView("confirmation")
} }
func (gui *Gui) scrollDownConfirmationPanel(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) scrollDownConfirmationPanel() error {
if v.Editable { view := gui.getConfirmationView()
if view != nil || view.Editable {
return nil return nil
} }
return gui.scrollDownView("confirmation") return gui.scrollDownView("confirmation")
} }
func (gui *Gui) handleRefresh(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRefresh() error {
return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
} }
func (gui *Gui) handleMouseDownMain(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleMouseDownMain() error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }
switch g.CurrentView().Name() { view := gui.getMainView()
switch gui.g.CurrentView().Name() {
case "files": case "files":
// set filename, set primary/secondary selected, set line number, then switch context // set filename, set primary/secondary selected, set line number, then switch context
// I'll need to know it was changed though. // I'll need to know it was changed though.
// Could I pass something along to the context change? // Could I pass something along to the context change?
return gui.enterFile(false, v.SelectedLineIdx()) return gui.enterFile(false, view.SelectedLineIdx())
case "commitFiles": case "commitFiles":
return gui.enterCommitFile(v.SelectedLineIdx()) return gui.enterCommitFile(view.SelectedLineIdx())
} }
return nil return nil
} }
func (gui *Gui) handleMouseDownSecondary(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleMouseDownSecondary() error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }
switch g.CurrentView().Name() { view := gui.getSecondaryView()
switch gui.g.CurrentView().Name() {
case "files": case "files":
return gui.enterFile(true, v.SelectedLineIdx()) return gui.enterFile(true, view.SelectedLineIdx())
} }
return nil return nil
} }
func (gui *Gui) handleInfoClick(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleInfoClick() error {
if !gui.g.Mouse { if !gui.g.Mouse {
return nil return nil
} }
cx, _ := v.Cursor() view := gui.getInformationView()
width, _ := v.Size()
cx, _ := view.Cursor()
width, _ := view.Size()
for _, mode := range gui.modeStatuses() { for _, mode := range gui.modeStatuses() {
if mode.isActive() { if mode.isActive() {

View File

@ -16,7 +16,7 @@ import (
type Binding struct { type Binding struct {
ViewName string ViewName string
Contexts []string Contexts []string
Handler func(*gocui.Gui, *gocui.View) error Handler func() error
Key interface{} // FIXME: find out how to get `gocui.Key | rune` Key interface{} // FIXME: find out how to get `gocui.Key | rune`
Modifier gocui.Modifier Modifier gocui.Modifier
Description string Description string
@ -208,7 +208,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.Quit), Key: gui.getKey(config.Universal.Quit),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleQuit), Handler: gui.handleQuit,
}, },
{ {
ViewName: "", ViewName: "",
@ -220,7 +220,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.QuitAlt1), Key: gui.getKey(config.Universal.QuitAlt1),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleQuit), Handler: gui.handleQuit,
}, },
{ {
ViewName: "", ViewName: "",
@ -231,14 +231,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{ {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.ScrollUpMain), Key: gui.getKey(config.Universal.ScrollUpMain),
Handler: gui.wrappedHandler(gui.scrollUpMain), Handler: gui.scrollUpMain,
Alternative: "fn+up", Alternative: "fn+up",
Description: gui.Tr.LcScrollUpMainPanel, Description: gui.Tr.LcScrollUpMainPanel,
}, },
{ {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.ScrollDownMain), Key: gui.getKey(config.Universal.ScrollDownMain),
Handler: gui.wrappedHandler(gui.scrollDownMain), Handler: gui.scrollDownMain,
Alternative: "fn+down", Alternative: "fn+down",
Description: gui.Tr.LcScrollDownMainPanel, Description: gui.Tr.LcScrollDownMainPanel,
}, },
@ -246,30 +246,30 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.ScrollUpMainAlt1), Key: gui.getKey(config.Universal.ScrollUpMainAlt1),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollUpMain), Handler: gui.scrollUpMain,
}, },
{ {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.ScrollDownMainAlt1), Key: gui.getKey(config.Universal.ScrollDownMainAlt1),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollDownMain), Handler: gui.scrollDownMain,
}, },
{ {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.ScrollUpMainAlt2), Key: gui.getKey(config.Universal.ScrollUpMainAlt2),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollUpMain), Handler: gui.scrollUpMain,
}, },
{ {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.ScrollDownMainAlt2), Key: gui.getKey(config.Universal.ScrollDownMainAlt2),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollDownMain), Handler: gui.scrollDownMain,
}, },
{ {
ViewName: "", ViewName: "",
Key: gui.getKey(config.Universal.CreateRebaseOptionsMenu), Key: gui.getKey(config.Universal.CreateRebaseOptionsMenu),
Handler: gui.wrappedHandler(gui.handleCreateRebaseOptionsMenu), Handler: gui.handleCreateRebaseOptionsMenu,
Description: gui.Tr.ViewMergeRebaseOptions, Description: gui.Tr.ViewMergeRebaseOptions,
OpensMenu: true, OpensMenu: true,
}, },
@ -362,20 +362,20 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{ {
ViewName: "status", ViewName: "status",
Key: gui.getKey(config.Status.RecentRepos), Key: gui.getKey(config.Status.RecentRepos),
Handler: gui.wrappedHandler(gui.handleCreateRecentReposMenu), Handler: gui.handleCreateRecentReposMenu,
Description: gui.Tr.SwitchRepo, Description: gui.Tr.SwitchRepo,
}, },
{ {
ViewName: "status", ViewName: "status",
Key: gui.getKey(config.Status.AllBranchesLogGraph), Key: gui.getKey(config.Status.AllBranchesLogGraph),
Handler: gui.wrappedHandler(gui.handleShowAllBranchLogs), Handler: gui.handleShowAllBranchLogs,
Description: gui.Tr.LcAllBranchesLogGraph, Description: gui.Tr.LcAllBranchesLogGraph,
}, },
{ {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Files.CommitChanges), Key: gui.getKey(config.Files.CommitChanges),
Handler: gui.wrappedHandler(gui.handleCommitPress), Handler: gui.handleCommitPress,
Description: gui.Tr.CommitChanges, Description: gui.Tr.CommitChanges,
}, },
{ {
@ -389,28 +389,28 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Files.AmendLastCommit), Key: gui.getKey(config.Files.AmendLastCommit),
Handler: gui.wrappedHandler(gui.handleAmendCommitPress), Handler: gui.handleAmendCommitPress,
Description: gui.Tr.AmendLastCommit, Description: gui.Tr.AmendLastCommit,
}, },
{ {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Files.CommitChangesWithEditor), Key: gui.getKey(config.Files.CommitChangesWithEditor),
Handler: gui.wrappedHandler(gui.handleCommitEditorPress), Handler: gui.handleCommitEditorPress,
Description: gui.Tr.CommitChangesWithEditor, Description: gui.Tr.CommitChangesWithEditor,
}, },
{ {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Select), Key: gui.getKey(config.Universal.Select),
Handler: gui.wrappedHandler(gui.handleFilePress), Handler: gui.handleFilePress,
Description: gui.Tr.LcToggleStaged, Description: gui.Tr.LcToggleStaged,
}, },
{ {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Remove), Key: gui.getKey(config.Universal.Remove),
Handler: gui.wrappedHandler(gui.handleCreateDiscardMenu), Handler: gui.handleCreateDiscardMenu,
Description: gui.Tr.LcViewDiscardOptions, Description: gui.Tr.LcViewDiscardOptions,
OpensMenu: true, OpensMenu: true,
}, },
@ -432,7 +432,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Files.IgnoreFile), Key: gui.getKey(config.Files.IgnoreFile),
Handler: gui.wrappedHandler(gui.handleIgnoreFile), Handler: gui.handleIgnoreFile,
Description: gui.Tr.LcIgnoreFile, Description: gui.Tr.LcIgnoreFile,
}, },
{ {
@ -490,7 +490,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.CopyToClipboard), Key: gui.getKey(config.Universal.CopyToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedSideContextItemToClipboard), Handler: gui.handleCopySelectedSideContextItemToClipboard,
Description: gui.Tr.LcCopyFileNameToClipboard, Description: gui.Tr.LcCopyFileNameToClipboard,
}, },
{ {
@ -511,7 +511,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "files", ViewName: "files",
Contexts: []string{FILES_CONTEXT_KEY}, Contexts: []string{FILES_CONTEXT_KEY},
Key: gui.getKey(config.Files.ToggleTreeView), Key: gui.getKey(config.Files.ToggleTreeView),
Handler: gui.wrappedHandler(gui.handleToggleFileTreeView), Handler: gui.handleToggleFileTreeView,
Description: gui.Tr.LcToggleTreeView, Description: gui.Tr.LcToggleTreeView,
}, },
{ {
@ -553,7 +553,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "branches", ViewName: "branches",
Contexts: []string{LOCAL_BRANCHES_CONTEXT_KEY}, Contexts: []string{LOCAL_BRANCHES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.New), Key: gui.getKey(config.Universal.New),
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem), Handler: gui.handleNewBranchOffCurrentItem,
Description: gui.Tr.LcNewBranch, Description: gui.Tr.LcNewBranch,
}, },
{ {
@ -611,14 +611,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "branches", ViewName: "branches",
Contexts: []string{LOCAL_BRANCHES_CONTEXT_KEY}, Contexts: []string{LOCAL_BRANCHES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.CopyToClipboard), Key: gui.getKey(config.Universal.CopyToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedSideContextItemToClipboard), Handler: gui.handleCopySelectedSideContextItemToClipboard,
Description: gui.Tr.LcCopyBranchNameToClipboard, Description: gui.Tr.LcCopyBranchNameToClipboard,
}, },
{ {
ViewName: "branches", ViewName: "branches",
Contexts: []string{LOCAL_BRANCHES_CONTEXT_KEY}, Contexts: []string{LOCAL_BRANCHES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Handler: gui.wrappedHandler(gui.handleSwitchToSubCommits), Handler: gui.handleSwitchToSubCommits,
Description: gui.Tr.LcViewCommits, Description: gui.Tr.LcViewCommits,
}, },
{ {
@ -661,7 +661,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "branches", ViewName: "branches",
Contexts: []string{TAGS_CONTEXT_KEY}, Contexts: []string{TAGS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Handler: gui.wrappedHandler(gui.handleSwitchToSubCommits), Handler: gui.handleSwitchToSubCommits,
Description: gui.Tr.LcViewCommits, Description: gui.Tr.LcViewCommits,
}, },
{ {
@ -683,7 +683,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "branches", ViewName: "branches",
Contexts: []string{REMOTE_BRANCHES_CONTEXT_KEY}, Contexts: []string{REMOTE_BRANCHES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Handler: gui.wrappedHandler(gui.handleSwitchToSubCommits), Handler: gui.handleSwitchToSubCommits,
Description: gui.Tr.LcViewCommits, Description: gui.Tr.LcViewCommits,
}, },
{ {
@ -795,35 +795,35 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "commits", ViewName: "commits",
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.CherryPickCopy), Key: gui.getKey(config.Commits.CherryPickCopy),
Handler: gui.wrappedHandler(gui.handleCopyCommit), Handler: gui.handleCopyCommit,
Description: gui.Tr.LcCherryPickCopy, Description: gui.Tr.LcCherryPickCopy,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.CopyToClipboard), Key: gui.getKey(config.Universal.CopyToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedSideContextItemToClipboard), Handler: gui.handleCopySelectedSideContextItemToClipboard,
Description: gui.Tr.LcCopyCommitShaToClipboard, Description: gui.Tr.LcCopyCommitShaToClipboard,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.CherryPickCopyRange), Key: gui.getKey(config.Commits.CherryPickCopyRange),
Handler: gui.wrappedHandler(gui.handleCopyCommitRange), Handler: gui.handleCopyCommitRange,
Description: gui.Tr.LcCherryPickCopyRange, Description: gui.Tr.LcCherryPickCopyRange,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.PasteCommits), Key: gui.getKey(config.Commits.PasteCommits),
Handler: gui.wrappedHandler(gui.HandlePasteCommits), Handler: gui.HandlePasteCommits,
Description: gui.Tr.LcPasteCommits, Description: gui.Tr.LcPasteCommits,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Handler: gui.wrappedHandler(gui.handleViewCommitFiles), Handler: gui.handleViewCommitFiles,
Description: gui.Tr.LcViewCommitFiles, Description: gui.Tr.LcViewCommitFiles,
}, },
{ {
@ -838,7 +838,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.New), Key: gui.getKey(config.Universal.New),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem), Handler: gui.handleNewBranchOffCurrentItem,
Description: gui.Tr.LcCreateNewBranchFromCommit, Description: gui.Tr.LcCreateNewBranchFromCommit,
}, },
{ {
@ -852,21 +852,21 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "commits", ViewName: "commits",
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.ResetCherryPick), Key: gui.getKey(config.Commits.ResetCherryPick),
Handler: gui.wrappedHandler(gui.exitCherryPickingMode), Handler: gui.exitCherryPickingMode,
Description: gui.Tr.LcResetCherryPick, Description: gui.Tr.LcResetCherryPick,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY}, Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.CopyCommitMessageToClipboard), Key: gui.getKey(config.Commits.CopyCommitMessageToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedCommitMessageToClipboard), Handler: gui.handleCopySelectedCommitMessageToClipboard,
Description: gui.Tr.LcCopyCommitMessageToClipboard, Description: gui.Tr.LcCopyCommitMessageToClipboard,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY}, Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Handler: gui.wrappedHandler(gui.handleViewReflogCommitFiles), Handler: gui.handleViewReflogCommitFiles,
Description: gui.Tr.LcViewCommitFiles, Description: gui.Tr.LcViewCommitFiles,
}, },
{ {
@ -888,35 +888,35 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "commits", ViewName: "commits",
Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY}, Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.CherryPickCopy), Key: gui.getKey(config.Commits.CherryPickCopy),
Handler: gui.wrappedHandler(gui.handleCopyCommit), Handler: gui.handleCopyCommit,
Description: gui.Tr.LcCherryPickCopy, Description: gui.Tr.LcCherryPickCopy,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY}, Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.CherryPickCopyRange), Key: gui.getKey(config.Commits.CherryPickCopyRange),
Handler: gui.wrappedHandler(gui.handleCopyCommitRange), Handler: gui.handleCopyCommitRange,
Description: gui.Tr.LcCherryPickCopyRange, Description: gui.Tr.LcCherryPickCopyRange,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY}, Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.ResetCherryPick), Key: gui.getKey(config.Commits.ResetCherryPick),
Handler: gui.wrappedHandler(gui.exitCherryPickingMode), Handler: gui.exitCherryPickingMode,
Description: gui.Tr.LcResetCherryPick, Description: gui.Tr.LcResetCherryPick,
}, },
{ {
ViewName: "commits", ViewName: "commits",
Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY}, Contexts: []string{REFLOG_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.CopyToClipboard), Key: gui.getKey(config.Universal.CopyToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedSideContextItemToClipboard), Handler: gui.handleCopySelectedSideContextItemToClipboard,
Description: gui.Tr.LcCopyCommitShaToClipboard, Description: gui.Tr.LcCopyCommitShaToClipboard,
}, },
{ {
ViewName: "branches", ViewName: "branches",
Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Handler: gui.wrappedHandler(gui.handleViewSubCommitFiles), Handler: gui.handleViewSubCommitFiles,
Description: gui.Tr.LcViewCommitFiles, Description: gui.Tr.LcViewCommitFiles,
}, },
{ {
@ -930,7 +930,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "branches", ViewName: "branches",
Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.ViewResetOptions), Key: gui.getKey(config.Commits.ViewResetOptions),
Handler: gui.wrappedHandler(gui.handleCreateSubCommitResetMenu), Handler: gui.handleCreateSubCommitResetMenu,
Description: gui.Tr.LcViewResetOptions, Description: gui.Tr.LcViewResetOptions,
OpensMenu: true, OpensMenu: true,
}, },
@ -938,41 +938,41 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "branches", ViewName: "branches",
Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.New), Key: gui.getKey(config.Universal.New),
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem), Handler: gui.handleNewBranchOffCurrentItem,
Description: gui.Tr.LcNewBranch, Description: gui.Tr.LcNewBranch,
}, },
{ {
ViewName: "branches", ViewName: "branches",
Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.CherryPickCopy), Key: gui.getKey(config.Commits.CherryPickCopy),
Handler: gui.wrappedHandler(gui.handleCopyCommit), Handler: gui.handleCopyCommit,
Description: gui.Tr.LcCherryPickCopy, Description: gui.Tr.LcCherryPickCopy,
}, },
{ {
ViewName: "branches", ViewName: "branches",
Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.CherryPickCopyRange), Key: gui.getKey(config.Commits.CherryPickCopyRange),
Handler: gui.wrappedHandler(gui.handleCopyCommitRange), Handler: gui.handleCopyCommitRange,
Description: gui.Tr.LcCherryPickCopyRange, Description: gui.Tr.LcCherryPickCopyRange,
}, },
{ {
ViewName: "branches", ViewName: "branches",
Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Commits.ResetCherryPick), Key: gui.getKey(config.Commits.ResetCherryPick),
Handler: gui.wrappedHandler(gui.exitCherryPickingMode), Handler: gui.exitCherryPickingMode,
Description: gui.Tr.LcResetCherryPick, Description: gui.Tr.LcResetCherryPick,
}, },
{ {
ViewName: "branches", ViewName: "branches",
Contexts: []string{SUB_COMMITS_CONTEXT_KEY}, Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
Key: gui.getKey(config.Universal.CopyToClipboard), Key: gui.getKey(config.Universal.CopyToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedSideContextItemToClipboard), Handler: gui.handleCopySelectedSideContextItemToClipboard,
Description: gui.Tr.LcCopyCommitShaToClipboard, Description: gui.Tr.LcCopyCommitShaToClipboard,
}, },
{ {
ViewName: "stash", ViewName: "stash",
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Handler: gui.wrappedHandler(gui.handleViewStashFiles), Handler: gui.handleViewStashFiles,
Description: gui.Tr.LcViewStashFiles, Description: gui.Tr.LcViewStashFiles,
}, },
{ {
@ -996,7 +996,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{ {
ViewName: "stash", ViewName: "stash",
Key: gui.getKey(config.Universal.New), Key: gui.getKey(config.Universal.New),
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem), Handler: gui.handleNewBranchOffCurrentItem,
Description: gui.Tr.LcNewBranch, Description: gui.Tr.LcNewBranch,
}, },
{ {
@ -1038,7 +1038,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{ {
ViewName: "commitFiles", ViewName: "commitFiles",
Key: gui.getKey(config.Universal.CopyToClipboard), Key: gui.getKey(config.Universal.CopyToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedSideContextItemToClipboard), Handler: gui.handleCopySelectedSideContextItemToClipboard,
Description: gui.Tr.LcCopyCommitFileNameToClipboard, Description: gui.Tr.LcCopyCommitFileNameToClipboard,
}, },
{ {
@ -1080,7 +1080,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{ {
ViewName: "commitFiles", ViewName: "commitFiles",
Key: gui.getKey(config.Files.ToggleTreeView), Key: gui.getKey(config.Files.ToggleTreeView),
Handler: gui.wrappedHandler(gui.handleToggleCommitFileTreeView), Handler: gui.handleToggleCommitFileTreeView,
Description: gui.Tr.LcToggleTreeView, Description: gui.Tr.LcToggleTreeView,
}, },
{ {
@ -1127,7 +1127,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_NORMAL_CONTEXT_KEY}, Contexts: []string{MAIN_NORMAL_CONTEXT_KEY},
Key: gocui.MouseWheelDown, Key: gocui.MouseWheelDown,
Handler: gui.wrappedHandler(gui.scrollDownMain), Handler: gui.scrollDownMain,
Description: gui.Tr.ScrollDown, Description: gui.Tr.ScrollDown,
Alternative: "fn+up", Alternative: "fn+up",
}, },
@ -1135,7 +1135,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_NORMAL_CONTEXT_KEY}, Contexts: []string{MAIN_NORMAL_CONTEXT_KEY},
Key: gocui.MouseWheelUp, Key: gocui.MouseWheelUp,
Handler: gui.wrappedHandler(gui.scrollUpMain), Handler: gui.scrollUpMain,
Description: gui.Tr.ScrollUp, Description: gui.Tr.ScrollUp,
Alternative: "fn+down", Alternative: "fn+down",
}, },
@ -1157,56 +1157,56 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Return), Key: gui.getKey(config.Universal.Return),
Handler: gui.wrappedHandler(gui.handleStagingEscape), Handler: gui.handleStagingEscape,
Description: gui.Tr.ReturnToFilesPanel, Description: gui.Tr.ReturnToFilesPanel,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Select), Key: gui.getKey(config.Universal.Select),
Handler: gui.wrappedHandler(gui.handleToggleStagedSelection), Handler: gui.handleToggleStagedSelection,
Description: gui.Tr.StageSelection, Description: gui.Tr.StageSelection,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Remove), Key: gui.getKey(config.Universal.Remove),
Handler: gui.wrappedHandler(gui.handleResetSelection), Handler: gui.handleResetSelection,
Description: gui.Tr.ResetSelection, Description: gui.Tr.ResetSelection,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.TogglePanel), Key: gui.getKey(config.Universal.TogglePanel),
Handler: gui.wrappedHandler(gui.handleTogglePanel), Handler: gui.handleTogglePanel,
Description: gui.Tr.TogglePanel, Description: gui.Tr.TogglePanel,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Return), Key: gui.getKey(config.Universal.Return),
Handler: gui.wrappedHandler(gui.handleEscapePatchBuildingPanel), Handler: gui.handleEscapePatchBuildingPanel,
Description: gui.Tr.ExitLineByLineMode, Description: gui.Tr.ExitLineByLineMode,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.OpenFile), Key: gui.getKey(config.Universal.OpenFile),
Handler: gui.wrappedHandler(gui.handleOpenFileAtLine), Handler: gui.handleOpenFileAtLine,
Description: gui.Tr.LcOpenFile, Description: gui.Tr.LcOpenFile,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevItem), Key: gui.getKey(config.Universal.PrevItem),
Handler: gui.wrappedHandler(gui.handleSelectPrevLine), Handler: gui.handleSelectPrevLine,
Description: gui.Tr.PrevLine, Description: gui.Tr.PrevLine,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextItem), Key: gui.getKey(config.Universal.NextItem),
Handler: gui.wrappedHandler(gui.handleSelectNextLine), Handler: gui.handleSelectNextLine,
Description: gui.Tr.NextLine, Description: gui.Tr.NextLine,
}, },
{ {
@ -1214,34 +1214,34 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevItemAlt), Key: gui.getKey(config.Universal.PrevItemAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectPrevLine), Handler: gui.handleSelectPrevLine,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextItemAlt), Key: gui.getKey(config.Universal.NextItemAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectNextLine), Handler: gui.handleSelectNextLine,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gocui.MouseWheelUp, Key: gocui.MouseWheelUp,
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollUpMain), Handler: gui.scrollUpMain,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gocui.MouseWheelDown, Key: gocui.MouseWheelDown,
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollDownMain), Handler: gui.scrollDownMain,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevBlock), Key: gui.getKey(config.Universal.PrevBlock),
Handler: gui.wrappedHandler(gui.handleSelectPrevHunk), Handler: gui.handleSelectPrevHunk,
Description: gui.Tr.PrevHunk, Description: gui.Tr.PrevHunk,
}, },
{ {
@ -1249,13 +1249,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevBlockAlt), Key: gui.getKey(config.Universal.PrevBlockAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectPrevHunk), Handler: gui.handleSelectPrevHunk,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextBlock), Key: gui.getKey(config.Universal.NextBlock),
Handler: gui.wrappedHandler(gui.handleSelectNextHunk), Handler: gui.handleSelectNextHunk,
Description: gui.Tr.NextHunk, Description: gui.Tr.NextHunk,
}, },
{ {
@ -1263,7 +1263,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextBlockAlt), Key: gui.getKey(config.Universal.NextBlockAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectNextHunk), Handler: gui.handleSelectNextHunk,
}, },
{ {
ViewName: "main", ViewName: "main",
@ -1284,7 +1284,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextPage), Key: gui.getKey(config.Universal.NextPage),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleLineByLineNextPage), Handler: gui.handleLineByLineNextPage,
Description: gui.Tr.LcNextPage, Description: gui.Tr.LcNextPage,
Tag: "navigation", Tag: "navigation",
}, },
@ -1293,7 +1293,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevPage), Key: gui.getKey(config.Universal.PrevPage),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleLineByLinePrevPage), Handler: gui.handleLineByLinePrevPage,
Description: gui.Tr.LcPrevPage, Description: gui.Tr.LcPrevPage,
Tag: "navigation", Tag: "navigation",
}, },
@ -1302,7 +1302,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GotoTop), Key: gui.getKey(config.Universal.GotoTop),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleLineByLineGotoTop), Handler: gui.handleLineByLineGotoTop,
Description: gui.Tr.LcGotoTop, Description: gui.Tr.LcGotoTop,
Tag: "navigation", Tag: "navigation",
}, },
@ -1311,7 +1311,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GotoBottom), Key: gui.getKey(config.Universal.GotoBottom),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleLineByLineGotoBottom), Handler: gui.handleLineByLineGotoBottom,
Description: gui.Tr.LcGotoBottom, Description: gui.Tr.LcGotoBottom,
Tag: "navigation", Tag: "navigation",
}, },
@ -1319,7 +1319,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.StartSearch), Key: gui.getKey(config.Universal.StartSearch),
Handler: gui.handleOpenSearch, Handler: func() error { return gui.handleOpenSearch("main") },
Description: gui.Tr.LcStartSearch, Description: gui.Tr.LcStartSearch,
Tag: "navigation", Tag: "navigation",
}, },
@ -1327,14 +1327,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Select), Key: gui.getKey(config.Universal.Select),
Handler: gui.wrappedHandler(gui.handleToggleSelectionForPatch), Handler: gui.handleToggleSelectionForPatch,
Description: gui.Tr.ToggleSelectionForPatch, Description: gui.Tr.ToggleSelectionForPatch,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Main.ToggleDragSelect), Key: gui.getKey(config.Main.ToggleDragSelect),
Handler: gui.wrappedHandler(gui.handleToggleSelectRange), Handler: gui.handleToggleSelectRange,
Description: gui.Tr.ToggleDragSelect, Description: gui.Tr.ToggleDragSelect,
}, },
// Alias 'V' -> 'v' // Alias 'V' -> 'v'
@ -1342,14 +1342,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Main.ToggleDragSelectAlt), Key: gui.getKey(config.Main.ToggleDragSelectAlt),
Handler: gui.wrappedHandler(gui.handleToggleSelectRange), Handler: gui.handleToggleSelectRange,
Description: gui.Tr.ToggleDragSelect, Description: gui.Tr.ToggleDragSelect,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Main.ToggleSelectHunk), Key: gui.getKey(config.Main.ToggleSelectHunk),
Handler: gui.wrappedHandler(gui.handleToggleSelectHunk), Handler: gui.handleToggleSelectHunk,
Description: gui.Tr.ToggleSelectHunk, Description: gui.Tr.ToggleSelectHunk,
}, },
{ {
@ -1371,20 +1371,20 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gocui.MouseWheelUp, Key: gocui.MouseWheelUp,
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollUpMain), Handler: gui.scrollUpMain,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY, MAIN_STAGING_CONTEXT_KEY},
Key: gocui.MouseWheelDown, Key: gocui.MouseWheelDown,
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.scrollDownMain), Handler: gui.scrollDownMain,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Files.CommitChanges), Key: gui.getKey(config.Files.CommitChanges),
Handler: gui.wrappedHandler(gui.handleCommitPress), Handler: gui.handleCommitPress,
Description: gui.Tr.CommitChanges, Description: gui.Tr.CommitChanges,
}, },
{ {
@ -1398,56 +1398,56 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_STAGING_CONTEXT_KEY}, Contexts: []string{MAIN_STAGING_CONTEXT_KEY},
Key: gui.getKey(config.Files.CommitChangesWithEditor), Key: gui.getKey(config.Files.CommitChangesWithEditor),
Handler: gui.wrappedHandler(gui.handleCommitEditorPress), Handler: gui.handleCommitEditorPress,
Description: gui.Tr.CommitChangesWithEditor, Description: gui.Tr.CommitChangesWithEditor,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Return), Key: gui.getKey(config.Universal.Return),
Handler: gui.wrappedHandler(gui.handleEscapeMerge), Handler: gui.handleEscapeMerge,
Description: gui.Tr.ReturnToFilesPanel, Description: gui.Tr.ReturnToFilesPanel,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Select), Key: gui.getKey(config.Universal.Select),
Handler: gui.wrappedHandler(gui.handlePickHunk), Handler: gui.handlePickHunk,
Description: gui.Tr.PickHunk, Description: gui.Tr.PickHunk,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Main.PickBothHunks), Key: gui.getKey(config.Main.PickBothHunks),
Handler: gui.wrappedHandler(gui.handlePickBothHunks), Handler: gui.handlePickBothHunks,
Description: gui.Tr.PickBothHunks, Description: gui.Tr.PickBothHunks,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevBlock), Key: gui.getKey(config.Universal.PrevBlock),
Handler: gui.wrappedHandler(gui.handleSelectPrevConflict), Handler: gui.handleSelectPrevConflict,
Description: gui.Tr.PrevConflict, Description: gui.Tr.PrevConflict,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextBlock), Key: gui.getKey(config.Universal.NextBlock),
Handler: gui.wrappedHandler(gui.handleSelectNextConflict), Handler: gui.handleSelectNextConflict,
Description: gui.Tr.NextConflict, Description: gui.Tr.NextConflict,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevItem), Key: gui.getKey(config.Universal.PrevItem),
Handler: gui.wrappedHandler(gui.handleSelectTop), Handler: gui.handleSelectTop,
Description: gui.Tr.SelectTop, Description: gui.Tr.SelectTop,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextItem), Key: gui.getKey(config.Universal.NextItem),
Handler: gui.wrappedHandler(gui.handleSelectBottom), Handler: gui.handleSelectBottom,
Description: gui.Tr.SelectBottom, Description: gui.Tr.SelectBottom,
}, },
{ {
@ -1455,48 +1455,48 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gocui.MouseWheelUp, Key: gocui.MouseWheelUp,
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectTop), Handler: gui.handleSelectTop,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gocui.MouseWheelDown, Key: gocui.MouseWheelDown,
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectBottom), Handler: gui.handleSelectBottom,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevBlockAlt), Key: gui.getKey(config.Universal.PrevBlockAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectPrevConflict), Handler: gui.handleSelectPrevConflict,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextBlockAlt), Key: gui.getKey(config.Universal.NextBlockAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectNextConflict), Handler: gui.handleSelectNextConflict,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.PrevItemAlt), Key: gui.getKey(config.Universal.PrevItemAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectTop), Handler: gui.handleSelectTop,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.NextItemAlt), Key: gui.getKey(config.Universal.NextItemAlt),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleSelectBottom), Handler: gui.handleSelectBottom,
}, },
{ {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_MERGING_CONTEXT_KEY}, Contexts: []string{MAIN_MERGING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Undo), Key: gui.getKey(config.Universal.Undo),
Handler: gui.wrappedHandler(gui.handlePopFileSnapshot), Handler: gui.handlePopFileSnapshot,
Description: gui.Tr.LcUndo, Description: gui.Tr.LcUndo,
}, },
{ {
@ -1504,7 +1504,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{REMOTES_CONTEXT_KEY}, Contexts: []string{REMOTES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.GoInto), Key: gui.getKey(config.Universal.GoInto),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.handleRemoteEnter), Handler: gui.handleRemoteEnter,
}, },
{ {
ViewName: "branches", ViewName: "branches",
@ -1532,14 +1532,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Contexts: []string{REMOTE_BRANCHES_CONTEXT_KEY}, Contexts: []string{REMOTE_BRANCHES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Select), Key: gui.getKey(config.Universal.Select),
// gonna use the exact same handler as the 'n' keybinding because everybody wants this to happen when they checkout a remote branch // gonna use the exact same handler as the 'n' keybinding because everybody wants this to happen when they checkout a remote branch
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem), Handler: gui.handleNewBranchOffCurrentItem,
Description: gui.Tr.LcCheckout, Description: gui.Tr.LcCheckout,
}, },
{ {
ViewName: "branches", ViewName: "branches",
Contexts: []string{REMOTE_BRANCHES_CONTEXT_KEY}, Contexts: []string{REMOTE_BRANCHES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.New), Key: gui.getKey(config.Universal.New),
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem), Handler: gui.handleNewBranchOffCurrentItem,
Description: gui.Tr.LcNewBranch, Description: gui.Tr.LcNewBranch,
}, },
{ {
@ -1616,25 +1616,25 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "menu", ViewName: "menu",
Key: gui.getKey(config.Universal.Select), Key: gui.getKey(config.Universal.Select),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.onMenuPress), Handler: gui.onMenuPress,
}, },
{ {
ViewName: "menu", ViewName: "menu",
Key: gui.getKey(config.Universal.Confirm), Key: gui.getKey(config.Universal.Confirm),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.onMenuPress), Handler: gui.onMenuPress,
}, },
{ {
ViewName: "menu", ViewName: "menu",
Key: gui.getKey(config.Universal.ConfirmAlt1), Key: gui.getKey(config.Universal.ConfirmAlt1),
Modifier: gocui.ModNone, Modifier: gocui.ModNone,
Handler: gui.wrappedHandler(gui.onMenuPress), Handler: gui.onMenuPress,
}, },
{ {
ViewName: "files", ViewName: "files",
Contexts: []string{SUBMODULES_CONTEXT_KEY}, Contexts: []string{SUBMODULES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.CopyToClipboard), Key: gui.getKey(config.Universal.CopyToClipboard),
Handler: gui.wrappedHandler(gui.handleCopySelectedSideContextItemToClipboard), Handler: gui.handleCopySelectedSideContextItemToClipboard,
Description: gui.Tr.LcCopySubmoduleNameToClipboard, Description: gui.Tr.LcCopySubmoduleNameToClipboard,
}, },
{ {
@ -1663,7 +1663,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "files", ViewName: "files",
Contexts: []string{SUBMODULES_CONTEXT_KEY}, Contexts: []string{SUBMODULES_CONTEXT_KEY},
Key: gui.getKey(config.Universal.New), Key: gui.getKey(config.Universal.New),
Handler: gui.wrappedHandler(gui.handleAddSubmodule), Handler: gui.handleAddSubmodule,
Description: gui.Tr.LcAddSubmodule, Description: gui.Tr.LcAddSubmodule,
}, },
{ {
@ -1684,7 +1684,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "files", ViewName: "files",
Contexts: []string{SUBMODULES_CONTEXT_KEY}, Contexts: []string{SUBMODULES_CONTEXT_KEY},
Key: gui.getKey(config.Submodules.BulkMenu), Key: gui.getKey(config.Submodules.BulkMenu),
Handler: gui.wrappedHandler(gui.handleBulkSubmoduleActionsMenu), Handler: gui.handleBulkSubmoduleActionsMenu,
Description: gui.Tr.LcViewBulkSubmoduleOptions, Description: gui.Tr.LcViewBulkSubmoduleOptions,
OpensMenu: true, OpensMenu: true,
}, },
@ -1692,12 +1692,12 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
for _, viewName := range []string{"status", "branches", "files", "commits", "commitFiles", "stash", "menu"} { for _, viewName := range []string{"status", "branches", "files", "commits", "commitFiles", "stash", "menu"} {
bindings = append(bindings, []*Binding{ bindings = append(bindings, []*Binding{
{ViewName: viewName, Key: gui.getKey(config.Universal.PrevBlock), Modifier: gocui.ModNone, Handler: gui.wrappedHandler(gui.previousSideWindow)}, {ViewName: viewName, Key: gui.getKey(config.Universal.PrevBlock), Modifier: gocui.ModNone, Handler: gui.previousSideWindow},
{ViewName: viewName, Key: gui.getKey(config.Universal.NextBlock), Modifier: gocui.ModNone, Handler: gui.wrappedHandler(gui.nextSideWindow)}, {ViewName: viewName, Key: gui.getKey(config.Universal.NextBlock), Modifier: gocui.ModNone, Handler: gui.nextSideWindow},
{ViewName: viewName, Key: gui.getKey(config.Universal.PrevBlockAlt), Modifier: gocui.ModNone, Handler: gui.wrappedHandler(gui.previousSideWindow)}, {ViewName: viewName, Key: gui.getKey(config.Universal.PrevBlockAlt), Modifier: gocui.ModNone, Handler: gui.previousSideWindow},
{ViewName: viewName, Key: gui.getKey(config.Universal.NextBlockAlt), Modifier: gocui.ModNone, Handler: gui.wrappedHandler(gui.nextSideWindow)}, {ViewName: viewName, Key: gui.getKey(config.Universal.NextBlockAlt), Modifier: gocui.ModNone, Handler: gui.nextSideWindow},
{ViewName: viewName, Key: gocui.KeyBacktab, Modifier: gocui.ModNone, Handler: gui.wrappedHandler(gui.previousSideWindow)}, {ViewName: viewName, Key: gocui.KeyBacktab, Modifier: gocui.ModNone, Handler: gui.previousSideWindow},
{ViewName: viewName, Key: gocui.KeyTab, Modifier: gocui.ModNone, Handler: gui.wrappedHandler(gui.nextSideWindow)}, {ViewName: viewName, Key: gocui.KeyTab, Modifier: gocui.ModNone, Handler: gui.nextSideWindow},
}...) }...)
} }
@ -1736,7 +1736,7 @@ func (gui *Gui) keybindings() error {
bindings = append(bindings, gui.GetInitialKeybindings()...) bindings = append(bindings, gui.GetInitialKeybindings()...)
for _, binding := range bindings { for _, binding := range bindings {
if err := gui.g.SetKeybinding(binding.ViewName, binding.Contexts, binding.Key, binding.Modifier, binding.Handler); err != nil { if err := gui.g.SetKeybinding(binding.ViewName, binding.Contexts, binding.Key, binding.Modifier, gui.wrappedHandler(binding.Handler)); err != nil {
return err return err
} }
} }

View File

@ -178,13 +178,13 @@ func (gui *Gui) LBLSelectLine(newSelectedLineIdx int, state *lBlPanelState) erro
return gui.focusSelection(false, state) return gui.focusSelection(false, state)
} }
func (gui *Gui) handleLBLMouseDown(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleLBLMouseDown() error {
return gui.withLBLActiveCheck(func(state *lBlPanelState) error { return gui.withLBLActiveCheck(func(state *lBlPanelState) error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }
newSelectedLineIdx := v.SelectedLineIdx() newSelectedLineIdx := gui.getMainView().SelectedLineIdx()
state.FirstLineIdx = newSelectedLineIdx state.FirstLineIdx = newSelectedLineIdx
state.LastLineIdx = newSelectedLineIdx state.LastLineIdx = newSelectedLineIdx
@ -194,13 +194,37 @@ func (gui *Gui) handleLBLMouseDown(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleMouseDrag(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleMouseDrag() error {
return gui.withLBLActiveCheck(func(state *lBlPanelState) error { return gui.withLBLActiveCheck(func(state *lBlPanelState) error {
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
} }
return gui.LBLSelectLine(v.SelectedLineIdx(), state) return gui.LBLSelectLine(gui.getMainView().SelectedLineIdx(), state)
})
}
func (gui *Gui) handleMouseScrollUp() error {
return gui.withLBLActiveCheck(func(state *lBlPanelState) error {
if gui.popupPanelFocused() {
return nil
}
state.SelectMode = LINE
return gui.LBLCycleLine(-1, state)
})
}
func (gui *Gui) handleMouseScrollDown() error {
return gui.withLBLActiveCheck(func(state *lBlPanelState) error {
if gui.popupPanelFocused() {
return nil
}
state.SelectMode = LINE
return gui.LBLCycleLine(1, state)
}) })
} }

View File

@ -150,11 +150,11 @@ func (lc *ListContext) HandleRender() error {
return lc.OnRender() return lc.OnRender()
} }
func (lc *ListContext) handlePrevLine(g *gocui.Gui, v *gocui.View) error { func (lc *ListContext) handlePrevLine() error {
return lc.handleLineChange(-1) return lc.handleLineChange(-1)
} }
func (lc *ListContext) handleNextLine(g *gocui.Gui, v *gocui.View) error { func (lc *ListContext) handleNextLine() error {
return lc.handleLineChange(1) return lc.handleLineChange(1)
} }
@ -188,7 +188,7 @@ func (lc *ListContext) handleLineChange(change int) error {
return lc.HandleFocus() return lc.HandleFocus()
} }
func (lc *ListContext) handleNextPage(g *gocui.Gui, v *gocui.View) error { func (lc *ListContext) handleNextPage() error {
view, err := lc.Gui.g.View(lc.ViewName) view, err := lc.Gui.g.View(lc.ViewName)
if err != nil { if err != nil {
return nil return nil
@ -198,15 +198,15 @@ func (lc *ListContext) handleNextPage(g *gocui.Gui, v *gocui.View) error {
return lc.handleLineChange(delta) return lc.handleLineChange(delta)
} }
func (lc *ListContext) handleGotoTop(g *gocui.Gui, v *gocui.View) error { func (lc *ListContext) handleGotoTop() error {
return lc.handleLineChange(-lc.GetItemsLength()) return lc.handleLineChange(-lc.GetItemsLength())
} }
func (lc *ListContext) handleGotoBottom(g *gocui.Gui, v *gocui.View) error { func (lc *ListContext) handleGotoBottom() error {
return lc.handleLineChange(lc.GetItemsLength()) return lc.handleLineChange(lc.GetItemsLength())
} }
func (lc *ListContext) handlePrevPage(g *gocui.Gui, v *gocui.View) error { func (lc *ListContext) handlePrevPage() error {
view, err := lc.Gui.g.View(lc.ViewName) view, err := lc.Gui.g.View(lc.ViewName)
if err != nil { if err != nil {
return nil return nil
@ -217,13 +217,18 @@ func (lc *ListContext) handlePrevPage(g *gocui.Gui, v *gocui.View) error {
return lc.handleLineChange(-delta) return lc.handleLineChange(-delta)
} }
func (lc *ListContext) handleClick(g *gocui.Gui, v *gocui.View) error { func (lc *ListContext) handleClick() error {
if !lc.Gui.isPopupPanel(lc.ViewName) && lc.Gui.popupPanelFocused() { if !lc.Gui.isPopupPanel(lc.ViewName) && lc.Gui.popupPanelFocused() {
return nil return nil
} }
view, err := lc.Gui.g.View(lc.ViewName)
if err != nil {
return nil
}
prevSelectedLineIdx := lc.GetPanelState().GetSelectedLineIdx() prevSelectedLineIdx := lc.GetPanelState().GetSelectedLineIdx()
newSelectedLineIdx := v.SelectedLineIdx() newSelectedLineIdx := view.SelectedLineIdx()
// we need to focus the view // we need to focus the view
if err := lc.Gui.pushContext(lc); err != nil { if err := lc.Gui.pushContext(lc); err != nil {
@ -573,7 +578,7 @@ func (gui *Gui) getListContextKeyBindings() []*Binding {
ViewName: listContext.ViewName, ViewName: listContext.ViewName,
Contexts: []string{listContext.ContextKey}, Contexts: []string{listContext.ContextKey},
Key: gui.getKey(keybindingConfig.Universal.StartSearch), Key: gui.getKey(keybindingConfig.Universal.StartSearch),
Handler: openSearchHandler, Handler: func() error { return openSearchHandler(listContext.ViewName) },
Description: gui.Tr.LcStartSearch, Description: gui.Tr.LcStartSearch,
Tag: "navigation", Tag: "navigation",
}, },

View File

@ -42,8 +42,8 @@ func (gui *Gui) getMenuOptions() map[string]string {
} }
} }
func (gui *Gui) handleMenuClose(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleMenuClose() error {
_ = g.DeleteView("menu") _ = gui.g.DeleteView("menu")
return gui.returnFromContext() return gui.returnFromContext()
} }

View File

@ -45,8 +45,13 @@ func (gui *Gui) displayDescription(binding *Binding) string {
return commandColor.Sprint(binding.Description) return commandColor.Sprint(binding.Description)
} }
func (gui *Gui) handleCreateOptionsMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateOptionsMenu() error {
bindings := gui.getBindings(v) view := gui.g.CurrentView()
if view == nil {
return nil
}
bindings := gui.getBindings(view)
menuItems := make([]*menuItem, len(bindings)) menuItems := make([]*menuItem, len(bindings))
@ -58,10 +63,10 @@ func (gui *Gui) handleCreateOptionsMenu(g *gocui.Gui, v *gocui.View) error {
if binding.Key == nil { if binding.Key == nil {
return nil return nil
} }
if err := gui.handleMenuClose(g, v); err != nil { if err := gui.handleMenuClose(); err != nil {
return err return err
} }
return binding.Handler(g, v) return binding.Handler()
}, },
} }
} }

View File

@ -3,11 +3,10 @@ package gui
import ( import (
"fmt" "fmt"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/commands"
) )
func (gui *Gui) handleCreatePatchOptionsMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreatePatchOptionsMenu() error {
if !gui.GitCommand.PatchManager.Active() { if !gui.GitCommand.PatchManager.Active() {
return gui.createErrorPanel(gui.Tr.NoPatchError) return gui.createErrorPanel(gui.Tr.NoPatchError)
} }

View File

@ -24,7 +24,7 @@ func (gui *Gui) recordCurrentDirectory() error {
return gui.OSCommand.CreateFileWithContent(os.Getenv("LAZYGIT_NEW_DIR_FILE"), dirName) return gui.OSCommand.CreateFileWithContent(os.Getenv("LAZYGIT_NEW_DIR_FILE"), dirName)
} }
func (gui *Gui) handleQuitWithoutChangingDirectory(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleQuitWithoutChangingDirectory() error {
gui.State.RetainOriginalDir = true gui.State.RetainOriginalDir = true
return gui.quit() return gui.quit()
} }
@ -34,7 +34,7 @@ func (gui *Gui) handleQuit() error {
return gui.quit() return gui.quit()
} }
func (gui *Gui) handleTopLevelReturn(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleTopLevelReturn() error {
currentContext := gui.currentContext() currentContext := gui.currentContext()
parentContext, hasParent := currentContext.GetParentContext() parentContext, hasParent := currentContext.GetParentContext()

View File

@ -1,7 +1,6 @@
package gui package gui
import ( import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
) )
@ -83,7 +82,7 @@ func (gui *Gui) refreshReflogCommits() error {
return gui.postRefreshUpdate(gui.Contexts.ReflogCommits.Context) return gui.postRefreshUpdate(gui.Contexts.ReflogCommits.Context)
} }
func (gui *Gui) handleCheckoutReflogCommit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCheckoutReflogCommit() error {
commit := gui.getSelectedReflogCommit() commit := gui.getSelectedReflogCommit()
if commit == nil { if commit == nil {
return nil return nil
@ -105,7 +104,7 @@ func (gui *Gui) handleCheckoutReflogCommit(g *gocui.Gui, v *gocui.View) error {
return nil return nil
} }
func (gui *Gui) handleCreateReflogResetMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateReflogResetMenu() error {
commit := gui.getSelectedReflogCommit() commit := gui.getSelectedReflogCommit()
return gui.createResetMenu(commit.Sha) return gui.createResetMenu(commit.Sha)

View File

@ -3,7 +3,6 @@ package gui
import ( import (
"fmt" "fmt"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -39,16 +38,16 @@ func (gui *Gui) handleRemoteBranchSelect() error {
}) })
} }
func (gui *Gui) handleRemoteBranchesEscape(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRemoteBranchesEscape() error {
return gui.pushContext(gui.Contexts.Remotes.Context) return gui.pushContext(gui.Contexts.Remotes.Context)
} }
func (gui *Gui) handleMergeRemoteBranch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleMergeRemoteBranch() error {
selectedBranchName := gui.getSelectedRemoteBranch().FullName() selectedBranchName := gui.getSelectedRemoteBranch().FullName()
return gui.mergeBranchIntoCheckedOutBranch(selectedBranchName) return gui.mergeBranchIntoCheckedOutBranch(selectedBranchName)
} }
func (gui *Gui) handleDeleteRemoteBranch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleDeleteRemoteBranch() error {
remoteBranch := gui.getSelectedRemoteBranch() remoteBranch := gui.getSelectedRemoteBranch()
if remoteBranch == nil { if remoteBranch == nil {
return nil return nil
@ -69,12 +68,12 @@ func (gui *Gui) handleDeleteRemoteBranch(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleRebaseOntoRemoteBranch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRebaseOntoRemoteBranch() error {
selectedBranchName := gui.getSelectedRemoteBranch().FullName() selectedBranchName := gui.getSelectedRemoteBranch().FullName()
return gui.handleRebaseOntoBranch(selectedBranchName) return gui.handleRebaseOntoBranch(selectedBranchName)
} }
func (gui *Gui) handleSetBranchUpstream(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleSetBranchUpstream() error {
selectedBranch := gui.getSelectedRemoteBranch() selectedBranch := gui.getSelectedRemoteBranch()
checkedOutBranch := gui.getCheckedOutBranch() checkedOutBranch := gui.getCheckedOutBranch()
@ -99,7 +98,7 @@ func (gui *Gui) handleSetBranchUpstream(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCreateResetToRemoteBranchMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateResetToRemoteBranchMenu() error {
selectedBranch := gui.getSelectedRemoteBranch() selectedBranch := gui.getSelectedRemoteBranch()
if selectedBranch == nil { if selectedBranch == nil {
return nil return nil

View File

@ -5,7 +5,6 @@ import (
"strings" "strings"
"github.com/fatih/color" "github.com/fatih/color"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -84,7 +83,7 @@ func (gui *Gui) handleRemoteEnter() error {
return gui.pushContext(gui.Contexts.Remotes.Branches.Context) return gui.pushContext(gui.Contexts.Remotes.Branches.Context)
} }
func (gui *Gui) handleAddRemote(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleAddRemote() error {
return gui.prompt(promptOpts{ return gui.prompt(promptOpts{
title: gui.Tr.LcNewRemoteName, title: gui.Tr.LcNewRemoteName,
handleConfirm: func(remoteName string) error { handleConfirm: func(remoteName string) error {
@ -102,7 +101,7 @@ func (gui *Gui) handleAddRemote(g *gocui.Gui, v *gocui.View) error {
} }
func (gui *Gui) handleRemoveRemote(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRemoveRemote() error {
remote := gui.getSelectedRemote() remote := gui.getSelectedRemote()
if remote == nil { if remote == nil {
return nil return nil
@ -121,7 +120,7 @@ func (gui *Gui) handleRemoveRemote(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleEditRemote(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleEditRemote() error {
remote := gui.getSelectedRemote() remote := gui.getSelectedRemote()
if remote == nil { if remote == nil {
return nil return nil
@ -171,7 +170,7 @@ func (gui *Gui) handleEditRemote(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleFetchRemote(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleFetchRemote() error {
remote := gui.getSelectedRemote() remote := gui.getSelectedRemote()
if remote == nil { if remote == nil {
return nil return nil

View File

@ -3,14 +3,18 @@ package gui
import ( import (
"fmt" "fmt"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/theme" "github.com/jesseduffield/lazygit/pkg/theme"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
func (gui *Gui) handleOpenSearch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleOpenSearch(viewName string) error {
view, err := gui.g.View(viewName)
if err != nil {
return nil
}
gui.State.Searching.isSearching = true gui.State.Searching.isSearching = true
gui.State.Searching.view = v gui.State.Searching.view = view
gui.renderString("search", "") gui.renderString("search", "")
@ -21,7 +25,7 @@ func (gui *Gui) handleOpenSearch(g *gocui.Gui, v *gocui.View) error {
return nil return nil
} }
func (gui *Gui) handleSearch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleSearch() error {
gui.State.Searching.searchString = gui.getSearchView().Buffer() gui.State.Searching.searchString = gui.getSearchView().Buffer()
if err := gui.returnFromContext(); err != nil { if err := gui.returnFromContext(); err != nil {
return err return err
@ -92,7 +96,7 @@ func (gui *Gui) onSearchEscape() error {
return nil return nil
} }
func (gui *Gui) handleSearchEscape(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleSearchEscape() error {
if err := gui.onSearchEscape(); err != nil { if err := gui.onSearchEscape(); err != nil {
return err return err
} }

View File

@ -1,7 +1,5 @@
package gui package gui
import "github.com/jesseduffield/gocui"
func (gui *Gui) nextSideWindow() error { func (gui *Gui) nextSideWindow() error {
windows := gui.getCyclableWindows() windows := gui.getCyclableWindows()
currentWindow := gui.currentWindow() currentWindow := gui.currentWindow()
@ -54,8 +52,8 @@ func (gui *Gui) previousSideWindow() error {
return gui.pushContextWithView(viewName) return gui.pushContextWithView(viewName)
} }
func (gui *Gui) goToSideWindow(sideViewName string) func(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) goToSideWindow(sideViewName string) func() error {
return func(g *gocui.Gui, v *gocui.View) error { return func() error {
return gui.pushContextWithView(sideViewName) return gui.pushContextWithView(sideViewName)
} }
} }

View File

@ -3,7 +3,6 @@ package gui
import ( import (
"strings" "strings"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/patch" "github.com/jesseduffield/lazygit/pkg/commands/patch"
) )
@ -60,11 +59,11 @@ func (gui *Gui) refreshStagingPanel(forceSecondaryFocused bool, selectedLineIdx
return nil return nil
} }
func (gui *Gui) handleTogglePanelClick(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleTogglePanelClick() error {
return gui.withLBLActiveCheck(func(state *lBlPanelState) error { return gui.withLBLActiveCheck(func(state *lBlPanelState) error {
state.SecondaryFocused = !state.SecondaryFocused state.SecondaryFocused = !state.SecondaryFocused
return gui.refreshStagingPanel(false, v.SelectedLineIdx(), state) return gui.refreshStagingPanel(false, gui.getSecondaryView().SelectedLineIdx(), state)
}) })
} }

View File

@ -1,7 +1,6 @@
package gui package gui
import ( import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -45,7 +44,7 @@ func (gui *Gui) refreshStashEntries() error {
// specific functions // specific functions
func (gui *Gui) handleStashApply(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleStashApply() error {
skipStashWarning := gui.Config.GetUserConfig().Gui.SkipStashWarning skipStashWarning := gui.Config.GetUserConfig().Gui.SkipStashWarning
apply := func() error { apply := func() error {
@ -65,7 +64,7 @@ func (gui *Gui) handleStashApply(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleStashPop(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleStashPop() error {
skipStashWarning := gui.Config.GetUserConfig().Gui.SkipStashWarning skipStashWarning := gui.Config.GetUserConfig().Gui.SkipStashWarning
pop := func() error { pop := func() error {
@ -85,7 +84,7 @@ func (gui *Gui) handleStashPop(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleStashDrop(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleStashDrop() error {
return gui.ask(askOpts{ return gui.ask(askOpts{
title: gui.Tr.StashDrop, title: gui.Tr.StashDrop,
prompt: gui.Tr.SureDropStashEntry, prompt: gui.Tr.SureDropStashEntry,

View File

@ -56,12 +56,12 @@ func cursorInSubstring(cx int, prefix string, substring string) bool {
return cx >= runeCount(prefix) && cx < runeCount(prefix+substring) return cx >= runeCount(prefix) && cx < runeCount(prefix+substring)
} }
func (gui *Gui) handleCheckForUpdate(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCheckForUpdate() error {
gui.Updater.CheckForNewUpdate(gui.onUserUpdateCheckFinish, true) gui.Updater.CheckForNewUpdate(gui.onUserUpdateCheckFinish, true)
return gui.createLoaderPanel(gui.Tr.CheckingForUpdates) return gui.createLoaderPanel(gui.Tr.CheckingForUpdates)
} }
func (gui *Gui) handleStatusClick(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleStatusClick() error {
// TODO: move into some abstraction (status is currently not a listViewContext where a lot of this code lives) // TODO: move into some abstraction (status is currently not a listViewContext where a lot of this code lives)
if gui.popupPanelFocused() { if gui.popupPanelFocused() {
return nil return nil
@ -77,7 +77,7 @@ func (gui *Gui) handleStatusClick(g *gocui.Gui, v *gocui.View) error {
return err return err
} }
cx, _ := v.Cursor() cx, _ := gui.getStatusView().Cursor()
upstreamStatus := fmt.Sprintf("↑%s↓%s", currentBranch.Pushables, currentBranch.Pullables) upstreamStatus := fmt.Sprintf("↑%s↓%s", currentBranch.Pushables, currentBranch.Pullables)
repoName := utils.GetCurrentRepoName() repoName := utils.GetCurrentRepoName()
switch gui.GitCommand.WorkingTreeState() { switch gui.GitCommand.WorkingTreeState() {
@ -126,11 +126,11 @@ func (gui *Gui) handleStatusSelect() error {
}) })
} }
func (gui *Gui) handleOpenConfig(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleOpenConfig() error {
return gui.openFile(gui.Config.GetUserConfigPath()) return gui.openFile(gui.Config.GetUserConfigPath())
} }
func (gui *Gui) handleEditConfig(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleEditConfig() error {
filename := gui.Config.GetUserConfigPath() filename := gui.Config.GetUserConfigPath()
return gui.editFile(filename) return gui.editFile(filename)
} }

View File

@ -1,7 +1,6 @@
package gui package gui
import ( import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
) )
@ -39,7 +38,7 @@ func (gui *Gui) handleSubCommitSelect() error {
}) })
} }
func (gui *Gui) handleCheckoutSubCommit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCheckoutSubCommit() error {
commit := gui.getSelectedSubCommit() commit := gui.getSelectedSubCommit()
if commit == nil { if commit == nil {
return nil return nil

View File

@ -7,7 +7,6 @@ import (
"strings" "strings"
"github.com/fatih/color" "github.com/fatih/color"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -179,17 +178,15 @@ func (gui *Gui) handleSubmoduleInit(submodule *models.SubmoduleConfig) error {
}) })
} }
func (gui *Gui) forSubmodule(callback func(*models.SubmoduleConfig) error) func(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) forSubmodule(callback func(*models.SubmoduleConfig) error) func() error {
return gui.wrappedHandler( return func() error {
func() error { submodule := gui.getSelectedSubmodule()
submodule := gui.getSelectedSubmodule() if submodule == nil {
if submodule == nil { return nil
return nil }
}
return callback(submodule) return callback(submodule)
}, }
)
} }
func (gui *Gui) handleResetRemoveSubmodule(submodule *models.SubmoduleConfig) error { func (gui *Gui) handleResetRemoveSubmodule(submodule *models.SubmoduleConfig) error {

View File

@ -1,7 +1,6 @@
package gui package gui
import ( import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -48,7 +47,7 @@ func (gui *Gui) refreshTags() error {
return gui.postRefreshUpdate(gui.Contexts.Tags.Context) return gui.postRefreshUpdate(gui.Contexts.Tags.Context)
} }
func (gui *Gui) handleCheckoutTag(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCheckoutTag() error {
tag := gui.getSelectedTag() tag := gui.getSelectedTag()
if tag == nil { if tag == nil {
return nil return nil
@ -59,7 +58,7 @@ func (gui *Gui) handleCheckoutTag(g *gocui.Gui, v *gocui.View) error {
return gui.pushContext(gui.Contexts.Branches.Context) return gui.pushContext(gui.Contexts.Branches.Context)
} }
func (gui *Gui) handleDeleteTag(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleDeleteTag() error {
tag := gui.getSelectedTag() tag := gui.getSelectedTag()
if tag == nil { if tag == nil {
return nil return nil
@ -84,7 +83,7 @@ func (gui *Gui) handleDeleteTag(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handlePushTag(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handlePushTag() error {
tag := gui.getSelectedTag() tag := gui.getSelectedTag()
if tag == nil { if tag == nil {
return nil return nil
@ -111,7 +110,7 @@ func (gui *Gui) handlePushTag(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCreateTag(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateTag() error {
return gui.prompt(promptOpts{ return gui.prompt(promptOpts{
title: gui.Tr.CreateTagTitle, title: gui.Tr.CreateTagTitle,
handleConfirm: func(tagName string) error { handleConfirm: func(tagName string) error {
@ -137,7 +136,7 @@ func (gui *Gui) handleCreateTag(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) handleCreateResetToTagMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateResetToTagMenu() error {
tag := gui.getSelectedTag() tag := gui.getSelectedTag()
if tag == nil { if tag == nil {
return nil return nil

View File

@ -1,7 +1,6 @@
package gui package gui
import ( import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands" "github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
@ -86,7 +85,7 @@ func (gui *Gui) parseReflogForActions(onUserAction func(counter int, action refl
return nil return nil
} }
func (gui *Gui) reflogUndo(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) reflogUndo() error {
undoEnvVars := []string{"GIT_REFLOG_ACTION=[lazygit undo]"} undoEnvVars := []string{"GIT_REFLOG_ACTION=[lazygit undo]"}
undoingStatus := gui.Tr.UndoingStatus undoingStatus := gui.Tr.UndoingStatus
@ -117,7 +116,7 @@ func (gui *Gui) reflogUndo(g *gocui.Gui, v *gocui.View) error {
}) })
} }
func (gui *Gui) reflogRedo(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) reflogRedo() error {
redoEnvVars := []string{"GIT_REFLOG_ACTION=[lazygit redo]"} redoEnvVars := []string{"GIT_REFLOG_ACTION=[lazygit redo]"}
redoingStatus := gui.Tr.RedoingStatus redoingStatus := gui.Tr.RedoingStatus

View File

@ -251,6 +251,16 @@ func (gui *Gui) getCommitFilesView() *gocui.View {
return v return v
} }
func (gui *Gui) getCommitsView() *gocui.View {
v, _ := gui.g.View("commits")
return v
}
func (gui *Gui) getCredentialsView() *gocui.View {
v, _ := gui.g.View("commits")
return v
}
func (gui *Gui) getCommitMessageView() *gocui.View { func (gui *Gui) getCommitMessageView() *gocui.View {
v, _ := gui.g.View("commitMessage") v, _ := gui.g.View("commitMessage")
return v return v
@ -308,6 +318,11 @@ func (gui *Gui) getConfirmationView() *gocui.View {
return v return v
} }
func (gui *Gui) getInformationView() *gocui.View {
v, _ := gui.g.View("confirmation")
return v
}
func (gui *Gui) trimmedContent(v *gocui.View) string { func (gui *Gui) trimmedContent(v *gocui.View) string {
return strings.TrimSpace(v.Buffer()) return strings.TrimSpace(v.Buffer())
} }
@ -403,15 +418,6 @@ func (gui *Gui) popupPanelFocused() bool {
return gui.isPopupPanel(gui.currentViewName()) return gui.isPopupPanel(gui.currentViewName())
} }
// often gocui wants functions in the form `func(g *gocui.Gui, v *gocui.View) error`
// but sometimes we just have a function that returns an error, so this is a
// convenience wrapper to give gocui what it wants.
func (gui *Gui) wrappedHandler(f func() error) func(g *gocui.Gui, v *gocui.View) error {
return func(g *gocui.Gui, v *gocui.View) error {
return f()
}
}
// secondaryViewFocused tells us whether it appears that the secondary view is focused. The view is actually never focused for real: we just swap the main and secondary views and then you're still focused on the main view so that we can give you access to all its keybindings for free. I will probably regret this design decision soon enough. // secondaryViewFocused tells us whether it appears that the secondary view is focused. The view is actually never focused for real: we just swap the main and secondary views and then you're still focused on the main view so that we can give you access to all its keybindings for free. I will probably regret this design decision soon enough.
func (gui *Gui) secondaryViewFocused() bool { func (gui *Gui) secondaryViewFocused() bool {
state := gui.State.Panels.LineByLine state := gui.State.Panels.LineByLine
@ -430,14 +436,24 @@ func (gui *Gui) onViewTabClick(viewName string, tabIndex int) error {
return gui.pushContext(context) return gui.pushContext(context)
} }
func (gui *Gui) handleNextTab(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleNextTab() error {
v := gui.g.CurrentView()
if v != nil {
return nil
}
return gui.onViewTabClick( return gui.onViewTabClick(
v.Name(), v.Name(),
utils.ModuloWithWrap(v.TabIndex+1, len(v.Tabs)), utils.ModuloWithWrap(v.TabIndex+1, len(v.Tabs)),
) )
} }
func (gui *Gui) handlePrevTab(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handlePrevTab() error {
v := gui.g.CurrentView()
if v != nil {
return nil
}
return gui.onViewTabClick( return gui.onViewTabClick(
v.Name(), v.Name(),
utils.ModuloWithWrap(v.TabIndex-1, len(v.Tabs)), utils.ModuloWithWrap(v.TabIndex-1, len(v.Tabs)),

View File

@ -4,10 +4,9 @@ import (
"fmt" "fmt"
"github.com/fatih/color" "github.com/fatih/color"
"github.com/jesseduffield/gocui"
) )
func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleCreateResetMenu() error {
red := color.New(color.FgRed) red := color.New(color.FgRed)
nukeStr := "reset --hard HEAD && git clean -fd" nukeStr := "reset --hard HEAD && git clean -fd"