diff options
author | Andrey Makarov <ph.makarov@gmail.com> | 2022-07-31 16:38:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-31 15:38:00 +0200 |
commit | 40e0048a504c1009e143fb62ad260625a2b2a53d (patch) | |
tree | 7303941d9c6f0dcc495bf6110b8083e9992853af /lib | |
parent | 99dd588d6b9f80229fcd9ae47163649889211b33 (diff) | |
download | Nim-40e0048a504c1009e143fb62ad260625a2b2a53d.tar.gz |
Highlight Nim default in Markdown code in .nim (#20110)
Highlight Nim by default in Markdown code in .nim
Diffstat (limited to 'lib')
-rw-r--r-- | lib/packages/docutils/rst.nim | 25 | ||||
-rw-r--r-- | lib/packages/docutils/rstgen.nim | 2 |
2 files changed, 16 insertions, 11 deletions
diff --git a/lib/packages/docutils/rst.nim b/lib/packages/docutils/rst.nim index bca877c2f..f9fbb521f 100644 --- a/lib/packages/docutils/rst.nim +++ b/lib/packages/docutils/rst.nim @@ -1688,6 +1688,18 @@ proc mayLoadFile(p: RstParser, result: var PRstNode) = n.add newLeaf(readFile(path)) result.sons[2] = n +proc defaultCodeLangNim(p: RstParser, result: var PRstNode) = + # Create a field block if the input block didn't have any. + if result.sons[1].isNil: result.sons[1] = newRstNode(rnFieldList) + assert result.sons[1].kind == rnFieldList + # Hook the extra field and specify the Nim language as value. + var extraNode = newRstNode(rnField, info=lineInfo(p)) + extraNode.add(newRstNode(rnFieldName)) + extraNode.add(newRstNode(rnFieldBody)) + extraNode.sons[0].add newLeaf("default-language") + extraNode.sons[1].add newLeaf("Nim") + result.sons[1].add(extraNode) + proc parseMarkdownCodeblock(p: var RstParser): PRstNode = result = newRstNodeA(p, rnCodeBlock) result.sons.setLen(3) @@ -1731,6 +1743,8 @@ proc parseMarkdownCodeblock(p: var RstParser): PRstNode = var lb = newRstNode(rnLiteralBlock) lb.add(n) result.sons[2] = lb + if result.sons[0].isNil and roNimFile in p.s.options: + defaultCodeLangNim(p, result) proc parseMarkdownLink(p: var RstParser; father: PRstNode): bool = var desc, link = "" @@ -3227,16 +3241,7 @@ proc dirCodeBlock(p: var RstParser, nimExtension = false): PRstNode = # Extend the field block if we are using our custom Nim extension. if nimExtension: - # Create a field block if the input block didn't have any. - if result.sons[1].isNil: result.sons[1] = newRstNode(rnFieldList) - assert result.sons[1].kind == rnFieldList - # Hook the extra field and specify the Nim language as value. - var extraNode = newRstNode(rnField, info=lineInfo(p)) - extraNode.add(newRstNode(rnFieldName)) - extraNode.add(newRstNode(rnFieldBody)) - extraNode.sons[0].add newLeaf("default-language") - extraNode.sons[1].add newLeaf("Nim") - result.sons[1].add(extraNode) + defaultCodeLangNim(p, result) proc dirContainer(p: var RstParser): PRstNode = result = parseDirective(p, rnContainer, {hasArg}, parseSectionWrapper) diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index 8eb4be675..11c91a40c 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -1074,7 +1074,7 @@ proc renderCode(d: PDoc, n: PRstNode, result: var string) = blockEnd = "}" dispA(d.target, result, blockStart, blockStart, []) if params.lang == langNone: - if len(params.langStr) > 0: + if len(params.langStr) > 0 and params.langStr.toLowerAscii != "none": rstMessage(d.filenames, d.msgHandler, n.info, mwUnsupportedLanguage, params.langStr) for letter in m.text: escChar(d.target, result, letter, emText) |