| ... | ... | @@ -108,14 +108,15 @@ fn renderRoot( |
| 108 | 108 | Token.Id.LineComment => {}, |
| 109 | 109 | Token.Id.Eof => { |
| 110 | 110 | const start = tree.tokens.at(start_token_index + 1).start; |
| 111 | | try stream.write(tree.source[start..]); |
| 111 | try copyFixingWhitespace(stream, tree.source[start..]); |
| 112 | 112 | return; |
| 113 | 113 | }, |
| 114 | 114 | else => continue, |
| 115 | 115 | } |
| 116 | 116 | if (mem.eql(u8, mem.trim(u8, tree.tokenSlicePtr(end_token)[2..], " "), "zig fmt: on")) { |
| 117 | 117 | const start = tree.tokens.at(start_token_index + 1).start; |
| 118 | | try stream.print("{}\n", tree.source[start..end_token.end]); |
| 118 | try copyFixingWhitespace(stream, tree.source[start..end_token.end]); |
| 119 | try stream.writeByte('\n'); |
| 119 | 120 | while (tree.tokens.at(decl.firstToken()).start < end_token.end) { |
| 120 | 121 | decl = (it.next() orelse return).*; |
| 121 | 122 | } |
| ... | ... | @@ -2121,3 +2122,11 @@ const FindByteOutStream = struct { |
| 2121 | 2122 | }; |
| 2122 | 2123 | } |
| 2123 | 2124 | }; |
| 2125 | |
| 2126 | fn copyFixingWhitespace(stream: var, slice: []const u8) @typeOf(stream).Child.Error!void { |
| 2127 | for (slice) |byte| switch (byte) { |
| 2128 | '\t' => try stream.write(" "), |
| 2129 | '\r' => {}, |
| 2130 | else => try stream.writeByte(byte), |
| 2131 | }; |
| 2132 | } |