diff options
author | Mike JS. Choi <mkchoi212@icloud.com> | 2018-01-07 15:54:20 -0600 |
---|---|---|
committer | Mike JS. Choi <mkchoi212@icloud.com> | 2018-01-07 15:54:20 -0600 |
commit | d7db6f1d0d00a28516f2a4b7a38f44482ecb2ff2 (patch) | |
tree | b1761002c10bfaa09fbf12a409fa5d080cf728e8 | |
parent | 4addf0d364d76efc4f4559ba3107addc02456c7b (diff) |
Make input prompt parse inputs without enterno-enter
-rw-r--r-- | main.go | 13 | ||||
-rw-r--r-- | prompt.go | 3 |
2 files changed, 8 insertions, 8 deletions
@@ -18,6 +18,7 @@ var ( cur = 0 consecutiveError = 0 ) +var g *gocui.Gui func printLines(v *gocui.View, lines []string) { for _, line := range lines { @@ -29,7 +30,7 @@ func quit(g *gocui.Gui, v *gocui.View) error { return gocui.ErrQuit } -func parseInput(g *gocui.Gui, v *gocui.View) error { +func parseInput(v *gocui.View) error { evalCmd := func(in rune, g *gocui.Gui) { switch in { case 'j': @@ -71,8 +72,6 @@ func parseInput(g *gocui.Gui, v *gocui.View) error { } in := strings.TrimSuffix(v.Buffer(), "\n") - v.Clear() - v.SetCursor(0, 0) if len(in) > 1 { for _, r := range [...]rune{'a', 'd', 'h', 'z'} { @@ -90,7 +89,8 @@ func parseInput(g *gocui.Gui, v *gocui.View) error { } func main() { - if err := conflict.Find(); err != nil { + var err error + if err = conflict.Find(); err != nil { switch err.(type) { case *conflict.ErrNoConflict: fmt.Println(color.Green(color.Regular, err.Error())) @@ -100,7 +100,7 @@ func main() { return } - g, err := gocui.NewGui(gocui.OutputNormal) + g, err = gocui.NewGui(gocui.OutputNormal) if err != nil { log.Panicln(err) } @@ -110,9 +110,6 @@ func main() { if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { log.Panic(err) } - if err := g.SetKeybinding("", gocui.KeyEnter, gocui.ModNone, parseInput); err != nil { - log.Panic(err) - } Select(&conflict.All[0], g, false) @@ -11,7 +11,10 @@ var promptString = "[w,a,s,d,?] >>" func promptEditor(v *gocui.View, key gocui.Key, ch rune, mod gocui.Modifier) { switch { case ch != 0 && mod == 0: + v.Clear() v.EditWrite(ch) + parseInput(v) + v.SetCursor(0, 0) case key == gocui.KeySpace: v.EditWrite(' ') case key == gocui.KeyBackspace || key == gocui.KeyBackspace2: |