setlocalパッチを先取り適用してみた

VimperatorのML([Vimperator] :setlocal / :setglobal implementation patch)に上がっていたのを勝手に当てて試してみた。

このパッチはよってオプションの設定値をバッファ*1毎に設定できるようになる。
以下は効果が分かり易そうなhinttags*2で試してみた手順。

とりあえず、上記ページの添付ファイルをダウンロードし、CVS HEADにパッチを適用

cd ~/workspace/vimperator/src/content
patch -i ダウンロードしたファイル
vi hints.js
--- hints.js	2008-06-20 07:4:5.000000000 +0900
+++ hints.js.test	2008-07-19 01:6:3.000000000 +0900
@@ -552, +552, @@
 
     liberator.options.add(["extendedhinttags","eht"],n         "XPath string of hintable elements activated by ';'",n-        "string",DEFAULT_HINTTAGS);
+        "string",DEFAULT_HINTTAGS,{scope:liberator.options.OPTION_SCOPE_BOTH});
 
     liberator.options.add(["hintstyle","hs"],n         "CSS specification of unfocused hints",n@@ -560, +560, @@
 
     liberator.options.add(["hinttags","ht"],n         "XPath string of hintable elements activated by 'f' and 'F'",n-        "string",DEFAULT_HINTTAGS);
+        "string",DEFAULT_HINTTAGS,{scope:liberator.options.OPTION_SCOPE_BOTH});
 
     liberator.options.add(["hinttimeout","hto"],n         "Automatically follow non unique numerical hint",n

{scope:liberator.options.OPTION_SCOPE_BOTH}を加え*3、xpiファイルをmakeしてインストール

cd ~/workspace/vimperator/src
make xpi
firefox ../downloads/vimperator_1.2pre.xpi

さらに.vimperatorrc

autocmd LocationChange ^https?:/mail\.google\.com/mail/ :setlocal hinttags=//a[@class="zD5BAe"]|//button[@class="Gjckbb"]|//span[@class="bsABdf"]/span|//div[@class="KqCCmd"]|//div[@class="QOD9Ec"]|//div[@class="DiWSpb"]|id(":w")|id(":y")
autocmd LocationChange ^http:/b\.hatena\.ne\.jp/teramako :setlocal hinttags=//a[@class="bookmark"]|//dd[@class="users"]/strong/a|//img[@class="comment_img"]|//ul[@class="bookmarkinfo"]//a|//div[@class="taglist"]//a|//div[@class="taglist"]/div/h3/input

を加えて、Gmailはてなブックマークでヒントを使用するとautocmdで設定したhinttagsが有効になる。ページ毎に必要最低限にヒントを絞ることが可能になるのでヒントが使用しやすくなる。

ページ毎最適化万歳

*1:Vimperatorではのタブの意

*2:Vimperatorのオプションでヒントの出力に使用するXPathの値

*3:各オプションに加えないと今のところsetlocalが使用できない