From 7f8892f9a5b8b9079c24e9396395b95b276c2472 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 10 Jun 2012 22:10:35 +0400 Subject: [PATCH] folds with wrong range shouldn't break renderer --- lib/ace/layer/text.js | 54 +++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/lib/ace/layer/text.js b/lib/ace/layer/text.js index 92683967..e96dff28 100644 --- a/lib/ace/layer/text.js +++ b/lib/ace/layer/text.js @@ -131,7 +131,7 @@ var Text = function(parentEl) { container.appendChild(measureNode); } } - + // Size and width can be null if the editor is not visible or // detached from the document if (!this.element.offsetWidth) @@ -153,7 +153,7 @@ var Text = function(parentEl) { return null; return size; - } + } : function() { if (!this.$measureNode) { var measureNode = this.$measureNode = dom.createElement("div"); @@ -178,7 +178,7 @@ var Text = function(parentEl) { container.appendChild(measureNode); } - + var rect = this.$measureNode.getBoundingClientRect(); var size = { @@ -382,7 +382,7 @@ var Text = function(parentEl) { "lparen": true }; - this.$renderToken = function(stringBuilder, screenColumn, token, value) { + this.$renderToken = function(stringBuilder, screenColumn, token, value) { var self = this; var replaceReg = /\t|&|<|( +)|([\u0000-\u0019\u00a0\u1680\u180E\u2000-\u200b\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g; var replaceFunc = function(c, a, b, tabIdx, idx4) { @@ -447,7 +447,7 @@ var Text = function(parentEl) { "'>" ); } - + for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; var value = token.value; @@ -461,12 +461,12 @@ var Text = function(parentEl) { else { while (chars + value.length >= splitChars) { screenColumn = self.$renderToken( - stringBuilder, screenColumn, + stringBuilder, screenColumn, token, value.substring(0, splitChars - chars) ); value = value.substring(splitChars - chars); chars = splitChars; - + if (!onlyContents) { stringBuilder.push("", "