diff --git a/demo/demo.js b/demo/demo.js index 1291db1a..6fa0acd8 100644 --- a/demo/demo.js +++ b/demo/demo.js @@ -150,8 +150,8 @@ exports.launch = function(env) { // BEGING TESTING var Range = require("ace/range").Range; docs.js.addFold(new Range(0, 13, 0, 18), "args..."); - docs.js.addFold(new Range(1, 10, 2, 10), "foo..."); docs.js.addFold(new Range(2, 20, 2, 25), "bar..."); + docs.js.addFold(new Range(1, 10, 2, 10), "foo..."); window.s = docs.js; window.e = env.editor; setTimeout(function() { diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index db03e9a7..46ef0909 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -1472,25 +1472,13 @@ var EditSession = function(text, mode) { } this.folds.push(fold); this.folds.sort(function(a, b) { - if (a.sameLine && b.sameLine) { - if (a.start.row == b.start.row) { - return a.start.colun - b.start.column; - } else { - return a.start.row - b.start.row; - } - } else if (!a.sameLine && !b.sameLine) { - return a.end.row - b.start.row; - } else if (!a.sameLine) { - return a.end.row - b.start.row; - } else if (!b.sameLine) { - return b.end.row - a.start.row; - } + return -a.compare(b.start.row, b.start.column); }); - } else if (fold.start.row == this.endRow) { + } else if (fold.start.row == this.end.row) { this.folds.push(fold); this.end.row = fold.end.row; this.end.column = fold.end.column; - } else if (fold.end.row == this.startRow) { + } else if (fold.end.row == this.start.row) { this.folds.unshift(fold); this.start.row = fold.start.row; this.start.column = fold.start.column;