Make the line numbers of the source code clickable

This commit is contained in:
Barosl Lee
2014-12-20 03:56:47 +09:00
parent 9f244dc97a
commit 739f74bb15
3 changed files with 49 additions and 8 deletions

View File

@@ -50,7 +50,7 @@
resizeShortBlocks();
$(window).on('resize', resizeShortBlocks);
function highlightSourceLines() {
function highlightSourceLines(ev) {
var i, from, to, match = window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);
if (match) {
from = parseInt(match[1], 10);
@@ -59,14 +59,14 @@
if ($('#' + from).length === 0) {
return;
}
$('#' + from)[0].scrollIntoView();
if (ev === null) $('#' + from)[0].scrollIntoView();
$('.line-numbers span').removeClass('line-highlighted');
for (i = from; i <= to; ++i) {
$('#' + i).addClass('line-highlighted');
}
}
}
highlightSourceLines();
highlightSourceLines(null);
$(window).on('hashchange', highlightSourceLines);
$(document).on('keyup', function(e) {
@@ -778,4 +778,35 @@
$("#main > .docblock").before(wrapper);
});
$('pre.line-numbers').on('click', 'span', function() {
var prev_id = 0;
function set_fragment(name) {
if (history.replaceState) {
history.replaceState(null, null, '#' + name);
$(window).trigger('hashchange');
} else {
location.replace('#' + name);
}
}
return function(ev) {
var cur_id = parseInt(ev.target.id);
if (ev.shiftKey && prev_id) {
if (prev_id > cur_id) {
var tmp = prev_id;
prev_id = cur_id;
cur_id = tmp;
}
set_fragment(prev_id + '-' + cur_id);
} else {
prev_id = cur_id;
set_fragment(cur_id);
}
};
}());
}());