diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index c1005e7b..17f95525 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -1498,6 +1498,10 @@ var EditSession = function(text, mode) { return []; } + this.containsRow = function(row) { + return row >= this.start.row && row <= this.end.row; + } + this.walk = function(callback, endRow, endColumn) { var lastEnd = 0, folds = this.folds, diff --git a/lib/ace/layer/text.js b/lib/ace/layer/text.js index 548ef4bd..60bc771a 100644 --- a/lib/ace/layer/text.js +++ b/lib/ace/layer/text.js @@ -190,8 +190,15 @@ var Text = function(parentEl) { lineElementsIdx = 0; for (var row = config.firstRow; row < first; row++) { + var foldLine = this.session.getFoldLine(row); + if (foldLine) { + if (foldLine.containsRow(first)) { + break; + } else { + row = foldLine.end.row; + } + } lineElementsIdx ++; - row = this.session.getRowFoldEnd(row); } for (var i=first; i<=last; i++) {