Skip to content

Commit 5e06d19

Browse files
committed
add line numbers after document is loaded, instead of relying on the 'complete' hook of Prism.js, which can be problematic when a code block contains sub-blocks (a problem beyond my understanding)
1 parent 2036433 commit 5e06d19

File tree

1 file changed

+2
-7
lines changed

1 file changed

+2
-7
lines changed

js/code-line-numbers.js

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
(() => {
33
function addNum(el) {
44
const s = '<span data-line-number=""></span>', sel = 'span[data-line-number]';
5-
if (!el.classList.contains('line-numbers') || el.parentNode.tagName !== 'PRE'
6-
|| el.querySelector(sel)) return;
5+
if (el.querySelector(sel)) return;
76
el.innerHTML = s + el.innerHTML.replace(/\n(?=.|\s)/g, '\n' + s);
87
let n1 = +el.dataset.start; if (isNaN(n1)) n1 = 1;
98
const spans = el.querySelectorAll(sel), w = ('' + (n1 - 1 + spans.length)).length;
@@ -13,9 +12,5 @@
1312
sp.dataset.lineNumber = n;
1413
});
1514
}
16-
function addAll(e) {
17-
e ? (e.grammar && addNum(e.element)) :
18-
document.querySelectorAll('pre > code.line-numbers:first-child').forEach(addNum);
19-
}
20-
window.Prism?.hooks ? Prism.hooks.add('complete', addAll) : addAll();
15+
addEventListener('load', e => document.querySelectorAll('pre > code.line-numbers:first-child').forEach(addNum));
2116
})();

0 commit comments

Comments
 (0)