diff --git a/src/edit_session/folding.js b/src/edit_session/folding.js index 6ff8d9edeb8..6d4d74aee13 100644 --- a/src/edit_session/folding.js +++ b/src/edit_session/folding.js @@ -593,12 +593,12 @@ function Folding() { if (dir != 1) { do { token = iterator.stepBackward(); - } while (token && re.test(token.type)); - iterator.stepForward(); + } while (token && re.test(token.type) && !/^comment.end/.test(token.type)); + token = iterator.stepForward(); } range.start.row = iterator.getCurrentTokenRow(); - range.start.column = iterator.getCurrentTokenColumn() + 2; + range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2); iterator = new TokenIterator(this, row, column); @@ -613,13 +613,16 @@ function Folding() { } else if (iterator.$row > lastRow) { break; } - } while (token && re.test(token.type)); + } while (token && re.test(token.type) && !/^comment.start/.test(token.type)); token = iterator.stepBackward(); } else token = iterator.getCurrentToken(); range.end.row = iterator.getCurrentTokenRow(); - range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2; + range.end.column = iterator.getCurrentTokenColumn(); + if (!/^comment.end/.test(token.type)) { + range.end.column += token.value.length - 2; + } return range; } };