summaryrefslogtreecommitdiff
path: root/uncrust.go
diff options
context:
space:
mode:
Diffstat (limited to 'uncrust.go')
-rw-r--r--uncrust.go23
1 files changed, 14 insertions, 9 deletions
diff --git a/uncrust.go b/uncrust.go
index 85c3f9b..2a98d77 100644
--- a/uncrust.go
+++ b/uncrust.go
@@ -83,19 +83,24 @@ func main() {
// We have to calculate the rune position from the byte position.
rcount := 0
- idx := 0
+ sidx, eidx := 0, 0
for p := range before {
- for i := range edits[idx:] {
- if edits[i].Start == p {
- edits[i].Start = rcount
+ for i := range edits[sidx:] {
+ if edits[sidx+i].Start == p {
+ edits[sidx+i].Start = rcount
+ sidx += i
+ break
}
- if edits[i].End == p {
- edits[i].End = rcount
- idx++
+ }
+ for i := range edits[eidx:] {
+ if edits[i+eidx].End == p {
+ edits[i+eidx].End = rcount
+ eidx += i
+ break
}
}
rcount++
- if idx == len(edits) {
+ if eidx == len(edits) {
break
}
}
@@ -114,7 +119,7 @@ func main() {
addr := fmt.Sprintf("#%d,#%d", edit.Start, edit.End)
e = win.Addr(addr)
if e != nil {
- log.Fatalf("error writing to acme/%d/addr: %s\n", wid, e)
+ log.Fatalf("error writing %q to acme/%d/addr: %s\n", addr, wid, e)
}
win.Write("data", []byte(edit.New))
}