Moving replacing of spaces into big replace function to avoid replacements of <span ...>tab</span>
This commit is contained in:
parent
d1bfdba34b
commit
a8a1d9483b
1 changed files with 13 additions and 35 deletions
|
|
@ -280,58 +280,36 @@ var Text = function(parentEl) {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$renderLine = function(stringBuilder, row, tokens) {
|
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(" ");
|
|
||||||
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 = " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
var _self = this,
|
var _self = this,
|
||||||
characterWidth = this.config.characterWidth,
|
characterWidth = this.config.characterWidth,
|
||||||
screenColumn = 0;
|
screenColumn = 0;
|
||||||
|
|
||||||
function addToken(token, value) {
|
function addToken(token, value) {
|
||||||
var output = value
|
var output = value
|
||||||
.replace(/\t|&|<|[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF]/g, function(c, idx) {
|
.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 == "\t") {
|
if (c.charCodeAt(0) == 32) {
|
||||||
|
return new Array(c.length+1).join(" ");
|
||||||
|
} else if (c == "\t") {
|
||||||
var tabSize = _self.session.
|
var tabSize = _self.session.
|
||||||
getScreenTabSize(screenColumn + idx);
|
getScreenTabSize(screenColumn + tabIdx);
|
||||||
screenColumn += tabSize - 1;
|
screenColumn += tabSize - 1;
|
||||||
return _self.$tabStrings[tabSize];
|
return _self.$tabStrings[tabSize];
|
||||||
} else if (c == "&") {
|
} else if (c == "&") {
|
||||||
return "&";
|
return "&";
|
||||||
} else if (c == "<") {
|
} else if (c == "<") {
|
||||||
return "<";
|
return "<";
|
||||||
|
} 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 " "
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
screenColumn += 1;
|
screenColumn += 1;
|
||||||
return "<span class='ace_cjk' style='width:" + (characterWidth * 2) + "px'>" + c + "</span>"
|
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, "&")
|
|
||||||
// .replace(/</g, "<")
|
|
||||||
.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;
|
screenColumn += value.length;
|
||||||
|
|
||||||
if (!_self.$textToken[token.type]) {
|
if (!_self.$textToken[token.type]) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue