ldrize_cooperation.jsが最新版(HEAD) で 動かない

Vimperator(hg head)でldrize_cooperation.jsが有効にならなくなった件 (訂正) - 切なさの刹那
を見てscopeの変更で直るのは、エンバグかもしれないので調べました。


http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/ldrize_cooperation.js?rev=36514へのパッチです。

の修正で多分問題なくなると思います。
(使ったことないので option しか 動かしていません)


ここでは setter が 返り値を持っていなかったことが問題でした。
Option.setter は 中継処理 で 返り値は、globalValue に 格納されます。


例えとして良くないかもしれませんが、Object.prototype.__defineSetter__() - JavaScript | MDN というより Object.prototype.watch() - JavaScript | MDNのほうが近い感じかと思います。


setter が 返り値を持っていない場合同様の問題が発生すると思います。


あと、toString()を付与したのは、別件で completer が false や "" 等 if 文 で false を 返しそうな値は利用できないので付与しました。("false"じゃなくて false)