summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike JS. Choi <mkchoi212@icloud.com>2018-01-07 15:54:20 -0600
committerMike JS. Choi <mkchoi212@icloud.com>2018-01-07 15:54:20 -0600
commitd7db6f1d0d00a28516f2a4b7a38f44482ecb2ff2 (patch)
treeb1761002c10bfaa09fbf12a409fa5d080cf728e8
parent4addf0d364d76efc4f4559ba3107addc02456c7b (diff)
Make input prompt parse inputs without enterno-enter
-rw-r--r--main.go13
-rw-r--r--prompt.go3
2 files changed, 8 insertions, 8 deletions
diff --git a/main.go b/main.go
index 80a0c6a..bf05ede 100644
--- a/main.go
+++ b/main.go
@@ -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)
diff --git a/prompt.go b/prompt.go
index 6b75d0d..071dc56 100644
--- a/prompt.go
+++ b/prompt.go
@@ -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: