define(function(require,exports,module){var CodeMirror=brackets.getModule("thirdparty/CodeMirror/lib/codemirror"),prefs=require("Prefs");function doFold(cm,pos,options,force){options=options||{},force=force||"fold","number"==typeof pos&&(pos=CodeMirror.Pos(pos,0));var finder=options.rangeFinder||CodeMirror.fold.auto,range,widget,textRange;function getRange(allowFolded){var range=options.range||finder(cm,pos);if(!range||range.to.line-range.from.linecm.firstLine();)pos=CodeMirror.Pos(pos.line-1,0),range=getRange(!1);if(!(!range||range.cleared||"unfold"===force||range.to.line-range.from.line=cm.firstLine()&&lineNumber<=cm.lastLine()&&(range=rf(cm,CodeMirror.Pos(lineNumber,0)),cachedRange=folds[lineNumber],range&&cachedRange&&range.from.line===cachedRange.from.line&&range.to.line===cachedRange.to.line&&(result[lineNumber]=folds[lineNumber]))}),result}),CodeMirror.commands.fold=function(cm,options){cm.foldCode(cm.getCursor(),options,"fold")},CodeMirror.commands.unfold=function(cm,options){cm.foldCode(cm.getCursor(),options,"unfold")},CodeMirror.commands.foldAll=function(cm){cm.operation(function(){var i,e;for(i=cm.firstLine(),e=cm.lastLine();i<=e;i++)cm.foldCode(CodeMirror.Pos(i,0),null,"fold")})},CodeMirror.commands.unfoldAll=function(cm,from,to){from=from||cm.firstLine(),to=to||cm.lastLine(),cm.operation(function(){var i,e;for(i=from,e=to;i<=e;i++)cm.isFolded(i)&&cm.unfoldCode(i,{range:cm._lineFolds[i]})})},CodeMirror.commands.foldToLevel=function(cm,start,end){var rf=CodeMirror.fold.auto;function foldLevel(n,from,to){if(n>0)for(var i=from,range;i=prefs.getSetting("minFoldSize"))return range})}exports.init=init});