multi row operations will not be used
This commit is contained in:
parent
f3174a29b3
commit
f0c8e3a9a4
2 changed files with 0 additions and 108 deletions
|
|
@ -483,52 +483,10 @@ var EditSession = function(text, mode) {
|
||||||
return this.doc.insert(position, text);
|
return this.doc.insert(position, text);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @param rows Array[Integer] sorted list of rows
|
|
||||||
*/
|
|
||||||
this.multiRowInsert = function(rows, column, text) {
|
|
||||||
for (var i=rows.length-1; i>=0; i--) {
|
|
||||||
var row = rows[i];
|
|
||||||
if (row >= this.doc.getLength())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
var diff = column - this.doc.getLine(row).length;
|
|
||||||
if ( diff > 0) {
|
|
||||||
var padded = lang.stringRepeat(" ", diff) + text;
|
|
||||||
var offset = -diff;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
padded = text;
|
|
||||||
offset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
var end = this.insert({row: row, column: column+offset}, padded);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
rows: end ? end.row - rows[0] : 0,
|
|
||||||
columns: end ? end.column - column : 0
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
this.remove = function(range) {
|
this.remove = function(range) {
|
||||||
return this.doc.remove(range);
|
return this.doc.remove(range);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.multiRowRemove = function(rows, range) {
|
|
||||||
if (range.start.row !== rows[0])
|
|
||||||
throw new TypeError("range must start in the first row!");
|
|
||||||
|
|
||||||
var height = range.end.row - rows[0];
|
|
||||||
for (var i=rows.length-1; i>=0; i--) {
|
|
||||||
var row = rows[i];
|
|
||||||
if (row >= this.doc.getLength())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
var end = this.remove(new Range(row, range.start.column, row+height, range.end.column));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.undoChanges = function(deltas) {
|
this.undoChanges = function(deltas) {
|
||||||
if (!deltas.length)
|
if (!deltas.length)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -263,72 +263,6 @@ var Test = {
|
||||||
computeAndAssert(" ぁぁ\tぁ", [1, 4], 4);
|
computeAndAssert(" ぁぁ\tぁ", [1, 4], 4);
|
||||||
},
|
},
|
||||||
|
|
||||||
"test: insert text in multiple rows": function() {
|
|
||||||
var session = new EditSession(["12", "", "abcd"]);
|
|
||||||
|
|
||||||
var inserted = session.multiRowInsert([0, 1, 2], 2, "juhu 1");
|
|
||||||
assert.equal(inserted.rows, 0);
|
|
||||||
assert.equal(inserted.columns, 6);
|
|
||||||
|
|
||||||
assert.equal(session.getValue(), ["12juhu 1", " juhu 1", "abjuhu 1cd"].join("\n"));
|
|
||||||
},
|
|
||||||
|
|
||||||
"test: undo insert text in multiple rows": function() {
|
|
||||||
var session = new EditSession(["12", "", "abcd"]);
|
|
||||||
|
|
||||||
var undoManager = new UndoManager();
|
|
||||||
session.setUndoManager(undoManager);
|
|
||||||
|
|
||||||
session.multiRowInsert([0, 1, 2], 2, "juhu 1");
|
|
||||||
session.$informUndoManager.call();
|
|
||||||
assert.equal(session.getValue(), ["12juhu 1", " juhu 1", "abjuhu 1cd"].join("\n"));
|
|
||||||
|
|
||||||
undoManager.undo();
|
|
||||||
assert.equal(session.getValue(), ["12", "", "abcd"].join("\n"));
|
|
||||||
|
|
||||||
undoManager.redo();
|
|
||||||
assert.equal(session.getValue(), ["12juhu 1", " juhu 1", "abjuhu 1cd"].join("\n"));
|
|
||||||
},
|
|
||||||
|
|
||||||
"test: insert new line in multiple rows": function() {
|
|
||||||
var session = new EditSession(["12", "", "abcd"]);
|
|
||||||
|
|
||||||
var inserted = session.multiRowInsert([0, 1, 2], 2, "\n");
|
|
||||||
assert.equal(inserted.rows, 1);
|
|
||||||
assert.equal(session.getValue(), ["12\n", " \n", "ab\ncd"].join("\n"));
|
|
||||||
},
|
|
||||||
|
|
||||||
"test: insert multi line text in multiple rows": function() {
|
|
||||||
var session = new EditSession(["12", "", "abcd"]);
|
|
||||||
|
|
||||||
var inserted = session.multiRowInsert([0, 1, 2], 2, "juhu\n12");
|
|
||||||
assert.equal(inserted.rows, 1);
|
|
||||||
assert.equal(session.getValue(), ["12juhu\n12", " juhu\n12", "abjuhu\n12cd"].join("\n"));
|
|
||||||
},
|
|
||||||
|
|
||||||
"test: remove right in multiple rows" : function() {
|
|
||||||
var session = new EditSession(["12", "", "abcd"]);
|
|
||||||
|
|
||||||
session.multiRowRemove([0, 1, 2], new Range(0, 2, 0, 3));
|
|
||||||
assert.equal(session.getValue(), ["12", "", "abd"].join("\n"));
|
|
||||||
},
|
|
||||||
|
|
||||||
"test: undo remove right in multiple rows" : function() {
|
|
||||||
var session = new EditSession(["12", "", "abcd"]);
|
|
||||||
var undoManager = new UndoManager();
|
|
||||||
session.setUndoManager(undoManager);
|
|
||||||
|
|
||||||
session.multiRowRemove([0, 1, 2], new Range(0, 1, 0, 3));
|
|
||||||
session.$informUndoManager.call();
|
|
||||||
assert.equal(session.getValue(), ["1", "", "ad"].join("\n"));
|
|
||||||
|
|
||||||
undoManager.undo();
|
|
||||||
assert.equal(session.getValue(), ["12", "", "abcd"].join("\n"));
|
|
||||||
|
|
||||||
undoManager.redo();
|
|
||||||
assert.equal(session.getValue(), ["1", "", "ad"].join("\n"));
|
|
||||||
},
|
|
||||||
|
|
||||||
"test get longest line" : function() {
|
"test get longest line" : function() {
|
||||||
var session = new EditSession(["12"]);
|
var session = new EditSession(["12"]);
|
||||||
session.setTabSize(4);
|
session.setTabSize(4);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue