Проверь, я поправил код под твой случай.
У меня все работает.
А ещё лучше так:

Код:
fixWMode = function(str) {
var index = Selection.getCaretIndex();
var broken = str.split(chr(4));
for (var i = 1; i<broken.length; i++) {
broken[i] = String.fromCharCode(1024+broken[i].charCodeAt(0))+broken[i].substr(1);
}
var out = broken.join("");
if (index<out.length-1&&str.length!=out.length) {
Selection.setSelection(index-1,index-1);
}
return out;
}
sr.clonen.onChanged = function() {
this.text = fixWMode(this.text);
};