vimperator のデフォルトの “[[” “]]” のマップは、next とか >> だとかが textContent なモノや link @rel=”next” なモノが開く仕様になってて、nextpattern, previouspattern に追加できるわけだけども、色んなサイトがある中でそれだけじゃ対応しきれないことが多い。
んで、IRC#vimperator@wide かなんかで、AutoPagerize の wedata の nextLink 引っ掛けてマップできればなぁ、みたいな事を id:otsune さんや、id:teramako さんが話してて、「なるほど!」と思ったので実装してみた。
– /lang/javascript/vimperator-plugins/trunk/nextlink.js – CodeRepos::Share – Trac
これで、”]]” を押すことにより、Autopagerize の wedata に定義されているサイトならば、次のページを引っ付けて表示するようになる。そのとき、”[[” には、前のページの先頭をマップするので、
– “]]” → “]]” → “[[” → “[[” → “[[”
と押すことで、
– 2page → 3page→ 2page→ 1page
みたいな感じで、PageDown・PageUp 的な動きができる。
ページを引っ付けるんじゃなくて、ページ移動(C-x, C-a的な)がしたい場合には、
let g:nextlink_followlink = “true”
を、.vimperatorrc などに設定しておくと、同じく次のページをどんどん辿れる。
この設定の場合には、@rev=”prev” という microformats のようなメタデータがある場合に、起点となるページ以前にずっと遡れるという利点があったり。(false の場合でも、ページの先頭にどんどんくっつけていくことは可能なんだけども)
一応、対応する vimperator は 1.2、2.0 共に動くようにしといた。けど、1.2 の場合はなぜかページナビゲーションの css 定義がうまく import できない!まぁ、実害はないけど。
あぁ、それから _libly.js っていうライブラリも使ってるので、同時にもってきといてください。
これを最新版にすると、古い multi_requester.js などが動かなくなる可能性もあるけど、その場合は、coderepos から最新版をもってくれば ok.
という訳で、よき vimperator ライフを。
links
– /lang/javascript/vimperator-plugins/trunk/_libly.js – CodeRepos::Share – Trac
– /lang/javascript/vimperator-plugins/trunk/nextlink.js – CodeRepos::Share – Trac
コメント
id: suVene さん,こんにちは.
nextlink.js で 4 ページ目を補完しようとすると “end of pages.” が出て表示されません.
_libly.js の libly.$U.createHTMLDocument のコメント部分を入替えると,それはなくなるんですけど別の副作用が..
補完したページからブラウズしてリンクを辿った後,ページを戻ると補完前の状態になってしまいます.
このあたりをどうにかしようと,自分で Hack を試みたんですけどさっぱりわかりませんでした.
アドバイスもらえませんか.
ほんとだ。google の検索でしか見てないですけど、なぜか 4 ページ目で end of pages.がでますね。
337行目の
if (value.loadURLs.some(function(url) url == reqUrl)) return false;
の判定で、読込み済みとなって、false が帰ってるっぽい感じが。
(3ページ目で1ページ目と同じ reqUrl になっている?)
ただ、うまくいく4ページ目などもあるようですね。
(mixi のダイアリなどで試した)
nextlink.js は私自身長い間メンテしてなく、id:hogelog さんが結構メンテされてたので、#vimperator@WIDE で質問してみればよいかも?
JINさんが試してうまくいかなかったページとかはどこでしょう。
コメントありがとうございます.
自分は google 検索だけでしか見てませんでした.
google 以外では見れるところもあったんですね.
ということは google にも問題があるということですかね.
世界の google を信用し過ぎてました.
では,id: hogelog さんに聞いてみます.
#vimperator@WIDE って IRC ってやつなんですよね.
よくわかってないんで hatena で関連してそうなところにコメント入れてみようと思います.