summaryrefslogtreecommitdiff
path: root/uncrust.go
diff options
context:
space:
mode:
authorÖzgür Kesim <oec@codeblau.de>2025-01-10 12:17:06 +0100
committerÖzgür Kesim <oec@codeblau.de>2025-01-10 12:17:17 +0100
commite6b687b25f41f32a5c7e558d450881855047aa83 (patch)
tree9674be918c24c97769f00414eece48b337aaec95 /uncrust.go
parent94d148b913218f0e577cf7a2ef7cf65b8880d564 (diff)
fix recalc of byte offsets
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))
}