読者です 読者をやめる 読者になる 読者になる

vital.vim のモジュールの作り方

vim

前回vital.vimの紹介をしたので、vital.vim のモジュールの作り方を解説します。暫定版です。

モジュールのソースコードのファイルを作る

autoload/vital/__latest__/ 以下にモジュールのソースを置きます。vital はモジュールを階層で管理する予定ですが、モジュール名の命名規則はまだきちんと決まってません。とりあえずはいつでも移動できると高を括り、適当に置いてしまうとよいです。

コードを書く

モジュールが提供するのは関数群です。モジュールの Vim スクリプトで定義されたスクリプトローカルな関数は全て、最終的には辞書+Funcrefの形で vital モジュールとして使えるようになります。つまり、vital モジュールを作るにはスクリプトローカルな関数を定義していくだけです!
ただし、2つほどルールがあります。

_ で始まる関数はモジュール関数として使用されない

外部に提供したくない、本当のローカルな関数を定義したい場合はその関数名を _ で始めます。

ロード時に s:_vital_loaded(V) が呼ばれる

s:_vital_loaded(V) と言う関数を定義しておくと、モジュールがロードされる際に 1 度だけ呼び出されます。なお、1 度ロードされたモジュールは本体が保持して使い回すので、多重ロードされることはありません。
V には vital#of() で作ったのと同じ構造の vital オブジェクトが渡されるので、これを利用して別の vital モジュールに依存することができます。

その他の注意

スクリプトローカル関数は、初回のロード時に定義されていたものだけが認識されます。後から動的に定義を増やすことはできません。