Skip to content

Commit 6e79493

Browse files
authored
Merge pull request #12374 from vesim987/autodoc-links
autodoc: links to source code
2 parents b392228 + 7f7d58e commit 6e79493

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

lib/docs/main.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ var zigAnalysis;
5151
const domHdrName = document.getElementById("hdrName");
5252
const domHelpModal = document.getElementById("helpModal");
5353
const domSearchPlaceholder = document.getElementById("searchPlaceholder");
54+
const sourceFileUrlTemplate = "/src-viewer/{{file}}#L{{line}}"
5455
const domLangRefLink = document.getElementById("langRefLink");
5556

57+
let lineCounter = 1;
5658
let searchTimer = null;
5759
let searchTrimResults = true;
5860

@@ -411,6 +413,8 @@ var zigAnalysis;
411413
if (curNavSearch !== "") {
412414
return renderSearch();
413415
}
416+
417+
lineCounter = 1;
414418

415419
let rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
416420
let pkg = rootPkg;
@@ -441,6 +445,10 @@ var zigAnalysis;
441445
}
442446

443447
currentType = childDecl;
448+
if ("src" in currentType) {
449+
const ast_node = zigAnalysis.astNodes[currentType.src];
450+
lineCounter += ast_node.line;
451+
}
444452
curNav.declObjs.push(currentType);
445453
}
446454

@@ -981,7 +989,7 @@ var zigAnalysis;
981989
"switch(" +
982990
cond +
983991
") {" +
984-
'<a href="https://github.com/ziglang/zig/tree/master/lib/std/' +
992+
'<a href="/src-viewer/' +
985993
file_name +
986994
"#L" +
987995
line +
@@ -2268,6 +2276,13 @@ var zigAnalysis;
22682276
}
22692277
}
22702278
}
2279+
function renderSourceFileLink(decl) {
2280+
let srcNode = zigAnalysis.astNodes[decl.src];
2281+
2282+
return "<a style=\"float: right;\" href=\"" +
2283+
sourceFileUrlTemplate.replace("{{file}}",
2284+
zigAnalysis.files[srcNode.file]).replace("{{line}}", lineCounter + srcNode.line) + "\">[src]</a>";
2285+
}
22712286

22722287
function renderContainer(container) {
22732288
let typesList = [];
@@ -2386,13 +2401,12 @@ var zigAnalysis;
23862401

23872402
let declType = resolveValue(decl.value);
23882403
console.assert("type" in declType.expr);
2389-
23902404
tdFnCode.innerHTML = exprName(declType.expr, {
23912405
wantHtml: true,
23922406
wantLink: true,
23932407
fnDecl: decl,
23942408
linkFnNameDecl: navLinkDecl(decl.name),
2395-
});
2409+
}) + renderSourceFileLink(decl);
23962410

23972411
let docs = zigAnalysis.astNodes[decl.src].docs;
23982412
if (docs != null) {

src/Autodoc.zig

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2824,8 +2824,8 @@ fn walkDecls(
28242824
const ast_node_index = idx: {
28252825
const idx = self.ast_nodes.items.len;
28262826
try self.ast_nodes.append(self.arena, .{
2827-
.file = 0,
2828-
.line = line,
2827+
.file = self.files.getIndex(file) orelse unreachable,
2828+
.line = line, // TODO: calculate absolute line
28292829
.col = 0,
28302830
.docs = doc_comment,
28312831
.fields = null, // walkInstruction will fill `fields` if necessary
@@ -3902,13 +3902,13 @@ fn cteTodo(self: *Autodoc, msg: []const u8) error{OutOfMemory}!DocData.WalkResul
39023902
}
39033903

39043904
fn writeFileTableToJson(map: std.AutoArrayHashMapUnmanaged(*File, usize), jsw: anytype) !void {
3905-
try jsw.beginObject();
3905+
try jsw.beginArray();
39063906
var it = map.iterator();
39073907
while (it.next()) |entry| {
3908-
try jsw.objectField(entry.key_ptr.*.sub_file_path);
3909-
try jsw.emitNumber(entry.value_ptr.*);
3908+
try jsw.arrayElem();
3909+
try jsw.emitString(entry.key_ptr.*.sub_file_path);
39103910
}
3911-
try jsw.endObject();
3911+
try jsw.endArray();
39123912
}
39133913

39143914
fn writePackageTableToJson(

0 commit comments

Comments
 (0)