From f55885c48e231d359bbd338e2556d33792ed1253 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 2 Feb 2026 11:44:39 +0100 Subject: [PATCH] fix: ignore/preserve trailing new line in reflow input --- src/buffer/reflow.zig | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/buffer/reflow.zig b/src/buffer/reflow.zig index 7cda022..40a977d 100644 --- a/src/buffer/reflow.zig +++ b/src/buffer/reflow.zig @@ -1,6 +1,9 @@ pub fn reflow(allocator: std.mem.Allocator, text: []const u8, width: usize) error{ OutOfMemory, WriteFailed }![]u8 { - const prefix = detect_prefix(text); - const words = try split_words(allocator, text, prefix.len); + const len = text.len; + const trailing_ln: bool = (len > 0 and text[len - 1] == '\n'); + const input = if (trailing_ln) text[0 .. len - 1] else text; + const prefix = detect_prefix(input); + const words = try split_words(allocator, input, prefix.len); defer allocator.free(words); var output: std.Io.Writer.Allocating = .init(allocator); const writer = &output.writer; @@ -39,7 +42,7 @@ pub fn reflow(allocator: std.mem.Allocator, text: []const u8, width: usize) erro }, } } - + if (trailing_ln) try writer.writeByte('\n'); return output.toOwnedSlice(); }