TracのWikiやチケットにて、[[BR]]をShift+リターンで入力するGreasemonkeyスクリプト

TracのWikiやチケットで、改行させたいときに、いちいち[[BR]]を入力するのが面倒だったので、Shift+リターンで[[BR]]が入力出来るGreasemonkeyスクリプトを書いてみました。(Greasemonkeyスクリプトの勉強も兼ねて)

(function () {
  var func = function(event) {
               var br = '[[BR]]';
               if (event.shiftKey && event.keyCode == 13) {
                 var elm = event.target;
                 var end = elm.selectionEnd;
                 elm.value = elm.value.substr(0, end) + br + elm.value.substr(end);
                 elm.setSelectionRange(end + br.length, end + br.length);
               }
             };

  var result = document.evaluate('//textarea[@class="wikitext"]', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

  var node;
  while(node = result.iterateNext()) {
    node.addEventListener('keypress', func, false);
  }
})();

ページ内のTEXTAREAでclassが"wikitext"となっているエレメントに対して、イベントリスナーを登録し、Shift+リターンで[[BR]]を挿入するようにしています。
tracを含むURLをスクリプトの対象にしておけば、どこのTracいっても同じように入力出来るので楽かも。(サイトによってはURLにtracが含まれない場合もありますが…)


なお、trac.jsを変更して同じような事が出来るようです。