1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-19 21:28:28 +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"
"strings"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
@ -79,7 +78,7 @@ func (gui *Gui) refreshBranches() {
// 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 {
return nil
}
@ -90,7 +89,7 @@ func (gui *Gui) handleBranchPress(g *gocui.Gui, v *gocui.View) error {
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)
branch := gui.getSelectedBranch()
@ -101,7 +100,7 @@ func (gui *Gui) handleCreatePullRequestPress(g *gocui.Gui, v *gocui.View) error
return nil
}
func (gui *Gui) handleCopyPullRequestURLPress(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleCopyPullRequestURLPress() error {
pullRequest := commands.NewPullRequest(gui.GitCommand)
branch := gui.getSelectedBranch()
@ -114,7 +113,7 @@ func (gui *Gui) handleCopyPullRequestURLPress(g *gocui.Gui, v *gocui.View) error
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 {
return err
}
@ -126,7 +125,7 @@ func (gui *Gui) handleGitFetch(g *gocui.Gui, v *gocui.View) error {
return nil
}
func (gui *Gui) handleForceCheckout(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleForceCheckout() error {
branch := gui.getSelectedBranch()
message := gui.Tr.SureForceCheckout
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{
title: gui.Tr.BranchName + ":",
findSuggestionsFunc: gui.findBranchNameSuggestions,
@ -251,7 +250,7 @@ func (gui *Gui) createNewBranchWithName(newBranchName string) error {
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)
}
@ -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 {
return err
}
@ -337,7 +336,7 @@ func (gui *Gui) handleMerge(g *gocui.Gui, v *gocui.View) error {
return gui.mergeBranchIntoCheckedOutBranch(selectedBranchName)
}
func (gui *Gui) handleRebaseOntoLocalBranch(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleRebaseOntoLocalBranch() error {
selectedBranchName := gui.getSelectedBranch().Name
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()
if branch == nil {
return nil
@ -414,7 +413,7 @@ func (gui *Gui) handleFastForward(g *gocui.Gui, v *gocui.View) error {
return nil
}
func (gui *Gui) handleCreateResetToBranchMenu(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleCreateResetToBranchMenu() error {
branch := gui.getSelectedBranch()
if branch == nil {
return nil
@ -423,7 +422,7 @@ func (gui *Gui) handleCreateResetToBranchMenu(g *gocui.Gui, v *gocui.View) error
return gui.createResetMenu(branch.Name)
}
func (gui *Gui) handleRenameBranch(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleRenameBranch() error {
branch := gui.getSelectedBranch()
if branch == nil {
return nil

View File

@ -1,7 +1,6 @@
package gui
import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/patch"
"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()
if node == nil {
return nil
@ -70,7 +69,7 @@ func (gui *Gui) handleCheckoutCommitFile(g *gocui.Gui, v *gocui.View) error {
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 {
return err
}
@ -111,7 +110,7 @@ func (gui *Gui) refreshCommitFilesView() error {
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()
if node == nil {
return nil
@ -120,7 +119,7 @@ func (gui *Gui) handleOpenOldCommitFile(g *gocui.Gui, v *gocui.View) error {
return gui.openFile(node.GetPath())
}
func (gui *Gui) handleEditCommitFile(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleEditCommitFile() error {
node := gui.getSelectedCommitFileNode()
if node == nil {
return nil
@ -133,7 +132,7 @@ func (gui *Gui) handleEditCommitFile(g *gocui.Gui, v *gocui.View) error {
return gui.editFile(node.GetPath())
}
func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleToggleFileForPatch() error {
node := gui.getSelectedCommitFileNode()
if node == nil {
return nil
@ -195,7 +194,7 @@ func (gui *Gui) startPatchManager() error {
return nil
}
func (gui *Gui) handleEnterCommitFile(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleEnterCommitFile() error {
return gui.enterCommitFile(-1)
}

View File

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

View File

@ -3,7 +3,6 @@ package gui
import (
"sync"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils"
@ -148,7 +147,7 @@ func (gui *Gui) refreshRebaseCommits() error {
// 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 {
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 {
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 {
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 {
return err
}
@ -295,7 +294,7 @@ func (gui *Gui) handleMidRebaseCommand(action string) (bool, error) {
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 {
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 {
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 {
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 {
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 {
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 {
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
// 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 {
return err
}
@ -449,7 +448,7 @@ func (gui *Gui) handleViewCommitFiles() error {
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 {
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 {
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
// 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()
if commit == 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()
if commit == nil {
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)
}
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
if gui.State.Panels.Commits.LimitCommits {
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
if gui.State.Panels.Commits.LimitCommits {
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() {
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
}
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 {
colorFunction := color.New(color.FgRed).SprintFunc()
coloredMessage := colorFunction(strings.TrimSpace(message))

View File

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

View File

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

View File

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

View File

@ -183,7 +183,7 @@ func (gui *Gui) stageSelectedFile() error {
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)
}
@ -277,7 +277,7 @@ func (gui *Gui) focusAndSelectFile() error {
return gui.selectFile(false)
}
func (gui *Gui) handleStageAll(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleStageAll() error {
var err error
if gui.allFilesStaged() {
err = gui.GitCommand.UnstageAll()
@ -350,7 +350,7 @@ func (gui *Gui) handleIgnoreFile() error {
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
if skipHookPreifx == "" {
return gui.createErrorPanel(gui.Tr.SkipHookPrefixNotConfigured)
@ -500,7 +500,7 @@ func (gui *Gui) editFile(filename string) error {
return err
}
func (gui *Gui) handleFileEdit(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleFileEdit() error {
node := gui.getSelectedFileNode()
if node == nil {
return nil
@ -513,7 +513,7 @@ func (gui *Gui) handleFileEdit(g *gocui.Gui, v *gocui.View) error {
return gui.editFile(node.GetPath())
}
func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleFileOpen() error {
node := gui.getSelectedFileNode()
if node == nil {
return nil
@ -522,7 +522,7 @@ func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error {
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}})
}
@ -615,7 +615,7 @@ func (gui *Gui) findNewSelectedIdx(prevNodes []*filetree.FileNode, currNodes []*
return -1
}
func (gui *Gui) handlePullFiles(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handlePullFiles() error {
if gui.popupPanelFocused() {
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 {
return err
}
@ -723,7 +723,7 @@ func (gui *Gui) pushWithForceFlag(v *gocui.View, force bool, upstream string, ar
title: gui.Tr.ForcePush,
prompt: gui.Tr.ForcePushPrompt,
handleConfirm: func() error {
return gui.pushWithForceFlag(v, true, upstream, args)
return gui.pushWithForceFlag(true, upstream, args)
},
})
return
@ -734,7 +734,7 @@ func (gui *Gui) pushWithForceFlag(v *gocui.View, force bool, upstream string, ar
return nil
}
func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) pushFiles() error {
if gui.popupPanelFocused() {
return nil
}
@ -750,23 +750,23 @@ func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error {
}
for branchName, branch := range conf.Branches {
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 {
return gui.pushWithForceFlag(v, false, "", "--set-upstream")
return gui.pushWithForceFlag(false, "", "--set-upstream")
} else {
return gui.prompt(promptOpts{
title: gui.Tr.EnterUpstream,
initialContent: "origin " + currentBranch.Name,
handleConfirm: func(response string) error {
return gui.pushWithForceFlag(v, false, response, "")
return gui.pushWithForceFlag(false, response, "")
},
})
}
} else if currentBranch.Pullables == "0" {
return gui.pushWithForceFlag(v, false, "", "")
return gui.pushWithForceFlag(false, "", "")
}
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,
prompt: gui.Tr.ForcePushPrompt,
handleConfirm: func() error {
return gui.pushWithForceFlag(v, true, "", "")
return gui.pushWithForceFlag(true, "", "")
},
})
}
@ -812,7 +812,7 @@ func (gui *Gui) anyFilesWithMergeConflicts() bool {
return false
}
func (gui *Gui) handleCustomCommand(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleCustomCommand() error {
return gui.prompt(promptOpts{
title: gui.Tr.CustomCommand,
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{
{
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})
}
func (gui *Gui) handleStashChanges(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleStashChanges() error {
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}")
}

View File

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

View File

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

View File

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

View File

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

View File

@ -178,13 +178,13 @@ func (gui *Gui) LBLSelectLine(newSelectedLineIdx int, state *lBlPanelState) erro
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 {
if gui.popupPanelFocused() {
return nil
}
newSelectedLineIdx := v.SelectedLineIdx()
newSelectedLineIdx := gui.getMainView().SelectedLineIdx()
state.FirstLineIdx = 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 {
if gui.popupPanelFocused() {
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()
}
func (lc *ListContext) handlePrevLine(g *gocui.Gui, v *gocui.View) error {
func (lc *ListContext) handlePrevLine() error {
return lc.handleLineChange(-1)
}
func (lc *ListContext) handleNextLine(g *gocui.Gui, v *gocui.View) error {
func (lc *ListContext) handleNextLine() error {
return lc.handleLineChange(1)
}
@ -188,7 +188,7 @@ func (lc *ListContext) handleLineChange(change int) error {
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)
if err != nil {
return nil
@ -198,15 +198,15 @@ func (lc *ListContext) handleNextPage(g *gocui.Gui, v *gocui.View) error {
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())
}
func (lc *ListContext) handleGotoBottom(g *gocui.Gui, v *gocui.View) error {
func (lc *ListContext) handleGotoBottom() error {
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)
if err != nil {
return nil
@ -217,13 +217,18 @@ func (lc *ListContext) handlePrevPage(g *gocui.Gui, v *gocui.View) error {
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() {
return nil
}
view, err := lc.Gui.g.View(lc.ViewName)
if err != nil {
return nil
}
prevSelectedLineIdx := lc.GetPanelState().GetSelectedLineIdx()
newSelectedLineIdx := v.SelectedLineIdx()
newSelectedLineIdx := view.SelectedLineIdx()
// we need to focus the view
if err := lc.Gui.pushContext(lc); err != nil {
@ -573,7 +578,7 @@ func (gui *Gui) getListContextKeyBindings() []*Binding {
ViewName: listContext.ViewName,
Contexts: []string{listContext.ContextKey},
Key: gui.getKey(keybindingConfig.Universal.StartSearch),
Handler: openSearchHandler,
Handler: func() error { return openSearchHandler(listContext.ViewName) },
Description: gui.Tr.LcStartSearch,
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 {
_ = g.DeleteView("menu")
func (gui *Gui) handleMenuClose() error {
_ = gui.g.DeleteView("menu")
return gui.returnFromContext()
}

View File

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

View File

@ -3,11 +3,10 @@ package gui
import (
"fmt"
"github.com/jesseduffield/gocui"
"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() {
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)
}
func (gui *Gui) handleQuitWithoutChangingDirectory(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleQuitWithoutChangingDirectory() error {
gui.State.RetainOriginalDir = true
return gui.quit()
}
@ -34,7 +34,7 @@ func (gui *Gui) handleQuit() error {
return gui.quit()
}
func (gui *Gui) handleTopLevelReturn(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleTopLevelReturn() error {
currentContext := gui.currentContext()
parentContext, hasParent := currentContext.GetParentContext()

View File

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

View File

@ -3,7 +3,6 @@ package gui
import (
"fmt"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"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)
}
func (gui *Gui) handleMergeRemoteBranch(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleMergeRemoteBranch() error {
selectedBranchName := gui.getSelectedRemoteBranch().FullName()
return gui.mergeBranchIntoCheckedOutBranch(selectedBranchName)
}
func (gui *Gui) handleDeleteRemoteBranch(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleDeleteRemoteBranch() error {
remoteBranch := gui.getSelectedRemoteBranch()
if remoteBranch == 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()
return gui.handleRebaseOntoBranch(selectedBranchName)
}
func (gui *Gui) handleSetBranchUpstream(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleSetBranchUpstream() error {
selectedBranch := gui.getSelectedRemoteBranch()
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()
if selectedBranch == nil {
return nil

View File

@ -5,7 +5,6 @@ import (
"strings"
"github.com/fatih/color"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils"
)
@ -84,7 +83,7 @@ func (gui *Gui) handleRemoteEnter() error {
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{
title: gui.Tr.LcNewRemoteName,
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()
if remote == 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()
if remote == 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()
if remote == nil {
return nil

View File

@ -3,14 +3,18 @@ package gui
import (
"fmt"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/theme"
"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.view = v
gui.State.Searching.view = view
gui.renderString("search", "")
@ -21,7 +25,7 @@ func (gui *Gui) handleOpenSearch(g *gocui.Gui, v *gocui.View) error {
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()
if err := gui.returnFromContext(); err != nil {
return err
@ -92,7 +96,7 @@ func (gui *Gui) onSearchEscape() error {
return nil
}
func (gui *Gui) handleSearchEscape(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleSearchEscape() error {
if err := gui.onSearchEscape(); err != nil {
return err
}

View File

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

View File

@ -3,7 +3,6 @@ package gui
import (
"strings"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/patch"
)
@ -60,11 +59,11 @@ func (gui *Gui) refreshStagingPanel(forceSecondaryFocused bool, selectedLineIdx
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 {
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
import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils"
)
@ -45,7 +44,7 @@ func (gui *Gui) refreshStashEntries() error {
// specific functions
func (gui *Gui) handleStashApply(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleStashApply() error {
skipStashWarning := gui.Config.GetUserConfig().Gui.SkipStashWarning
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
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{
title: gui.Tr.StashDrop,
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)
}
func (gui *Gui) handleCheckForUpdate(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleCheckForUpdate() error {
gui.Updater.CheckForNewUpdate(gui.onUserUpdateCheckFinish, true)
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)
if gui.popupPanelFocused() {
return nil
@ -77,7 +77,7 @@ func (gui *Gui) handleStatusClick(g *gocui.Gui, v *gocui.View) error {
return err
}
cx, _ := v.Cursor()
cx, _ := gui.getStatusView().Cursor()
upstreamStatus := fmt.Sprintf("↑%s↓%s", currentBranch.Pushables, currentBranch.Pullables)
repoName := utils.GetCurrentRepoName()
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())
}
func (gui *Gui) handleEditConfig(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleEditConfig() error {
filename := gui.Config.GetUserConfigPath()
return gui.editFile(filename)
}

View File

@ -1,7 +1,6 @@
package gui
import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands"
"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()
if commit == nil {
return nil

View File

@ -7,7 +7,6 @@ import (
"strings"
"github.com/fatih/color"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"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 {
return gui.wrappedHandler(
func() error {
submodule := gui.getSelectedSubmodule()
if submodule == nil {
return nil
}
func (gui *Gui) forSubmodule(callback func(*models.SubmoduleConfig) error) func() error {
return func() error {
submodule := gui.getSelectedSubmodule()
if submodule == nil {
return nil
}
return callback(submodule)
},
)
return callback(submodule)
}
}
func (gui *Gui) handleResetRemoveSubmodule(submodule *models.SubmoduleConfig) error {

View File

@ -1,7 +1,6 @@
package gui
import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/utils"
)
@ -48,7 +47,7 @@ func (gui *Gui) refreshTags() error {
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()
if tag == 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)
}
func (gui *Gui) handleDeleteTag(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleDeleteTag() error {
tag := gui.getSelectedTag()
if tag == 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()
if tag == 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{
title: gui.Tr.CreateTagTitle,
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()
if tag == nil {
return nil

View File

@ -1,7 +1,6 @@
package gui
import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/utils"
@ -86,7 +85,7 @@ func (gui *Gui) parseReflogForActions(onUserAction func(counter int, action refl
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]"}
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]"}
redoingStatus := gui.Tr.RedoingStatus

View File

@ -251,6 +251,16 @@ func (gui *Gui) getCommitFilesView() *gocui.View {
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 {
v, _ := gui.g.View("commitMessage")
return v
@ -308,6 +318,11 @@ func (gui *Gui) getConfirmationView() *gocui.View {
return v
}
func (gui *Gui) getInformationView() *gocui.View {
v, _ := gui.g.View("confirmation")
return v
}
func (gui *Gui) trimmedContent(v *gocui.View) string {
return strings.TrimSpace(v.Buffer())
}
@ -403,15 +418,6 @@ func (gui *Gui) popupPanelFocused() bool {
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.
func (gui *Gui) secondaryViewFocused() bool {
state := gui.State.Panels.LineByLine
@ -430,14 +436,24 @@ func (gui *Gui) onViewTabClick(viewName string, tabIndex int) error {
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(
v.Name(),
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(
v.Name(),
utils.ModuloWithWrap(v.TabIndex-1, len(v.Tabs)),

View File

@ -4,10 +4,9 @@ import (
"fmt"
"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)
nukeStr := "reset --hard HEAD && git clean -fd"