スレッド開閉のキーバインド追加

GMailUIを入れてThunderbirdが使いやすくなった。j(次のメッセージ),k(前いのメッセージ),y(ヤンク:メッセージをArchiveフォルダへ移動)が溜まらん。

というのは本題ではなく。今回はThunderbird使用時の不満の一つである、スレッドの開閉。
「すべてのスレッドを広げる」と「すべてのスレッドをたたむ」はあるけど、フォーカスされたスレッドのみの開閉がツリーのデフォルト動作である,キーのみなのだ。しかもきちんとフォーカスされていないと使えない。
ということで、keyconfig(拡張機能)を使ってキーを割り当てる事に挑戦した。keyconfigは割り当てたキーにJavaScriptコードを割り当てる事ができるのでいろいろ操作が可能だ。

j,kと来ているので当然l,hに展開と閉じるを割り当てる事に。コードの中身はインストールしたThunderbirdchrome内のjar:toolkit.jar!/content/global/bindings/tree.xmlを参考に書いた。

// expandThread
var tree = document.getElementById('threadTree');
if ( tree ) {
  var row = tree.currentIndex;
  if (row >= 0 && !tree.changeOpenState(row, true)) {
    var view = tree.view;
    if (row + 1 < view.rowCount &&
        view.getParentIndex(row + 1) == row) {
      // If already opened, select the first child.
      // The getParentIndex test above ensures that the children
      // are already populated and ready.
      tree.view.selection.timedSelect(row + 1, this._selectDelay);
      tree.treeBoxObject.ensureRowIsVisible(row + 1);
    }
  }
}
// collapseThread
var tree = document.getElementById('threadTree');
if ( tree ) {
  if (!tree.changeOpenState(tree.currentIndex, false)) {
    var parentIndex = tree.view.getParentIndex(tree.currentIndex);
    if (parentIndex >= 0) {
      tree.view.selection.select(parentIndex);
      tree.treeBoxObject.ensureRowIsVisible(parentIndex);
    }
  }
}