Revert "Stop using splice.appy() in ace"

This reverts commit 8624ab8dcb.
This commit is contained in:
aldendaniels 2014-01-08 21:39:30 -06:00
commit 91df7cd663
9 changed files with 37 additions and 53 deletions

View file

@ -32,7 +32,6 @@ define(function(require, exports, module) {
"use strict";
var oop = require("./lib/oop");
var lang = require("./lib/lang");
var EventEmitter = require("./lib/event_emitter").EventEmitter;
@ -188,15 +187,14 @@ var BackgroundTokenizer = function(tokenizer, editor) {
this.lines.splice(startRow, len + 1, null);
this.states.splice(startRow, len + 1, null);
} else {
this.lines.splice( startRow, 1);
this.states.splice(startRow, 1);
var toInsert = Array(len + 1);
lang.spliceIntoArray(this.lines, startRow, toInsert);
lang.spliceIntoArray(this.states, startRow, toInsert);
var args = Array(len + 1);
args.unshift(startRow, 1);
this.lines.splice.apply(this.lines, args);
this.states.splice.apply(this.states, args);
}
this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());
this.stop();
};

View file

@ -1723,15 +1723,15 @@ var EditSession = function(text, mode) {
} else {
var args;
if (useWrapMode) {
var toInsert = [];
for (var i = 0; i < len; i++)
toInsert.push([]);
lang.spliceIntoArray(this.$wrapData, firstRow, toInsert);
args = [firstRow, 0];
for (var i = 0; i < len; i++) args.push([]);
this.$wrapData.splice.apply(this.$wrapData, args);
} else {
var toInsert = Array(len);
lang.spliceIntoArray(this.$rowLengthCache, firstRow, toInsert);
args = Array(len);
args.unshift(firstRow, 0);
this.$rowLengthCache.splice.apply(this.$rowLengthCache, args);
}
// If some new line is added inside of a foldLine, then split
// the fold line up.
var foldLines = this.$foldData;

View file

@ -31,7 +31,6 @@
define(function(require, exports, module) {
"use strict";
var lang = require("../lib/lang");
var Range = require("../range").Range;
var FoldLine = require("./fold_line").FoldLine;
var Fold = require("./fold").Fold;
@ -837,8 +836,9 @@ function Folding() {
} else if (delta.action == "delete") {
this.foldWidgets.splice(firstRow, len + 1, null);
} else {
this.foldWidgets.splice(firstRow, 1);
lang.spliceIntoArray(this.foldWidgets, firstRow, Array(len + 1));
var args = Array(len + 1);
args.unshift(firstRow, 1);
this.foldWidgets.splice.apply(this.foldWidgets, args);
}
};

View file

@ -111,8 +111,9 @@ var Gutter = function(parentEl) {
} else if (delta.action == "delete") {
this.$annotations.splice(firstRow, len + 1, null);
} else {
this.$annotations.splice(firstRow, 1);
lang.spliceIntoArray(this.$annotations, firstRow, new Array(len + 1));
var args = new Array(len + 1);
args.unshift(firstRow, 1);
this.$annotations.splice.apply(this.$annotations, args);
}
};

View file

@ -123,20 +123,6 @@ exports.arrayRemove = function(array, value) {
}
};
/*
* Splice the items in `a2` into `a1` at position `offset`.
*/
exports.spliceIntoArray = function(a1, offset, a2) {
// Handle negative offsets.
if (offset < 0)
offset = Math.max(a1.length + offset, 0);
// Splice.
for (var i = 0; i < a2.length; i++)
a1.splice(i + offset, 0, a2[i]);
}
exports.escapeRegExp = function(str) {
return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
};

View file

@ -32,7 +32,6 @@ define(function(require, exports, module) {
"use strict";
var oop = require("./lib/oop");
var lang = require("./lib/lang");
var dom = require("./lib/dom");
var Range = require("./range").Range;
@ -131,7 +130,9 @@ function LineWidgets(session) {
}, this);
this.$updateRows();
} else {
lang.spliceIntoArray(cells, startRow, new Array(len));
var args = Array(len);
args.unshift(startRow, 0);
cells.splice.apply(cells, args);
this.$updateRows();
}
};

View file

@ -32,7 +32,6 @@ define(function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
var lang = require("../lib/lang");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var AsciidocHighlightRules = function() {
@ -216,14 +215,13 @@ var AsciidocHighlightRules = function() {
for (var i = stateRules.length; i--; ) {
var rule = stateRules[i];
if (rule.include || typeof rule == "string") {
var toInsert = this.$rules[rule.include || rule];
var args = [i, 1].concat(this.$rules[rule.include || rule]);
if (rule.noEscape) {
toInsert = toInsert.filter(function(x) {
args = args.filter(function(x) {
return !x.next;
});
}
stateRules.splice(i, 1);
lang.spliceIntoArray(stateRules, i, toInsert);
stateRules.splice.apply(stateRules, args);
} else if (rule.token in tokenMap) {
rule.token = tokenMap[rule.token];
}

View file

@ -181,10 +181,10 @@ var TextHighlightRules = function() {
toInsert = rule;
if (toInsert) {
var args = [i, 1].concat(toInsert);
if (rule.noEscape)
toInsert = toInsert.filter(function(x) {return !x.next;});
state.splice(i, 1);
lang.spliceIntoArray(state, i, toInsert);
args = args.filter(function(x) {return !x.next;});
state.splice.apply(state, args);
// skip included rules since they are already processed
//i += args.length - 3;
i--;

View file

@ -335,12 +335,12 @@ var SnippetManager = function() {
}
var ts = tabstops[id];
var toInsert = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value);
toInsert.push(p);
var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value);
arg.unshift(i + 1, Math.max(0, i1 - i));
arg.push(p);
expanding[id] = p;
tokens.splice(i + 1, Math.max(0, i1 - i));
lang.spliceIntoArray(tokens, i + 1, toInsert);
tokens.splice.apply(tokens, arg);
if (ts.indexOf(p) === -1)
ts.push(p);
};
@ -755,7 +755,7 @@ var TabstopManager = function(editor) {
}
var i = this.index;
var toInsert = [];
var arg = [i, 0];
var ranges = this.ranges;
var editor = this.editor;
tabstops.forEach(function(ts) {
@ -776,12 +776,12 @@ var TabstopManager = function(editor) {
}
if (!ts.firstNonLinked)
ts.hasLinkedRanges = false;
toInsert.push(ts);
arg.push(ts);
this.addTabstopMarkers(ts);
}, this);
// tabstop 0 is the last one
toInsert.push(toInsert.splice(0, 1)[0]);
lang.spliceIntoArray(this.tabstops, this.index, toInsert);
arg.push(arg.splice(2, 1)[0]);
this.tabstops.splice.apply(this.tabstops, arg);
};
this.addTabstopMarkers = function(ts) {