╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭─────────────────────────────────────────────────╮ │79 │ │80 pub const RefKind = enum { branch, tag };│ │81 │ │82 - pub const RefKindOrOid = enum { │ │82 + pub const RefOrOid = enum { │ │83 branch, │ │84 tag, │ │85 oid, │ ╰─────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────╮ │86 │ │87 - fn fromSeg(s: []const u8) ?RefKindOrOid { │ │88 - return std.meta.stringToEnum(RefKindOrOid, s);│ │87 + fn fromSeg(s: []const u8) ?RefOrOid { │ │88 + return std.meta.stringToEnum(RefOrOid, s); │ │89 } │ │90 }; │ │91 │ ╰──────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────╮ │107 identity: []const u8, // "owner/name"│ │108 owner: []const u8, │ │109 name: []const u8, │ │110 - ref_kind: ?RefKindOrOid, │ │110 + ref_kind: ?RefOrOid, │ │111 ref_value: []const u8, │ │112 dir: []const u8, │ │113 │ ╰──────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────╮ │135 // "<refkind>/<refvalue>[/<dir>]" │ │136 const ref_part = tail[files_seg.len + 1 ..]; │ │137 const k1 = std.mem.indexOfScalar(u8, ref_part, '/') orelse return result;│ │138 - const kind = RefKindOrOid.fromSeg(ref_part[0..k1]) orelse return result; │ │138 + const kind = RefOrOid.fromSeg(ref_part[0..k1]) orelse return result; │ │139 const after_kind = ref_part[k1 + 1 ..]; │ │140 const k2 = std.mem.indexOfScalar(u8, after_kind, '/'); │ │141 const value = if (k2) |i| after_kind[0..i] else after_kind; │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │150 // build a `.repo` files route for "owner/name" (identity) at `dir` ("" = the │ │151 // ref's root) pinned to `ref_kind`/`ref_value`. a null ref_kind yields the │ │152 // bare default-branch root. null if the result doesn't fit the inline name. │ │153 - pub fn repoFilesRoute(identity: []const u8, ref_kind: ?RefKindOrOid, ref_value: []const u8, dir: []const u8) ?RoutablePage {│ │153 + pub fn repoFilesRoute(identity: []const u8, ref_kind: ?RefOrOid, ref_value: []const u8, dir: []const u8) ?RoutablePage { │ │154 const kind = ref_kind orelse return .{ .repo = Array(repo_route_max_len).from(identity) orelse return null }; │ │155 var buf: [repo_route_max_len]u8 = undefined; │ │156 const s = if (dir.len == 0) │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────╮ │298 // "files/<refkind>/<refvalue>[/<dir>]" │ │299 const ref_part = sub[files_seg.len + 1 ..]; │ │300 const k1 = std.mem.indexOfScalar(u8, ref_part, '/') orelse return null;│ │301 - const kind = RefKindOrOid.fromSeg(ref_part[0..k1]) orelse return null; │ │301 + const kind = RefOrOid.fromSeg(ref_part[0..k1]) orelse return null; │ │302 const after_kind = ref_part[k1 + 1 ..]; │ │303 const k2 = std.mem.indexOfScalar(u8, after_kind, '/'); │ │304 const value = if (k2) |i| after_kind[0..i] else after_kind; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │359 // the content a repo route renders: which repo, plus the files directory and │ │360 // commits page. tab switches keep this fixed (the page already holds every │ │361 // tab's data); a files-directory or commits-page change alters it. │ │362 - const RepoContent = struct { identity: []const u8, files_ref_kind: ?RefKindOrOid, files_ref_value: []const u8, files_dir: []const u8, commits_start: []const u8, commits_after: usize, refs_kind: RefKind, refs_after: usize };│ │362 + const RepoContent = struct { │ │363 + identity: []const u8, │ │364 + ref_or_oid: ?RefOrOid, │ │365 + ref_or_oid_value: []const u8, │ │366 + files_dir: []const u8, │ │367 + commits_start: []const u8, │ │368 + commits_after: usize, │ │369 + refs_kind: RefKind, │ │370 + refs_after: usize, │ │371 + }; │ │372 │ │373 // `r` is borrowed by pointer: the returned slices point into its inline │ │374 // route string, so it must outlive the RepoContent (passing by value would │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │391 const is_files = std.meta.activeTag(r.*) == .repo; │ │392 return .{ │ │393 .identity = rf.identity, │ │385 - .files_ref_kind = if (is_files) rf.ref_kind else null, │ │386 - .files_ref_value = if (is_files) rf.ref_value else "", │ │394 + .ref_or_oid = if (is_files) rf.ref_kind else null, │ │395 + .ref_or_oid_value = if (is_files) rf.ref_value else "", │ │396 .files_dir = if (is_files) rf.dir else "", │ │397 .commits_start = if (std.meta.activeTag(r.*) == .repo_commits) repoCommitsStart(name) else "",│ │398 .commits_after = switch (r.*) { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────╮ │412 const ca = repoContent(&a) orelse return false; │ │413 const cb = repoContent(&b) orelse return false; │ │414 return !std.mem.eql(u8, ca.identity, cb.identity) or │ │406 - ca.files_ref_kind != cb.files_ref_kind or │ │407 - !std.mem.eql(u8, ca.files_ref_value, cb.files_ref_value) or │ │415 + ca.ref_or_oid != cb.ref_or_oid or │ │416 + !std.mem.eql(u8, ca.ref_or_oid_value, cb.ref_or_oid_value) or│ │417 !std.mem.eql(u8, ca.files_dir, cb.files_dir) or │ │418 !std.mem.eql(u8, ca.commits_start, cb.commits_start) or │ │419 ca.commits_after != cb.commits_after or │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/Repo/Files.zig│ ╰─────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────╮ │13 const Grid = xitui.grid.Grid; │ │14 const Focus = xitui.focus.Focus; │ │15 │ │16 -const RefKindOrOid = ui.RoutablePage.RefKindOrOid; │ │16 +const RefOrOid = ui.RoutablePage.RefOrOid; │ │17 // the hex-oid length for the default repo options the on-disk repos use.│ │18 const hex_len = hash.hexLen((rp.RepoOpts(.xit){}).hash); │ │19 │ ╰─────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯