diff --git a/lib/ace/multi_select.js b/lib/ace/multi_select.js index fcafc7b7..b26dcbde 100644 --- a/lib/ace/multi_select.js +++ b/lib/ace/multi_select.js @@ -45,8 +45,8 @@ var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; exports.commands = require("./commands/multi_select_commands"); // Todo -var Search = require("ace/search").Search -var search = new Search +var Search = require("./search").Search; +var search = new Search(); function find(session, needle, dir) { search.$options.wrap = true; @@ -67,6 +67,7 @@ var EditSession = require("./edit_session").EditSession; ;(function() { // list of ranges in reverse addition order this.ranges = null; + // automatically sorted list of ranges this.rangeList = null; @@ -391,9 +392,9 @@ var Editor = require("./editor").Editor; for (var i = 0; i < ranges.length; i++) { text += this.session.getTextRange(ranges[i]); } - } else if (!this.selection.isEmpty()) + } else if (!this.selection.isEmpty()) { text = this.session.getTextRange(this.getSelectionRange()); - + } return text; }; @@ -514,7 +515,6 @@ var Editor = require("./editor").Editor; if (skip) this.multiSelect.substractPoint(range.cursor); } - }).call(Editor.prototype); @@ -574,8 +574,6 @@ function MultiSelect(editor) { editor.commands.addCommands(exports.commands.defaultCommands); } - - exports.MultiSelect = MultiSelect; }); \ No newline at end of file diff --git a/lib/ace/multi_select_test.js b/lib/ace/multi_select_test.js index 5c9d0dfe..1f6a6f26 100644 --- a/lib/ace/multi_select_test.js +++ b/lib/ace/multi_select_test.js @@ -48,16 +48,16 @@ var Editor = require("./editor").Editor; var MockRenderer = require("./test/mockrenderer").MockRenderer; var Range = require("./range").Range; var assert = require("./test/assertions"); -var MultiSelect = require("ace/multi_select").MultiSelect; +var MultiSelect = require("./multi_select").MultiSelect; var editor var exec = function(name, times, args) { - do { - editor.commands.exec(name, editor, args); - } while(times --> 1) + do { + editor.commands.exec(name, editor, args); + } while(times --> 1) }; var testRanges = function(str) { - assert.equal(editor.selection.getAllRanges()+"", str); + assert.equal(editor.selection.getAllRanges()+"", str); } module.exports = { @@ -66,74 +66,74 @@ module.exports = { "test: multiselect editing": function() { var doc = new EditSession([ - "w1.w2", - " wtt.w", - " wtt.w" - ]); + "w1.w2", + " wtt.w", + " wtt.w" + ]); editor = new Editor(new MockRenderer(), doc); - MultiSelect(editor); + MultiSelect(editor); - editor.navigateFileEnd(); - exec("selectMoreBefore", 3); - assert.ok(editor.inMultiSelectMode); - assert.equal(editor.selection.getAllRanges().length, 4); + editor.navigateFileEnd(); + exec("selectMoreBefore", 3); + assert.ok(editor.inMultiSelectMode); + assert.equal(editor.selection.getAllRanges().length, 4); - assert.equal(editor.getCopyText(), "wwww"); - exec("insertstring", 1, "a"); - exec("backspace", 2); + assert.equal(editor.getCopyText(), "wwww"); + exec("insertstring", 1, "a"); + exec("backspace", 2); assert.equal(editor.session.getValue(), "w1.w2\ntt\ntt"); - assert.equal(editor.selection.getAllRanges().length, 4); + assert.equal(editor.selection.getAllRanges().length, 4); - exec("selectall"); - assert.ok(!editor.inMultiSelectMode); - //assert.equal(editor.selection.getAllRanges().length, 1); + exec("selectall"); + assert.ok(!editor.inMultiSelectMode); + //assert.equal(editor.selection.getAllRanges().length, 1); }, - "test: multiselect navigation": function() { + "test: multiselect navigation": function() { var doc = new EditSession([ - "w1.w2", - " wtt.w", - " wtt.we" - ]); + "w1.w2", + " wtt.w", + " wtt.we" + ]); editor = new Editor(new MockRenderer(), doc); - MultiSelect(editor); + MultiSelect(editor); - editor.selectMoreLines(1); - testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]"); - assert.ok(editor.inMultiSelectMode); + editor.selectMoreLines(1); + testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]"); + assert.ok(editor.inMultiSelectMode); - exec("golinedown"); - exec("gotolineend"); - testRanges("Range: [1/9] -> [1/9],Range: [2/10] -> [2/10]"); - exec("selectwordleft"); + exec("golinedown"); + exec("gotolineend"); + testRanges("Range: [1/9] -> [1/9],Range: [2/10] -> [2/10]"); + exec("selectwordleft"); - testRanges("Range: [1/8] -> [1/9],Range: [2/8] -> [2/10]"); - exec("golinedown", 2); - assert.ok(!editor.inMultiSelectMode); + testRanges("Range: [1/8] -> [1/9],Range: [2/8] -> [2/10]"); + exec("golinedown", 2); + assert.ok(!editor.inMultiSelectMode); }, - "test: multiselect session change": function() { + "test: multiselect session change": function() { var doc = new EditSession([ - "w1.w2", - " wtt.w", - " wtt.w" - ]); + "w1.w2", + " wtt.w", + " wtt.w" + ]); var editor = new Editor(new MockRenderer(), doc); - MultiSelect(editor); + MultiSelect(editor); - editor.selectMoreLines(1) - assert.equal( - editor.selection.getAllRanges()+"", - "Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]" - ); - assert.ok(editor.inMultiSelectMode); + editor.selectMoreLines(1) + assert.equal( + editor.selection.getAllRanges()+"", + "Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]" + ); + assert.ok(editor.inMultiSelectMode); - var doc2 = new EditSession(["w1"]); - editor.setSession(doc2); - assert.ok(!editor.inMultiSelectMode); + var doc2 = new EditSession(["w1"]); + editor.setSession(doc2); + assert.ok(!editor.inMultiSelectMode); - editor.setSession(doc); - assert.ok(editor.inMultiSelectMode); + editor.setSession(doc); + assert.ok(editor.inMultiSelectMode); } };