fossil-scm 行番号に行番号リンクをつける方法
カテゴリー: バージョン管理/fossil
2015-12-16
artifactページにLine Numbersで表示しても
行番号へのリンクがありません。
行番号へ移動するリンクは内部的に存在します。
数行のスクリプトを挿入するだけなので
出力サイズはほとんど変わりません。
「コアをいじる方法」と「スキンで行う方法」の2種類を紹介します
お好きなほうでどうぞ。
skin footer に挿入する方法(お手軽) 公式バイナリを使用している人向け
core hack : src/info.c 1770行付近から
行番号へのリンクがありません。
行番号へ移動するリンクは内部的に存在します。
数行のスクリプトを挿入するだけなので
出力サイズはほとんど変わりません。
「コアをいじる方法」と「スキンで行う方法」の2種類を紹介します
お好きなほうでどうぞ。
skin footer に挿入する方法(お手軽) 公式バイナリを使用している人向け
<script> var req_url = location.href.split('?')[0].split('#')[0]; function replacer(match, p1, p2, offset, string) { return p1 + '<a href="' + req_url + '?txt=1&ln=' + p2 + '">' + p2 + '</a>'; } function make_link_linenumber() { var elm; elm = ((elm = document.getElementsByTagName("pre")) ? elm.item(0) : null); if ( elm ) { var newstr = new String(elm.innerHTML.replace(/^(\s+)(\d+)/mg, replacer)); newstr = newstr.replace(/^(\s*<span id="\w+">\s*)(\d+)/mg, replacer); newstr = newstr.replace(/(<\/div>\s*)(\d+)/mg, replacer); elm.innerHTML = newstr; newstr = null; } } <th1>if {$current_page eq "artifact"} { html " <script>if( /txt=1/i.test(location.href) ) { window.onload = make_link_linenumber; }</script>" }</th1>
core hack : src/info.c 1770行付近から
void output_text_with_line_numbers( - @ <pre> + @ <pre id="src"> ... @ <script> @ var req_url = location.href.split('?')[0].split('#')[0]; @ function replacer(match, p1, p2, offset, string) { @ return p1 + '<a href="' + req_url + '?txt=1&ln=' + p2 + '">' + p2 + '</a>'; @ } @ function make_link_linenumber() { @ // var elm; elm = ((elm = document.getElementsByTagName("pre")) ? elm.item(0) : null); @ var elm = document.getElementById("src"); @ if ( elm ) { @ var newstr = new String(elm.innerHTML.replace(/^(\s+)(\d+)/mg, replacer)); @ newstr = newstr.replace(/^(\s*<span id="\w+">\s*)(\d+)/mg, replacer); @ newstr = newstr.replace(/(<\/div>\s*)(\d+)/mg, replacer); @ elm.innerHTML = newstr; @ newstr = null; @ } @ } @ window.onload = make_link_linenumber; @ </script> } // output_text_with_line_numbers