properly track prefix bytes written
diff --git a/indent.go b/indent.go
index 626de75..4ebac45 100644
--- a/indent.go
+++ b/indent.go
@@ -31,6 +31,7 @@
bol bool
pre [][]byte
sel int
+ off int
}
// NewIndentWriter makes a new write filter that indents the input
@@ -49,7 +50,10 @@
func (w *indentWriter) Write(p []byte) (n int, err error) {
for _, c := range p {
if w.bol {
- if _, err = w.w.Write(w.pre[w.sel]); err != nil {
+ var i int
+ i, err = w.w.Write(w.pre[w.sel][w.off:])
+ w.off += i
+ if err != nil {
return n, err
}
}
@@ -59,8 +63,11 @@
}
n++
w.bol = c == '\n'
- if w.bol && w.sel < len(w.pre)-1 {
- w.sel++
+ if w.bol {
+ w.off = 0
+ if w.sel < len(w.pre)-1 {
+ w.sel++
+ }
}
}
return n, nil