text: CodeMirror.runMode=function(string,modespec,callback,options){var mode=CodeMirror.getMode(CodeMirror.defaults,modespec);var ie=/MSIE \d/.test(navigator.userAgent);var ie_lt9=ie&&(document.documentMode==null||document.documentMode<9);if(callback.nodeType==1){var tabSize=options&&options.tabSize||CodeMirror.defaults.tabSize;var node=callback,col=0;node.innerHTML="";callback=function(text,style){if(text=="\n"){node.appendChild(document.createTextNode(ie_lt9?"\r":text));col=0;return}var content="";for(var pos=0;;){var idx=text.indexOf("	",pos);if(idx==-1){content+=text.slice(pos);col+=text.length-pos;break}else{col+=idx-pos;content+=text.slice(pos,idx);var size=tabSize-col%tabSize;col+=size;for(var i=0;i<size;++i)content+=" ";pos=idx+1}}if(style){var sp=node.appendChild(document.createElement("span"));sp.className="cm-"+style.replace(/ +/g," cm-");sp.appendChild(document.createTextNode(content))}else{node.appendChild(document.createTextNode(content))}}}var lines=CodeMirror.splitLines(string),state=CodeMirror.startState(mode);for(var i=0,e=lines.length;i<e;++i){if(i)callback("\n");var stream=new CodeMirror.StringStream(lines[i]);while(!stream.eol()){var style=mode.token(stream,state);callback(stream.current(),style,i,stream.start,state);stream.start=stream.pos}}};