Moving replacing of spaces into big replace function to avoid replacements of <span ...>tab</span>

This commit is contained in:
Julian Viereck 2011-03-19 00:54:35 +01:00
commit a8a1d9483b

View file

@ -280,58 +280,36 @@ var Text = function(parentEl) {
};
this.$renderLine = function(stringBuilder, row, tokens) {
if (this.showInvisibles) {
var self = this;
var spaceRe = /( +)|([\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000])/g;
var spaceReplace = function(space) {
if (space.charCodeAt(0) == 32)
return new Array(space.length+1).join("&#160;");
else {
var space = new Array(space.length+1).join(self.SPACE_CHAR);
return "<span class='ace_invisible'>" + space + "</span>";
}
};
}
else {
var spaceRe = /[\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]/g;
var spaceReplace = "&#160;";
}
var _self = this,
characterWidth = this.config.characterWidth,
screenColumn = 0;
function addToken(token, value) {
var output = value
.replace(/\t|&|<|[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF]/g, function(c, idx) {
if (c == "\t") {
.replace(/\t|&|<|( +)|([\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000])|[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF]/g, function(c, a, b, tabIdx, idx4) {
if (c.charCodeAt(0) == 32) {
return new Array(c.length+1).join("&#160;");
} else if (c == "\t") {
var tabSize = _self.session.
getScreenTabSize(screenColumn + idx);
getScreenTabSize(screenColumn + tabIdx);
screenColumn += tabSize - 1;
return _self.$tabStrings[tabSize];
} else if (c == "&") {
return "&amp";
} else if (c == "<") {
return "&lt;";
} else if (c.match(/[\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]/)) {
if (this.showInvisibles) {
var space = new Array(c.length+1).join(self.SPACE_CHAR);
return "<span class='ace_invisible'>" + space + "</span>";
} else {
return "&#160;"
}
} else {
screenColumn += 1;
return "<span class='ace_cjk' style='width:" + (characterWidth * 2) + "px'>" + c + "</span>"
}
})
// .replace(/\t/g, function(c, idx) {
// idx += screenColumnOld;
// var tabSize = _self.session.getScreenTabSize(idx);
// screenColumn += tabSize - 1;
// return _self.$tabStrings[tabSize];
// })
// .replace(/&/g, "&amp;")
// .replace(/</g, "&lt;")
.replace(spaceRe, spaceReplace)
// .replace(/[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF]/g, function(c) {
// screenColumn += 1;
// return "<span class='ace_cjk' style='width:" + (characterWidth * 2) + "px'>" + c + "</span>"
// });
});
screenColumn += value.length;
if (!_self.$textToken[token.type]) {