From d5930ac2c2aad82295c1eabc65b64e0dd541031a Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 2 Oct 2013 19:32:13 +0200 Subject: [PATCH 1/3] Highlight line numbers of the lines referred to in the url hash --- src/librustdoc/html/static/main.css | 3 +++ src/librustdoc/html/static/main.js | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/librustdoc/html/static/main.css b/src/librustdoc/html/static/main.css index 2366a530a877c..8d42dd15ef329 100644 --- a/src/librustdoc/html/static/main.css +++ b/src/librustdoc/html/static/main.css @@ -121,6 +121,9 @@ body { .content pre.line-numbers { float: left; border: none; } .line-numbers span { color: #c67e2d; } +.line-numbers .line-highlighted { + background-color: #fff871; +} .content .highlighted { cursor: pointer; diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index bf40261e76509..faa22672736ce 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -31,6 +31,25 @@ resizeShortBlocks(); $(window).on('resize', resizeShortBlocks); + function highlightSourceLines() { + var i, from, to, match = window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/); + if (match) { + from = parseInt(match[1], 10); + to = Math.min(50000, parseInt(match[2] || match[1], 10)); + from = Math.min(from, to); + if ($('#' + from).length === 0) { + return; + } + $('#' + from)[0].scrollIntoView(); + $('.line-numbers span').removeClass('line-highlighted'); + for (i = from; i <= to; i += 1) { + $('#' + i).addClass('line-highlighted'); + } + } + } + highlightSourceLines(); + $(window).on('hashchange', highlightSourceLines); + $(document).on('keyup', function (e) { if (document.activeElement.tagName === 'INPUT') { return; From 9f305624810a386a8d334d67c044c4ee50c65eda Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 2 Oct 2013 19:32:52 +0200 Subject: [PATCH 2/3] Prevent source view from wrapping lines --- src/librustdoc/html/static/main.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/librustdoc/html/static/main.css b/src/librustdoc/html/static/main.css index 8d42dd15ef329..f24110a62eb1b 100644 --- a/src/librustdoc/html/static/main.css +++ b/src/librustdoc/html/static/main.css @@ -118,7 +118,11 @@ body { .content h1 { margin-top: 0; } .content h1, .content h2 { margin-left: -20px; } .content pre { padding: 20px; } - +.content.source pre.rust { + white-space: pre; + overflow: auto; + padding-left: 0; +} .content pre.line-numbers { float: left; border: none; } .line-numbers span { color: #c67e2d; } .line-numbers .line-highlighted { From 7c84abd0df78dfe8d2e7e217701078640c5e01ee Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 2 Oct 2013 19:35:30 +0200 Subject: [PATCH 3/3] Make source links highlight the entire definition and not just the first line --- src/librustdoc/html/render.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 1dde7bd80d451..e144138008da7 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -716,11 +716,12 @@ impl<'self> fmt::Default for Item<'self> { } write!(fmt.buf, "[src]", + href='{root}src/{crate}/{path}.html\\#{linefrom}-{lineto}'>[src]", root = it.cx.root_path, crate = it.cx.layout.crate, path = path.connect("/"), - line = it.item.source.loline); + linefrom = it.item.source.loline, + lineto = it.item.source.hiline); } // Write the breadcrumb trail header for the top