適当にvimpのソース読みをしてみる。
まぁメモですねメモメモ. とりあえずgitから拾ったのをてきとーに見る
とりあえず階層構造(topから考えて)
folder関連
- components
- content
- locale
- modules
- skin
- webcontent
とまぁ、いろいろありますが、基本Firefoxのextension(xpi)を作成する場合と同じフォルダ構成になっています(たぶん) とりあえず重要なのはcontentなのでそれ以外は当面無視してもいいような気がするので省略
file関連
- AUTHORS
- ChangeLog
- chrome.manifest
- Donators
- install.rdf
- License.txt
- Makefile
- Makefile.common
- NEWS
- regression.js
- TODO
- vimperator.vim
- vimperatorrc.example
とまぁこっちもいろいろありますがFirefoxのextensionを作るときに必要なのは基本install.rdfとchrome.manifestだけです。(Makefileも場合によっては必要かもしれないけど、簡単なextensionを作るときには必要がないので詳細不明) AUTHORS, Donators, TODOとかはまぁとりあえず
それ以外で重要なのはChangeLogあたりですね、はい とりあえず変更履歴をみるとどういった感じでソースが構築されていったかわかるのでソース読むときも役立ちます。
なんかソースに変更を加えたいときはTODOあたりも読むといいかもしれませんが。。
というわけで以上を踏まえてvimperatorのソースを読む上で最低限必要なのは
になることがわかります。普通のfirefoxのextensionと何ら変わりはありません。
というわけで次にcontentフォルダの構成を見てみる
file関連
- bindings.xml
- bookmarks.js
- buffer.js
- buffer.xhtml
- commands.js
- completion.js
- editor.js
- event.js
- find.js
- help.css
- hint.js
- io.js
- liberator.js
- liberator.xul
- liberator-overlay.js
- mail.js
- mappings.js
- modes.js
- muttator.dtd
- muttator.js
- muttator.png
- muttator.xul
- README.E4X
- style.js
- tabs.js
- template.js
- ui.js
- util.js
- vimperator.dtd
- vimperator.js
- vimperator.png
えーと。。。 まぁ色々ありますけどとりあえずmuttator(vimpのThunderbird verみたいなの)は関係ないので、addressbookmark.js, mail.js, muttator*あたりは見なくてもいいかと思います。
vimperator.dtdとかvimperator.xulもFirefoxのGUI部分にvimperatorのをくっつけるような処理を書いている部分(だと思う)ので、gui部分への埋め込み処理を見たいような場合を除いて必要ないかと。
あと、help.cssとbindings.xmlとbuffer.xhtmlとREADME.E4X(E4X ?) あたりも別にいいかと
というわけで、vimpのソースを見るにあたりとりあえず必要そうなのは以下のjsファイルに絞ることができます
- bookmarks.js
- buffer.js
- commands.js
- completion.js
- editor.js
- event.js
- find.js
- hint.js
- io.js
- liberator.js
- liberator-overlay.js
- mappings.js
- modes.js
- style.js
- tabs.js
- template.js
- ui.js
- util.js
- vimperator.js
とりあえず合計19ファイルですね。まぁあんまり多くないと思います。
というわけでここら辺をとりあえず見ていきゃvimpの簡単な処理はわかりそうですよね〜(とりあえず最低限の要素ということで、色々抜かしましたがdtdとかxulあたりもソース読む上で必要といえば必要)
というわけで次にこの20ファイルの概要など
- bookmarks.js
ブクマ
- buffer.js
バッファ
- commands.js
command関数の実装(外部ファイルからよく使われる)
- completion.js
補完実装とか
- editor.js
エディターらしい
- event.js
イベントらしい
- find.js
/とかn,N あたり
- hint.js
fとかFで実行すると出てくるアレの実装をしているような
- io.js
I/O関連の実装をしているような
- liberator.js
- liberator-overlay.js
Firefoxへのoverlay
- mappings.js
とりあえずmapping functionの実装をしているのが重要かと
- modes.js
insertとかnormalとか色々なモードの実装とか
- style.js
スタイルシートを適用するための裏方さんを作成するとか
- tabs.js
タブ関連の実装
- template.js
てんぷれーとらしい、謎
- ui.js
ゆーざーいんたーふぇーす☆
- util.js
便利な関数群の集合
- vimperator.js
vimpの初期configuration(設定)とか
次にソースでよくでてくる感じの構造についてメモ
function CommandLine() //{{{ PRIVATE SECTION OPTIONS MAPPINGS COMMANDS PUBLIC SECTION }; //}}}
vimpのソースを見ると大抵こんな感じの構造になっています。
内容としてはPRIVATE SECTIONにある関数は名前空間内?(この例だとCommandLine内部)
のみで使用可能な関数の集まり。
OPTIONSは.vimperatorrcで設定するオプション等の設定、MAPPINGSはコマンドマッピング、COMMANDSは当然の如くコマンドで、PUBLIC SECTIONは外部ファイルから参照できる関数を集めたものになっています。
というわけでこんな感じ。内容はすごく。。適当で後半は特に力尽きてます。
色々と間違ってる部分もありそうなので、参考程度に。。