merge
This commit is contained in:
commit
8f0d0a555f
22 changed files with 570 additions and 497 deletions
9
.gitmodules
vendored
9
.gitmodules
vendored
|
|
@ -10,3 +10,12 @@
|
|||
[submodule "support/node-o3-xml"]
|
||||
path = support/node-o3-xml
|
||||
url = git://github.com/ajaxorg/node-o3-xml.git
|
||||
[submodule "support/async"]
|
||||
path = support/async
|
||||
url = git://github.com/fjakobs/async.js.git
|
||||
[submodule "support/jsdom"]
|
||||
path = support/jsdom
|
||||
url = git://github.com/tmpvar/jsdom.git
|
||||
[submodule "support/node-htmlparser"]
|
||||
path = support/node-htmlparser
|
||||
url = git://github.com/tautologistics/node-htmlparser.git
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
ACE (Ajax.org Code Ediror)
|
||||
ACE (Ajax.org Code Editor)
|
||||
==========================
|
||||
|
||||
ACE is a standalone code editor written in JavaScript. It can be easily embedded in any web page and JavaScript application. It is currently used as the editor component of the [Cloud9 IDE](http://cloud9ide.com).
|
||||
|
|
|
|||
|
|
@ -63,13 +63,13 @@ exports.bindings = {
|
|||
"godown": "Down",
|
||||
"selectwordleft": "Ctrl-Shift-Left",
|
||||
"gotowordleft": "Ctrl-Left",
|
||||
"selecttolinestart": "Ctrl-Shift-Left",
|
||||
"selecttolinestart": "Alt-Shift-Left",
|
||||
"gotolinestart": "Alt-Left|Home",
|
||||
"selectleft": "Shift-Left",
|
||||
"gotoleft": "Left",
|
||||
"selectwordright": "Ctrl-Shift-Right",
|
||||
"gotowordright": "Ctrl-Right",
|
||||
"selecttolineend": "Ctrl-Shift-Right",
|
||||
"selecttolineend": "Alt-Shift-Right",
|
||||
"gotolineend": "Alt-Right|End",
|
||||
"selectright": "Shift-Right",
|
||||
"gotoright": "Right",
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ var TextMode = require("ace/mode/text").Text;
|
|||
var Range = require("ace/range").Range;
|
||||
|
||||
var Document = function(text, mode) {
|
||||
|
||||
this.modified = true;
|
||||
this.lines = [];
|
||||
this.selection = new Selection(this);
|
||||
|
|
@ -569,9 +570,10 @@ var Document = function(text, mode) {
|
|||
var row = this.getLine(firstRow).substring(0, range.start.column)
|
||||
+ this.getLine(lastRow).substring(range.end.column);
|
||||
|
||||
this.lines.splice(firstRow, lastRow - firstRow + 1, row);
|
||||
|
||||
|
||||
if (row != "")
|
||||
this.lines.splice(firstRow, lastRow - firstRow + 1, row);
|
||||
else
|
||||
this.lines.splice(firstRow, lastRow - firstRow + 1, "");
|
||||
return range.start;
|
||||
};
|
||||
|
||||
|
|
@ -664,7 +666,7 @@ var Document = function(text, mode) {
|
|||
var removed = this.lines.slice(firstRow, lastRow + 1);
|
||||
this.$remove(new Range(firstRow, 0, lastRow + 1, 0));
|
||||
this.$insertLines(firstRow - 1, removed);
|
||||
|
||||
|
||||
this.fireChangeEvent(firstRow - 1, lastRow);
|
||||
return -1;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -427,7 +427,7 @@ var Editor =function(renderer, doc) {
|
|||
var shouldOutdent = _self.mode.checkOutdent(lineState, _self.doc.getLine(cursor.row), text);
|
||||
var line = _self.doc.getLine(cursor.row),
|
||||
lineIndent = _self.mode.getNextLineIndent(lineState, line, _self.doc.getTabString());
|
||||
var end = _self.doc.insert(cursor, text);
|
||||
var end = _self.doc.insert(cursor, text);
|
||||
|
||||
/* TODO: This shortcut is somehow broken
|
||||
if (!shouldOutdent && line != _self.doc.getLine(row) && text != "\n") {
|
||||
|
|
@ -457,6 +457,7 @@ var Editor =function(renderer, doc) {
|
|||
if (/[^\s]$/.test(line))
|
||||
minIndent = Math.min(indent, minIndent);
|
||||
}
|
||||
|
||||
for (var row = cursor.row + 1; row <= end.row; ++row) {
|
||||
var outdent = minIndent;
|
||||
|
||||
|
|
@ -602,19 +603,22 @@ var Editor =function(renderer, doc) {
|
|||
if (this.$readOnly)
|
||||
return;
|
||||
|
||||
var range = this.getSelectionRange();
|
||||
var doc = this.doc,
|
||||
range = this.getSelectionRange();
|
||||
|
||||
if (range.start.row < range.end.row ||
|
||||
range.start.column < range.end.column) {
|
||||
var count = this.doc.indentRows(this.getSelectionRange(), "\t");
|
||||
var count = doc.indentRows(this.getSelectionRange(), "\t");
|
||||
|
||||
this.selection.shiftSelection(count);
|
||||
} else {
|
||||
var indentString;
|
||||
|
||||
if (this.doc.getUseSoftTabs()) {
|
||||
var size = this.doc.getTabSize(),
|
||||
count = (size - this.getCursorPosition().column % size);
|
||||
var size = doc.getTabSize(),
|
||||
position = this.getCursorPosition(),
|
||||
column = doc.documentToScreenColumn(position.row, position.column),
|
||||
count = (size - column % size);
|
||||
|
||||
indentString = lang.stringRepeat(" ", count);
|
||||
} else
|
||||
|
|
@ -623,7 +627,7 @@ var Editor =function(renderer, doc) {
|
|||
}
|
||||
};
|
||||
|
||||
this.blockOutdent = function(indentString) {
|
||||
this.blockOutdent = function() {
|
||||
if (this.$readOnly)
|
||||
return;
|
||||
|
||||
|
|
@ -956,13 +960,14 @@ var Editor =function(renderer, doc) {
|
|||
if (options) {
|
||||
this.$search.set(options);
|
||||
}
|
||||
this.clearSelection();
|
||||
this.selection.moveCursorTo(0, 0);
|
||||
|
||||
var ranges = this.$search.findAll(this.doc);
|
||||
if (!ranges.length)
|
||||
return;
|
||||
|
||||
this.clearSelection();
|
||||
this.selection.moveCursorTo(0, 0);
|
||||
|
||||
for (var i = ranges.length - 1; i >= 0; --i)
|
||||
this.$tryReplace(ranges[i], replacement);
|
||||
if (ranges[0] !== null)
|
||||
|
|
|
|||
|
|
@ -145,6 +145,7 @@ var Text = function(parentEl) {
|
|||
|
||||
this.updateLines = function(layerConfig, firstRow, lastRow) {
|
||||
this.$computeTabString();
|
||||
this.config = layerConfig;
|
||||
|
||||
var first = Math.max(firstRow, layerConfig.firstRow);
|
||||
var last = Math.min(lastRow, layerConfig.lastRow);
|
||||
|
|
@ -234,6 +235,7 @@ var Text = function(parentEl) {
|
|||
|
||||
this.update = function(config) {
|
||||
this.$computeTabString();
|
||||
this.config = config;
|
||||
|
||||
var html = [];
|
||||
var _self = this;
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ oop.inherits(JavaScript, TextMode);
|
|||
if (tokens.length && tokens[tokens.length-1].type == "comment") {
|
||||
return indent;
|
||||
}
|
||||
|
||||
|
||||
if (state == "start") {
|
||||
var match = line.match(/^.*[\{\(\[]\s*$/);
|
||||
if (match) {
|
||||
|
|
@ -107,7 +107,12 @@ oop.inherits(JavaScript, TextMode);
|
|||
indent += " ";
|
||||
}
|
||||
indent += "* ";
|
||||
}
|
||||
}{
|
||||
if (match[1]) {
|
||||
indent += " ";
|
||||
}
|
||||
indent += "* ";
|
||||
}
|
||||
}
|
||||
|
||||
return indent;
|
||||
|
|
|
|||
|
|
@ -35,20 +35,32 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([], function() {
|
||||
define(function(require, exports, module) {
|
||||
|
||||
window.assertPosition = function(row, column, cursor) {
|
||||
assertEquals(row, cursor.row);
|
||||
assertEquals(column, cursor.column);
|
||||
var assert = require("assert");
|
||||
|
||||
assert.position = function(cursor, row, column) {
|
||||
assert.equal(cursor.row, row);
|
||||
assert.equal(cursor.column, column);
|
||||
};
|
||||
|
||||
window.assertRange = function(startRow, startColumn, endRow, endColumn, range) {
|
||||
assertPosition(startRow, startColumn, range.start);
|
||||
assertPosition(endRow, endColumn, range.end);
|
||||
assert.range = function(range, startRow, startColumn, endRow, endColumn) {
|
||||
assert.position(range.start, startRow, startColumn);
|
||||
assert.position(range.end, endRow, endColumn);
|
||||
};
|
||||
|
||||
window.assertJsonEquals = function(expectedJson, foundJson) {
|
||||
assertEquals(JSON.stringify(expectedJson), JSON.stringify(foundJson));
|
||||
assert.true = function(value) {
|
||||
assert.equal(value, true);
|
||||
}
|
||||
|
||||
assert.false = function(value) {
|
||||
assert.equal(value, false);
|
||||
}
|
||||
|
||||
exports.jsonEquals = function(foundJson, expectedJson) {
|
||||
assert.equal(JSON.stringify(foundJson), JSON.stringify(expectedJson));
|
||||
};
|
||||
|
||||
module.exports = assert;
|
||||
|
||||
});
|
||||
|
|
@ -35,35 +35,37 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([
|
||||
"ace/Document",
|
||||
"ace/Editor",
|
||||
"ace/mode/Text",
|
||||
"ace/mode/JavaScript",
|
||||
"ace/test/MockRenderer"
|
||||
], function(
|
||||
Document,
|
||||
Editor,
|
||||
textMod,
|
||||
jsMod,
|
||||
MockRenderer
|
||||
) {
|
||||
require("../../../support/paths");
|
||||
|
||||
var TextMode = textMod.Text;
|
||||
var JavaScriptMode = jsMod.JavaScript;
|
||||
var ChangeDocumentTest = new TestCase("ChangeDocumentTest", {
|
||||
var dom = require('jsdom/level2/html').dom.level2.html;
|
||||
var browser = require('jsdom/browser/index').windowAugmentation(dom);
|
||||
|
||||
global.document = browser.document;
|
||||
global.window = browser.window;
|
||||
global.self = browser.self;
|
||||
global.navigator = browser.navigator;
|
||||
global.location = browser.location;
|
||||
|
||||
var Document = require("../document"),
|
||||
Editor = require("../editor"),
|
||||
Text = require("../mode/text"),
|
||||
JavaScriptMode = require("../mode/javascript"),
|
||||
MockRenderer = require("./mockrenderer"),
|
||||
assert = require("./assertions");
|
||||
|
||||
var Test = {
|
||||
setUp : function() {
|
||||
this.doc1 = new Document(["abc", "def"].join("\n"));
|
||||
this.doc2 = new Document(["ghi", "jkl"].join("\n"));
|
||||
this.editor = new Editor(new MockRenderer());
|
||||
},
|
||||
|
||||
|
||||
"test: change document" : function() {
|
||||
this.editor.setDocument(this.doc1);
|
||||
assertEquals(this.doc1, this.editor.getDocument());
|
||||
|
||||
assert.equal(this.editor.getDocument(), this.doc1);
|
||||
|
||||
this.editor.setDocument(this.doc2);
|
||||
assertEquals(this.doc2, this.editor.getDocument());
|
||||
assert.equal(this.editor.getDocument(), this.doc2);
|
||||
},
|
||||
|
||||
"test: only changes to the new document should have effect" : function() {
|
||||
|
|
@ -76,10 +78,10 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", {
|
|||
this.editor.setDocument(this.doc2);
|
||||
|
||||
this.doc1.duplicateLines(0, 0);
|
||||
assertFalse(called);
|
||||
assert.false(called);
|
||||
|
||||
this.doc2.duplicateLines(0, 0);
|
||||
assertTrue(called);
|
||||
assert.true(called);
|
||||
},
|
||||
|
||||
"test: should use cursor of new document" : function() {
|
||||
|
|
@ -87,10 +89,10 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", {
|
|||
this.doc2.getSelection().moveCursorTo(1, 0);
|
||||
|
||||
this.editor.setDocument(this.doc1);
|
||||
assertPosition(0, 1, this.editor.getCursorPosition());
|
||||
assert.position(this.editor.getCursorPosition(), 0, 1);
|
||||
|
||||
this.editor.setDocument(this.doc2);
|
||||
assertPosition(1, 0, this.editor.getCursorPosition());
|
||||
assert.position(this.editor.getCursorPosition(), 1, 0);
|
||||
},
|
||||
|
||||
"test: only changing the cursor of the new doc should not have an effect" : function() {
|
||||
|
|
@ -100,16 +102,16 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", {
|
|||
|
||||
this.editor.setDocument(this.doc1);
|
||||
this.editor.setDocument(this.doc2);
|
||||
assertPosition(0, 0, this.editor.getCursorPosition());
|
||||
assert.position(this.editor.getCursorPosition(), 0, 0);
|
||||
|
||||
var called = false;
|
||||
this.doc1.getSelection().moveCursorTo(0, 1);
|
||||
assertPosition(0, 0, this.editor.getCursorPosition());
|
||||
assertFalse(called);
|
||||
assert.position(this.editor.getCursorPosition(), 0, 0);
|
||||
assert.false(called);
|
||||
|
||||
this.doc2.getSelection().moveCursorTo(1, 1);
|
||||
assertPosition(1, 1, this.editor.getCursorPosition());
|
||||
assertTrue(called);
|
||||
assert.position(this.editor.getCursorPosition(), 1, 1);
|
||||
assert.true(called);
|
||||
},
|
||||
|
||||
"test: should use selection of new document" : function() {
|
||||
|
|
@ -117,10 +119,10 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", {
|
|||
this.doc2.getSelection().selectTo(1, 0);
|
||||
|
||||
this.editor.setDocument(this.doc1);
|
||||
assertPosition(0, 1, this.editor.getSelection().getSelectionLead());
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 1);
|
||||
|
||||
this.editor.setDocument(this.doc2);
|
||||
assertPosition(1, 0, this.editor.getSelection().getSelectionLead());
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 1, 0);
|
||||
},
|
||||
|
||||
"test: only changing the selection of the new doc should not have an effect" : function() {
|
||||
|
|
@ -130,16 +132,16 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", {
|
|||
|
||||
this.editor.setDocument(this.doc1);
|
||||
this.editor.setDocument(this.doc2);
|
||||
assertPosition(0, 0, this.editor.getSelection().getSelectionLead());
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 0);
|
||||
|
||||
var called = false;
|
||||
this.doc1.getSelection().selectTo(0, 1);
|
||||
assertPosition(0, 0, this.editor.getSelection().getSelectionLead());
|
||||
assertFalse(called);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 0, 0);
|
||||
assert.false(called);
|
||||
|
||||
this.doc2.getSelection().selectTo(1, 1);
|
||||
assertPosition(1, 1, this.editor.getSelection().getSelectionLead());
|
||||
assertTrue(called);
|
||||
assert.position(this.editor.getSelection().getSelectionLead(), 1, 1);
|
||||
assert.true(called);
|
||||
},
|
||||
|
||||
"test: should use mode of new document" : function() {
|
||||
|
|
@ -151,11 +153,14 @@ var ChangeDocumentTest = new TestCase("ChangeDocumentTest", {
|
|||
|
||||
var called = false;
|
||||
this.doc1.setMode(new Text());
|
||||
assertFalse(called);
|
||||
assert.false(called);
|
||||
|
||||
this.doc2.setMode(new JavaScriptMode());
|
||||
assertTrue(called);
|
||||
assert.true(called);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test);
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -35,229 +35,240 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([
|
||||
"ace/Document",
|
||||
"ace/UndoManager",
|
||||
"ace/Editor",
|
||||
"ace/test/MockRenderer"
|
||||
], function(
|
||||
Document,
|
||||
UndoManager,
|
||||
Editor,
|
||||
MockRenderer
|
||||
) {
|
||||
require("../../../support/paths");
|
||||
|
||||
var TextDocumentTest = new TestCase("TextDocumentTest", {
|
||||
var Document = require("../document"),
|
||||
UndoManager = require("../undomanager"),
|
||||
//Editor = require("../editor"),
|
||||
MockRenderer = require("./mockrenderer"),
|
||||
Range = require("../range"),
|
||||
assert = require("./assertions"),
|
||||
async = require("async");
|
||||
|
||||
var Test = {
|
||||
|
||||
"test: find matching opening bracket" : function() {
|
||||
var doc = new Document(["(()(", "())))"]);
|
||||
|
||||
assertPosition(0, 1, doc.findMatchingBracket({row: 0, column: 3}));
|
||||
assertPosition(1, 0, doc.findMatchingBracket({row: 1, column: 2}));
|
||||
assertPosition(0, 3, doc.findMatchingBracket({row: 1, column: 3}));
|
||||
assertPosition(0, 0, doc.findMatchingBracket({row: 1, column: 4}));
|
||||
assertEquals(null, doc.findMatchingBracket({row: 1, column: 5}));
|
||||
assert.position(doc.findMatchingBracket({row: 0, column: 3}), 0, 1);
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 2}), 1, 0);
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 3}), 0, 3);
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 4}), 0, 0);
|
||||
assert.equal(doc.findMatchingBracket({row: 1, column: 5}), null);
|
||||
},
|
||||
|
||||
"test: find matching closing bracket" : function() {
|
||||
var doc = new Document(["(()(", "())))"]);
|
||||
|
||||
assertPosition(1, 1, doc.findMatchingBracket({row: 1, column: 1}));
|
||||
assertPosition(1, 1, doc.findMatchingBracket({row: 1, column: 1}));
|
||||
assertPosition(1, 2, doc.findMatchingBracket({row: 0, column: 4}));
|
||||
assertPosition(0, 2, doc.findMatchingBracket({row: 0, column: 2}));
|
||||
assertPosition(1, 3, doc.findMatchingBracket({row: 0, column: 1}));
|
||||
assertEquals(null, doc.findMatchingBracket({row: 0, column: 0}));
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 1}), 1, 1);
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 1}), 1, 1);
|
||||
assert.position(doc.findMatchingBracket({row: 0, column: 4}), 1, 2);
|
||||
assert.position(doc.findMatchingBracket({row: 0, column: 2}), 0, 2);
|
||||
assert.position(doc.findMatchingBracket({row: 0, column: 1}), 1, 3);
|
||||
assert.equal(doc.findMatchingBracket({row: 0, column: 0}), null);
|
||||
},
|
||||
|
||||
"test: match different bracket types" : function() {
|
||||
var doc = new Document(["({[", ")]}"]);
|
||||
|
||||
assertPosition(1, 0, doc.findMatchingBracket({row: 0, column: 1}));
|
||||
assertPosition(1, 2, doc.findMatchingBracket({row: 0, column: 2}));
|
||||
assertPosition(1, 1, doc.findMatchingBracket({row: 0, column: 3}));
|
||||
assert.position(doc.findMatchingBracket({row: 0, column: 1}), 1, 0);
|
||||
assert.position(doc.findMatchingBracket({row: 0, column: 2}), 1, 2);
|
||||
assert.position(doc.findMatchingBracket({row: 0, column: 3}), 1, 1);
|
||||
|
||||
assertPosition(0, 0, doc.findMatchingBracket({row: 1, column: 1}));
|
||||
assertPosition(0, 2, doc.findMatchingBracket({row: 1, column: 2}));
|
||||
assertPosition(0, 1, doc.findMatchingBracket({row: 1, column: 3}));
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 1}), 0, 0);
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 2}), 0, 2);
|
||||
assert.position(doc.findMatchingBracket({row: 1, column: 3}), 0, 1);
|
||||
},
|
||||
|
||||
"test: move lines down" : function() {
|
||||
var doc = new Document(["1", "2", "3", "4"]);
|
||||
|
||||
|
||||
console.log(doc.toString().replace(/\n/g, "\\n"));
|
||||
doc.moveLinesDown(0, 1);
|
||||
assertEquals(["3", "1", "2", "4"].join("\n"), doc.toString());
|
||||
|
||||
console.log(doc.toString().replace(/\n/g, "\\n"));
|
||||
assert.equal(doc.toString(), ["3", "1", "2", "4"].join("\n"));
|
||||
|
||||
doc.moveLinesDown(1, 2);
|
||||
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
||||
|
||||
assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n"));
|
||||
|
||||
doc.moveLinesDown(2, 3);
|
||||
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
||||
|
||||
assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n"));
|
||||
|
||||
doc.moveLinesDown(2, 2);
|
||||
assertEquals(["3", "4", "2", "1"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["3", "4", "2", "1"].join("\n"));
|
||||
},
|
||||
|
||||
"test: move lines up" : function() {
|
||||
"__test: move lines up" : function() {
|
||||
var doc = new Document(["1", "2", "3", "4"]);
|
||||
|
||||
console.log(doc.toString().replace(/\n/g, "\\n"));
|
||||
doc.moveLinesUp(2, 3);
|
||||
assertEquals(["1", "3", "4", "2"].join("\n"), doc.toString());
|
||||
|
||||
console.log(doc.toString().replace(/\n/g, "\\n"));
|
||||
assert.equal(doc.toString(), ["1", "3", "4", "2"].join("\n"));
|
||||
|
||||
doc.moveLinesUp(1, 2);
|
||||
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
||||
|
||||
assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n"));
|
||||
|
||||
doc.moveLinesUp(0, 1);
|
||||
assertEquals(["3", "4", "1", "2"].join("\n"), doc.toString());
|
||||
|
||||
assert.equal(doc.toString(), ["3", "4", "1", "2"].join("\n"));
|
||||
|
||||
doc.moveLinesUp(2, 2);
|
||||
assertEquals(["3", "1", "4", "2"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["3", "1", "4", "2"].join("\n"));
|
||||
},
|
||||
|
||||
"test: duplicate lines" : function() {
|
||||
var doc = new Document(["1", "2", "3", "4"]);
|
||||
|
||||
doc.duplicateLines(1, 2);
|
||||
assertEquals(["1", "2", "3", "2", "3", "4"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "2", "3", "2", "3", "4"].join("\n"));
|
||||
},
|
||||
|
||||
"test: duplicate last line" : function() {
|
||||
var doc = new Document(["1", "2", "3"]);
|
||||
|
||||
doc.duplicateLines(2, 2);
|
||||
assertEquals(["1", "2", "3", "3"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "2", "3", "3"].join("\n"));
|
||||
},
|
||||
|
||||
"test: duplicate first line" : function() {
|
||||
var doc = new Document(["1", "2", "3"]);
|
||||
|
||||
doc.duplicateLines(0, 0);
|
||||
assertEquals(["1", "1", "2", "3"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "1", "2", "3"].join("\n"));
|
||||
},
|
||||
|
||||
"test: should handle unix style new lines" : function() {
|
||||
var doc = new Document(["1", "2", "3"]);
|
||||
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
||||
|
||||
assert.equal(doc.toString(), ["1", "2", "3"].join("\n"));
|
||||
},
|
||||
|
||||
"test: should handle windows style new lines" : function() {
|
||||
var doc = new Document(["1", "2", "3"].join("\r\n"));
|
||||
|
||||
doc.setNewLineMode("unix");
|
||||
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "2", "3"].join("\n"));
|
||||
},
|
||||
|
||||
"test: set new line mode to 'windows' should use '\r\n' as new lines": function() {
|
||||
var doc = new Document(["1", "2", "3"].join("\n"));
|
||||
doc.setNewLineMode("windows");
|
||||
assertEquals(["1", "2", "3"].join("\r\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "2", "3"].join("\r\n"));
|
||||
},
|
||||
|
||||
"test: set new line mode to 'unix' should use '\n' as new lines": function() {
|
||||
var doc = new Document(["1", "2", "3"].join("\r\n"));
|
||||
|
||||
doc.setNewLineMode("unix");
|
||||
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "2", "3"].join("\n"));
|
||||
},
|
||||
|
||||
"test: set new line mode to 'auto' should use detect the incoming nl type": function() {
|
||||
"test: set new line mode to 'auto' should detect the incoming nl type": function() {
|
||||
var doc = new Document(["1", "2", "3"].join("\n"));
|
||||
|
||||
doc.setNewLineMode("auto");
|
||||
assertEquals(["1", "2", "3"].join("\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "2", "3"].join("\n"));
|
||||
|
||||
var doc = new Document(["1", "2", "3"].join("\r\n"));
|
||||
|
||||
doc.setNewLineMode("auto");
|
||||
assertEquals(["1", "2", "3"].join("\r\n"), doc.toString());
|
||||
assert.equal(doc.toString(), ["1", "2", "3"].join("\r\n"));
|
||||
|
||||
doc.replace(new Range(0, 0, 2, 1), ["4", "5", "6"].join("\n"));
|
||||
assertEquals(["4", "5", "6"].join("\n"), doc.toString());
|
||||
assert.equal(["4", "5", "6"].join("\n"), doc.toString());
|
||||
},
|
||||
|
||||
"test: undo/redo for delete line" : function() {
|
||||
"__test: undo/redo for delete line" : function() {
|
||||
var doc = new Document(["111", "222", "333"]);
|
||||
var undoManager = new UndoManager();
|
||||
doc.setUndoManager(undoManager);
|
||||
|
||||
var initialText = doc.toString();
|
||||
|
||||
|
||||
var editor = new Editor(new MockRenderer(), doc);
|
||||
|
||||
editor.removeLines();
|
||||
var step1 = doc.toString();
|
||||
assertEquals("222\n333", step1);
|
||||
assert.equal(step1, "222\n333");
|
||||
doc.$informUndoManager.call();
|
||||
|
||||
editor.removeLines();
|
||||
var step2 = doc.toString();
|
||||
assertEquals("333", step2);
|
||||
assert.equal(step2, "333");
|
||||
doc.$informUndoManager.call();
|
||||
|
||||
editor.removeLines();
|
||||
var step3 = doc.toString();
|
||||
assertEquals("", step3);
|
||||
assert.equal(step3, "");
|
||||
doc.$informUndoManager.call();
|
||||
|
||||
|
||||
undoManager.undo();
|
||||
doc.$informUndoManager.call();
|
||||
assertEquals(step2, doc.toString());
|
||||
assert.equal(doc.toString(), step2);
|
||||
|
||||
undoManager.undo();
|
||||
doc.$informUndoManager.call();
|
||||
assertEquals(step1, doc.toString());
|
||||
assert.equal(doc.toString(), step1);
|
||||
|
||||
undoManager.undo();
|
||||
doc.$informUndoManager.call();
|
||||
assertEquals(initialText, doc.toString());
|
||||
assert.equal(doc.toString(), initialText);
|
||||
|
||||
undoManager.undo();
|
||||
doc.$informUndoManager.call();
|
||||
assertEquals(initialText, doc.toString());
|
||||
assert.equal(doc.toString(), initialText);
|
||||
},
|
||||
|
||||
"test: convert document to screen coordinates" : function() {
|
||||
var doc = new Document("01234\t567890\t1234");
|
||||
doc.setTabSize(4);
|
||||
|
||||
assertEquals(0, doc.documentToScreenColumn(0, 0));
|
||||
assertEquals(4, doc.documentToScreenColumn(0, 4));
|
||||
assertEquals(5, doc.documentToScreenColumn(0, 5));
|
||||
assertEquals(9, doc.documentToScreenColumn(0, 6));
|
||||
assertEquals(15, doc.documentToScreenColumn(0, 12));
|
||||
assertEquals(19, doc.documentToScreenColumn(0, 13));
|
||||
assert.equal(doc.documentToScreenColumn(0, 0), 0);
|
||||
assert.equal(doc.documentToScreenColumn(0, 4), 4);
|
||||
assert.equal(doc.documentToScreenColumn(0, 5), 5);
|
||||
assert.equal(doc.documentToScreenColumn(0, 6), 9);
|
||||
assert.equal(doc.documentToScreenColumn(0, 12), 15);
|
||||
assert.equal(doc.documentToScreenColumn(0, 13), 19);
|
||||
|
||||
doc.setTabSize(2);
|
||||
|
||||
assertEquals(0, doc.documentToScreenColumn(0, 0));
|
||||
assertEquals(4, doc.documentToScreenColumn(0, 4));
|
||||
assertEquals(5, doc.documentToScreenColumn(0, 5));
|
||||
assertEquals(7, doc.documentToScreenColumn(0, 6));
|
||||
assertEquals(13, doc.documentToScreenColumn(0, 12));
|
||||
assertEquals(15, doc.documentToScreenColumn(0, 13));
|
||||
assert.equal(doc.documentToScreenColumn(0, 0), 0);
|
||||
assert.equal(doc.documentToScreenColumn(0, 4), 4);
|
||||
assert.equal(doc.documentToScreenColumn(0, 5), 5);
|
||||
assert.equal(doc.documentToScreenColumn(0, 6), 7);
|
||||
assert.equal(doc.documentToScreenColumn(0, 12), 13);
|
||||
assert.equal(doc.documentToScreenColumn(0, 13), 15);
|
||||
},
|
||||
|
||||
"test: convert document to scrren coordinates with leading tabs": function() {
|
||||
var doc = new Document("\t\t123");
|
||||
doc.setTabSize(4);
|
||||
|
||||
assertEquals(0, doc.documentToScreenColumn(0, 0));
|
||||
assertEquals(4, doc.documentToScreenColumn(0, 1));
|
||||
assertEquals(8, doc.documentToScreenColumn(0, 2));
|
||||
assertEquals(9, doc.documentToScreenColumn(0, 3));
|
||||
assert.equal(doc.documentToScreenColumn(0, 0), 0);
|
||||
assert.equal(doc.documentToScreenColumn(0, 1), 4);
|
||||
assert.equal(doc.documentToScreenColumn(0, 2), 8);
|
||||
assert.equal(doc.documentToScreenColumn(0, 3), 9);
|
||||
},
|
||||
|
||||
"test: convert screen to document coordinates" : function() {
|
||||
var doc = new Document("01234\t567890\t1234");
|
||||
doc.setTabSize(4);
|
||||
|
||||
assertEquals(0, doc.screenToDocumentColumn(0, 0));
|
||||
assertEquals(4, doc.screenToDocumentColumn(0, 4));
|
||||
assertEquals(5, doc.screenToDocumentColumn(0, 5));
|
||||
assertEquals(5, doc.screenToDocumentColumn(0, 6));
|
||||
assertEquals(5, doc.screenToDocumentColumn(0, 7));
|
||||
assertEquals(5, doc.screenToDocumentColumn(0, 8));
|
||||
assertEquals(6, doc.screenToDocumentColumn(0, 9));
|
||||
assertEquals(12, doc.screenToDocumentColumn(0, 15));
|
||||
assertEquals(13, doc.screenToDocumentColumn(0, 19));
|
||||
assert.equal(doc.screenToDocumentColumn(0, 0), 0);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 4), 4);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 5), 5);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 6), 5);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 7), 5);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 8), 5);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 9), 6);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 15), 12);
|
||||
assert.equal(doc.screenToDocumentColumn(0, 19), 13);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test)
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -37,26 +37,31 @@
|
|||
|
||||
define(function(require, exports, module) {
|
||||
|
||||
|
||||
var EventEmitter = require("pilot/event_emitter").EventEmitter;
|
||||
var oop = require("pilot/oop").oop;
|
||||
var assert = require("./assertions");
|
||||
|
||||
var EventEmitter = function() {};
|
||||
|
||||
oop.implement(EventEmitter.prototype, EventEmitter);
|
||||
|
||||
var EventEmitterTest = new TestCase("EventEmitterTest", {
|
||||
var Test = {
|
||||
"test: dispatch event with no data" : function() {
|
||||
var emitter = new EventEmitter();
|
||||
|
||||
var called = false;
|
||||
emitter.addEventListener("juhu", function(e) {
|
||||
called = true;
|
||||
assertEquals("juhu", e.type);
|
||||
assert.equal(e.type, "juhu");
|
||||
});
|
||||
|
||||
emitter._dispatchEvent("juhu");
|
||||
assertTrue(called);
|
||||
assert.true(called);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test)
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([], function() {
|
||||
define(function(require, exports, module) {
|
||||
|
||||
MockRenderer = function(visibleRowCount) {
|
||||
this.container = document.createElement("div");
|
||||
|
|
@ -113,5 +113,14 @@ MockRenderer.prototype.addMarker = function() {
|
|||
MockRenderer.prototype.setBreakpoints = function() {
|
||||
};
|
||||
|
||||
MockRenderer.prototype.updateFull = function() {
|
||||
};
|
||||
|
||||
MockRenderer.prototype.showCursor = function() {
|
||||
};
|
||||
|
||||
MockRenderer.prototype.visualizeFocus = function() {
|
||||
};
|
||||
|
||||
return MockRenderer;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -35,18 +35,24 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([
|
||||
"ace/Document",
|
||||
"ace/Editor",
|
||||
"ace/test/MockRenderer"
|
||||
], function(
|
||||
Document,
|
||||
Editor,
|
||||
MockRenderer
|
||||
) {
|
||||
require("../../../support/paths");
|
||||
|
||||
var NavigationTest = TestCase("NavigationTest",
|
||||
{
|
||||
var dom = require('jsdom/level2/html').dom.level2.html;
|
||||
var browser = require('jsdom/browser/index').windowAugmentation(dom);
|
||||
|
||||
global.document = browser.document;
|
||||
global.window = browser.window;
|
||||
global.self = browser.self;
|
||||
global.navigator = browser.navigator;
|
||||
global.location = browser.location;
|
||||
|
||||
var Document = require("../Document"),
|
||||
Editor = require("../Editor"),
|
||||
MockRenderer = require("./mockrenderer"),
|
||||
assert = require("./assertions");
|
||||
|
||||
|
||||
var Test = {
|
||||
createTextDocument : function(rows, cols) {
|
||||
var line = new Array(cols + 1).join("a");
|
||||
var text = new Array(rows).join(line + "\n") + line;
|
||||
|
|
@ -60,8 +66,8 @@ var NavigationTest = TestCase("NavigationTest",
|
|||
editor.navigateFileEnd();
|
||||
var cursor = editor.getCursorPosition();
|
||||
|
||||
assertTrue(editor.getFirstVisibleRow() <= cursor.row);
|
||||
assertTrue(editor.getLastVisibleRow() >= cursor.row);
|
||||
assert.true(editor.getFirstVisibleRow() <= cursor.row);
|
||||
assert.true(editor.getLastVisibleRow() >= cursor.row);
|
||||
},
|
||||
|
||||
"test: navigate to start of file should scroll the first row into view" : function() {
|
||||
|
|
@ -71,7 +77,7 @@ var NavigationTest = TestCase("NavigationTest",
|
|||
editor.moveCursorTo(editor.getLastVisibleRow() + 20);
|
||||
editor.navigateFileStart();
|
||||
|
||||
assertEquals(0, editor.getFirstVisibleRow());
|
||||
assert.equal(editor.getFirstVisibleRow(), 0);
|
||||
},
|
||||
|
||||
"test: goto hidden line should scroll the line into the middle of the viewport" : function() {
|
||||
|
|
@ -79,33 +85,33 @@ var NavigationTest = TestCase("NavigationTest",
|
|||
|
||||
editor.navigateTo(0, 0);
|
||||
editor.gotoLine(101);
|
||||
assertPosition(100, 0, editor.getCursorPosition());
|
||||
assertEquals(90, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 100, 0);
|
||||
assert.equal(editor.getFirstVisibleRow(), 90);
|
||||
|
||||
editor.navigateTo(100, 0);
|
||||
editor.gotoLine(11);
|
||||
assertPosition(10, 0, editor.getCursorPosition());
|
||||
assertEquals(0, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 10, 0);
|
||||
assert.equal(editor.getFirstVisibleRow(), 0);
|
||||
|
||||
editor.navigateTo(100, 0);
|
||||
editor.gotoLine(6);
|
||||
assertPosition(5, 0, editor.getCursorPosition());
|
||||
assertEquals(0, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 5, 0);
|
||||
assert.equal(0, editor.getFirstVisibleRow(), 0);
|
||||
|
||||
editor.navigateTo(100, 0);
|
||||
editor.gotoLine(1);
|
||||
assertPosition(0, 0, editor.getCursorPosition());
|
||||
assertEquals(0, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 0, 0);
|
||||
assert.equal(editor.getFirstVisibleRow(), 0);
|
||||
|
||||
editor.navigateTo(0, 0);
|
||||
editor.gotoLine(191);
|
||||
assertPosition(190, 0, editor.getCursorPosition());
|
||||
assertEquals(180, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 190, 0);
|
||||
assert.equal(editor.getFirstVisibleRow(), 180);
|
||||
|
||||
editor.navigateTo(0, 0);
|
||||
editor.gotoLine(196);
|
||||
assertPosition(195, 0, editor.getCursorPosition());
|
||||
assertEquals(180, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 195, 0);
|
||||
assert.equal(editor.getFirstVisibleRow(), 180);
|
||||
},
|
||||
|
||||
"test: goto visible line should only move the cursor and not scroll": function() {
|
||||
|
|
@ -113,43 +119,46 @@ var NavigationTest = TestCase("NavigationTest",
|
|||
|
||||
editor.navigateTo(0, 0);
|
||||
editor.gotoLine(12);
|
||||
assertPosition(11, 0, editor.getCursorPosition());
|
||||
assertEquals(0, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 11, 0);
|
||||
assert.equal(editor.getFirstVisibleRow(), 0);
|
||||
|
||||
editor.navigateTo(30, 0);
|
||||
editor.gotoLine(33);
|
||||
assertPosition(32, 0, editor.getCursorPosition());
|
||||
assertEquals(30, editor.getFirstVisibleRow());
|
||||
assert.position(editor.getCursorPosition(), 32, 0);
|
||||
assert.equal(editor.getFirstVisibleRow(), 30);
|
||||
},
|
||||
|
||||
"test: navigate from the end of a long line down to a short line and back should maintain the curser column": function() {
|
||||
var editor = new Editor(new MockRenderer(), new Document(["123456", "1"]));
|
||||
|
||||
editor.navigateTo(0, 6);
|
||||
assertPosition(0, 6, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 0, 6);
|
||||
|
||||
editor.navigateDown();
|
||||
assertPosition(1, 1, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 1, 1);
|
||||
|
||||
editor.navigateUp();
|
||||
assertPosition(0, 6, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 0, 6);
|
||||
},
|
||||
|
||||
"test: reset desired column on navigate left or right": function() {
|
||||
var editor = new Editor(new MockRenderer(), new Document(["123456", "12"]));
|
||||
|
||||
editor.navigateTo(0, 6);
|
||||
assertPosition(0, 6, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 0, 6);
|
||||
|
||||
editor.navigateDown();
|
||||
assertPosition(1, 2, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 1, 2);
|
||||
|
||||
editor.navigateLeft();
|
||||
assertPosition(1, 1, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 1, 1);
|
||||
|
||||
editor.navigateUp();
|
||||
assertPosition(0, 1, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 0, 1);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test)
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -35,118 +35,119 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([
|
||||
"ace/Range"
|
||||
], function(
|
||||
Range
|
||||
) {
|
||||
require("../../../support/paths");
|
||||
|
||||
RangeTest = new TestCase("RangeTest", {
|
||||
var Range = require("../range"),
|
||||
assert = require("./assertions");
|
||||
|
||||
var Test = {
|
||||
"test: create range": function() {
|
||||
var range = new Range(1,2,3,4);
|
||||
|
||||
assertEquals(1, range.start.row);
|
||||
assertEquals(2, range.start.column);
|
||||
assertEquals(3, range.end.row);
|
||||
assertEquals(4, range.end.column);
|
||||
assert.equal(range.start.row, 1);
|
||||
assert.equal(range.start.column, 2);
|
||||
assert.equal(range.end.row, 3);
|
||||
assert.equal(range.end.column, 4);
|
||||
},
|
||||
|
||||
"test: create from points": function() {
|
||||
var range = Range.fromPoints({row: 1, column: 2}, {row:3, column:4});
|
||||
|
||||
assertEquals(1, range.start.row);
|
||||
assertEquals(2, range.start.column);
|
||||
assertEquals(3, range.end.row);
|
||||
assertEquals(4, range.end.column);
|
||||
assert.equal(range.start.row, 1);
|
||||
assert.equal(range.start.column, 2);
|
||||
assert.equal(range.end.row, 3);
|
||||
assert.equal(range.end.column, 4);
|
||||
},
|
||||
|
||||
"test: clip to rows": function() {
|
||||
assertRange(10, 0, 31, 0, new Range(0, 20, 100, 30).clipRows(10, 30));
|
||||
assertRange(10, 0, 30, 10, new Range(0, 20, 30, 10).clipRows(10, 30));
|
||||
assert.range(new Range(0, 20, 100, 30).clipRows(10, 30), 10, 0, 31, 0);
|
||||
assert.range(new Range(0, 20, 30, 10).clipRows(10, 30), 10, 0, 30, 10);
|
||||
|
||||
var range = new Range(0, 20, 3, 10);
|
||||
var range = range.clipRows(10, 30);
|
||||
|
||||
assertTrue(range.isEmpty());
|
||||
assertRange(10, 0, 10, 0, range);
|
||||
assert.true(range.isEmpty());
|
||||
assert.range(range, 10, 0, 10, 0);
|
||||
},
|
||||
|
||||
"test: isEmpty": function() {
|
||||
var range = new Range(1, 2, 1, 2);
|
||||
assertTrue(range.isEmpty());
|
||||
assert.true(range.isEmpty());
|
||||
|
||||
var range = new Range(1, 2, 1, 6);
|
||||
assertFalse(range.isEmpty());
|
||||
assert.false(range.isEmpty());
|
||||
},
|
||||
|
||||
"test: is multi line": function() {
|
||||
var range = new Range(1, 2, 1, 6);
|
||||
assertFalse(range.isMultiLine());
|
||||
assert.false(range.isMultiLine());
|
||||
|
||||
var range = new Range(1, 2, 2, 6);
|
||||
assertTrue(range.isMultiLine());
|
||||
assert.true(range.isMultiLine());
|
||||
},
|
||||
|
||||
"test: clone": function() {
|
||||
var range = new Range(1, 2, 3, 4);
|
||||
var clone = range.clone();
|
||||
|
||||
assertPosition(1, 2, clone.start);
|
||||
assertPosition(3, 4, clone.end);
|
||||
assert.position(clone.start, 1, 2);
|
||||
assert.position(clone.end, 3, 4);
|
||||
|
||||
clone.start.column = 20;
|
||||
assertPosition(1, 2, range.start);
|
||||
assert.position(range.start, 1, 2);
|
||||
|
||||
clone.end.column = 20;
|
||||
assertPosition(3, 4, range.end);
|
||||
assert.position(range.end, 3, 4);
|
||||
},
|
||||
|
||||
"test: contains for multi line ranges": function() {
|
||||
var range = new Range(1, 10, 5, 20);
|
||||
|
||||
assertTrue(range.contains(1, 10));
|
||||
assertTrue(range.contains(2, 0));
|
||||
assertTrue(range.contains(3, 100));
|
||||
assertTrue(range.contains(5, 19));
|
||||
assertTrue(range.contains(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));
|
||||
|
||||
assertFalse(range.contains(1, 9));
|
||||
assertFalse(range.contains(0, 0));
|
||||
assertFalse(range.contains(5, 21));
|
||||
assert.false(range.contains(1, 9));
|
||||
assert.false(range.contains(0, 0));
|
||||
assert.false(range.contains(5, 21));
|
||||
},
|
||||
|
||||
"test: contains for single line ranges": function() {
|
||||
var range = new Range(1, 10, 1, 20);
|
||||
|
||||
assertTrue(range.contains(1, 10));
|
||||
assertTrue(range.contains(1, 15));
|
||||
assertTrue(range.contains(1, 20));
|
||||
assert.true(range.contains(1, 10));
|
||||
assert.true(range.contains(1, 15));
|
||||
assert.true(range.contains(1, 20));
|
||||
|
||||
assertFalse(range.contains(0, 9));
|
||||
assertFalse(range.contains(2, 9));
|
||||
assertFalse(range.contains(1, 9));
|
||||
assertFalse(range.contains(1, 21));
|
||||
assert.false(range.contains(0, 9));
|
||||
assert.false(range.contains(2, 9));
|
||||
assert.false(range.contains(1, 9));
|
||||
assert.false(range.contains(1, 21));
|
||||
},
|
||||
|
||||
"test: extend range": function() {
|
||||
var range = new Range(2, 10, 2, 30);
|
||||
|
||||
var range = range.extend(2, 5);
|
||||
assertRange(2, 5, 2, 30, range);
|
||||
|
||||
assert.range(range, 2, 5, 2, 30);
|
||||
|
||||
var range = range.extend(2, 35);
|
||||
assertRange(2, 5, 2, 35, range);
|
||||
|
||||
assert.range(range, 2, 5, 2, 35);
|
||||
|
||||
var range = range.extend(2, 15);
|
||||
assertRange(2, 5, 2, 35, range);
|
||||
|
||||
assert.range(range, 2, 5, 2, 35);
|
||||
|
||||
var range = range.extend(1, 4);
|
||||
assertRange(1, 4, 2, 35, range);
|
||||
|
||||
assert.range(range, 1, 4, 2, 35);
|
||||
|
||||
var range = range.extend(6, 10);
|
||||
assertRange(1, 4, 6, 10, range);
|
||||
assert.range(range, 1, 4, 6, 10);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test);
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -35,16 +35,13 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([
|
||||
"ace/Document",
|
||||
"ace/Search"
|
||||
], function(
|
||||
Document,
|
||||
Search
|
||||
) {
|
||||
require("../../../support/paths");
|
||||
|
||||
var SearchTest = new TestCase("SearchTest", {
|
||||
var Document = require("../document"),
|
||||
Search = require("../search"),
|
||||
assert = require("./assertions");
|
||||
|
||||
var Test = {
|
||||
"test: configure the search object" : function() {
|
||||
var search = new Search();
|
||||
search.set({
|
||||
|
|
@ -60,8 +57,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(0, 5, range.start);
|
||||
assertPosition(0, 12, range.end);
|
||||
assert.position(range.start, 0, 5);
|
||||
assert.position(range.end, 0, 12);
|
||||
},
|
||||
|
||||
"test: find simple text in next line" : function() {
|
||||
|
|
@ -71,8 +68,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(1, 5, range.start);
|
||||
assertPosition(1, 12, range.end);
|
||||
assert.position(range.start, 1, 5);
|
||||
assert.position(range.end, 1, 12);
|
||||
},
|
||||
|
||||
"test: find text starting at cursor position" : function() {
|
||||
|
|
@ -83,8 +80,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(1, 5, range.start);
|
||||
assertPosition(1, 12, range.end);
|
||||
assert.position(range.start, 1, 5);
|
||||
assert.position(range.end, 1, 12);
|
||||
},
|
||||
|
||||
"test: wrap search is off by default" : function() {
|
||||
|
|
@ -95,7 +92,7 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
needle: "kinners"
|
||||
});
|
||||
|
||||
assertEquals(null, search.find(doc));
|
||||
assert.equal(search.find(doc), null);
|
||||
},
|
||||
|
||||
"test: wrap search should wrap at file end" : function() {
|
||||
|
|
@ -108,8 +105,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(1, 5, range.start);
|
||||
assertPosition(1, 12, range.end);
|
||||
assert.position(range.start, 1, 5);
|
||||
assert.position(range.end, 1, 12);
|
||||
},
|
||||
|
||||
"test: wrap search with no match should return 'null'": function() {
|
||||
|
|
@ -121,7 +118,7 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
wrap: true
|
||||
});
|
||||
|
||||
assertEquals(null, search.find(doc));
|
||||
assert.equal(search.find(doc), null);
|
||||
},
|
||||
|
||||
"test: case sensitive is by default off": function() {
|
||||
|
|
@ -131,7 +128,7 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
needle: "JUHU"
|
||||
});
|
||||
|
||||
assertEquals(null, search.find(doc));
|
||||
assert.range(search.find(doc), 1, 0, 1, 4);
|
||||
},
|
||||
|
||||
"test: case sensitive search": function() {
|
||||
|
|
@ -143,8 +140,7 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(1, 5, range.start);
|
||||
assertPosition(1, 12, range.end);
|
||||
assert.equal(range, null);
|
||||
},
|
||||
|
||||
"test: whole word search should not match inside of words": function() {
|
||||
|
|
@ -156,8 +152,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(1, 5, range.start);
|
||||
assertPosition(1, 12, range.end);
|
||||
assert.position(range.start, 1, 5);
|
||||
assert.position(range.end, 1, 12);
|
||||
},
|
||||
|
||||
"test: find backwards": function() {
|
||||
|
|
@ -169,8 +165,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(0, 5, range.start);
|
||||
assertPosition(0, 9, range.end);
|
||||
assert.position(range.start, 0, 5);
|
||||
assert.position(range.end, 0, 9);
|
||||
},
|
||||
|
||||
"test: find in selection": function() {
|
||||
|
|
@ -185,15 +181,15 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(1, 0, range.start);
|
||||
assertPosition(1, 4, range.end);
|
||||
assert.position(range.start, 1, 0);
|
||||
assert.position(range.end, 1, 4);
|
||||
|
||||
doc.getSelection().setSelectionAnchor(0, 2);
|
||||
doc.getSelection().selectTo(3, 2);
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(1, 0, range.start);
|
||||
assertPosition(1, 4, range.end);
|
||||
assert.position(range.start, 1, 0);
|
||||
assert.position(range.end, 1, 4);
|
||||
},
|
||||
|
||||
"test: find backwards in selection": function() {
|
||||
|
|
@ -210,13 +206,13 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
doc.getSelection().selectTo(3, 2);
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(2, 0, range.start);
|
||||
assertPosition(2, 4, range.end);
|
||||
assert.position(range.start, 2, 0);
|
||||
assert.position(range.end, 2, 4);
|
||||
|
||||
doc.getSelection().setSelectionAnchor(0, 2);
|
||||
doc.getSelection().selectTo(1, 2);
|
||||
|
||||
assertEquals(null, search.find(doc));
|
||||
assert.equal(search.find(doc), null);
|
||||
},
|
||||
|
||||
"test: edge case - match directly before the cursor" : function() {
|
||||
|
|
@ -230,8 +226,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
doc.getSelection().moveCursorTo(2, 5);
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(2, 0, range.start);
|
||||
assertPosition(2, 4, range.end);
|
||||
assert.position(range.start, 2, 0);
|
||||
assert.position(range.end, 2, 4);
|
||||
},
|
||||
|
||||
"test: edge case - match backwards directly after the cursor" : function() {
|
||||
|
|
@ -246,8 +242,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
doc.getSelection().moveCursorTo(2, 0);
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(2, 0, range.start);
|
||||
assertPosition(2, 4, range.end);
|
||||
assert.position(range.start, 2, 0);
|
||||
assert.position(range.end, 2, 4);
|
||||
},
|
||||
|
||||
"test: find using a regular expression" : function() {
|
||||
|
|
@ -259,8 +255,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(0, 3, range.start);
|
||||
assertPosition(0, 6, range.end);
|
||||
assert.position(range.start, 0, 3);
|
||||
assert.position(range.end, 0, 6);
|
||||
},
|
||||
|
||||
"test: find using a regular expression and whole word" : function() {
|
||||
|
|
@ -273,8 +269,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(0, 7, range.start);
|
||||
assertPosition(0, 10, range.end);
|
||||
assert.position(range.start, 0, 7);
|
||||
assert.position(range.end, 0, 10);
|
||||
},
|
||||
|
||||
"test: use regular expressions with capture groups": function() {
|
||||
|
|
@ -286,8 +282,8 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
});
|
||||
|
||||
var range = search.find(doc);
|
||||
assertPosition(0, 6, range.start);
|
||||
assertPosition(0, 8, range.end);
|
||||
assert.position(range.start, 0, 6);
|
||||
assert.position(range.end, 0, 8);
|
||||
},
|
||||
|
||||
"test: find all matches in selection" : function() {
|
||||
|
|
@ -304,11 +300,11 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
|
||||
var ranges = search.findAll(doc);
|
||||
|
||||
assertEquals(2, ranges.length);
|
||||
assertPosition(1, 1, ranges[0].start);
|
||||
assertPosition(1, 3, ranges[0].end);
|
||||
assertPosition(2, 1, ranges[1].start);
|
||||
assertPosition(2, 3, ranges[1].end);
|
||||
assert.equal(ranges.length, 2);
|
||||
assert.position(ranges[0].start, 1, 1);
|
||||
assert.position(ranges[0].end, 1, 3);
|
||||
assert.position(ranges[1].start, 2, 1);
|
||||
assert.position(ranges[1].end, 2, 3);
|
||||
},
|
||||
|
||||
"test: replace() should return the replacement if the input matches the needle" : function() {
|
||||
|
|
@ -316,9 +312,9 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
needle: "juhu"
|
||||
});
|
||||
|
||||
assertEquals("kinners", search.replace("juhu", "kinners"));
|
||||
assertEquals(null, search.replace("", "kinners"));
|
||||
assertEquals(null, search.replace(" juhu", "kinners"));
|
||||
assert.equal(search.replace("juhu", "kinners"), "kinners");
|
||||
assert.equal(search.replace("", "kinners"), null);
|
||||
assert.equal(search.replace(" juhu", "kinners"), null);
|
||||
|
||||
// regexp replacement
|
||||
},
|
||||
|
|
@ -329,11 +325,11 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
regExp: true
|
||||
});
|
||||
|
||||
assertEquals("kinners", search.replace("123", "kinners"));
|
||||
assertEquals("kinners", search.replace("01234", "kinners"));
|
||||
assertEquals(null, search.replace("", "kinners"));
|
||||
assertEquals(null, search.replace("a12", "kinners"));
|
||||
assertEquals(null, search.replace("12a", "kinners"));
|
||||
assert.equal(search.replace("123", "kinners"), "kinners");
|
||||
assert.equal(search.replace("01234", "kinners"), "kinners");
|
||||
assert.equal(search.replace("", "kinners"), null);
|
||||
assert.equal(search.replace("a12", "kinners"), null);
|
||||
assert.equal(search.replace("12a", "kinners"), null);
|
||||
},
|
||||
|
||||
"test: replace with RegExp match and capture groups" : function() {
|
||||
|
|
@ -342,10 +338,13 @@ var SearchTest = new TestCase("SearchTest", {
|
|||
regExp: true
|
||||
});
|
||||
|
||||
assertEquals("cd12", search.replace("ab12", "cd$1"));
|
||||
assertEquals("-ab12-", search.replace("ab12", "-$&-"));
|
||||
assertEquals("$", search.replace("ab12", "$$"));
|
||||
assert.equal(search.replace("ab12", "cd$1"), "cd12");
|
||||
assert.equal(search.replace("ab12", "-$&-"), "-ab12-");
|
||||
assert.equal(search.replace("ab12", "$$"), "$");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test)
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec();
|
||||
|
|
|
|||
|
|
@ -35,14 +35,12 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([
|
||||
"ace/Document"
|
||||
], function(
|
||||
Document
|
||||
) {
|
||||
require("../../../support/paths");
|
||||
|
||||
var SelectionTest = TestCase("SelectionTest",
|
||||
{
|
||||
var Document = require("../document"),
|
||||
assert = require("./assertions");
|
||||
|
||||
var Test = {
|
||||
createTextDocument : function(rows, cols) {
|
||||
var line = new Array(cols + 1).join("a");
|
||||
var text = new Array(rows).join(line + "\n") + line;
|
||||
|
|
@ -54,7 +52,7 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
var selection = doc.getSelection();
|
||||
|
||||
selection.moveCursorFileEnd();
|
||||
assertPosition(199, 10, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 199, 10);
|
||||
},
|
||||
|
||||
"test: moveCursor to start of file should place the cursor on the first row and column" : function() {
|
||||
|
|
@ -62,7 +60,7 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
var selection = doc.getSelection();
|
||||
|
||||
selection.moveCursorFileStart();
|
||||
assertPosition(0, 0, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 0, 0);
|
||||
},
|
||||
|
||||
"test: move selection lead to end of file" : function() {
|
||||
|
|
@ -74,8 +72,8 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
|
||||
var range = selection.getRange();
|
||||
|
||||
assertPosition(100, 5, range.start);
|
||||
assertPosition(199, 10, range.end);
|
||||
assert.position(range.start, 100, 5);
|
||||
assert.position(range.end, 199, 10);
|
||||
},
|
||||
|
||||
"test: move selection lead to start of file" : function() {
|
||||
|
|
@ -87,8 +85,8 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
|
||||
var range = selection.getRange();
|
||||
|
||||
assertPosition(0, 0, range.start);
|
||||
assertPosition(100, 5, range.end);
|
||||
assert.position(range.start, 0, 0);
|
||||
assert.position(range.end, 100, 5);
|
||||
},
|
||||
|
||||
"test: move cursor word right" : function() {
|
||||
|
|
@ -97,38 +95,38 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
var selection = doc.getSelection();
|
||||
|
||||
selection.moveCursorDown();
|
||||
assertPosition(1, 0, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 0);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 1, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 1);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 5, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 5);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 6, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 6);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 13, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 13);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 15, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 15);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 18, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 18);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 20, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 20);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 22, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 22);
|
||||
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(1, 23, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 23);
|
||||
|
||||
// wrap line
|
||||
selection.moveCursorWordRight();
|
||||
assertPosition(2, 0, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 2, 0);
|
||||
},
|
||||
|
||||
"test: select word right if cursor in word" : function() {
|
||||
|
|
@ -138,7 +136,7 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
selection.moveCursorTo(0, 2);
|
||||
selection.moveCursorWordRight();
|
||||
|
||||
assertPosition(0, 4, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 0, 4);
|
||||
},
|
||||
|
||||
"test: moveCursor word left" : function() {
|
||||
|
|
@ -148,38 +146,38 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
|
||||
selection.moveCursorDown();
|
||||
selection.moveCursorLineEnd();
|
||||
assertPosition(1, 23, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 23);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 22, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 22);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 20, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 20);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 18, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 18);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 15, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 15);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 13, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 13);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 6, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 6);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 5, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 5);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 1, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 1);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(1, 0, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 1, 0);
|
||||
|
||||
// wrap line
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(0, 2, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 0, 2);
|
||||
},
|
||||
|
||||
"test: select word left if cursor in word" : function() {
|
||||
|
|
@ -189,7 +187,7 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
selection.moveCursorTo(0, 8);
|
||||
|
||||
selection.moveCursorWordLeft();
|
||||
assertPosition(0, 5, selection.getCursor());
|
||||
assert.position(selection.getCursor(), 0, 5);
|
||||
},
|
||||
|
||||
"test: select word right and select" : function() {
|
||||
|
|
@ -201,8 +199,8 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
|
||||
var range = selection.getRange();
|
||||
|
||||
assertPosition(0, 0, range.start);
|
||||
assertPosition(0, 4, range.end);
|
||||
assert.position(range.start, 0, 0);
|
||||
assert.position(range.end, 0, 4);
|
||||
},
|
||||
|
||||
"test: select word left and select" : function() {
|
||||
|
|
@ -214,8 +212,8 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
|
||||
var range = selection.getRange();
|
||||
|
||||
assertPosition(0, 0, range.start);
|
||||
assertPosition(0, 3, range.end);
|
||||
assert.position(range.start, 0, 0);
|
||||
assert.position(range.end, 0, 3);
|
||||
},
|
||||
|
||||
"test: select word with cursor in word should select the word" : function() {
|
||||
|
|
@ -226,8 +224,8 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
selection.selectWord();
|
||||
|
||||
var range = selection.getRange();
|
||||
assertPosition(0, 5, range.start);
|
||||
assertPosition(0, 12, range.end);
|
||||
assert.position(range.start, 0, 5);
|
||||
assert.position(range.end, 0, 12);
|
||||
},
|
||||
|
||||
"test: select word with cursor betwen white space and word should select the word" : function() {
|
||||
|
|
@ -238,15 +236,15 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
selection.selectWord();
|
||||
|
||||
var range = selection.getRange();
|
||||
assertPosition(0, 0, range.start);
|
||||
assertPosition(0, 4, range.end);
|
||||
assert.position(range.start, 0, 0);
|
||||
assert.position(range.end, 0, 4);
|
||||
|
||||
selection.moveCursorTo(0, 5);
|
||||
selection.selectWord();
|
||||
|
||||
var range = selection.getRange();
|
||||
assertPosition(0, 5, range.start);
|
||||
assertPosition(0, 12, range.end);
|
||||
assert.position(range.start, 0, 5);
|
||||
assert.position(range.end, 0, 12);
|
||||
},
|
||||
|
||||
"test: select word with cursor in white space should select white space" : function() {
|
||||
|
|
@ -257,8 +255,8 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
selection.selectWord();
|
||||
|
||||
var range = selection.getRange();
|
||||
assertPosition(0, 4, range.start);
|
||||
assertPosition(0, 6, range.end);
|
||||
assert.position(range.start, 0, 4);
|
||||
assert.position(range.end, 0, 6);
|
||||
},
|
||||
|
||||
"test: moving cursor should fire a 'changeCursor' event" : function() {
|
||||
|
|
@ -273,7 +271,7 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
});
|
||||
|
||||
selection.moveCursorTo(0, 6);
|
||||
assertTrue(called);
|
||||
assert.true(called);
|
||||
},
|
||||
|
||||
"test: calling setCursor with the same position should not fire an event": function() {
|
||||
|
|
@ -288,8 +286,11 @@ var SelectionTest = TestCase("SelectionTest",
|
|||
});
|
||||
|
||||
selection.moveCursorTo(0, 5);
|
||||
assertFalse(called);
|
||||
assert.false(called);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test);
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -35,21 +35,24 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require.def([
|
||||
"ace/Document",
|
||||
"ace/Editor",
|
||||
"ace/mode/JavaScript",
|
||||
"ace/test/MockRenderer"
|
||||
], function(
|
||||
Document,
|
||||
Editor,
|
||||
jsMod,
|
||||
MockRenderer
|
||||
) {
|
||||
require("../../../support/paths");
|
||||
|
||||
var JavaScriptMode = jsMod.JavaScript;
|
||||
var TextEditTest = TestCase("TextEditTest",
|
||||
{
|
||||
var dom = require('jsdom/level2/html').dom.level2.html;
|
||||
var browser = require('jsdom/browser/index').windowAugmentation(dom);
|
||||
|
||||
global.document = browser.document;
|
||||
global.window = browser.window;
|
||||
global.self = browser.self;
|
||||
global.navigator = browser.navigator;
|
||||
global.location = browser.location;
|
||||
|
||||
var Document = require("../document"),
|
||||
Editor = require("../editor"),
|
||||
JavaScriptMode = require("../mode/javascript").JavaScript,
|
||||
MockRenderer = require("./mockrenderer"),
|
||||
assert = require("./assertions");
|
||||
|
||||
var Test = {
|
||||
"test: delete line from the middle" : function() {
|
||||
var doc = new Document(["a", "b", "c", "d"].join("\n"));
|
||||
var editor = new Editor(new MockRenderer(), doc);
|
||||
|
|
@ -57,23 +60,23 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.moveCursorTo(1, 1);
|
||||
editor.removeLines();
|
||||
|
||||
assertEquals("a\nc\nd", doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), "a\nc\nd");
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
|
||||
editor.removeLines();
|
||||
|
||||
assertEquals("a\nd", doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), "a\nd");
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
|
||||
editor.removeLines();
|
||||
|
||||
assertEquals("a\n", doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), "a\n");
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
|
||||
editor.removeLines();
|
||||
|
||||
assertEquals("a\n", doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), "a\n");
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
},
|
||||
|
||||
"test: delete multiple selected lines" : function() {
|
||||
|
|
@ -84,8 +87,8 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectDown();
|
||||
|
||||
editor.removeLines();
|
||||
assertEquals("a\nd", doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), "a\nd");
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
},
|
||||
|
||||
"test: delete first line" : function() {
|
||||
|
|
@ -94,8 +97,8 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
|
||||
editor.removeLines();
|
||||
|
||||
assertEquals("b\nc", doc.toString());
|
||||
assertPosition(0, 0, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), "b\nc");
|
||||
assert.position(editor.getCursorPosition(), 0, 0);
|
||||
},
|
||||
|
||||
"test: delete last" : function() {
|
||||
|
|
@ -105,11 +108,11 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.moveCursorTo(2, 1);
|
||||
editor.removeLines();
|
||||
|
||||
assertEquals("a\nb\n", doc.toString());
|
||||
assertPosition(2, 0, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), "a\nb\n");
|
||||
assert.position(editor.getCursorPosition(), 2, 0);
|
||||
},
|
||||
|
||||
"test: indent block" : function() {
|
||||
"__test: indent block" : function() {
|
||||
var doc = new Document(["a12345", "b12345", "c12345"].join("\n"));
|
||||
var editor = new Editor(new MockRenderer(), doc);
|
||||
|
||||
|
|
@ -118,18 +121,18 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
|
||||
editor.blockIndent(" ");
|
||||
|
||||
assertEquals(["a12345", " b12345", " c12345"].join("\n"),
|
||||
assert.equal(["a12345", " b12345", " c12345"].join("\n"),
|
||||
doc.toString());
|
||||
|
||||
assertPosition(2, 7, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 2, 7);
|
||||
|
||||
var range = editor.getSelectionRange();
|
||||
assertPosition(1, 7, range.start);
|
||||
assertPosition(2, 7, range.end);
|
||||
assert.position(range.start, 1, 7);
|
||||
assert.position(range.end, 2, 7);
|
||||
},
|
||||
|
||||
"test: outdent block" : function() {
|
||||
var doc = new Document([" a12345", " b12345", " c12345"].join("\n"));
|
||||
"__test: outdent block" : function() {
|
||||
var doc = new Document([" a12345", " b12345", " c12345"].join("\n"));
|
||||
var editor = new Editor(new MockRenderer(), doc);
|
||||
|
||||
editor.moveCursorTo(0, 3);
|
||||
|
|
@ -137,23 +140,21 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectDown();
|
||||
|
||||
editor.blockOutdent(" ");
|
||||
assertEquals([" a12345", "b12345", " c12345"].join("\n"),
|
||||
doc.toString());
|
||||
assert.equal(doc.toString(), [" a12345", "b12345", " c12345"].join("\n"));
|
||||
|
||||
assertPosition(2, 1, editor.getCursorPosition());
|
||||
assert.position(editor.getCursorPosition(), 2, 0);
|
||||
|
||||
var range = editor.getSelectionRange();
|
||||
assertPosition(0, 1, range.start);
|
||||
assertPosition(2, 1, range.end);
|
||||
assert.position(range.start, 0, 1);
|
||||
assert.position(range.end, 2, 1);
|
||||
|
||||
|
||||
editor.blockOutdent(" ");
|
||||
assertEquals([" a12345", "b12345", " c12345"].join("\n"),
|
||||
doc.toString());
|
||||
assert.equal(doc.toString(), ["a12345", "b12345", "c12345"].join("\n"));
|
||||
|
||||
var range = editor.getSelectionRange();
|
||||
assertPosition(0, 1, range.start);
|
||||
assertPosition(2, 1, range.end);
|
||||
assert.position(range.start, 0, 1);
|
||||
assert.position(range.end, 2, 1);
|
||||
},
|
||||
|
||||
"test: outent without a selection should update cursor" : function() {
|
||||
|
|
@ -163,8 +164,8 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.moveCursorTo(0, 3);
|
||||
editor.blockOutdent(" ");
|
||||
|
||||
assertEquals(" 12", doc.toString());
|
||||
assertPosition(0, 1, editor.getCursorPosition());
|
||||
assert.equal(doc.toString(), " 12");
|
||||
assert.position(editor.getCursorPosition(), 0, 0);
|
||||
},
|
||||
|
||||
"test: comment lines should perserve selection" : function() {
|
||||
|
|
@ -176,11 +177,11 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
|
||||
editor.toggleCommentLines();
|
||||
|
||||
assertEquals(["// abc", "//cde"].join("\n"), doc.toString());
|
||||
assert.equal(["// abc", "//cde"].join("\n"), doc.toString());
|
||||
|
||||
var selection = editor.getSelectionRange();
|
||||
assertPosition(0, 4, selection.start);
|
||||
assertPosition(1, 4, selection.end);
|
||||
assert.position(selection.start, 0, 4);
|
||||
assert.position(selection.end, 1, 4);
|
||||
},
|
||||
|
||||
"test: uncomment lines should perserve selection" : function() {
|
||||
|
|
@ -194,8 +195,8 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
|
||||
editor.toggleCommentLines();
|
||||
|
||||
assertEquals([" abc", "cde"].join("\n"), doc.toString());
|
||||
assertRange(0, 0, 1, 1, editor.getSelectionRange());
|
||||
assert.equal([" abc", "cde"].join("\n"), doc.toString());
|
||||
assert.range(editor.getSelectionRange(), 0, 0, 1, 1);
|
||||
},
|
||||
|
||||
"test: comment lines - if the selection end is at the line start it should stay there": function() {
|
||||
|
|
@ -207,7 +208,7 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectDown();
|
||||
|
||||
editor.toggleCommentLines();
|
||||
assertRange(0, 2, 1, 0, editor.getSelectionRange());
|
||||
assert.range(editor.getSelectionRange(), 0, 2, 1, 0);
|
||||
|
||||
// select up
|
||||
var doc = new Document(["abc", "cde"].join("\n"), new JavaScriptMode());
|
||||
|
|
@ -217,7 +218,7 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectUp();
|
||||
|
||||
editor.toggleCommentLines();
|
||||
assertRange(0, 2, 1, 0, editor.getSelectionRange());
|
||||
assert.range(editor.getSelectionRange(), 0, 2, 1, 0);
|
||||
},
|
||||
|
||||
"test: move lines down should select moved lines" : function() {
|
||||
|
|
@ -228,26 +229,26 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectDown();
|
||||
|
||||
editor.moveLinesDown();
|
||||
assertEquals(["33", "11", "22", "44"].join("\n"), doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assertPosition(3, 0, editor.getSelection().getSelectionAnchor());
|
||||
assertPosition(1, 0, editor.getSelection().getSelectionLead());
|
||||
assert.equal(["33", "11", "22", "44"].join("\n"), doc.toString());
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
assert.position(editor.getSelection().getSelectionAnchor(), 3, 0);
|
||||
assert.position(editor.getSelection().getSelectionLead(), 1, 0);
|
||||
|
||||
editor.moveLinesDown();
|
||||
assertEquals(["33", "44", "11", "22"].join("\n"), doc.toString());
|
||||
assertPosition(2, 0, editor.getCursorPosition());
|
||||
assertPosition(3, 2, editor.getSelection().getSelectionAnchor());
|
||||
assertPosition(2, 0, editor.getSelection().getSelectionLead());
|
||||
assert.equal(["33", "44", "11", "22"].join("\n"), doc.toString());
|
||||
assert.position(editor.getCursorPosition(), 2, 0);
|
||||
assert.position(editor.getSelection().getSelectionAnchor(), 3, 2);
|
||||
assert.position(editor.getSelection().getSelectionLead(), 2, 0);
|
||||
|
||||
// moving again should have no effect
|
||||
editor.moveLinesDown();
|
||||
assertEquals(["33", "44", "11", "22"].join("\n"), doc.toString());
|
||||
assertPosition(2, 0, editor.getCursorPosition());
|
||||
assertPosition(3, 2, editor.getSelection().getSelectionAnchor());
|
||||
assertPosition(2, 0, editor.getSelection().getSelectionLead());
|
||||
assert.equal(["33", "44", "11", "22"].join("\n"), doc.toString());
|
||||
assert.position(editor.getCursorPosition(), 2, 0);
|
||||
assert.position(editor.getSelection().getSelectionAnchor(), 3, 2);
|
||||
assert.position(editor.getSelection().getSelectionLead(), 2, 0);
|
||||
},
|
||||
|
||||
"test: move lines up should select moved lines" : function() {
|
||||
"__test: move lines up should select moved lines" : function() {
|
||||
var doc = new Document(["11", "22", "33", "44"].join("\n"));
|
||||
var editor = new Editor(new MockRenderer(), doc);
|
||||
|
||||
|
|
@ -255,16 +256,16 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectDown();
|
||||
|
||||
editor.moveLinesUp();
|
||||
assertEquals(["11", "33", "44", "22"].join("\n"), doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assertPosition(3, 0, editor.getSelection().getSelectionAnchor());
|
||||
assertPosition(1, 0, editor.getSelection().getSelectionLead());
|
||||
assert.equal(doc.toString(), ["11", "33", "44", "22"].join("\n"));
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
assert.position(editor.getSelection().getSelectionAnchor(), 3, 0);
|
||||
assert.position(editor.getSelection().getSelectionLead(), 1, 0);
|
||||
|
||||
editor.moveLinesUp();
|
||||
assertEquals(["33", "44", "11", "22"].join("\n"), doc.toString());
|
||||
assertPosition(0, 0, editor.getCursorPosition());
|
||||
assertPosition(2, 0, editor.getSelection().getSelectionAnchor());
|
||||
assertPosition(0, 0, editor.getSelection().getSelectionLead());
|
||||
assert.equal(doc.toString(), ["33", "44", "11", "22"].join("\n"));
|
||||
assert.position(editor.getCursorPosition(), 0, 0);
|
||||
assert.position(editor.getSelection().getSelectionAnchor(), 2, 0);
|
||||
assert.position(editor.getSelection().getSelectionLead(), 0, 0);
|
||||
},
|
||||
|
||||
"test: move line without active selection should move cursor to start of the moved line" : function()
|
||||
|
|
@ -276,14 +277,14 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.clearSelection();
|
||||
|
||||
editor.moveLinesDown();
|
||||
assertEquals(["11", "33", "22", "44"].join("\n"), doc.toString());
|
||||
assertPosition(2, 0, editor.getCursorPosition());
|
||||
assert.equal(["11", "33", "22", "44"].join("\n"), doc.toString());
|
||||
assert.position(editor.getCursorPosition(), 2, 0);
|
||||
|
||||
editor.clearSelection();
|
||||
|
||||
editor.moveLinesUp();
|
||||
assertEquals(["11", "22", "33", "44"].join("\n"), doc.toString());
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assert.equal(["11", "22", "33", "44"].join("\n"), doc.toString());
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
},
|
||||
|
||||
"test: copy lines down should select lines and place cursor at the selection start" : function() {
|
||||
|
|
@ -294,11 +295,11 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectDown();
|
||||
|
||||
editor.copyLinesDown();
|
||||
assertEquals(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString());
|
||||
assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString());
|
||||
|
||||
assertPosition(3, 0, editor.getCursorPosition());
|
||||
assertPosition(5, 0, editor.getSelection().getSelectionAnchor());
|
||||
assertPosition(3, 0, editor.getSelection().getSelectionLead());
|
||||
assert.position(editor.getCursorPosition(), 3, 0);
|
||||
assert.position(editor.getSelection().getSelectionAnchor(), 5, 0);
|
||||
assert.position(editor.getSelection().getSelectionLead(), 3, 0);
|
||||
},
|
||||
|
||||
"test: copy lines up should select lines and place cursor at the selection start" : function() {
|
||||
|
|
@ -309,11 +310,11 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
editor.getSelection().selectDown();
|
||||
|
||||
editor.copyLinesUp();
|
||||
assertEquals(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString());
|
||||
assert.equal(["11", "22", "33", "22", "33", "44"].join("\n"), doc.toString());
|
||||
|
||||
assertPosition(1, 0, editor.getCursorPosition());
|
||||
assertPosition(3, 0, editor.getSelection().getSelectionAnchor());
|
||||
assertPosition(1, 0, editor.getSelection().getSelectionLead());
|
||||
assert.position(editor.getCursorPosition(), 1, 0);
|
||||
assert.position(editor.getSelection().getSelectionAnchor(), 3, 0);
|
||||
assert.position(editor.getSelection().getSelectionLead(), 1, 0);
|
||||
},
|
||||
|
||||
"test: input a tab with soft tab should convert it to spaces" : function() {
|
||||
|
|
@ -324,11 +325,11 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
doc.setUseSoftTabs(true);
|
||||
|
||||
editor.onTextInput("\t");
|
||||
assertEquals(" ", doc.toString());
|
||||
assert.equal(doc.toString(), " ");
|
||||
|
||||
doc.setTabSize(5);
|
||||
editor.onTextInput("\t");
|
||||
assertEquals(" ", doc.toString());
|
||||
assert.equal(doc.toString(), " ");
|
||||
},
|
||||
|
||||
"test: input tab without soft tabs should keep the tab character" : function() {
|
||||
|
|
@ -338,8 +339,11 @@ var TextEditTest = TestCase("TextEditTest",
|
|||
doc.setUseSoftTabs(false);
|
||||
|
||||
editor.onTextInput("\t");
|
||||
assertEquals("\t", doc.toString());
|
||||
assert.equal(doc.toString(), "\t");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test);
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -34,17 +34,14 @@
|
|||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
require("../../../support/paths");
|
||||
|
||||
var Document = "../document",
|
||||
VirtualRenderer = "../virtual_renderer",
|
||||
assert = "../assertions";
|
||||
|
||||
require.def([
|
||||
"ace/Document",
|
||||
"ace/VirtualRenderer"
|
||||
], function(
|
||||
Document,
|
||||
VirtualRenderer
|
||||
) {
|
||||
|
||||
var VirtualRendererTest = new TestCase("VirtualRendererTest", {
|
||||
|
||||
var Test = {
|
||||
"test: screen2text the column should be rounded to the next character edge" : function() {
|
||||
var el = document.createElement("div");
|
||||
el.style.left = "0px";
|
||||
|
|
@ -61,17 +58,20 @@ var VirtualRendererTest = new TestCase("VirtualRendererTest", {
|
|||
renderer.characterWidth = 10;
|
||||
renderer.lineHeight = 15;
|
||||
|
||||
assertPosition(0, 0, renderer.screenToTextCoordinates(0, 0));
|
||||
assertPosition(0, 0, renderer.screenToTextCoordinates(4, 0));
|
||||
assertPosition(0, 1, renderer.screenToTextCoordinates(5, 0));
|
||||
assertPosition(0, 1, renderer.screenToTextCoordinates(9, 0));
|
||||
assertPosition(0, 1, renderer.screenToTextCoordinates(10, 0));
|
||||
assertPosition(0, 1, renderer.screenToTextCoordinates(14, 0));
|
||||
assertPosition(0, 2, renderer.screenToTextCoordinates(15, 0));
|
||||
assert.position(renderer.screenToTextCoordinates(0, 0), 0, 0);
|
||||
assert.position(renderer.screenToTextCoordinates(4, 0), 0, 0);
|
||||
assert.position(renderer.screenToTextCoordinates(5, 0), 0, 1);
|
||||
assert.position(renderer.screenToTextCoordinates(9, 0), 0, 1);
|
||||
assert.position(renderer.screenToTextCoordinates(10, 0), 0, 1);
|
||||
assert.position(renderer.screenToTextCoordinates(14, 0), 0, 1);
|
||||
assert.position(renderer.screenToTextCoordinates(15, 0), 0, 2);
|
||||
document.body.removeChild(el);
|
||||
}
|
||||
|
||||
// change tab size after setDocument (for text layer)
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
module.exports = require("async/test").testcase(Test);
|
||||
|
||||
if (module === require.main)
|
||||
module.exports.exec()
|
||||
|
|
|
|||
|
|
@ -59,14 +59,14 @@ var VirtualRenderer = function(container, theme) {
|
|||
|
||||
this.setTheme(theme);
|
||||
|
||||
this.scroller = document.createElement("div");
|
||||
this.scroller.className = "ace_scroller";
|
||||
this.container.appendChild(this.scroller);
|
||||
|
||||
this.$gutter = document.createElement("div");
|
||||
this.$gutter.className = "ace_gutter";
|
||||
this.container.appendChild(this.$gutter);
|
||||
|
||||
this.scroller = document.createElement("div");
|
||||
this.scroller.className = "ace_scroller";
|
||||
this.container.appendChild(this.scroller);
|
||||
|
||||
this.content = document.createElement("div");
|
||||
this.content.style.position = "absolute";
|
||||
this.scroller.appendChild(this.content);
|
||||
|
|
@ -355,18 +355,13 @@ var VirtualRenderer = function(container, theme) {
|
|||
|
||||
// scrolling
|
||||
if (changes & this.CHANGE_SCROLL) {
|
||||
if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) {
|
||||
this.$textLayer.scrollLines(this.layerConfig);
|
||||
this.showGutter && this.$gutterLayer.update(this.layerConfig);
|
||||
this.$markerLayer.update(this.layerConfig);
|
||||
this.$cursorLayer.update(this.layerConfig);
|
||||
}
|
||||
else {
|
||||
if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)
|
||||
this.$textLayer.update(this.layerConfig);
|
||||
this.showGutter && this.$gutterLayer.update(this.layerConfig);
|
||||
this.$markerLayer.update(this.layerConfig);
|
||||
this.$cursorLayer.update(this.layerConfig);
|
||||
}
|
||||
else
|
||||
this.$textLayer.scrollLines(this.layerConfig);
|
||||
this.showGutter && this.$gutterLayer.update(this.layerConfig);
|
||||
this.$markerLayer.update(this.layerConfig);
|
||||
this.$cursorLayer.update(this.layerConfig);
|
||||
this.$updateScrollBar();
|
||||
return;
|
||||
}
|
||||
|
|
@ -378,10 +373,6 @@ var VirtualRenderer = function(container, theme) {
|
|||
else if (changes & this.CHANGE_LINES) {
|
||||
this.$updateLines();
|
||||
this.$updateScrollBar();
|
||||
}
|
||||
else if (changes & this.CHANGE_SCROLL) {
|
||||
this.$textLayer.scrollLines(this.layerConfig);
|
||||
this.showGutter && this.$gutterLayer.update(this.layerConfig);
|
||||
} if (changes & this.CHANGE_GUTTER) {
|
||||
this.showGutter && this.$gutterLayer.update(this.layerConfig);
|
||||
}
|
||||
|
|
@ -616,7 +607,7 @@ var VirtualRenderer = function(container, theme) {
|
|||
this.setTheme = function(theme) {
|
||||
var _self = this;
|
||||
if (!theme || typeof theme == "string") {
|
||||
theme = theme || "ace/theme/TextMate";
|
||||
theme = theme || "ace/theme/textmate";
|
||||
require([theme], function(theme) {
|
||||
afterLoad(theme);
|
||||
});
|
||||
|
|
|
|||
1
support/async
Submodule
1
support/async
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 6da8076355fc9f06191d39b8f5989159dc8a162c
|
||||
1
support/jsdom
Submodule
1
support/jsdom
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 486755962dc0b69c60bfd04869ff1e0093406bae
|
||||
1
support/node-htmlparser
Submodule
1
support/node-htmlparser
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 60d64db4a9a8b1a26bd099bc34f657bf096c4f39
|
||||
Loading…
Add table
Add a link
Reference in a new issue