diff --git a/lib/ace/occur.js b/lib/ace/occur.js index fd8dbdef..fa26410d 100644 --- a/lib/ace/occur.js +++ b/lib/ace/occur.js @@ -82,11 +82,13 @@ oop.inherits(Occur, Search); if (!session || !options.needle) return []; var search = new Search(); search.set(options); - var ranges = search.findAll(session); - return ranges.map(function(range) { - var row = range.start.row; - return {row: row, content: session.getLine(row)}; - }); + return search.findAll(session).reduce(function(lines, range) { + var row = range.start.row, + last = lines[lines.length-1]; + return last && last.row === row ? + lines : + lines.concat({row: row, content: session.getLine(row)}); + }, []); } }).call(Occur.prototype); diff --git a/lib/ace/occur_test.js b/lib/ace/occur_test.js index 7116d100..50dfc489 100644 --- a/lib/ace/occur_test.js +++ b/lib/ace/occur_test.js @@ -55,9 +55,9 @@ module.exports = { }, "test: find lines matching" : function() { - session.doc.insertLines(0, ['abc', 'def', 'xyz', 'bcx']); + session.doc.insertLines(0, ['abc', 'def', 'xyz', 'bcxbc']); var result = occur.matchingLines(session, {needle: 'bc'}), - expected = [{row: 0, content: 'abc'}, {row: 3, content: 'bcx'}]; + expected = [{row: 0, content: 'abc'}, {row: 3, content: 'bcxbc'}]; assert.deepEqual(result, expected); },