diff options
author | Quelklef <elimaynard923@gmail.com> | 2018-07-17 06:14:31 -0400 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-07-17 12:14:31 +0200 |
commit | f2b6efb7dcffd0a41543ee755329aa5748887b42 (patch) | |
tree | aeb9aec7325444af28842c44c45f9b0d239130b1 | |
parent | 692d1da95d82adc30e0ba650124330f1a098a697 (diff) | |
download | Nim-f2b6efb7dcffd0a41543ee755329aa5748887b42.tar.gz |
Make pragmas look clickable in docs (#8176)
* Visual cues for hidden pragmas in docs. * Add hover cue
-rw-r--r-- | compiler/docgen.nim | 14 | ||||
-rw-r--r-- | config/nimdoc.cfg | 64 |
2 files changed, 46 insertions, 32 deletions
diff --git a/compiler/docgen.nim b/compiler/docgen.nim index db4e301d4..6e2111c75 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -16,7 +16,7 @@ import wordrecg, syntaxes, renderer, lexer, packages/docutils/rstast, packages/docutils/rst, packages/docutils/rstgen, times, packages/docutils/highlite, sempass2, json, xmltree, cgi, - typesrenderer, astalgo, modulepaths, lineinfos + typesrenderer, astalgo, modulepaths, lineinfos, sequtils type TSections = array[TSymKind, Rope] @@ -259,11 +259,19 @@ proc nodeToHighlightedHtml(d: PDoc; n: PNode; result: var Rope; renderFlags: TRe of tkSpaces, tkInvalid: add(result, literal) of tkCurlyDotLe: - dispA(d.conf, result, """<span class="Other pragmabegin">$1</span><div class="pragma">""", + dispA(d.conf, result, "<span>" & # This span is required for the JS to work properly + """<span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span> +</span> +<span class="pragmawrap"> +<span class="Other">$1</span> +<span class="pragma">""".replace("\n", ""), # Must remove newlines because wrapped in a <pre> "\\spanOther{$1}", [rope(esc(d.target, literal))]) of tkCurlyDotRi: - dispA(d.conf, result, "</div><span class=\"Other pragmaend\">$1</span>", + dispA(d.conf, result, """ +</span> +<span class="Other">$1</span> +</span>""".replace("\n", ""), "\\spanOther{$1}", [rope(esc(d.target, literal))]) of tkParLe, tkParRi, tkBracketLe, tkBracketRi, tkCurlyLe, tkCurlyRi, diff --git a/config/nimdoc.cfg b/config/nimdoc.cfg index 11d9987d8..6b6ec2d83 100644 --- a/config/nimdoc.cfg +++ b/config/nimdoc.cfg @@ -1330,15 +1330,6 @@ dt pre > span.Operator ~ span.Identifier { background-repeat: no-repeat; background-image: url("data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="); margin-bottom: -5px; } -div.pragma { - display: none; -} -span.pragmabegin { - cursor: pointer; -} -span.pragmaend { - cursor: pointer; -} div.search_results { background-color: antiquewhite; @@ -1351,32 +1342,47 @@ div#global-links ul { margin-left: 0; list-style-type: none; } + +span.pragmadots { + /* Position: relative frees us up to make the dots + look really nice without fucking up the layout and + causing bulging in the parent container */ + position: relative; + /* 1px down looks slightly nicer */ + top: 1px; + + padding: 2px; + background-color: #D3D3D3; + border-radius: 4px; + margin: 0 2px; + cursor: pointer; + + /* For some reason on Chrome, making the font size + smaller than 1em is causing the parent container to + bulge slightly. So, we're stuck with inheriting 1em, + which is sad, because 0.8em looks better... */ +} +span.pragmadots:hover { + background-color: #DBDBDB; +} +span.pragmawrap { + display: none; +} + </style> <script type="text/javascript" src="../dochack.js"></script> <script type="text/javascript"> -function togglepragma(d) { - if (d.style.display != 'inline') - d.style.display = 'inline'; - else - d.style.display = 'none'; -} - function main() { - var elements = document.getElementsByClassName("pragmabegin"); - for (var i = 0; i < elements.length; ++i) { - var e = elements[i]; - e.onclick = function(event) { - togglepragma(event.target.nextSibling); - }; - } - var elements = document.getElementsByClassName("pragmaend"); - for (var i = 0; i < elements.length; ++i) { - var e = elements[i]; - e.onclick = function(event) { - togglepragma(event.target.previousSibling); - }; + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } } } </script> |