Fix merge conflict
This commit is contained in:
commit
e144e70f10
12 changed files with 163 additions and 41 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
|||
.DS_Store
|
||||
.settings.xml
|
||||
.settings.xml.old
|
||||
.settings.xml.old
|
||||
.*.gz
|
||||
2
.gitmodules
vendored
2
.gitmodules
vendored
|
|
@ -21,4 +21,4 @@
|
|||
url = git://github.com/tautologistics/node-htmlparser.git
|
||||
[submodule "support/cockpit"]
|
||||
path = support/cockpit
|
||||
url = git://github.com/joewalker/cockpit.git
|
||||
url = git://github.com/ajaxorg/cockpit.git
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ var canon = require("pilot/canon");
|
|||
|
||||
canon.addCommand({
|
||||
name: "selectall",
|
||||
exec: function(env, args, request) { env.selection.selectAll(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectAll(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "removeline",
|
||||
|
|
@ -101,7 +101,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selecttostart",
|
||||
exec: function(env, args, request) { env.selection.selectFileStart(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectFileStart(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotostart",
|
||||
|
|
@ -109,7 +109,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectup",
|
||||
exec: function(env, args, request) { env.selection.selectUp(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectUp(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "golineup",
|
||||
|
|
@ -125,7 +125,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selecttoend",
|
||||
exec: function(env, args, request) { env.selection.selectFileEnd(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectFileEnd(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotoend",
|
||||
|
|
@ -133,7 +133,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectdown",
|
||||
exec: function(env, args, request) { env.selection.selectDown(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectDown(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "godown",
|
||||
|
|
@ -141,7 +141,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectwordleft",
|
||||
exec: function(env, args, request) { env.selection.selectWordLeft(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectWordLeft(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotowordleft",
|
||||
|
|
@ -149,7 +149,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selecttolinestart",
|
||||
exec: function(env, args, request) { env.selection.selectLineStart(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectLineStart(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotolinestart",
|
||||
|
|
@ -157,7 +157,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectleft",
|
||||
exec: function(env, args, request) { env.selection.selectLeft(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectLeft(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotoleft",
|
||||
|
|
@ -165,7 +165,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectwordright",
|
||||
exec: function(env, args, request) { env.selection.selectWordRight(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectWordRight(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotowordright",
|
||||
|
|
@ -173,7 +173,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selecttolineend",
|
||||
exec: function(env, args, request) { env.selection.selectLineEnd(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectLineEnd(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotolineend",
|
||||
|
|
@ -181,7 +181,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectright",
|
||||
exec: function(env, args, request) { env.selection.selectRight(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectRight(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotoright",
|
||||
|
|
@ -213,7 +213,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectlinestart",
|
||||
exec: function(env, args, request) { env.selection.selectLineStart(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectLineStart(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotolinestart",
|
||||
|
|
@ -221,7 +221,7 @@ canon.addCommand({
|
|||
});
|
||||
canon.addCommand({
|
||||
name: "selectlineend",
|
||||
exec: function(env, args, request) { env.selection.selectLineEnd(); }
|
||||
exec: function(env, args, request) { env.editor.getSelection().selectLineEnd(); }
|
||||
});
|
||||
canon.addCommand({
|
||||
name: "gotolineend",
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ var Document = function(text, mode) {
|
|||
}
|
||||
|
||||
if (undoManager) {
|
||||
//undoManager.setDocument(this);
|
||||
var self = this;
|
||||
this.$informUndoManager = lang.deferredCall(function() {
|
||||
if (self.$deltas.length > 0)
|
||||
|
|
@ -456,6 +455,45 @@ var Document = function(text, mode) {
|
|||
: undefined);
|
||||
return end;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param rows Array[Integer] sorted list of rows
|
||||
*/
|
||||
this.multiRowInsert = function(rows, column, text) {
|
||||
var lines = this.lines;
|
||||
|
||||
for (var i=rows.length-1; i>=0; i--) {
|
||||
var row = rows[i];
|
||||
if (row >= lines.length)
|
||||
continue;
|
||||
|
||||
var diff = column - lines[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, false);
|
||||
}
|
||||
|
||||
if (end) {
|
||||
this.fireChangeEvent(rows[0], rows[rows.length-1] + end.row - rows[0]);
|
||||
return {
|
||||
rows: end.row - rows[0],
|
||||
columns: end.column - column
|
||||
}
|
||||
}
|
||||
else {
|
||||
return {
|
||||
rows: 0,
|
||||
columns: 0
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.$insertLines = function(row, lines, fromUndo) {
|
||||
if (lines.length == 0)
|
||||
|
|
@ -552,6 +590,27 @@ var Document = function(text, mode) {
|
|||
return range.start;
|
||||
};
|
||||
|
||||
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.lines.length)
|
||||
continue;
|
||||
|
||||
var end = this.$remove(new Range(row, range.start.column, row+height, range.end.column), false);
|
||||
}
|
||||
|
||||
if (end) {
|
||||
if (height < 0)
|
||||
this.fireChangeEvent(rows[0]+height, undefined);
|
||||
else
|
||||
this.fireChangeEvent(rows[0], height == 0 ? rows[rows.length-1] : undefined);
|
||||
}
|
||||
};
|
||||
|
||||
this.$remove = function(range, fromUndo) {
|
||||
if (range.isEmpty())
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -49,11 +49,7 @@ assert.range = function(range, startRow, startColumn, endRow, endColumn) {
|
|||
assert.position(range.end, endRow, endColumn);
|
||||
};
|
||||
|
||||
assert.true = function(value) {
|
||||
assert.equal(value, true);
|
||||
}
|
||||
|
||||
assert.false = function(value) {
|
||||
assert["false"] = function(value) {
|
||||
assert.equal(value, false);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ var Test = {
|
|||
assert.false(called);
|
||||
|
||||
this.doc2.duplicateLines(0, 0);
|
||||
assert.true(called);
|
||||
assert.ok(called);
|
||||
},
|
||||
|
||||
"test: should use cursor of new document" : function() {
|
||||
|
|
@ -104,7 +104,7 @@ var Test = {
|
|||
|
||||
this.doc2.getSelection().moveCursorTo(1, 1);
|
||||
assert.position(this.editor.getCursorPosition(), 1, 1);
|
||||
assert.true(called);
|
||||
assert.ok(called);
|
||||
},
|
||||
|
||||
"test: should use selection of new document" : function() {
|
||||
|
|
@ -134,7 +134,7 @@ var Test = {
|
|||
|
||||
this.doc2.getSelection().selectTo(1, 1);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 1, 1);
|
||||
assert.true(called);
|
||||
assert.ok(called);
|
||||
},
|
||||
|
||||
"test: should use mode of new document" : function() {
|
||||
|
|
@ -149,7 +149,7 @@ var Test = {
|
|||
assert.false(called);
|
||||
|
||||
this.doc2.setMode(new JavaScriptMode());
|
||||
assert.true(called);
|
||||
assert.ok(called);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -217,6 +217,72 @@ var Test = {
|
|||
assert.equal(doc.screenToDocumentColumn(0, 9), 6);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 15), 12);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 19), 13);
|
||||
},
|
||||
|
||||
"test: insert text in multiple rows": function() {
|
||||
var doc = new Document(["12", "", "abcd"]);
|
||||
|
||||
var inserted = doc.multiRowInsert([0, 1, 2], 2, "juhu 1");
|
||||
assert.equal(inserted.rows, 0);
|
||||
assert.equal(inserted.columns, 6);
|
||||
|
||||
assert.equal(doc.toString(), ["12juhu 1", " juhu 1", "abjuhu 1cd"].join("\n"));
|
||||
},
|
||||
|
||||
"test: undo insert text in multiple rows": function() {
|
||||
var doc = new Document(["12", "", "abcd"]);
|
||||
|
||||
var undoManager = new UndoManager();
|
||||
doc.setUndoManager(undoManager);
|
||||
|
||||
doc.multiRowInsert([0, 1, 2], 2, "juhu 1");
|
||||
doc.$informUndoManager.call();
|
||||
assert.equal(doc.toString(), ["12juhu 1", " juhu 1", "abjuhu 1cd"].join("\n"));
|
||||
|
||||
undoManager.undo();
|
||||
assert.equal(doc.toString(), ["12", "", "abcd"].join("\n"));
|
||||
|
||||
undoManager.redo();
|
||||
assert.equal(doc.toString(), ["12juhu 1", " juhu 1", "abjuhu 1cd"].join("\n"));
|
||||
},
|
||||
|
||||
"test: insert new line in multiple rows": function() {
|
||||
var doc = new Document(["12", "", "abcd"]);
|
||||
|
||||
var inserted = doc.multiRowInsert([0, 1, 2], 2, "\n");
|
||||
assert.equal(inserted.rows, 1);
|
||||
assert.equal(doc.toString(), ["12\n", " \n", "ab\ncd"].join("\n"));
|
||||
},
|
||||
|
||||
"test: insert multi line text in multiple rows": function() {
|
||||
var doc = new Document(["12", "", "abcd"]);
|
||||
|
||||
var inserted = doc.multiRowInsert([0, 1, 2], 2, "juhu\n12");
|
||||
assert.equal(inserted.rows, 1);
|
||||
assert.equal(doc.toString(), ["12juhu\n12", " juhu\n12", "abjuhu\n12cd"].join("\n"));
|
||||
},
|
||||
|
||||
"test: remove right in multiple rows" : function() {
|
||||
var doc = new Document(["12", "", "abcd"]);
|
||||
|
||||
doc.multiRowRemove([0, 1, 2], new Range(0, 2, 0, 3));
|
||||
assert.equal(doc.toString(), ["12", "", "abd"].join("\n"));
|
||||
},
|
||||
|
||||
"test: undo remove right in multiple rows" : function() {
|
||||
var doc = new Document(["12", "", "abcd"]);
|
||||
var undoManager = new UndoManager();
|
||||
doc.setUndoManager(undoManager);
|
||||
|
||||
doc.multiRowRemove([0, 1, 2], new Range(0, 1, 0, 3));
|
||||
doc.$informUndoManager.call();
|
||||
assert.equal(doc.toString(), ["1", "", "ad"].join("\n"));
|
||||
|
||||
undoManager.undo();
|
||||
assert.equal(doc.toString(), ["12", "", "abcd"].join("\n"));
|
||||
|
||||
undoManager.redo();
|
||||
assert.equal(doc.toString(), ["1", "", "ad"].join("\n"));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ var Test = {
|
|||
});
|
||||
|
||||
emitter._dispatchEvent("juhu");
|
||||
assert.true(called);
|
||||
assert.ok(called);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -58,8 +58,8 @@ var Test = {
|
|||
editor.navigateFileEnd();
|
||||
var cursor = editor.getCursorPosition();
|
||||
|
||||
assert.true(editor.getFirstVisibleRow() <= cursor.row);
|
||||
assert.true(editor.getLastVisibleRow() >= cursor.row);
|
||||
assert.ok(editor.getFirstVisibleRow() <= cursor.row);
|
||||
assert.ok(editor.getLastVisibleRow() >= cursor.row);
|
||||
},
|
||||
|
||||
"test: navigate to start of file should scroll the first row into view" : function() {
|
||||
|
|
|
|||
|
|
@ -66,13 +66,13 @@ var Test = {
|
|||
var range = new Range(0, 20, 3, 10);
|
||||
var range = range.clipRows(10, 30);
|
||||
|
||||
assert.true(range.isEmpty());
|
||||
assert.ok(range.isEmpty());
|
||||
assert.range(range, 10, 0, 10, 0);
|
||||
},
|
||||
|
||||
"test: isEmpty": function() {
|
||||
var range = new Range(1, 2, 1, 2);
|
||||
assert.true(range.isEmpty());
|
||||
assert.ok(range.isEmpty());
|
||||
|
||||
var range = new Range(1, 2, 1, 6);
|
||||
assert.false(range.isEmpty());
|
||||
|
|
@ -83,7 +83,7 @@ var Test = {
|
|||
assert.false(range.isMultiLine());
|
||||
|
||||
var range = new Range(1, 2, 2, 6);
|
||||
assert.true(range.isMultiLine());
|
||||
assert.ok(range.isMultiLine());
|
||||
},
|
||||
|
||||
"test: clone": function() {
|
||||
|
|
@ -103,11 +103,11 @@ var Test = {
|
|||
"test: contains for multi line ranges": function() {
|
||||
var range = new Range(1, 10, 5, 20);
|
||||
|
||||
assert.true(range.contains(1, 10));
|
||||
assert.true(range.contains(2, 0));
|
||||
assert.true(range.contains(3, 100));
|
||||
assert.true(range.contains(5, 19));
|
||||
assert.true(range.contains(5, 20));
|
||||
assert.ok(range.contains(1, 10));
|
||||
assert.ok(range.contains(2, 0));
|
||||
assert.ok(range.contains(3, 100));
|
||||
assert.ok(range.contains(5, 19));
|
||||
assert.ok(range.contains(5, 20));
|
||||
|
||||
assert.false(range.contains(1, 9));
|
||||
assert.false(range.contains(0, 0));
|
||||
|
|
@ -117,9 +117,9 @@ var Test = {
|
|||
"test: contains for single line ranges": function() {
|
||||
var range = new Range(1, 10, 1, 20);
|
||||
|
||||
assert.true(range.contains(1, 10));
|
||||
assert.true(range.contains(1, 15));
|
||||
assert.true(range.contains(1, 20));
|
||||
assert.ok(range.contains(1, 10));
|
||||
assert.ok(range.contains(1, 15));
|
||||
assert.ok(range.contains(1, 20));
|
||||
|
||||
assert.false(range.contains(0, 9));
|
||||
assert.false(range.contains(2, 9));
|
||||
|
|
|
|||
|
|
@ -271,7 +271,7 @@ var Test = {
|
|||
});
|
||||
|
||||
selection.moveCursorTo(0, 6);
|
||||
assert.true(called);
|
||||
assert.ok(called);
|
||||
},
|
||||
|
||||
"test: calling setCursor with the same position should not fire an event": function() {
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 47df3c340244b15c272ed87b17cd87659f4bcd0c
|
||||
Subproject commit 6024eafb2559208e8f439d6f25a609d8c020d214
|
||||
Loading…
Add table
Add a link
Reference in a new issue