Revert "Stop using splice.appy() in ace"
This reverts commit 8624ab8dcb.
This commit is contained in:
parent
8624ab8dcb
commit
91df7cd663
9 changed files with 37 additions and 53 deletions
|
|
@ -32,7 +32,6 @@ define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("./lib/oop");
|
var oop = require("./lib/oop");
|
||||||
var lang = require("./lib/lang");
|
|
||||||
var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -188,15 +187,14 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
||||||
this.lines.splice(startRow, len + 1, null);
|
this.lines.splice(startRow, len + 1, null);
|
||||||
this.states.splice(startRow, len + 1, null);
|
this.states.splice(startRow, len + 1, null);
|
||||||
} else {
|
} else {
|
||||||
this.lines.splice( startRow, 1);
|
var args = Array(len + 1);
|
||||||
this.states.splice(startRow, 1);
|
args.unshift(startRow, 1);
|
||||||
var toInsert = Array(len + 1);
|
this.lines.splice.apply(this.lines, args);
|
||||||
lang.spliceIntoArray(this.lines, startRow, toInsert);
|
this.states.splice.apply(this.states, args);
|
||||||
lang.spliceIntoArray(this.states, startRow, toInsert);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());
|
this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());
|
||||||
|
|
||||||
this.stop();
|
this.stop();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1723,15 +1723,15 @@ var EditSession = function(text, mode) {
|
||||||
} else {
|
} else {
|
||||||
var args;
|
var args;
|
||||||
if (useWrapMode) {
|
if (useWrapMode) {
|
||||||
var toInsert = [];
|
args = [firstRow, 0];
|
||||||
for (var i = 0; i < len; i++)
|
for (var i = 0; i < len; i++) args.push([]);
|
||||||
toInsert.push([]);
|
this.$wrapData.splice.apply(this.$wrapData, args);
|
||||||
lang.spliceIntoArray(this.$wrapData, firstRow, toInsert);
|
|
||||||
} else {
|
} else {
|
||||||
var toInsert = Array(len);
|
args = Array(len);
|
||||||
lang.spliceIntoArray(this.$rowLengthCache, firstRow, toInsert);
|
args.unshift(firstRow, 0);
|
||||||
|
this.$rowLengthCache.splice.apply(this.$rowLengthCache, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If some new line is added inside of a foldLine, then split
|
// If some new line is added inside of a foldLine, then split
|
||||||
// the fold line up.
|
// the fold line up.
|
||||||
var foldLines = this.$foldData;
|
var foldLines = this.$foldData;
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var lang = require("../lib/lang");
|
|
||||||
var Range = require("../range").Range;
|
var Range = require("../range").Range;
|
||||||
var FoldLine = require("./fold_line").FoldLine;
|
var FoldLine = require("./fold_line").FoldLine;
|
||||||
var Fold = require("./fold").Fold;
|
var Fold = require("./fold").Fold;
|
||||||
|
|
@ -837,8 +836,9 @@ function Folding() {
|
||||||
} else if (delta.action == "delete") {
|
} else if (delta.action == "delete") {
|
||||||
this.foldWidgets.splice(firstRow, len + 1, null);
|
this.foldWidgets.splice(firstRow, len + 1, null);
|
||||||
} else {
|
} else {
|
||||||
this.foldWidgets.splice(firstRow, 1);
|
var args = Array(len + 1);
|
||||||
lang.spliceIntoArray(this.foldWidgets, firstRow, Array(len + 1));
|
args.unshift(firstRow, 1);
|
||||||
|
this.foldWidgets.splice.apply(this.foldWidgets, args);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -111,8 +111,9 @@ var Gutter = function(parentEl) {
|
||||||
} else if (delta.action == "delete") {
|
} else if (delta.action == "delete") {
|
||||||
this.$annotations.splice(firstRow, len + 1, null);
|
this.$annotations.splice(firstRow, len + 1, null);
|
||||||
} else {
|
} else {
|
||||||
this.$annotations.splice(firstRow, 1);
|
var args = new Array(len + 1);
|
||||||
lang.spliceIntoArray(this.$annotations, firstRow, new Array(len + 1));
|
args.unshift(firstRow, 1);
|
||||||
|
this.$annotations.splice.apply(this.$annotations, args);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
exports.escapeRegExp = function(str) {
|
||||||
return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
|
return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("./lib/oop");
|
var oop = require("./lib/oop");
|
||||||
var lang = require("./lib/lang");
|
|
||||||
var dom = require("./lib/dom");
|
var dom = require("./lib/dom");
|
||||||
var Range = require("./range").Range;
|
var Range = require("./range").Range;
|
||||||
|
|
||||||
|
|
@ -131,7 +130,9 @@ function LineWidgets(session) {
|
||||||
}, this);
|
}, this);
|
||||||
this.$updateRows();
|
this.$updateRows();
|
||||||
} else {
|
} else {
|
||||||
lang.spliceIntoArray(cells, startRow, new Array(len));
|
var args = Array(len);
|
||||||
|
args.unshift(startRow, 0);
|
||||||
|
cells.splice.apply(cells, args);
|
||||||
this.$updateRows();
|
this.$updateRows();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
var lang = require("../lib/lang");
|
|
||||||
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
||||||
|
|
||||||
var AsciidocHighlightRules = function() {
|
var AsciidocHighlightRules = function() {
|
||||||
|
|
@ -216,14 +215,13 @@ var AsciidocHighlightRules = function() {
|
||||||
for (var i = stateRules.length; i--; ) {
|
for (var i = stateRules.length; i--; ) {
|
||||||
var rule = stateRules[i];
|
var rule = stateRules[i];
|
||||||
if (rule.include || typeof rule == "string") {
|
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) {
|
if (rule.noEscape) {
|
||||||
toInsert = toInsert.filter(function(x) {
|
args = args.filter(function(x) {
|
||||||
return !x.next;
|
return !x.next;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
stateRules.splice(i, 1);
|
stateRules.splice.apply(stateRules, args);
|
||||||
lang.spliceIntoArray(stateRules, i, toInsert);
|
|
||||||
} else if (rule.token in tokenMap) {
|
} else if (rule.token in tokenMap) {
|
||||||
rule.token = tokenMap[rule.token];
|
rule.token = tokenMap[rule.token];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -181,10 +181,10 @@ var TextHighlightRules = function() {
|
||||||
toInsert = rule;
|
toInsert = rule;
|
||||||
|
|
||||||
if (toInsert) {
|
if (toInsert) {
|
||||||
|
var args = [i, 1].concat(toInsert);
|
||||||
if (rule.noEscape)
|
if (rule.noEscape)
|
||||||
toInsert = toInsert.filter(function(x) {return !x.next;});
|
args = args.filter(function(x) {return !x.next;});
|
||||||
state.splice(i, 1);
|
state.splice.apply(state, args);
|
||||||
lang.spliceIntoArray(state, i, toInsert);
|
|
||||||
// skip included rules since they are already processed
|
// skip included rules since they are already processed
|
||||||
//i += args.length - 3;
|
//i += args.length - 3;
|
||||||
i--;
|
i--;
|
||||||
|
|
|
||||||
|
|
@ -335,12 +335,12 @@ var SnippetManager = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var ts = tabstops[id];
|
var ts = tabstops[id];
|
||||||
var toInsert = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value);
|
var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value);
|
||||||
toInsert.push(p);
|
arg.unshift(i + 1, Math.max(0, i1 - i));
|
||||||
|
arg.push(p);
|
||||||
expanding[id] = p;
|
expanding[id] = p;
|
||||||
tokens.splice(i + 1, Math.max(0, i1 - i));
|
tokens.splice.apply(tokens, arg);
|
||||||
lang.spliceIntoArray(tokens, i + 1, toInsert);
|
|
||||||
|
|
||||||
if (ts.indexOf(p) === -1)
|
if (ts.indexOf(p) === -1)
|
||||||
ts.push(p);
|
ts.push(p);
|
||||||
};
|
};
|
||||||
|
|
@ -755,7 +755,7 @@ var TabstopManager = function(editor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var i = this.index;
|
var i = this.index;
|
||||||
var toInsert = [];
|
var arg = [i, 0];
|
||||||
var ranges = this.ranges;
|
var ranges = this.ranges;
|
||||||
var editor = this.editor;
|
var editor = this.editor;
|
||||||
tabstops.forEach(function(ts) {
|
tabstops.forEach(function(ts) {
|
||||||
|
|
@ -776,12 +776,12 @@ var TabstopManager = function(editor) {
|
||||||
}
|
}
|
||||||
if (!ts.firstNonLinked)
|
if (!ts.firstNonLinked)
|
||||||
ts.hasLinkedRanges = false;
|
ts.hasLinkedRanges = false;
|
||||||
toInsert.push(ts);
|
arg.push(ts);
|
||||||
this.addTabstopMarkers(ts);
|
this.addTabstopMarkers(ts);
|
||||||
}, this);
|
}, this);
|
||||||
// tabstop 0 is the last one
|
// tabstop 0 is the last one
|
||||||
toInsert.push(toInsert.splice(0, 1)[0]);
|
arg.push(arg.splice(2, 1)[0]);
|
||||||
lang.spliceIntoArray(this.tabstops, this.index, toInsert);
|
this.tabstops.splice.apply(this.tabstops, arg);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addTabstopMarkers = function(ts) {
|
this.addTabstopMarkers = function(ts) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue