liberator.commands.addUserCommandまたは
liberator.commands.addaddメソッドはVimperator自身が使用するメソッドである。また、addメソッドの場合第5引数がなく、既に存在するコマンドの置き換えは不可能である。
liberator.commands.addUserCommand( ["hello[world]","hw"], "print hello world", function(){ liberator.echo("Hello World"); } );コマンド名となる文字列の後部を[]で囲むと省略可能とされてhelloworld,helloの2つに展開される。
[ オフセット値(Number), [ ["候補値_1(String)","候補値_1の説明(String)"], ["候補値_2(String)","候補値_2の説明(String)"], //... ] ]という配列を返さなければならない。
completer: function(filter){ var allSuggestions = [ ["foo","foo description"], ["bar","bar description"], ["hoge","hoge description"] ]; if (!filter) return [0, allSuggestions]; var suggestions = allSuggestions.filter(function(s){ return s[0].indexOf(filter) == 0; }); return [0, suggestions]; },
:bmark http://example.com/ -title Example -T example,Tag -k keywordとすると解析された結果は
{ arguments: ["http://example.com"], -title: "Example", -tags: ["example","Tag"], -keyword: "keyword" }となる。bmarkコマンドのoptionsの定義は以下の様になっている。
options: [ [["-title", "-t"], liberator.commands.OPTION_STRING], [["-tags", "-T"], liberator.commands.OPTION_LIST], [["-keyword", "-k"], liberator.commands.OPTION_STRING, function(arg) { return /\w/.test(arg); }] ],
@param str: something like "-x=foo -opt=bar arg1 arg2" "options" is an array [name, type, validator, completions] and could look like: options = [[["-force"], OPTION_NOARG], [["-fullscreen", "-f"], OPTION_BOOL], [["-language"], OPTION_STRING, validateFunc, ["perl", "ruby"]], [["-speed"], OPTION_INT], [["-acceleration"], OPTION_FLOAT], [["-accessories"], OPTION_LIST, null, ["foo", "bar"]], [["-other"], OPTION_ANY]];