diff options
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 |
commit | e6b687b25f41f32a5c7e558d450881855047aa83 (patch) | |
tree | 9674be918c24c97769f00414eece48b337aaec95 | |
parent | 94d148b913218f0e577cf7a2ef7cf65b8880d564 (diff) |
fix recalc of byte offsets
-rw-r--r-- | uncrust.go | 23 |
1 files changed, 14 insertions, 9 deletions
@@ -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)) } |