authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-05 15:09:22-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-05 15:09:22-04:00
log9471f16c799e0cc60a3d6465cc3bee0a13bd5617
tree248fd862235a82c5d09c4ec387c3477817a2c298
parent4f43a4b30f8a6dad7a9a35ccf1cef89b6d239997
signaturelock-open Commit is signed but in an unrecognized format.

zig fmt ignores "zig fmt: off" directive for whitespace fixes


2 files changed, 15 insertions(+), 3 deletions(-)

std/zig/parser_test.zig+4-1
......@@ -9,10 +9,13 @@ test "zig fmt: change use to usingnamespace" {
99}
1010
1111test "zig fmt: whitespace fixes" {
12 try testTransform("test \"\" {\r\n\tconst hi = x;\r\n}",
12 try testTransform("test \"\" {\r\n\tconst hi = x;\r\n}\n// zig fmt: off\ntest \"\"{\r\n\tconst a = b;}\r\n",
1313 \\test "" {
1414 \\ const hi = x;
1515 \\}
16 \\// zig fmt: off
17 \\test ""{
18 \\ const a = b;}
1619 \\
1720 );
1821}
std/zig/render.zig+11-2
......@@ -108,14 +108,15 @@ fn renderRoot(
108108 Token.Id.LineComment => {},
109109 Token.Id.Eof => {
110110 const start = tree.tokens.at(start_token_index + 1).start;
111 try stream.write(tree.source[start..]);
111 try copyFixingWhitespace(stream, tree.source[start..]);
112112 return;
113113 },
114114 else => continue,
115115 }
116116 if (mem.eql(u8, mem.trim(u8, tree.tokenSlicePtr(end_token)[2..], " "), "zig fmt: on")) {
117117 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');
119120 while (tree.tokens.at(decl.firstToken()).start < end_token.end) {
120121 decl = (it.next() orelse return).*;
121122 }
......@@ -2121,3 +2122,11 @@ const FindByteOutStream = struct {
21212122 };
21222123 }
21232124};
2125
2126fn 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}