Skip to content

Commit f23369e

Browse files
committed
Support specify or continue line number in code blocks
1 parent 2cfcae6 commit f23369e

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

public/js/extra.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,16 @@ function postProcess(code) {
210210
});
211211
//link should open in new window or tab
212212
result.find('a:not([target])').attr('target', '_blank');
213+
//update continue line numbers
214+
var linenumberdivs = result.find('.gutter.linenumber').toArray();
215+
for (var i = 0; i < linenumberdivs.length; i++) {
216+
if ($(linenumberdivs[i]).hasClass('continue')) {
217+
var startnumber = linenumberdivs[i - 1] ? parseInt($(linenumberdivs[i - 1]).find('> span').last().attr('data-linenumber')) : 0;
218+
$(linenumberdivs[i]).find('> span').each(function(key, value) {
219+
$(value).attr('data-linenumber', startnumber + key + 1);
220+
});
221+
}
222+
}
213223
return result;
214224
}
215225

@@ -464,14 +474,14 @@ function highlightRender(code, lang) {
464474
} else if (lang == 'flow') {
465475
return '<div class="flow-chart raw">' + code + '</div>';
466476
}
467-
var reallang = lang.replace('=', '');
477+
var reallang = lang.replace(/\=$|\=\d+$|\=\+$/, '');
468478
var languages = hljs.listLanguages();
469479
if (languages.indexOf(reallang) == -1) {
470480
var result = hljs.highlightAuto(code);
471481
} else {
472482
var result = hljs.highlight(reallang, code);
473483
}
474-
var showlinenumbers = /\=$|(\d+)$/.test(lang);
484+
var showlinenumbers = /\=$|\=\d+$|\=\+$/.test(lang);
475485
if (showlinenumbers) {
476486
var startnumber = 1;
477487
var matches = lang.match(/\=(\d+)$/);
@@ -482,7 +492,8 @@ function highlightRender(code, lang) {
482492
for (var i = 0; i < lines.length - 1; i++) {
483493
linenumbers[i] = "<span data-linenumber='" + (startnumber + i) + "'></span>";
484494
}
485-
var linegutter = "<div class='gutter linenumber'>" + linenumbers.join('\n') + "</div>";
495+
var continuelinenumber = /\=\+$/.test(lang);
496+
var linegutter = "<div class='gutter linenumber" + (continuelinenumber ? " continue" : "") + "'>" + linenumbers.join('\n') + "</div>";
486497
result.value = "<div class='wrapper'>" + linegutter + "<div class='code'>" + result.value + "</div></div>";
487498
}
488499
return result.value;
@@ -541,7 +552,7 @@ md.renderer.rules.fence = function (tokens, idx, options, env, self) {
541552
}
542553

543554
langName = Remarkable.utils.escapeHtml(Remarkable.utils.replaceEntities(Remarkable.utils.unescapeMd(fenceName)));
544-
langClass = ' class="' + langPrefix + langName.replace('=', '') + ' hljs"';
555+
langClass = ' class="' + langPrefix + langName.replace(/\=$|\=\d+$|\=\+$/, '') + ' hljs"';
545556
}
546557

547558
if (options.highlight) {

public/js/syncscroll.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ md.renderer.rules.fence = function (tokens, idx, options, env, self) {
102102
}
103103

104104
langName = Remarkable.utils.escapeHtml(Remarkable.utils.replaceEntities(Remarkable.utils.unescapeMd(fenceName)));
105-
langClass = ' class="' + langPrefix + langName.replace('=', '') + ' hljs"';
105+
langClass = ' class="' + langPrefix + langName.replace(/\=$|\=\d+$|\=\+$/, '') + ' hljs"';
106106
}
107107

108108
if (options.highlight) {

0 commit comments

Comments
 (0)