2 if (typeof exports
== "object" && typeof module
== "object") // CommonJS
3 mod(require("../../lib/codemirror"));
4 else if (typeof define
== "function" && define
.amd
) // AMD
5 define(["../../lib/codemirror"], mod
);
6 else // Plain browser env
8 })(function(CodeMirror
) {
9 if (!CodeMirror
.modeURL
) CodeMirror
.modeURL
= "../mode/%N/%N.js";
12 function splitCallback(cont
, n
) {
14 return function() { if (--countDown
== 0) cont(); };
16 function ensureDeps(mode
, cont
) {
17 var deps
= CodeMirror
.modes
[mode
].dependencies
;
18 if (!deps
) return cont();
20 for (var i
= 0; i
< deps
.length
; ++i
) {
21 if (!CodeMirror
.modes
.hasOwnProperty(deps
[i
]))
22 missing
.push(deps
[i
]);
24 if (!missing
.length
) return cont();
25 var split
= splitCallback(cont
, missing
.length
);
26 for (var i
= 0; i
< missing
.length
; ++i
)
27 CodeMirror
.requireMode(missing
[i
], split
);
30 CodeMirror
.requireMode = function(mode
, cont
) {
31 if (typeof mode
!= "string") mode
= mode
.name
;
32 if (CodeMirror
.modes
.hasOwnProperty(mode
)) return ensureDeps(mode
, cont
);
33 if (loading
.hasOwnProperty(mode
)) return loading
[mode
].push(cont
);
35 var script
= document
.createElement("script");
36 script
.src
= CodeMirror
.modeURL
.replace(/%N/g, mode
);
37 var others
= document
.getElementsByTagName("script")[0];
38 others
.parentNode
.insertBefore(script
, others
);
39 var list
= loading
[mode
] = [cont
];
40 var count
= 0, poll
= setInterval(function() {
41 if (++count
> 100) return clearInterval(poll
);
42 if (CodeMirror
.modes
.hasOwnProperty(mode
)) {
45 ensureDeps(mode
, function() {
46 for (var i
= 0; i
< list
.length
; ++i
) list
[i
]();
52 CodeMirror
.autoLoadMode = function(instance
, mode
) {
53 if (!CodeMirror
.modes
.hasOwnProperty(mode
))
54 CodeMirror
.requireMode(mode
, function() {
55 instance
.setOption("mode", instance
.getOption("mode"));