今月あたりからvimperator nightyビルドの方が新しいヘルプシステムに替わっているわけだけれども。
なんと、というか、ついにasciidocから脱却して、XMLドキュメントをXSLTでHTMLに変換して出力というシステムになっている。
んで、単に使うだけなら、ふ~ん、で済むのだが、プラグイン開発者にとって面白いことに、プラグインのヘルプも表示できる。
ためしに、手元のwalk-input.jsにヘルプをつけてみたところ、:help <A-i><Tab>で補完も出来た。
んで、このプラグインのヘルプだが、pluginManager.jsでやる様な方式に似ていて、プラグインファイルにE4Xな変数を定義すること実現する。
まず、宣言する変数名はINFOである。
var INFO = <plugin name="プラグイン名" version="バージョン" href="ソースURL" summary="サマリ文" xmlns="http://vimperator.org/namespaces/liberator"> <author emal="hoge@example.com">作者名</author> <project name="Vimperator" minVersion="2.2"> <p> </p> <item> <tags>タグ(スペース区切り?)</tags> <spec>シンタックス</spec> <description> <p></p> </description> </item> </plugin>;
大枠はこんな感じ。pluginManager.jsのより構造化されているが、よりXML臭さが残る感じだ。
plugin子要素の先頭部分やitem > descriptionの子には結構自由に書ける。が、まるっきりHTMLというわけではないので注意。common/locale/en-US/以下のXMLファイルと:help XMLファイル名(.xml除く)の結果とを見比べつつ書くと良いかも。
幾つか特殊な要素を挙げておく。
後述するけど、a要素がanchorじゃないので、この要素でリンクを張ることになる。
<link topic="http://example.com">example.com</link>
省略可能文字列を記述するための要素と思われる。(omission attributeの略?)
例えば、:noremapコマンドは:noと省略できるが、その様なとき
<item> <spec>:no<oa>remap</oa> <a>lhs</a> <a>rhs</a></spec> <description> <p>Map the <t>key-seqence</t> <a>lhs</a> to <a>rhs</a> for ... </description> </item>
などと書く。この要素を使用すると[]で括られる
コマンド引数などの変数っぽいものを書くための要素。(anchorじゃなくてattributeの略?)
この要素を使用すると{}で括られる。
コードを記述するための要素。HTMLのpre要素の様な感じ。
HTMLの様な<,>を記述する場合は
<code><![CDATA[ <hoge><foo>bar</foo></hoge> ]]></code>
とCDATAセクションにしておくと無難。
例を示すための要素と思われ、code要素と共に使うことが多そう。
<code><ex>:map <k name="F2"/> :echo new Date().toDateString()<k name="CR"/></ex></code>
なんかバグっているのかうまくレンダリングされてない雰囲気だけど、たぶんキーマップを書くための要素。
<k name="F2"/>
って書くと、<F2>となってハイライトされるんじゃないかな。
警告を書くためのブロック要素かな。先頭にWarning: が付加される。
修正します。
ご指摘ありがとうございました。