diff --git a/vendor/ace/search.js b/vendor/ace/search.js index 9df4f6f86..2d3be2636 100644 --- a/vendor/ace/search.js +++ b/vendor/ace/search.js @@ -98,11 +98,21 @@ Search.SELECTION = 2; iterator = this.$forwardMatchIterator(session); } + var ignoreCursorColumn = this.$options.wrap && this.$options.scope == Search.ALL; + var start = session.getSelection().getCursor(); + if (ignoreCursorColumn) { + session.getSelection().moveCursorTo(0, 0); + } + var ranges = []; iterator.forEach(function(range) { ranges.push(range); }); + if (ignoreCursorColumn) { + session.getSelection().moveCursorTo(start.row, start.column) + } + return ranges; }; diff --git a/vendor/ace/search_test.js b/vendor/ace/search_test.js index 6af4402c8..284a9c696 100644 --- a/vendor/ace/search_test.js +++ b/vendor/ace/search_test.js @@ -348,6 +348,24 @@ module.exports = { assert.equal(search.replace("ab12", "$$"), "$"); }, + "test: find all using regular expresion containing $" : function() { + var session = new EditSession(["a", " b", "c ", "d"]); + + var search = new Search().set({ + needle: "[ ]+$", + regExp: true, + wrap: true, + scope: Search.ALL + }); + + session.getSelection().moveCursorTo(1, 2); + var ranges = search.findAll(session); + + assert.equal(ranges.length, 1); + assert.position(ranges[0].start, 2, 1); + assert.position(ranges[0].end, 2, 2); + }, + "test: find all matches in a line" : function() { var session = new EditSession("foo bar foo baz foobar foo"); @@ -362,12 +380,12 @@ module.exports = { var ranges = search.findAll(session); assert.equal(ranges.length, 3); - assert.position(ranges[0].start, 0, 8); - assert.position(ranges[0].end, 0, 11); - assert.position(ranges[1].start, 0, 23); - assert.position(ranges[1].end, 0, 26); - assert.position(ranges[2].start, 0, 0); - assert.position(ranges[2].end, 0, 3); + assert.position(ranges[0].start, 0, 0); + assert.position(ranges[0].end, 0, 3); + assert.position(ranges[1].start, 0, 8); + assert.position(ranges[1].end, 0, 11); + assert.position(ranges[2].start, 0, 23); + assert.position(ranges[2].end, 0, 26); }, "test: find all matches in a line backwards" : function() { @@ -385,12 +403,12 @@ module.exports = { var ranges = search.findAll(session); assert.equal(ranges.length, 3); - assert.position(ranges[0].start, 0, 8); - assert.position(ranges[0].end, 0, 11); - assert.position(ranges[1].start, 0, 0); - assert.position(ranges[1].end, 0, 3); - assert.position(ranges[2].start, 0, 23); - assert.position(ranges[2].end, 0, 26); + assert.position(ranges[0].start, 0, 23); + assert.position(ranges[0].end, 0, 26); + assert.position(ranges[1].start, 0, 8); + assert.position(ranges[1].end, 0, 11); + assert.position(ranges[2].start, 0, 0); + assert.position(ranges[2].end, 0, 3); }, };