ヒント

ヒントを 書き直してみた。


vimperator/hints-ext.js at master · caisui/vimperator · GitHub


変更点は

  1. ヒントの高速化(できてたらいいなぁ)
  2. ヒントが重なって見えないよ!
  3. 番号キー(hintchars) を押した後のの遷移
  4. キーバインドの追加(1キースロークもの のみ)


です。


1.の恩恵は、tags に クエリーセレクタを利用する必要があります。
(xpath や array like な ものでも動作はします)

let use_hints_ext_hinttags=1
let use_hints_ext_extendedhinttags=1

で option の hinttags, extendedhinttags を クエリセレクター版に上書きできます。


対象Node の 画面内外判定が原因で遅い状況は改善するはずです。


当方の環境では、http://mxr.mozilla.org/mozilla-central/search のソース表示のような
画面外Node数が大量の場合は体感できました。



2. として、 hints.relocation を追加しました。


call すると


のようにhintが重ねっている場合に



のように 重なりを除去します。


余談ですが、判りやすくなるだろうと思って、hintchars=0123456789で
スクリーンショットを撮ったのですが、
数字だと順序予測が容易なんで重なっていても支障がないのですね。


3. は、そのままなので略


4. として hints.addSimpleMap(key, callback) を 追加しました。
1キーストロークしか使用できません。


上記の hints.relocation を で 実行する場合は、

hints.addSimpleMap("<c-l>", function() this.relocation())


で ページスクロール したいなら

hints.addSimpleMap("<C-f>", function () {
    this.hide();
    buffer.scrollPages(1);
    this.show(this._submode, "", content.window);
});


で 標準のキーマップを抑止

hints.addSimpleMap("<c-f>", function() void 0);


のような利用ができます。



また、標準のhighlight(Hint ,Hint::after ,HintActive ,HintElem ,HintImage)
を利用していません。


HintExt ,HintExtActive ,HintExtActive>span ,HintExtElem を 利用しています。
色等の変更はこちらを使う必要があります。

(pluginで追加される highlight なので

autocmd VimperatorEnter ".*" :hi -a HintExt color:red;

のように遅延実行する必要があります。



最後に、

let use_hintchars_ex=1

で hintchars の 一文字目の利用頻度を平等にします。



2011/07/24 22:06
highlight のコマンドの誤り訂正