Hatena::Groupvimperator

Vimple Star Sprites RSSフィード

 | 

2010-11-12

ヒントの出る要素をサイト毎に制御する #vimperator

23:49 | ヒントの出る要素をサイト毎に制御する #vimperator - Vimple Star Sprites を含むブックマーク はてなブックマーク - ヒントの出る要素をサイト毎に制御する #vimperator - Vimple Star Sprites

レノボ・ジャパン ThinkPad USB トラックポイントキーボード(日本語) 55Y9024

レノボ・ジャパン ThinkPad USB トラックポイントキーボード(日本語) 55Y9024

を購入して大変幸せになってる teramako です!

Vimperator のヒントは XPath で制御されている。その XPathset hinttagsで変更可能ですが、set(厳密にはsetglobal)では全体のデフォルト値を変えるような働きをしてしまいます。一時的にというか特定のページでは特定のリンクのみにヒントが出て欲しいなどの要求ってあると思うのです。

で、結構前から、setlocalコマンドは存在していて、こちらはタブにその設定値が保存される仕組みになっています。しかし、現在Vimperatorはデフォルトがglobal値しか許可していません。

ということで、ゴニョっと変えてしまいましょう。

js options.get("hinttags").scope = Option.SCOPE_BOTH
autocmd LocationChange "^http://b\\.hatena\\.ne\\.jp/" setlocal hinttags=//xhtml:a

global値を取ってくるかlocal値を取ってくるかはオプションオブジェクトのscopeプロパティで制御されているので、それを上書きします。Option.SCOPE_BOTHにすることで、local値があればそれをなければglobal値を取るという動作に変更できるのです。*1

次行のautocmd LocationChange ...は現在のURLが変わったとき(タブを切り替えたり、ページがロードされた時)に自動発動するもの。2番目の引数でURLの正規表現文字列、3番目以降に実行するコマンドって感じ。

例でははてなブックマークのページだったら、hinttagsオプション値をa要素のみのXPathに変更してる。

以上、ちょっとした小ネタでした。

追記

hinttagsextendedhinttagsのオプション設定を弄ってsetlocal出来るように本家にコミットした。

追追記

setlocal された後のページ繊維後のことを考えていなかった。

autocmd LocationChange .* -javascript delete tabs.options.hinttags
autocmd LocationChange "^http://b\\.hatena\\.ne\\.jp" setlocal hinttags=//xhtml:a
" ...

みたく最初にクリアするのを入れたほうが良いかも

*1Vimperator側で全部SCOPE_BOTHにしておけよって話ですけどねw コードのコメントに// XXX set to BOTH by default someday ?などと書かれていたりします

トラックバック - http://vimperator.g.hatena.ne.jp/teramako/20101112
 |