@@ -165,26 +165,26 @@ type colCounter struct {
165165 lineStart bool
166166}
167167
168- func (c * colCounter ) WriteByte (b byte ) error {
168+ func (c * colCounter ) addByte (b byte ) {
169169 switch b {
170170 case '\n' :
171171 c .column = 0
172172 c .lineStart = true
173- case '\t' , ' ' :
173+ case '\t' , ' ' , tabwriter . Escape :
174174 default :
175175 c .lineStart = false
176176 }
177177 c .column ++
178+ }
179+
180+ func (c * colCounter ) WriteByte (b byte ) error {
181+ c .addByte (b )
178182 return c .Writer .WriteByte (b )
179183}
180184
181185func (c * colCounter ) WriteString (s string ) (int , error ) {
182- c .lineStart = false
183- for _ , r := range s {
184- if r == '\n' {
185- c .column = 0
186- }
187- c .column ++
186+ for _ , b := range []byte (s ) {
187+ c .addByte (b )
188188 }
189189 return c .Writer .WriteString (s )
190190}
@@ -269,15 +269,15 @@ func (p *Printer) space() {
269269}
270270
271271func (p * Printer ) spacePad (pos Pos ) {
272- if p .wantSpace {
273- p .WriteByte (' ' )
274- p .wantSpace = false
275- }
276272 if p .cols .lineStart {
277273 // Never add padding at the start of a line, since this may
278274 // result in broken indentation or mixing of spaces and tabs.
279275 return
280276 }
277+ if p .wantSpace {
278+ p .WriteByte (' ' )
279+ p .wantSpace = false
280+ }
281281 for ! p .cols .lineStart && p .cols .column > 0 && p .cols .column < int (pos .col ) {
282282 p .WriteByte (' ' )
283283 }
@@ -331,7 +331,7 @@ func (p *Printer) writeLit(s string) {
331331 p .WriteString (s )
332332 return
333333 }
334- p .WriteByte ('\xff' )
334+ p .WriteByte (tabwriter . Escape )
335335 for i := 0 ; i < len (s ); i ++ {
336336 b := s [i ]
337337 if b != '\t' {
@@ -340,7 +340,7 @@ func (p *Printer) writeLit(s string) {
340340 }
341341 p .WriteByte (b )
342342 }
343- p .WriteByte ('\xff' )
343+ p .WriteByte (tabwriter . Escape )
344344}
345345
346346func (p * Printer ) incLevel () {
@@ -370,11 +370,11 @@ func (p *Printer) indent() {
370370 switch {
371371 case p .level == 0 :
372372 case p .indentSpaces == 0 :
373- p .WriteByte ('\xff' )
373+ p .WriteByte (tabwriter . Escape )
374374 for i := uint (0 ); i < p .level ; i ++ {
375375 p .WriteByte ('\t' )
376376 }
377- p .WriteByte ('\xff' )
377+ p .WriteByte (tabwriter . Escape )
378378 default :
379379 p .spaces (p .indentSpaces * p .level )
380380 }
0 commit comments