╭ changed ────────────╮ │src/ui/Repo/Files.zig│ ╰─────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │399 // a search result shows its file name, with its directory │ │400 // in the bottom label. │ │401 const label = if (data.find != null) │ │402 - std.fs.path.basenamePosix(entry.name) │ │402 + std.Io.Dir.path.basenamePosix(entry.name) │ │403 else if (entry.is_dir) │ │404 - try std.fmt.allocPrint(aa, "{s}/", .{entry.name}) │ │404 + try aa.print("{s}/", .{entry.name}) │ │405 else │ │406 entry.name; │ │407 const bottom_label = if (data.find != null) try resultDirLabel(aa, entry.name) else "";│ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │730 const page_arena = self.session.page_arena; │ │731 const path = try childDir(page_arena.allocator(), self.data.dir, entry.name); │ │732 const route = self.data.filesRoute(path, target_start) orelse return error.RouteTooLong; │ │733 - const link = try std.fmt.allocPrint(page_arena.allocator(), "a:{s}", .{try route.toUrl(page_arena)}); │ │733 + const link = try page_arena.allocator().print("a:{s}", .{try route.toUrl(page_arena)}); │ │734 var tb = try wgt.TextBox.init(allocator, label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │735 errdefer tb.deinit(allocator); │ │736 tb.getFocus().mode = .all; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────╮ │972 var out: std.ArrayList(u8) = .empty; │ │973 for (lines, 0..) |line, i| { │ │974 if (i != 0) try out.append(arena, '\n'); │ │975 - const num_str = try std.fmt.allocPrint(arena, "{d}", .{start + i + 1});│ │975 + const num_str = try arena.print("{d}", .{start + i + 1}); │ │976 try out.appendSlice(arena, indent[0 .. width - num_str.len]); │ │977 try out.appendSlice(arena, num_str); │ │978 try out.append(arena, ' '); │ ╰────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │991 } │ │992 │ │993 fn isMarkdown(name: []const u8) bool { │ │994 - const extension = std.fs.path.extension(name); │ │994 + const extension = std.Io.Dir.path.extension(name); │ │995 return std.ascii.eqlIgnoreCase(extension, ".md") or std.ascii.eqlIgnoreCase(extension, ".markdown");│ │996 } │ │997 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1012 // following it navigates to that directory's listing. │ │1013 fn dirLink(page_arena: *std.heap.ArenaAllocator, data: *const Self, path: []const u8) ![]const u8 {│ │1014 const route = data.filesRoute(path, 0) orelse return error.RouteTooLong; │ │1015 - return std.fmt.allocPrint(page_arena.allocator(), "a:{s}", .{try route.toUrl(page_arena)}); │ │1015 + return page_arena.allocator().print("a:{s}", .{try route.toUrl(page_arena)}); │ │1016 } │ │1017 │ │1018 // a link to the file's route. a preloaded file gets an "ai:" link │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1022 fn fileLink(page_arena: *std.heap.ArenaAllocator, data: *const Self, path: []const u8, loaded: bool, line: usize) ![]const u8 {│ │1023 const route = data.filesRoute(path, line) orelse return error.RouteTooLong; │ │1024 const prefix = if (loaded) "ai:" else "a:"; │ │1025 - return std.fmt.allocPrint(page_arena.allocator(), "{s}{s}", .{ prefix, try route.toUrl(page_arena) }); │ │1025 + return page_arena.allocator().print("{s}{s}", .{ prefix, try route.toUrl(page_arena) }); │ │1026 } │ │1027 │ │1028 // the url `line` value for a content window: its first line's 1-based number, │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ │1033 │ │1034 // `dir`/`name`, or just `name` at the root. │ │1035 pub fn childDir(arena: std.mem.Allocator, dir: []const u8, name: []const u8) ![]const u8 { │ │1036 - return if (dir.len == 0) name else std.fmt.allocPrint(arena, "{s}/{s}", .{ dir, name });│ │1036 + return if (dir.len == 0) name else arena.print("{s}/{s}", .{ dir, name }); │ │1037 } │ │1038 │ │1039 // `dir` with its last segment removed ("" when `dir` has a single segment). │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────╮ │1050 // the row's border and the label's padding take two columns each │ │1051 const max_width = View.list_max_width - 4; │ │1052 var width = try xitui.width.displayWidth(dir); │ │1053 - if (width <= max_width) return std.fmt.allocPrint(aa, " {s} ", .{dir});│ │1053 + if (width <= max_width) return aa.print(" {s} ", .{dir}); │ │1054 │ │1055 const ellipsis = ".."; │ │1056 var iter = (try std.unicode.Utf8View.init(dir)).iterator(); │ ╰─────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────╮ │1060 width -= xitui.width.cellWidth(try std.unicode.utf8Decode(slice)); │ │1061 start += slice.len; │ │1062 } │ │1063 - return std.fmt.allocPrint(aa, " " ++ ellipsis ++ "{s} ", .{dir[start..]});│ │1063 + return aa.print(" " ++ ellipsis ++ "{s} ", .{dir[start..]}); │ │1064 } │ │1065 │ ╰────────────────────────────────────────────────────────────────────────────────────╯