fix findall

This commit is contained in:
nightwing 2014-01-30 20:50:56 +04:00
commit 7a92c174eb

View file

@ -143,20 +143,27 @@ var Search = function() {
if (options.$isMultiLine) { if (options.$isMultiLine) {
var len = re.length; var len = re.length;
var maxRow = lines.length - len; var maxRow = lines.length - len;
for (var row = re.offset || 0; row <= maxRow; row++) { var prevRange;
outer: for (var row = re.offset || 0; row <= maxRow; row++) {
for (var j = 0; j < len; j++) for (var j = 0; j < len; j++)
if (lines[row + j].search(re[j]) == -1) if (lines[row + j].search(re[j]) == -1)
break; continue outer;
var startLine = lines[row]; var startLine = lines[row];
var line = lines[row + len - 1]; var line = lines[row + len - 1];
var startIndex = startLine.match(re[0])[0].length; var startIndex = startLine.length - startLine.match(re[0])[0].length;
var endIndex = line.match(re[len - 1])[0].length; var endIndex = line.match(re[len - 1])[0].length;
ranges.push(new Range( if (prevRange && prevRange.end.row === row &&
row, startLine.length - startIndex, prevRange.end.column > startIndex
row + len - 1, endIndex ) {
continue;
}
ranges.push(prevRange = new Range(
row, startIndex, row + len - 1, endIndex
)); ));
if (len > 2)
row = row + len - 2;
} }
} else { } else {
for (var i = 0; i < lines.length; i++) { for (var i = 0; i < lines.length; i++) {