適当にvimpのソース読みをしてみる。

まぁメモですねメモメモ. とりあえずgitから拾ったのをてきとーに見る

とりあえず階層構造(topから考えて)

folder関連
  • components
  • content
  • locale
  • modules
  • skin
  • webcontent

とまぁ、いろいろありますが、基本Firefoxのextension(xpi)を作成する場合と同じフォルダ構成になっています(たぶん) とりあえず重要なのはcontentなのでそれ以外は当面無視してもいいような気がするので省略

file関連

とまぁこっちもいろいろありますがFirefoxのextensionを作るときに必要なのは基本install.rdfchrome.manifestだけです。(Makefileも場合によっては必要かもしれないけど、簡単なextensionを作るときには必要がないので詳細不明) AUTHORS, Donators, TODOとかはまぁとりあえず

それ以外で重要なのはChangeLogあたりですね、はい とりあえず変更履歴をみるとどういった感じでソースが構築されていったかわかるのでソース読むときも役立ちます。
なんかソースに変更を加えたいときはTODOあたりも読むといいかもしれませんが。。

というわけで以上を踏まえてvimperatorのソースを読む上で最低限必要なのは

になることがわかります。普通のfirefoxのextensionと何ら変わりはありません。

というわけで次にcontentフォルダの構成を見てみる

folder関連
  • compose
  • vimperator

composeはxulおよびdtdファイル、 vimperatorにはxmlファイルが一つ入っているが今のところ
なぞなので省略

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(vimpThunderbird verみたいなの)は関係ないので、addressbookmark.js, mail.js, muttator*あたりは見なくてもいいかと思います。

vimperator.dtdとかvimperator.xulFirefoxGUI部分に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

vimp名前空間っぽいことをしてるような

  • 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は外部ファイルから参照できる関数を集めたものになっています。


というわけでこんな感じ。内容はすごく。。適当で後半は特に力尽きてます。

色々と間違ってる部分もありそうなので、参考程度に。。