Hexoのcodeblockを任意の行番号で開始出来るパッチを書いてみた

hexoで記事を書いていてソースコードの一部だけ引用した時に、行番号も合わせたいんだけれども
1以外の数字で始める方法が見当たらなかった。

んで、ソースをがさごそ探ってみると、、、

hexoのSyntaxHighlightは、hexo-utilのlib/highlight.jsを使用していること、
lib/highlight.jsでは任意の行番号でコードブロックを開始出来る実装になっていることが分かった。

https://github.com/hexojs/hexo-util/blob/d3bbf15c1c1d0f84b3eeb1dcb9bef0ef24089d0c/lib/highlight.js
13
14
15
16
17
18
var gutter = options.hasOwnProperty('gutter') ? options.gutter : true;
var wrap = options.hasOwnProperty('wrap') ? options.wrap : true;
var firstLine = options.hasOwnProperty('firstLine') ? +options.firstLine : 1;
var caption = options.caption;
var tab = options.tab;
var data = highlight(str, options);

15行目を見る限り、firstLineをどうにかして渡せば開始行番号を変更出来そうに見える。

さらにソースを探ってみると(辿る順番が逆のような気もするが…)、、、

codeblockはlib/plugins/tag/code.jsで実装されていた。

https://github.com/hexojs/hexo/blob/8bcfcb1699b2248d8dd1302556003dc5983dbd3a/lib/plugins/tag/code.js
74
75
76
77
78
79
80
content = highlight(content, {
lang: lang,
caption: caption,
gutter: line_number,
tab: config.tab_replace,
autoDetect: config.auto_detect
});

この辺りを弄って、開始行番号をhighlightに渡してしまえば良さそうだ。

そんなこんなでちょろっと弄ったら期待通りに動いてしまったのでついでに本家へpull requestしてみた。

マージされるかなー。