define(function(require, exports, module) { /** creates globals intentionally to make things easily accessible from console **/ var net = require("ace/lib/net"); var Range = require("ace/range").Range; var util = require("demo/kitchen-sink/util"); var layout = require("demo/kitchen-sink/layout"); var modelist = require("ace/ext/modelist"); var doclist = require("demo/kitchen-sink/doclist"); var TokenTooltip = require("demo/kitchen-sink/token_tooltip").TokenTooltip; var EditSession = require("ace/edit_session").EditSession; var UndoManager = require("ace/undomanager").UndoManager; var DebugTokenizer = require("ace/tokenizer_dev").Tokenizer; var Tokenizer = require("ace/tokenizer").Tokenizer; // createEditor var splitEditor = window.splitEditor = util.createSplitEditor("editor"); var editor1 = window.editor1 = splitEditor.editor0; var editor2 = window.editor2 = splitEditor.editor1; new TokenTooltip(editor2); var timeout = null; var schedule = function() { if (timeout != null) { clearTimeout(timeout); } timeout = setTimeout(run, 800); }; var setAutorunEnabled = function(val) { if (val) editor1.on('change', schedule); else editor1.removeEventListener('change', schedule); }; util.bindCheckbox("autorunEl", setAutorunEnabled); var docEl = document.getElementById("doc"); util.fillDropdown(docEl, doclist.docs); util.bindDropdown("doc", function(value) { doclist.loadDoc(value, function(session) { if (session) { editor2.setSession(session); } }); }); var modeEl = document.getElementById("modeEl"); util.fillDropdown(modeEl, modelist.modes); var modeSessions = {}; util.bindDropdown(modeEl, function(value) { if (modeSessions[value]) { editor1.setSession(modeSessions[value]); schedule(); return; } var hp = "./lib/ace/mode/" + value + "_highlight_rules.js"; net.get(hp, function(text) { text = util.stripLeadingComments(text); var session = new EditSession(text); session.setUndoManager(new UndoManager()); modeSessions[value] = session; session.setMode("ace/mode/javascript"); editor1.setSession(modeSessions[value]); schedule(); }); }); document.getElementById("syncToMode").onclick = function() { docEl.value = modelist.modesByName[modeEl.value].desc; docEl.onchange(); run(); } document.getElementById("perfTest").onclick = function() { var lines = editor2.session.doc.getAllLines() if (!lines.length) return while (lines.length < 1000) { lines = lines.concat(lines) } var tk = new Tokenizer(currentRules); var testPerf = function(lines, tk){ var state = "start" for (var i=0, l = lines.length; i