From e5d25ac22f9bab707d2107fc5a502f6b291ebc98 Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 23 Mar 2026 09:40:27 -0300 Subject: dir comp --- src/main.zig | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 328207f..1267f34 100644 --- a/src/main.zig +++ b/src/main.zig @@ -346,11 +346,15 @@ fn readCommand(allocator: std.mem.Allocator, history: std.ArrayList([]const u8)) var iter = dir.iterate(); while (iter.next() catch null) |entry| { if (std.mem.startsWith(u8, entry.name, search_prefix)) { - if (allocator.dupe(u8, entry.name)) |duped| { - matches.append(allocator, duped) catch { - allocator.free(duped); - }; - } else |_| {} + const is_dir = (entry.kind == .directory); + const duped = if (is_dir) + std.fmt.allocPrint(allocator, "{s}/", .{entry.name}) catch continue + else + allocator.dupe(u8, entry.name) catch continue; + + matches.append(allocator, duped) catch { + allocator.free(duped); + }; } } } else |_| {} @@ -364,8 +368,11 @@ fn readCommand(allocator: std.mem.Allocator, history: std.ArrayList([]const u8)) try stdout.writeAll(remaining); try buffer.appendSlice(allocator, remaining); } - try stdout.writeAll(" "); - try buffer.append(allocator, ' '); + if (!std.mem.endsWith(u8, completion, "/")) { + try stdout.writeAll(" "); + try buffer.append(allocator, ' '); + } + last_was_tab = false; if (last_tab_partial) |p| allocator.free(p); -- cgit v1.2.3