Fix merge conflict

This commit is contained in:
Julian Viereck 2011-01-07 11:53:40 +01:00
commit e144e70f10
12 changed files with 163 additions and 41 deletions

3
.gitignore vendored
View file

@ -1,3 +1,4 @@
.DS_Store
.settings.xml
.settings.xml.old
.settings.xml.old
.*.gz

2
.gitmodules vendored
View file

@ -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

View file

@ -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",

View file

@ -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;

View file

@ -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);
}

View file

@ -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);
}
};

View file

@ -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"));
}
};

View file

@ -56,7 +56,7 @@ var Test = {
});
emitter._dispatchEvent("juhu");
assert.true(called);
assert.ok(called);
}
};

View file

@ -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() {

View file

@ -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));

View file

@ -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