Skip to content

Commit

Permalink
Quit application when all conflicts have been resolved
Browse files Browse the repository at this point in the history
  • Loading branch information
mkchoi212 committed Dec 29, 2017
1 parent e28b544 commit 3d14515
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 21 deletions.
26 changes: 21 additions & 5 deletions conflict.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ type Conflict struct {
ForeignName string
}

const (
Local = 0
Incoming = 1
)

func (c *Conflict) isEqual(c2 *Conflict) bool {
return c.FileName == c2.FileName && c.Start == c2.Start
}
Expand Down Expand Up @@ -82,7 +87,7 @@ func (c *Conflict) Select(g *gocui.Gui) error {
return nil
}

func (c *Conflict) Resolve(g *gocui.Gui, v *gocui.View) error {
func (c *Conflict) Resolve(g *gocui.Gui, v *gocui.View, version int) error {
g.Update(func(g *gocui.Gui) error {
c.Resolved = true
nextConflict(g, v)
Expand All @@ -92,11 +97,22 @@ func (c *Conflict) Resolve(g *gocui.Gui, v *gocui.View) error {
}

func nextConflict(g *gocui.Gui, v *gocui.View) error {
curIdx = curIdx + 1
if curIdx >= conflictCount {
curIdx = 0
originalCur := cur

for originalCur != cur {
cur++
if cur >= conflictCount {
cur = 0
}
}

if originalCur == cur {
g.Update(func(g *gocui.Gui) error {
v, _ = g.View("")
return quit(g, v)
})
}

conflicts[curIdx].Select(g)
conflicts[cur].Select(g)
return nil
}
10 changes: 3 additions & 7 deletions diff.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
package main

import (
"fmt"
"strings"

"github.com/sergi/go-diff/diffmatchpatch"
)

/*
func (c *Conflict) Diff() {
dmp := diffmatchpatch.New()
diffs := dmp.DiffMain(strings.Join(c.CurrentLines, "\n"), strings.Join(c.ForeignLines, "\n"), false)
fmt.Println(dmp.DiffPrettyText(diffs))
}
*/
21 changes: 12 additions & 9 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ package main
import (
"fmt"
"log"
"strings"

"github.com/jroimartin/gocui"
)

var (
curIdx = 0
cur = 0
conflictCount = 0
conflicts = []Conflict{}
)
Expand All @@ -29,11 +30,17 @@ func quit(g *gocui.Gui, v *gocui.View) error {
}

func parseInput(g *gocui.Gui, v *gocui.View) error {
in := strings.TrimSuffix(v.Buffer(), "\n")
v.Clear()
v.SetCursor(0, 0)
_ = v.Buffer()

switch {
case in == "a":
conflicts[cur].Resolve(g, v, Local)
printPrompt(g, Green("[a | d] >>"))
case in == "d":
conflicts[cur].Resolve(g, v, Incoming)
printPrompt(g, Green("[a | d] >>"))
default:
printPrompt(g, Red("[a | d] >>"))
}
Expand All @@ -53,25 +60,21 @@ func main() {
log.Panicln("No conflicts found")
}
conflictCount = len(conflicts)
conflicts[0].Diff()
fmt.Println("Good-bye!")

g, err := gocui.NewGui(gocui.OutputNormal)
if err != nil {
log.Panicln(err)
}
defer g.Close()

g.SetManagerFunc(layout)

g.Cursor = true

if err := keyBindings(g); err != nil {
log.Panicln(err)
}

g.Update(func(g *gocui.Gui) error {
conflicts[0].Select(g)
return nil
})
conflicts[0].Select(g)

if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
log.Panicln(err)
Expand Down

0 comments on commit 3d14515

Please sign in to comment.