(function (mod){ if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror"), "cjs"); else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"] , function (CM){ mod(CM, "amd"); } ); else mod(CodeMirror, "plain"); } )(function (CodeMirror, env){ if (!CodeMirror.modeURL) CodeMirror.modeURL = "../mode/%N/%N.js"; var loading = { } ; function splitCallback(cont, n){ var countDown = n; return function (){ if (--countDown == 0) cont(); } ; } function ensureDeps(mode, cont){ var deps = CodeMirror.modes[mode].dependencies; if (!deps) return cont(); var missing = [] ; for (var i = 0; i < _AN_Read_length("length", deps); ++i){ if (!CodeMirror.modes.hasOwnProperty(deps[i])) missing.push(deps[i]); } if (!_AN_Read_length("length", missing)) return cont(); var split = splitCallback(cont, _AN_Read_length("length", missing)); for (var i = 0; i < _AN_Read_length("length", missing); ++i)CodeMirror.requireMode(missing[i], split); } CodeMirror.requireMode = function (mode, cont){ if (typeof mode != "string") mode = mode.name; if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont); if (loading.hasOwnProperty(mode)) return loading[mode].push(cont); var file = _AN_Call_replace("replace", CodeMirror.modeURL, /%N/g, mode); if (env == "plain") { var script = _AN_Call_createelement("createElement", document, "script"); _AN_Write_src("src", script, false , file); var others = _AN_Call_getelementsbytagname("getElementsByTagName", document, "script")[0]; var list = loading[mode] = [cont] ; CodeMirror.on(script, "load", function (){ ensureDeps(mode, function (){ for (var i = 0; i < _AN_Read_length("length", list); ++i)list[i](); } ); } ); others.parentNode.insertBefore(script, others); } else if (env == "cjs") { require(file); cont(); } else if (env == "amd") { requirejs([file] , cont); } } ; CodeMirror.autoLoadMode = function (instance, mode){ if (!CodeMirror.modes.hasOwnProperty(mode)) CodeMirror.requireMode(mode, function (){ instance.setOption("mode", instance.getOption("mode")); } ); } ; } );