-> 09 { 04 / 02 }
vimperator + はてブ拡張は LDR に一部対応
あ、してたんだった。c のはてブ追加を LDR だと現在見ている記事のエントリで開く。vimp でマッピングしてるため、パススルーモードだときかないのでなので、feedSomeKeys2.js 使ってないとうまく使えないという…。(vimp で LDR 見てる人はたぶん feedSomeKeys.js 使っている前提)
現在どのエントリーを見てるかの判定は、LDR のように API があるか、LDRize の microformat を使ってマッチしていたらたぶんこの記事を見てる、というのは解るんだけど、もっと汎用的に落とし込めないかなー。vimp の hints は汎用的と云えば汎用的で何にでも使えるんだけど、もうちょっとインテリジェンスなマッチというか。
Firefox 拡張開発にあたり、使った拡張や参考になった拡張など
いろいろな方の書かれた Firefox 拡張のドキュメント・ソースコードが大変参考になったため、自分も書いておく。誰かの Firefox 拡張開発の参考になれば。
入れた拡張開発用拡張
いろいろ使ってみたけど、最後まで残っていた開発用拡張
- DOM Inspector
- 基本というか、これだけで割と事足りるかというか。Chrome の Inspect の方法や、その他基本的な使い方を覚えると大変便利
- QuickRestart :: Firefox Add-ons
- Console2 :: Firefox Add-ons
- SQLite Manager :: Firefox Add-ons
- 最初のころはかなりお世話に。最後の方は sqlite3 入れてコマンドから直接使うようになってしまった。SQLite 扱う拡張や、Places のデータを使う拡張なら入れておけ的。
- UxU - UnitTest.XUL - ClearCode Inc.
ドキュメント
基本 MDC。google で mdc keyword / mdc xul keyword / mdc xpcom keyword / site:developer.mozilla.org keyword で検索、日本語のページ無かったら英語ページを見る。JS のメソッド名, インターフェイス名からとりあえず検索。
のグリモン使ってた。
あとインターフェイスについては http://www.oxymoronical.com/experiments/apidocs/ を時々参照。xulplanet はなんかちょうど良い(悪い)タイミングで落ちていたので見れなかった。
参考になった拡張・ソース
- なにはともあれ Firefox 本体
- Piro たんの XUL 全般 ( 特に XUL/Migemo を参考にした )
- http://piro.sakura.ne.jp/xul/xul.html
- https://www.cozmixng.org/repos/piro/
- コード的にトリッキーなことをしておらず、とても読みやすい。さすが長年拡張を作っているだけあってポイントを押さえている。またどうしてもバットノウハウで回避しなくてはならない場合などの対策もてんこ盛りで大変参考に!しかもほとんどの拡張をメンテし続けるのは尊敬。
- Tombloo
よく初心者向けドキュメントに書いてあるけど全然使わない関数
dump()。コンソール見るのめんどいし、Fx 3 以降なら Application.console.log() が大体のコンテキストですぐ使えるし…。
その他・開発にあったら便利な参考にならない事柄
- Firefox に詳しい人
- となりに座っていた nanto_terapad さんと一緒に実装進めてたので、解らないことをききまくれた。超幸運というか、nanto_terapad さんがいなかったらどうなっていたことやら…。
はてなブックマーク拡張を vimperator で使う
追記・github ページにドキュメントを書いた。
はてなブックマーク Firefox Addon では、vimperator plugin を同梱してるので、vimperatorrc に一行書くと vimperator からある程度利用できるようになる。
javascript if (typeof hBookmark != 'undefined') liberator.loadScript('chrome://hatenabookmark/content/vimperator/plugin/hatenabookmark.js', {__proto__: this});
hints の c/C が追加されるのと、nnoremap の c/C にはてブ編集パネル表示、コメントビュアートグルが標準ではマッピングされる。また :hb / :hbt コマンドが加わる。
if (typeof hBookmark) はどう考えても真ですね…修正しました。thx anekos!
liberator.loadScript (実体は SubScriptLoader ) に chrome スキームで渡すとその js をロードし、第二引数で {__proto__: this} を渡すと、vimperator のコンテキストで評価されるためうまくロードされる。
javascript <<EOF liberator.globalVariables.hBookmark_shortcuts = { hintsAdd : 'c', hintsComment : 'C', add : ['c'], comment : ['C'], }; EOF
とか書いておくと、それぞれ上書きされる。空を指定すれば hints や nnoremap を上書きしなくなる。hb コマンドでは、はてブ拡張経由で検索してとってくる。こんな感じ。
バグとかその他 vimp での欲しい機能があれば fork して pull request もしくは適当に gist とかに張ってくれれば、大体の場合取り込むと思います。
あと直前に github に上げたタイミングで標準 vimp カラースキームでカウンターが見れない問題を教えてくれた mattn thx! 標準カラースキームで使ってなかったから気づいてませんでした。
- src’s note - 気になる技術メモ
- 8時40分が超えられない - はてなブックマーク Fi...
- プログラマ 福重 伸太朗 〜基本へ帰ろう〜 - Win...
- プログラミングノート - Firefox拡張(アドオン...
- vimpな日々 - vimpとはてなブックマーク拡張
- 8時40分が超えられない - bang の挙動を変更可能...
- 8時40分が超えられない - はてブ Firefox 拡張 1.2.4...
- Gemmaの日記 - Firefox拡張入門第1回(開発の準備)
- Cli@ - Firefox 拡張開発にあたり、使った拡張や参...
- プログラマ 福重 伸太朗 〜基本へ帰ろう〜
- プログラマ 福重 伸太朗 〜基本へ帰ろう〜 - Mac...
- Firefox 拡張開発にあたり、使った拡張や参考に...
- Firefox 拡張開発にあたり、使った拡張や参考に...

Firefox 3以降だとほんと使わなくなっちゃいましたねぇ。FUELさまさまです。
「:hbでそのタブに開く。:hb!でタブで開く」というほうが直感的かなぁと思います。
(args.bangを見れば良いです)
:hbtに慣れた人は:hb!にmapすることで使い続けられますし。
:hbと:hb!
:hbtと:hbt!
の挙動が欲しいかなぁ。
要するにvimp流儀だとNEW_TABとCURRENT_TABが「似てるけど別の挙動」だよね。ってことです。
もうすでに :hb! / :hbt! で args.bang を使ってるため、今から変更するのは個人的にも混乱しますし、あっても設定による切り替えかなぁ、と思います。