В развязке Showdown есть несколько ошибок. Вот почему для версии Stack Overflow я переписал :
function _Detab(text) {
if (!/\t/.test(text))
return text;
var spaces = [" ", " ", " ", " "],
skew = 0,
v;
return text.replace(/[\n\t]/g, function (match, offset) {
if (match === "\n") {
skew = offset + 1;
return match;
}
v = (offset - skew) % 4;
skew = offset + 1;
return spaces[v];
});
}
Он корректно отключается, и, если я правильно помню свои измерения, это примерно так же быстро (может быть, немного медленнее), чем оригинал в старых версиях IE, и намного быстрее в новых браузерах.
См. http://code.google.com/p/pagedown/wiki/PageDown для нашей полной версии Showdown.