rustdoc: change .src-line-numbers > span to .src-line-numbers > a

This allows people to treat them like real links, such as right-click to
copy URL, and makes the line numbers in a scraped example work at all,
when before this commit was added, they had the clickable pointer cursor
but did not actually do anything when clicked.
This commit is contained in:
Michael Howell 2022-10-27 11:16:30 -07:00
parent 2afca78a0b
commit 07bb2f701e
6 changed files with 72 additions and 47 deletions

View file

@ -157,7 +157,7 @@ function highlightSourceLines(match) {
x.scrollIntoView();
}
onEachLazy(document.getElementsByClassName("src-line-numbers"), e => {
onEachLazy(e.getElementsByTagName("span"), i_e => {
onEachLazy(e.getElementsByTagName("a"), i_e => {
removeClass(i_e, "line-highlighted");
});
});
@ -188,8 +188,13 @@ const handleSourceHighlight = (function() {
return ev => {
let cur_line_id = parseInt(ev.target.id, 10);
// It can happen when clicking not on a line number span.
if (isNaN(cur_line_id)) {
// This event handler is attached to the entire line number column, but it should only
// be run if one of the anchors is clicked. It also shouldn't do anything if the anchor
// is clicked with a modifier key (to open a new browser tab).
if (isNaN(cur_line_id) ||
ev.ctrlKey ||
ev.altKey ||
ev.metaKey) {
return;
}
ev.preventDefault();