diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-02-22 21:16:00 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-17 19:13:40 +1100 |
commit | d991d74b063c8bc8edf27321bf8a98d1a51e3a54 (patch) | |
tree | cbd7b93cdffed917e203e8fc344a08df1119b6fc /pkg/gui/gui.go | |
parent | 120078f0112b64b201cf038b09f0cb00b8421d72 (diff) |
add commit message controller
Diffstat (limited to 'pkg/gui/gui.go')
-rw-r--r-- | pkg/gui/gui.go | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 93476636c..511406e77 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -193,8 +193,9 @@ type GuiRepoState struct { // back in sync with the repo state ViewsSetup bool - // this is the message of the last failed commit attempt - failedCommitMessage string + // we store a commit message in this field if we've escaped the commit message + // panel without committing or if our commit failed + savedCommitMessage string ScreenMode WindowMaximisation } @@ -503,6 +504,7 @@ func (gui *Gui) resetControllers() { Files: helpers.NewFilesHelper(controllerCommon, gui.git, osCommand), WorkingTree: helpers.NewWorkingTreeHelper(model), Tags: helpers.NewTagsHelper(controllerCommon, gui.git), + GPG: helpers.NewGpgHelper(controllerCommon, gui.os, gui.git), MergeAndRebase: rebaseHelper, CherryPick: helpers.NewCherryPickHelper( controllerCommon, @@ -538,15 +540,39 @@ func (gui *Gui) resetControllers() { reflogController := controllers.NewReflogController(common) subCommitsController := controllers.NewSubCommitsController(common) + getSavedCommitMessage := func() string { + return gui.State.savedCommitMessage + } + + getCommitMessage := func() string { + return strings.TrimSpace(gui.Views.CommitMessage.TextArea.GetContent()) + } + + setCommitMessage := gui.getSetTextareaTextFn(func() *gocui.View { return gui.Views.CommitMessage }) + + onCommitAttempt := func(message string) { + gui.Views.CommitMessage.ClearTextArea() + } + + onCommitSuccess := func() { + gui.State.savedCommitMessage = "" + } + + commitMessageController := controllers.NewCommitMessageController( + common, + getCommitMessage, + onCommitAttempt, + onCommitSuccess, + ) + gui.Controllers = Controllers{ Submodules: submodulesController, Global: controllers.NewGlobalController(common), Files: controllers.NewFilesController( common, gui.enterSubmodule, - gui.getSetTextareaTextFn(func() *gocui.View { return gui.Views.CommitMessage }), - gui.withGpgHandling, - func() string { return gui.State.failedCommitMessage }, + setCommitMessage, + getSavedCommitMessage, gui.switchToMerge, ), Tags: controllers.NewTagsController(common), @@ -604,6 +630,7 @@ func (gui *Gui) resetControllers() { controllers.AttachControllers(gui.State.Contexts.Remotes, gui.Controllers.Remotes) controllers.AttachControllers(gui.State.Contexts.Stash, stashController) controllers.AttachControllers(gui.State.Contexts.Menu, gui.Controllers.Menu) + controllers.AttachControllers(gui.State.Contexts.CommitMessage, commitMessageController) controllers.AttachControllers(gui.State.Contexts.Global, gui.Controllers.Sync, gui.Controllers.Undo, gui.Controllers.Global) listControllerFactory := controllers.NewListControllerFactory(gui.c) |