diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2020-10-22 01:44:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-22 10:44:28 +0200 |
commit | 09795241375839c2b9fbd1ba8b61dc9a920837d7 (patch) | |
tree | cdfad2f98352246fb8d24bdae6dc28dbea9badb4 /compiler | |
parent | b2f51e29504160da7bb6ee98af464c21a9a96efd (diff) | |
download | Nim-09795241375839c2b9fbd1ba8b61dc9a920837d7.tar.gz |
add Source+Edit links on top of every docgend file (#15642)
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/commands.nim | 2 | ||||
-rw-r--r-- | compiler/docgen.nim | 46 |
2 files changed, 26 insertions, 22 deletions
diff --git a/compiler/commands.nim b/compiler/commands.nim index 325b362a9..93a202639 100644 --- a/compiler/commands.nim +++ b/compiler/commands.nim @@ -396,6 +396,8 @@ proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo; var key, val: string case switch.normalize + of "input", "i": # PRTEMP + expectArg(conf, switch, arg, pass, info) of "path", "p": expectArg(conf, switch, arg, pass, info) for path in nimbleSubs(conf, arg): diff --git a/compiler/docgen.nim b/compiler/docgen.nim index 6c77a44ae..3945a30f8 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -777,6 +777,26 @@ type DocFlags = enum kDefault kForceExport +proc genSeeSrcRope(d: PDoc, path: string, line: int): Rope = + let docItemSeeSrc = getConfigVar(d.conf, "doc.item.seesrc") + if docItemSeeSrc.len > 0: + let path = relativeTo(AbsoluteFile path, AbsoluteDir getCurrentDir(), '/') + when false: + let cwd = canonicalizePath(d.conf, getCurrentDir()) + var path = path + if path.startsWith(cwd): + path = path[cwd.len+1..^1].replace('\\', '/') + let gitUrl = getConfigVar(d.conf, "git.url") + if gitUrl.len > 0: + let defaultBranch = + if NimPatch mod 2 == 1: "devel" + else: "version-$1-$2" % [$NimMajor, $NimMinor] + let commit = getConfigVar(d.conf, "git.commit", defaultBranch) + let develBranch = getConfigVar(d.conf, "git.devel", "devel") + dispA(d.conf, result, "$1", "", [ropeFormatNamedVars(d.conf, docItemSeeSrc, + ["path", "line", "url", "commit", "devel"], [rope path.string, + rope($line), rope gitUrl, rope commit, rope develBranch])]) + proc genItem(d: PDoc, n, nameNode: PNode, k: TSymKind, docFlags: DocFlags) = if (docFlags != kForceExport) and not isVisible(d, nameNode): return let @@ -822,26 +842,7 @@ proc genItem(d: PDoc, n, nameNode: PNode, k: TSymKind, docFlags: DocFlags) = nodeToHighlightedHtml(d, n, result, {renderNoBody, renderNoComments, renderDocComments, renderSyms}, symbolOrIdEncRope) - var seeSrcRope: Rope = nil - let docItemSeeSrc = getConfigVar(d.conf, "doc.item.seesrc") - if docItemSeeSrc.len > 0: - let path = relativeTo(AbsoluteFile toFullPath(d.conf, n.info), AbsoluteDir getCurrentDir(), '/') - when false: - let cwd = canonicalizePath(d.conf, getCurrentDir()) - var path = toFullPath(d.conf, n.info) - if path.startsWith(cwd): - path = path[cwd.len+1..^1].replace('\\', '/') - let gitUrl = getConfigVar(d.conf, "git.url") - if gitUrl.len > 0: - let defaultBranch = - if NimPatch mod 2 == 1: "devel" - else: "version-$1-$2" % [$NimMajor, $NimMinor] - let commit = getConfigVar(d.conf, "git.commit", defaultBranch) - let develBranch = getConfigVar(d.conf, "git.devel", "devel") - dispA(d.conf, seeSrcRope, "$1", "", [ropeFormatNamedVars(d.conf, docItemSeeSrc, - ["path", "line", "url", "commit", "devel"], [rope path.string, - rope($n.info.line), rope gitUrl, rope commit, rope develBranch])]) - + let seeSrcRope = genSeeSrcRope(d, toFullPath(d.conf, n.info), n.info.line.int) d.section[k].add(ropeFormatNamedVars(d.conf, getConfigVar(d.conf, "doc.item"), ["name", "header", "desc", "itemID", "header_plain", "itemSym", "itemSymOrID", "itemSymEnc", "itemSymOrIDEnc", "seeSrc", "deprecationMsg"], @@ -1234,10 +1235,11 @@ proc genOutFile(d: PDoc, groupedToc = false): Rope = "doc.body_toc_group" elif d.hasToc: "doc.body_toc" else: "doc.body_no_toc" + let seeSrcRope = genSeeSrcRope(d, d.filename, 1) content = ropeFormatNamedVars(d.conf, getConfigVar(d.conf, bodyname), ["title", - "tableofcontents", "moduledesc", "date", "time", "content", "deprecationMsg", "theindexhref", "body_toc_groupsection"], + "tableofcontents", "moduledesc", "date", "time", "content", "deprecationMsg", "theindexhref", "body_toc_groupsection", "seeSrc"], [title.rope, toc, d.modDesc, rope(getDateStr()), - rope(getClockStr()), code, d.modDeprecationMsg, relLink(d.conf.outDir, d.destFile.AbsoluteFile, theindexFname.RelativeFile), groupsection.rope]) + rope(getClockStr()), code, d.modDeprecationMsg, relLink(d.conf.outDir, d.destFile.AbsoluteFile, theindexFname.RelativeFile), groupsection.rope, seeSrcRope]) if optCompileOnly notin d.conf.globalOptions: # XXX what is this hack doing here? 'optCompileOnly' means raw output!? code = ropeFormatNamedVars(d.conf, getConfigVar(d.conf, "doc.file"), [ |