「
Ubiquity 0.1」で、オレオレコマンドを試していたのですが、なぜか「CmdUtils.getTextSelection」でエラーが発生してしまいます。皆さんの環境では問題ありませんか?(もしかしたら、私の環境だけかもしれません...。)

↑「CmdUtils.getTextSelection」を実行すると表示されるエラー
やはり選択中の文字列が取り出せないとなると不便なので、少し回避策を考えてみました。そこで、command-editorで再定義!を思いつきました。
具体的には、command-editorに
cmdutils.jsのCmdUtils.getTextSelectionのブロック(175〜189行目)をそのままコピーしてみたところ、正常に?動作するようになりました。(今のところ、既存のコマンドへの影響は特に無いと思っています。が、何か問題があるようでしたら削除すればOKです)
もし同じ症状が発生している方がいたら、以下のコードをcommand-editorの一番上辺りに貼り付けてみると良いかもしれません。
−−ここから--
CmdUtils.getTextSelection = function getTextSelection() {
var focused = context.focusedElement;
var retval = "";
if (focused)
if (focused.selectionStart != focused.selectionEnd)
retval = focused.value.substring(focused.selectionStart,
focused.selectionEnd);
if (!retval) {
var sel = context.focusedWindow.getSelection();
if (sel.rangeCount >= 1)
retval = sel.toString();
}
return retval;
};
--ここまで--
私の環境では、この方法で選択中の文字列が取得できるようになりました。という訳で、選択中の文字列の文字数を数えるコマンドを定義してみました。これは「word-count」コマンドでは日本語を扱えないので、とりあえずlengthの値を返すようにしてみただけです。「それ、○○でできるよ!」というのは無しでお願いしますw
以下のコードをcommand-editorの一番下にでも貼り付ければOKです。
--ここから--
CmdUtils.CreateCommand({
name: "length",
description: "選択中の文字列の文字数を表示します。空白や改行などは無視します。",
_length: function() {
var str = CmdUtils.getTextSelection();
str = str.replace(/\s|\n|\r/g, "");
return str.length;
},
preview: function(pblock) {
pblock.innerHTML = this._length() + "文字です。";
},
execute: function() {
displayMessage(this._length() + "文字でした。");
}
});
--ここまで--
このコマンドを使って、先程書いたエントリの文字数を測ってみました。うーむ、想像以上に短かった!

↑文字数をカウントするコマンド「length」←好きな名前を付けて下さいw
以上、私の環境では、「CmdUtils.getTextSelection」で少しハマッたのでメモを残しておこうと思います。
(追記:8/30)わざわざ再定義しなくても、次のようなコードでも選択中の文字列を取得できますね!
var document = context.focusedWindow.document;
var str = document.getSelection();