Personally, I'd rather prefix with `\\` than have to postfix with `\n`. The `\\` is automatically prepended when I enter a newline in my editor after I start a multiline string, much like editors have done for C-style multiline comments for years.
Snippet from my shader compiler tests (the `\` vs `/` in the paths in params and output is intentional, when compiled it will generate escape errors so I'm prodded to make everything `/`):
test "shader_root_gen" {
const expected =
\\// Generated file!
\\
\\pub const @"spriteszzz" = opaque {
\\ pub const @"quadsprite" = @import("src\spriteszzz/quadsprite.glsl");
\\};
\\
\\pub const @"sprites" = opaque {
\\ pub const @"universalsprite" = @import("src\sprites/universalsprite.glsl");
\\};
\\
\\pub const @"simpleshader" = @import("src/simpleshader.glsl");
\\
;
const cmdline =
\\--prefix src -o testfile.zig src\spriteszzz/quadsprite.glsl src\sprites/universalsprite.glsl src/simpleshader.glsl
;
var args_iter = std.mem.tokenizeScalar(u8, cmdline, ' ');
const params = try Params.parseFromCmdLineArgs(&args_iter);
var buffer: [expected.len * 2]u8 = undefined;
var stream = std.io.fixedBufferStream(buffer[0..]);
try generateSource(stream.writer().any(), params.input_files.items, params.prefix);
const actual = stream.getWritten();
try std.testing.expectEqualSlices(u8, expected, actual);
}