From 69c8f6615d2e00d53f17cab9dd14e8f019e8c1ed Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Thu, 10 May 2012 11:47:32 -0700 Subject: [PATCH] Updates for ace performance related to new searchinfiles work --- lib/ace/document.js | 7 ++++++- lib/ace/edit_session/folding.js | 9 ++++++++- lib/ace/worker/worker.js | 7 ++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/ace/document.js b/lib/ace/document.js index 99afe895..1c89fcf1 100644 --- a/lib/ace/document.js +++ b/lib/ace/document.js @@ -327,8 +327,13 @@ var Document = function(text) { return {row: row, column: 0}; var args = [row, 0]; - args.push.apply(args, lines); + var step = 100000; + var l = Math.ceil(lines.length / step); + for (var tlines, i = 0; i < l; i++) { + tlines = lines.slice(i * step, step); + args.push.apply(args, tlines); this.$lines.splice.apply(this.$lines, args); + } var range = new Range(row, 0, row + lines.length, 0); var delta = { diff --git a/lib/ace/edit_session/folding.js b/lib/ace/edit_session/folding.js index 3a113c84..46f9583c 100644 --- a/lib/ace/edit_session/folding.js +++ b/lib/ace/edit_session/folding.js @@ -748,7 +748,14 @@ function Folding() { } else { var args = Array(len + 1); args.unshift(firstRow, 1); - this.foldWidgets.splice.apply(this.foldWidgets, args); + + var step = 100000; + var l = Math.ceil(args.length / step); + for (var targs, i = 0; i < l; i++) { + targs = args.slice(i * step, step); + this.foldWidgets.splice.apply(this.foldWidgets, targs); + } + } }; diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js index 295f90b3..04832b6a 100644 --- a/lib/ace/worker/worker.js +++ b/lib/ace/worker/worker.js @@ -123,7 +123,12 @@ var sender; onmessage = function(e) { var msg = e.data; if (msg.command) { - main[msg.command].apply(main, msg.args); + var step = 100000; + var l = Math.ceil(msg.args.length / step); + for (var targs, i = 0; i < l; i++) { + targs = msg.args.slice(i * step, step); + main[msg.command].apply(main, targs); + } } else if (msg.init) { initBaseUrls(msg.tlns);