From bc8e6754a72157a944d304904a9a9dcf45e109ce Mon Sep 17 00:00:00 2001 From: Luke Adams Date: Thu, 4 Oct 2018 10:29:19 -0600 Subject: Make addCommentWithEditor accept a preMessage --- termui/termui.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'termui/termui.go') diff --git a/termui/termui.go b/termui/termui.go index f2163d96..45952705 100644 --- a/termui/termui.go +++ b/termui/termui.go @@ -210,7 +210,7 @@ func addCommentWithEditor(bug *cache.BugCache) error { ui.g.Close() ui.g = nil - message, err := input.BugCommentEditorInput(ui.cache) + message, err := input.BugCommentEditorInput(ui.cache, "") if err != nil && err != input.ErrEmptyMessage { return err -- cgit From c96015e634724a4ab02ab8dbf9c3994156e8bea7 Mon Sep 17 00:00:00 2001 From: Luke Adams Date: Thu, 4 Oct 2018 10:31:46 -0600 Subject: Enable editing comments in the term ui --- termui/termui.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'termui/termui.go') diff --git a/termui/termui.go b/termui/termui.go index 45952705..5c39869b 100644 --- a/termui/termui.go +++ b/termui/termui.go @@ -4,6 +4,7 @@ package termui import ( "github.com/MichaelMure/git-bug/cache" "github.com/MichaelMure/git-bug/input" + "github.com/MichaelMure/git-bug/util/git" "github.com/jroimartin/gocui" "github.com/pkg/errors" ) @@ -230,6 +231,41 @@ func addCommentWithEditor(bug *cache.BugCache) error { return errTerminateMainloop } +func editCommentWithEditor(bug *cache.BugCache, target git.Hash, preMessage string) error { + // This is somewhat hacky. + // As there is no way to pause gocui, run the editor and restart gocui, + // we have to stop it entirely and start a new one later. + // + // - an error channel is used to route the returned error of this new + // instance into the original launch function + // - a custom error (errTerminateMainloop) is used to terminate the original + // instance's mainLoop. This error is then filtered. + + ui.g.Close() + ui.g = nil + + message, err := input.BugCommentEditorInput(ui.cache, preMessage) + if err != nil && err != input.ErrEmptyMessage { + return err + } + + if err == input.ErrEmptyMessage { + // TODO: Allow comments to be deleted? + ui.msgPopup.Activate(msgPopupErrorTitle, "Empty message, aborting.") + } else if message == preMessage { + ui.msgPopup.Activate(msgPopupErrorTitle, "No changes found, aborting.") + } else { + err := bug.EditComment(target, message) + if err != nil { + return err + } + } + + initGui(nil) + + return errTerminateMainloop +} + func setTitleWithEditor(bug *cache.BugCache) error { // This is somewhat hacky. // As there is no way to pause gocui, run the editor and restart gocui, -- cgit