diff --git a/build.js b/build.js index 41dfa4a6..36596107 100644 --- a/build.js +++ b/build.js @@ -73,6 +73,16 @@ "ace/mode/javascript", "ace/mode/css", ] + }, + { + name: "ace/mode/python", + exclude: [ + "ace/lib/oop", + "ace/lib/lang", + "ace/tokenizer", + "ace/range", + "ace/mode/text" + ] } ] } \ No newline at end of file diff --git a/build/ace/conf/keybindings/default_mac.js b/build/ace/conf/keybindings/default_mac.js index 4903199a..1c61910a 100644 --- a/build/ace/conf/keybindings/default_mac.js +++ b/build/ace/conf/keybindings/default_mac.js @@ -1,5 +1,5 @@ define(function() { return{selectall:"Command-A", removeline:"Command-D", gotoline:"Command-L", togglecomment:"Command-7", findnext:"Command-K", findprevious:"Command-Shift-K", find:"Command-F", replace:"Command-R", undo:"Command-Z", redo:"Command-Shift-Z|Command-Y", overwrite:"Insert", copylinesup:"Command-Option-Up", movelinesup:"Option-Up", selecttostart:"Command-Shift-Up", gotostart:"Command-Home|Command-Up", selectup:"Shift-Up", golineup:"Up", copylinesdown:"Command-Option-Down", movelinesdown:"Option-Down", selecttoend:"Command-Shift-Down", gotoend:"Command-End|Command-Down", selectdown:"Shift-Down", godown:"Down", selectwordleft:"Option-Shift-Left", gotowordleft:"Option-Left", selecttolinestart:"Command-Shift-Left", gotolinestart:"Command-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Option-Shift-Right", gotowordright:"Option-Right", selecttolineend:"Command-Shift-Right", gotolineend:"Command-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", - pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", del:"Delete", backspace:"Backspace", outdent:"Shift-Tab", indent:"Tab"} + pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", del:"Delete", backspace:"Ctrl-Backspace|Command-Backspace|Option-Backspace|Backspace", outdent:"Shift-Tab", indent:"Tab"} }); \ No newline at end of file diff --git a/build/ace/conf/keybindings/default_win.js b/build/ace/conf/keybindings/default_win.js index 5e2a5ef5..428c47b0 100644 --- a/build/ace/conf/keybindings/default_win.js +++ b/build/ace/conf/keybindings/default_win.js @@ -1,5 +1,5 @@ define(function() { return{selectall:"Ctrl-A", removeline:"Ctrl-D", gotoline:"Ctrl-L", togglecomment:"Ctrl-7", findnext:"Ctrl-K", findprevious:"Ctrl-Shift-K", find:"Ctrl-F", replace:"Ctrl-R", undo:"Ctrl-Z", redo:"Ctrl-Shift-Z|Ctrl-Y", overwrite:"Insert", copylinesup:"Ctrl-Alt-Up", movelinesup:"Alt-Up", selecttostart:"Alt-Shift-Up", gotostart:"Ctrl-Home|Ctrl-Up", selectup:"Shift-Up", golineup:"Up", copylinesdown:"Ctrl-Alt-Down", movelinesdown:"Alt-Down", selecttoend:"Alt-Shift-Down", gotoend:"Ctrl-End|Ctrl-Down", selectdown:"Shift-Down", - godown:"Down", selectwordleft:"Ctrl-Shift-Left", gotowordleft:"Ctrl-Left", selecttolinestart:"Ctrl-Shift-Left", gotolinestart:"Alt-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Ctrl-Shift-Right", gotowordright:"Ctrl-Right", selecttolineend:"Ctrl-Shift-Right", gotolineend:"Alt-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", + godown:"Down", selectwordleft:"Ctrl-Shift-Left", gotowordleft:"Ctrl-Left", selecttolinestart:"Alt-Shift-Left", gotolinestart:"Alt-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Ctrl-Shift-Right", gotowordright:"Ctrl-Right", selecttolineend:"Alt-Shift-Right", gotolineend:"Alt-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", del:"Delete", backspace:"Backspace", outdent:"Shift-Tab", indent:"Tab"} }); \ No newline at end of file diff --git a/build/ace/document.js b/build/ace/document.js index d3b0effa..681bad90 100644 --- a/build/ace/document.js +++ b/build/ace/document.js @@ -327,7 +327,7 @@ define(function(g) { }this.modified = true; b = a.start.row; var c = a.end.row, d = this.getLine(b).substring(0, a.start.column) + this.getLine(c).substring(a.end.column); - this.lines.splice(b, c - b + 1, d); + d != "" ? this.lines.splice(b, c - b + 1, d) : this.lines.splice(b, c - b + 1, ""); return a.start } }; diff --git a/build/ace/editor.js b/build/ace/editor.js index 55fe732c..731b5f77 100644 --- a/build/ace/editor.js +++ b/build/ace/editor.js @@ -6,105 +6,105 @@ (function() { var h = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.4.0"], g = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, e = /]*>\s*([\s\S]+)\s*<\/body>/im; if(!require.textStrip) { - require.textStrip = function(d) { - if(d) { - d = d.replace(g, ""); - var i = d.match(e); + require.textStrip = function(c) { + if(c) { + c = c.replace(g, ""); + var i = c.match(e); if(i) { - d = i[1] + c = i[1] } }else { - d = "" - }return d + c = "" + }return c } }if(!require.getXhr) { require.getXhr = function() { - var d, i, c; + var c, i, b; if(typeof XMLHttpRequest !== "undefined") { return new XMLHttpRequest }else { for(i = 0;i < 3;i++) { - c = h[i]; + b = h[i]; try { - d = new ActiveXObject(c) + c = new ActiveXObject(b) }catch(j) { - }if(d) { - h = [c]; + }if(c) { + h = [b]; break } } - }if(!d) { + }if(!c) { throw new Error("require.getXhr(): XMLHttpRequest not available"); - }return d + }return c } }if(!require.fetchText) { - require.fetchText = function(d, i) { - var c = require.getXhr(); - c.open("GET", d, true); - c.onreadystatechange = function() { - c.readyState === 4 && i(c.responseText) + require.fetchText = function(c, i) { + var b = require.getXhr(); + b.open("GET", c, true); + b.onreadystatechange = function() { + b.readyState === 4 && i(b.responseText) }; - c.send(null) + b.send(null) } }require.plugin({prefix:"text", require:function() { - }, newContext:function(d) { - require.mixin(d, {text:{}, textWaiting:[]}) - }, load:function(d, i) { - var c = false, j = null, a, f = d.indexOf("."), m = d.substring(0, f), n = d.substring(f + 1, d.length), b = require.s.contexts[i], k = b.textWaiting; + }, newContext:function(c) { + require.mixin(c, {text:{}, textWaiting:[]}) + }, load:function(c, i) { + var b = false, j = null, a, f = c.indexOf("."), l = c.substring(0, f), n = c.substring(f + 1, c.length), d = require.s.contexts[i], k = d.textWaiting; f = n.indexOf("!"); if(f !== -1) { - c = n.substring(f + 1, n.length); + b = n.substring(f + 1, n.length); n = n.substring(0, f); - f = c.indexOf("!"); - if(f !== -1 && c.substring(0, f) === "strip") { - j = c.substring(f + 1, c.length); - c = "strip" + f = b.indexOf("!"); + if(f !== -1 && b.substring(0, f) === "strip") { + j = b.substring(f + 1, b.length); + b = "strip" }else { - if(c !== "strip") { - j = c; - c = null + if(b !== "strip") { + j = b; + b = null } } - }a = m + "!" + n; - f = c ? a + "!" + c : a; - if(j !== null && !b.text[a]) { - b.defined[d] = b.text[a] = j + }a = l + "!" + n; + f = b ? a + "!" + b : a; + if(j !== null && !d.text[a]) { + d.defined[c] = d.text[a] = j }else { - if(!b.text[a] && !b.textWaiting[a] && !b.textWaiting[f]) { - k[f] || (k[f] = k[k.push({name:d, key:a, fullKey:f, strip:!!c}) - 1]); - i = require.nameToUrl(m, "." + n, i); - b.loaded[d] = false; + if(!d.text[a] && !d.textWaiting[a] && !d.textWaiting[f]) { + k[f] || (k[f] = k[k.push({name:c, key:a, fullKey:f, strip:!!b}) - 1]); + i = require.nameToUrl(l, "." + n, i); + d.loaded[c] = false; require.fetchText(i, function(p) { - b.text[a] = p; - b.loaded[d] = true + d.text[a] = p; + d.loaded[c] = true }) } } }, checkDeps:function() { - }, isWaiting:function(d) { - return!!d.textWaiting.length - }, orderDeps:function(d) { - var i, c, j, a = d.textWaiting; - d.textWaiting = []; - for(i = 0;c = a[i];i++) { - j = d.text[c.key]; - d.defined[c.name] = c.strip ? require.textStrip(j) : j + }, isWaiting:function(c) { + return!!c.textWaiting.length + }, orderDeps:function(c) { + var i, b, j, a = c.textWaiting; + c.textWaiting = []; + for(i = 0;b = a[i];i++) { + j = c.text[b.key]; + c.defined[b.name] = b.strip ? require.textStrip(j) : j } }}) })(); define("ace/lib/oop", ["require", "exports", "module"], function() { var h = {}; h.inherits = function(g, e) { - var d = function() { + var c = function() { }; - d.prototype = e.prototype; + c.prototype = e.prototype; g.super_ = e.prototype; - g.prototype = new d; + g.prototype = new c; g.prototype.constructor = g }; h.mixin = function(g, e) { - for(var d in e) { - g[d] = e[d] + for(var c in e) { + g[c] = e[c] } }; h.implement = function(g, e) { @@ -121,83 +121,83 @@ define("ace/lib/core", ["require", "exports", "module"], function() { h.isGecko = window.controllers && window.navigator.product === "Gecko"; h.provide = function(e) { e = e.split("."); - for(var d = window, i = 0;i < e.length;i++) { - var c = e[i]; - d[c] || (d[c] = {}); - d = d[c] + for(var c = window, i = 0;i < e.length;i++) { + var b = e[i]; + c[b] || (c[b] = {}); + c = c[b] } }; return h }); define("ace/lib/event", ["require", "exports", "module", "./core"], function(h) { var g = h("./core"), e = {}; - e.addListener = function(d, i, c) { - if(d.addEventListener) { - return d.addEventListener(i, c, false) - }if(d.attachEvent) { + e.addListener = function(c, i, b) { + if(c.addEventListener) { + return c.addEventListener(i, b, false) + }if(c.attachEvent) { var j = function() { - c(window.event) + b(window.event) }; - c.$$wrapper = j; - d.attachEvent("on" + i, j) + b.$$wrapper = j; + c.attachEvent("on" + i, j) } }; - e.removeListener = function(d, i, c) { - if(d.removeEventListener) { - return d.removeEventListener(i, c, false) - }if(d.detachEvent) { - d.detachEvent("on" + i, c.$$wrapper || c) + e.removeListener = function(c, i, b) { + if(c.removeEventListener) { + return c.removeEventListener(i, b, false) + }if(c.detachEvent) { + c.detachEvent("on" + i, b.$$wrapper || b) } }; - e.stopEvent = function(d) { - e.stopPropagation(d); - e.preventDefault(d); + e.stopEvent = function(c) { + e.stopPropagation(c); + e.preventDefault(c); return false }; - e.stopPropagation = function(d) { - if(d.stopPropagation) { - d.stopPropagation() + e.stopPropagation = function(c) { + if(c.stopPropagation) { + c.stopPropagation() }else { - d.cancelBubble = true + c.cancelBubble = true } }; - e.preventDefault = function(d) { - if(d.preventDefault) { - d.preventDefault() + e.preventDefault = function(c) { + if(c.preventDefault) { + c.preventDefault() }else { - d.returnValue = false + c.returnValue = false } }; - e.getDocumentX = function(d) { - return d.clientX ? d.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) : d.pageX + e.getDocumentX = function(c) { + return c.clientX ? c.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) : c.pageX }; - e.getDocumentY = function(d) { - return d.clientY ? d.clientY + (document.documentElement.scrollTop || document.body.scrollTop) : d.pageX + e.getDocumentY = function(c) { + return c.clientY ? c.clientY + (document.documentElement.scrollTop || document.body.scrollTop) : c.pageX }; - e.getButton = function(d) { - return d.preventDefault ? d.button : Math.max(d.button - 1, 2) + e.getButton = function(c) { + return c.preventDefault ? c.button : Math.max(c.button - 1, 2) }; - e.capture = document.documentElement.setCapture ? function(d, i, c) { + e.capture = document.documentElement.setCapture ? function(c, i, b) { function j(a) { i && i(a); - c && c(); - e.removeListener(d, "mousemove", i); - e.removeListener(d, "mouseup", j); - e.removeListener(d, "losecapture", j); - d.releaseCapture() + b && b(); + e.removeListener(c, "mousemove", i); + e.removeListener(c, "mouseup", j); + e.removeListener(c, "losecapture", j); + c.releaseCapture() } - e.addListener(d, "mousemove", i); - e.addListener(d, "mouseup", j); - e.addListener(d, "losecapture", j); - d.setCapture() - } : function(d, i, c) { + e.addListener(c, "mousemove", i); + e.addListener(c, "mouseup", j); + e.addListener(c, "losecapture", j); + c.setCapture() + } : function(c, i, b) { function j(f) { i(f); f.stopPropagation() } function a(f) { i && i(f); - c && c(); + b && b(); document.removeEventListener("mousemove", j, true); document.removeEventListener("mouseup", a, true); f.stopPropagation() @@ -205,8 +205,8 @@ define("ace/lib/event", ["require", "exports", "module", "./core"], function(h) document.addEventListener("mousemove", j, true); document.addEventListener("mouseup", a, true) }; - e.addMouseWheelListener = function(d, i) { - var c = function(j) { + e.addMouseWheelListener = function(c, i) { + var b = function(j) { if(j.wheelDelta !== undefined) { if(j.wheelDeltaX !== undefined) { j.wheelX = -j.wheelDeltaX / 8; @@ -225,39 +225,39 @@ define("ace/lib/event", ["require", "exports", "module", "./core"], function(h) } }i(j) }; - e.addListener(d, "DOMMouseScroll", c); - e.addListener(d, "mousewheel", c) + e.addListener(c, "DOMMouseScroll", b); + e.addListener(c, "mousewheel", b) }; - e.addMultiMouseDownListener = function(d, i, c, j, a) { - var f = 0, m, n, b = function(k) { + e.addMultiMouseDownListener = function(c, i, b, j, a) { + var f = 0, l, n, d = function(k) { f += 1; if(f == 1) { - m = k.clientX; + l = k.clientX; n = k.clientY; setTimeout(function() { f = 0 }, j || 600) - }if(e.getButton(k) != i || Math.abs(k.clientX - m) > 5 || Math.abs(k.clientY - n) > 5) { + }if(e.getButton(k) != i || Math.abs(k.clientX - l) > 5 || Math.abs(k.clientY - n) > 5) { f = 0 - }if(f == c) { + }if(f == b) { f = 0; a(k) }return e.preventDefault(k) }; - e.addListener(d, "mousedown", b); - g.isIE && e.addListener(d, "dblclick", b) + e.addListener(c, "mousedown", d); + g.isIE && e.addListener(c, "dblclick", d) }; - e.addKeyListener = function(d, i) { - var c = null; - e.addListener(d, "keydown", function(j) { - c = j.keyIdentifier || j.keyCode; + e.addKeyListener = function(c, i) { + var b = null; + e.addListener(c, "keydown", function(j) { + b = j.keyIdentifier || j.keyCode; return i(j) }); - g.isMac && g.isGecko && e.addListener(d, "keypress", function(j) { - if(c !== (j.keyIdentifier || j.keyCode)) { + g.isMac && g.isGecko && e.addListener(c, "keypress", function(j) { + if(b !== (j.keyIdentifier || j.keyCode)) { return i(j) }else { - c = null + b = null } }) }; @@ -274,9 +274,9 @@ define("ace/lib/lang", ["require", "exports", "module"], function() { h.arrayIndexOf = Array.prototype.indexOf ? function(g, e) { return g.indexOf(e) } : function(g, e) { - for(var d = 0;d < g.length;d++) { - if(g[d] == e) { - return d + for(var c = 0;c < g.length;c++) { + if(g[c] == e) { + return c } }return-1 }; @@ -285,13 +285,13 @@ define("ace/lib/lang", ["require", "exports", "module"], function() { }; h.copyObject = function(g) { var e = {}; - for(var d in g) { - e[d] = g[d] + for(var c in g) { + e[c] = g[c] }return e }; h.arrayToMap = function(g) { - for(var e = {}, d = 0;d < g.length;d++) { - e[g[d]] = 1 + for(var e = {}, c = 0;c < g.length;c++) { + e[g[c]] = 1 }return e }; h.escapeRegExp = function(g) { @@ -303,12 +303,12 @@ define("ace/lib/lang", ["require", "exports", "module"], function() { } }; h.deferredCall = function(g) { - var e = null, d = function() { + var e = null, c = function() { e = null; g() }; return{schedule:function() { - e || (e = setTimeout(d, 0)) + e || (e = setTimeout(c, 0)) }, call:function() { h.cancel(); g() @@ -321,91 +321,91 @@ define("ace/lib/lang", ["require", "exports", "module"], function() { }); define("ace/textinput", ["require", "exports", "module", "./lib/event"], function(h) { var g = h("./lib/event"); - return function(e, d) { + return function(e, c) { function i() { - if(!m) { - var k = c.value; + if(!l) { + var k = b.value; if(k) { if(k.charCodeAt(k.length - 1) == a.charCodeAt(0)) { - (k = k.slice(0, -1)) && d.onTextInput(k) + (k = k.slice(0, -1)) && c.onTextInput(k) }else { - d.onTextInput(k) + c.onTextInput(k) } } - }m = false; - c.value = a; - c.select() + }l = false; + b.value = a; + b.select() } - var c = document.createElement("textarea"), j = c.style; + var b = document.createElement("textarea"), j = b.style; j.position = "absolute"; j.left = "-10000px"; j.top = "-10000px"; - e.appendChild(c); + e.appendChild(b); var a = String.fromCharCode(0); i(); - var f = false, m = false, n = function() { + var f = false, l = false, n = function() { setTimeout(function() { f || i() }, 0) - }, b = function() { - d.onCompositionUpdate(c.value) + }, d = function() { + c.onCompositionUpdate(b.value) }; - g.addListener(c, "keypress", n); - g.addListener(c, "textInput", n); - g.addListener(c, "paste", n); - g.addListener(c, "propertychange", n); - g.addListener(c, "copy", function() { - m = true; - c.value = d.getCopyText(); - c.select(); - m = true; + g.addListener(b, "keypress", n); + g.addListener(b, "textInput", n); + g.addListener(b, "paste", n); + g.addListener(b, "propertychange", n); + g.addListener(b, "copy", function() { + l = true; + b.value = c.getCopyText(); + b.select(); + l = true; setTimeout(i, 0) }); - g.addListener(c, "cut", function() { - m = true; - c.value = d.getCopyText(); - d.onCut(); - c.select(); + g.addListener(b, "cut", function() { + l = true; + b.value = c.getCopyText(); + c.onCut(); + b.select(); setTimeout(i, 0) }); - g.addListener(c, "compositionstart", function() { + g.addListener(b, "compositionstart", function() { f = true; i(); - c.value = ""; - d.onCompositionStart(); - setTimeout(b, 0) + b.value = ""; + c.onCompositionStart(); + setTimeout(d, 0) }); - g.addListener(c, "compositionupdate", b); - g.addListener(c, "compositionend", function() { + g.addListener(b, "compositionupdate", d); + g.addListener(b, "compositionend", function() { f = false; - d.onCompositionEnd(); + c.onCompositionEnd(); n() }); - g.addListener(c, "blur", function() { - d.onBlur() + g.addListener(b, "blur", function() { + c.onBlur() }); - g.addListener(c, "focus", function() { - d.onFocus(); - c.select() + g.addListener(b, "focus", function() { + c.onFocus(); + b.select() }); this.focus = function() { - d.onFocus(); - c.select(); - c.focus() + c.onFocus(); + b.select(); + b.focus() }; this.blur = function() { - c.blur() + b.blur() } } }); define("ace/conf/keybindings/default_mac", ["require", "exports", "module"], function() { return{selectall:"Command-A", removeline:"Command-D", gotoline:"Command-L", togglecomment:"Command-7", findnext:"Command-K", findprevious:"Command-Shift-K", find:"Command-F", replace:"Command-R", undo:"Command-Z", redo:"Command-Shift-Z|Command-Y", overwrite:"Insert", copylinesup:"Command-Option-Up", movelinesup:"Option-Up", selecttostart:"Command-Shift-Up", gotostart:"Command-Home|Command-Up", selectup:"Shift-Up", golineup:"Up", copylinesdown:"Command-Option-Down", movelinesdown:"Option-Down", selecttoend:"Command-Shift-Down", gotoend:"Command-End|Command-Down", selectdown:"Shift-Down", godown:"Down", selectwordleft:"Option-Shift-Left", gotowordleft:"Option-Left", selecttolinestart:"Command-Shift-Left", gotolinestart:"Command-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Option-Shift-Right", gotowordright:"Option-Right", selecttolineend:"Command-Shift-Right", gotolineend:"Command-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", - pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", del:"Delete", backspace:"Backspace", outdent:"Shift-Tab", indent:"Tab"} + pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", del:"Delete", backspace:"Ctrl-Backspace|Command-Backspace|Option-Backspace|Backspace", outdent:"Shift-Tab", indent:"Tab"} }); define("ace/conf/keybindings/default_win", ["require", "exports", "module"], function() { return{selectall:"Ctrl-A", removeline:"Ctrl-D", gotoline:"Ctrl-L", togglecomment:"Ctrl-7", findnext:"Ctrl-K", findprevious:"Ctrl-Shift-K", find:"Ctrl-F", replace:"Ctrl-R", undo:"Ctrl-Z", redo:"Ctrl-Shift-Z|Ctrl-Y", overwrite:"Insert", copylinesup:"Ctrl-Alt-Up", movelinesup:"Alt-Up", selecttostart:"Alt-Shift-Up", gotostart:"Ctrl-Home|Ctrl-Up", selectup:"Shift-Up", golineup:"Up", copylinesdown:"Ctrl-Alt-Down", movelinesdown:"Alt-Down", selecttoend:"Alt-Shift-Down", gotoend:"Ctrl-End|Ctrl-Down", selectdown:"Shift-Down", - godown:"Down", selectwordleft:"Ctrl-Shift-Left", gotowordleft:"Ctrl-Left", selecttolinestart:"Ctrl-Shift-Left", gotolinestart:"Alt-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Ctrl-Shift-Right", gotowordright:"Ctrl-Right", selecttolineend:"Ctrl-Shift-Right", gotolineend:"Alt-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", + godown:"Down", selectwordleft:"Ctrl-Shift-Left", gotowordleft:"Ctrl-Left", selecttolinestart:"Alt-Shift-Left", gotolinestart:"Alt-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Ctrl-Shift-Right", gotowordright:"Ctrl-Right", selecttolineend:"Alt-Shift-Right", gotolineend:"Alt-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", del:"Delete", backspace:"Backspace", outdent:"Shift-Tab", indent:"Tab"} }); define("ace/plugin_manager", ["require", "exports", "module"], function() { @@ -566,54 +566,54 @@ define("ace/commands/default_commands", ["require", "exports", "module", "../plu }) }); define("ace/keybinding", ["require", "exports", "module", "./lib/core", "./lib/event", "./conf/keybindings/default_mac", "./conf/keybindings/default_win", "./plugin_manager", "./commands/default_commands"], function(h) { - var g = h("./lib/core"), e = h("./lib/event"), d = h("./conf/keybindings/default_mac"), i = h("./conf/keybindings/default_win"), c = h("./plugin_manager"); + var g = h("./lib/core"), e = h("./lib/event"), c = h("./conf/keybindings/default_mac"), i = h("./conf/keybindings/default_win"), b = h("./plugin_manager"); h("./commands/default_commands"); h = function(j, a, f) { this.setConfig(f); - var m = this; + var l = this; e.addKeyListener(j, function(n) { - var b = (m.config.reverse[0 | (n.ctrlKey ? 1 : 0) | (n.altKey ? 2 : 0) | (n.shiftKey ? 4 : 0) | (n.metaKey ? 8 : 0)] || {})[(m.keyNames[n.keyCode] || String.fromCharCode(n.keyCode)).toLowerCase()]; - if(b = c.commands[b]) { - b(a, a.getSelection()); + var d = (l.config.reverse[0 | (n.ctrlKey ? 1 : 0) | (n.altKey ? 2 : 0) | (n.shiftKey ? 4 : 0) | (n.metaKey ? 8 : 0)] || {})[(l.keyNames[n.keyCode] || String.fromCharCode(n.keyCode)).toLowerCase()]; + if(d = b.commands[d]) { + d(a, a.getSelection()); return e.stopEvent(n) } }) }; (function() { - function j(m, n, b, k) { - return(k && m.toLowerCase() || m).replace(/(?:^\s+|\n|\s+$)/g, "").split(new RegExp("[\\s ]*" + n + "[\\s ]*", "g"), b || 999) + function j(l, n, d, k) { + return(k && l.toLowerCase() || l).replace(/(?:^\s+|\n|\s+$)/g, "").split(new RegExp("[\\s ]*" + n + "[\\s ]*", "g"), d || 999) } - function a(m, n, b) { + function a(l, n, d) { var k, p = 0; - m = j(m, "\\-", null, true); - for(var o = 0, l = m.length;o < l;++o) { - if(this.keyMods[m[o]]) { - p |= this.keyMods[m[o]] + l = j(l, "\\-", null, true); + for(var o = 0, m = l.length;o < m;++o) { + if(this.keyMods[l[o]]) { + p |= this.keyMods[l[o]] }else { - k = m[o] || "-" + k = l[o] || "-" } - }(b[p] || (b[p] = {}))[k] = n; - return b + }(d[p] || (d[p] = {}))[k] = n; + return d } - function f(m, n) { - var b, k, p, o, l = {}; - for(b in m) { - o = m[b]; + function f(l, n) { + var d, k, p, o, m = {}; + for(d in l) { + o = l[d]; if(n && typeof o == "string") { o = o.split(n); k = 0; for(p = o.length;k < p;++k) { - a.call(this, o[k], b, l) + a.call(this, o[k], d, m) } }else { - a.call(this, o, b, l) + a.call(this, o, d, m) } - }return l + }return m } this.keyMods = {ctrl:1, alt:2, option:2, shift:4, meta:8, command:8}; this.keyNames = {"8":"Backspace", "9":"Tab", "13":"Enter", "27":"Esc", "32":"Space", "33":"PageUp", "34":"PageDown", "35":"End", "36":"Home", "37":"Left", "38":"Up", "39":"Right", "40":"Down", "45":"Insert", "46":"Delete", "107":"+", "112":"F1", "113":"F2", "114":"F3", "115":"F4", "116":"F5", "117":"F6", "118":"F7", "119":"F8", "120":"F9", "121":"F10", "122":"F11", "123":"F12"}; - this.setConfig = function(m) { - this.config = m || (g.isMac ? d : i); + this.setConfig = function(l) { + this.config = l || (g.isMac ? c : i); if(typeof this.config.reverse == "undefined") { this.config.reverse = f.call(this, this.config, "|") } @@ -624,36 +624,36 @@ define("ace/keybinding", ["require", "exports", "module", "./lib/core", "./lib/e define("ace/event_emitter", ["require", "exports", "module", "./lib/lang"], function(h) { var g = h("./lib/lang"); h = {}; - h.$dispatchEvent = function(e, d) { + h.$dispatchEvent = function(e, c) { this.$eventRegistry = this.$eventRegistry || {}; var i = this.$eventRegistry[e]; if(i && i.length) { - d = d || {}; - d.type = e; + c = c || {}; + c.type = e; for(e = 0;e < i.length;e++) { - i[e](d) + i[e](c) } } }; - h.on = h.addEventListener = function(e, d) { + h.on = h.addEventListener = function(e, c) { this.$eventRegistry = this.$eventRegistry || {}; var i = this.$eventRegistry[e]; i || (i = this.$eventRegistry[e] = []); - g.arrayIndexOf(i, d) == -1 && i.push(d) + g.arrayIndexOf(i, c) == -1 && i.push(c) }; - h.removeEventListener = function(e, d) { + h.removeEventListener = function(e, c) { this.$eventRegistry = this.$eventRegistry || {}; if(e = this.$eventRegistry[e]) { - d = g.arrayIndexOf(e, d); - d !== -1 && e.splice(d, 1) + c = g.arrayIndexOf(e, c); + c !== -1 && e.splice(c, 1) } }; return h }); define("ace/range", ["require", "exports", "module"], function() { - var h = function(g, e, d, i) { + var h = function(g, e, c, i) { this.start = {row:g, column:e}; - this.end = {row:d, column:i} + this.end = {row:c, column:i} }; (function() { this.toString = function() { @@ -679,26 +679,26 @@ define("ace/range", ["require", "exports", "module"], function() { }; this.clipRows = function(g, e) { if(this.end.row > e) { - var d = {row:e + 1, column:0} + var c = {row:e + 1, column:0} }if(this.start.row > e) { var i = {row:e + 1, column:0} }if(this.start.row < g) { i = {row:g, column:0} }if(this.end.row < g) { - d = {row:g, column:0} - }return h.fromPoints(i || this.start, d || this.end) + c = {row:g, column:0} + }return h.fromPoints(i || this.start, c || this.end) }; this.extend = function(g, e) { - var d = this.compare(g, e); - if(d == 0) { + var c = this.compare(g, e); + if(c == 0) { return this }else { - if(d == -1) { + if(c == -1) { var i = {row:g, column:e} }else { - var c = {row:g, column:e} + var b = {row:g, column:e} } - }return h.fromPoints(i || this.start, c || this.end) + }return h.fromPoints(i || this.start, b || this.end) }; this.isEmpty = function() { return this.start.row == this.end.row && this.start.column == this.end.column @@ -719,14 +719,14 @@ define("ace/range", ["require", "exports", "module"], function() { return h }); define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lang", "./event_emitter", "./range"], function(h) { - var g = h("./lib/oop"), e = h("./lib/lang"), d = h("./event_emitter"), i = h("./range"); - h = function(c) { - this.doc = c; + var g = h("./lib/oop"), e = h("./lib/lang"), c = h("./event_emitter"), i = h("./range"); + h = function(b) { + this.doc = b; this.clearSelection(); this.selectionLead = {row:0, column:0} }; (function() { - g.implement(this, d); + g.implement(this, c); this.isEmpty = function() { return!this.selectionAnchor || this.selectionAnchor.row == this.selectionLead.row && this.selectionAnchor.column == this.selectionLead.column }; @@ -738,15 +738,15 @@ define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lan this.getCursor = function() { return this.selectionLead }; - this.setSelectionAnchor = function(c, j) { - c = this.$clipPositionToDocument(c, j); + this.setSelectionAnchor = function(b, j) { + b = this.$clipPositionToDocument(b, j); if(this.selectionAnchor) { - if(this.selectionAnchor.row !== c.row || this.selectionAnchor.column !== c.column) { - this.selectionAnchor = c; + if(this.selectionAnchor.row !== b.row || this.selectionAnchor.column !== b.column) { + this.selectionAnchor = b; this.$dispatchEvent("changeSelection", {}) } }else { - this.selectionAnchor = c; + this.selectionAnchor = b; this.$dispatchEvent("changeSelection", {}) } }; @@ -756,27 +756,27 @@ define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lan this.getSelectionLead = function() { return this.$clone(this.selectionLead) }; - this.shiftSelection = function(c) { + this.shiftSelection = function(b) { if(this.isEmpty()) { - this.moveCursorTo(this.selectionLead.row, this.selectionLead.column + c) + this.moveCursorTo(this.selectionLead.row, this.selectionLead.column + b) }else { var j = this.getSelectionAnchor(), a = this.getSelectionLead(), f = this.isBackwards(); if(!f || j.column !== 0) { - this.setSelectionAnchor(j.row, j.column + c) + this.setSelectionAnchor(j.row, j.column + b) }if(f || a.column !== 0) { this.$moveSelection(function() { - this.moveCursorTo(a.row, a.column + c) + this.moveCursorTo(a.row, a.column + b) }) } } }; this.isBackwards = function() { - var c = this.selectionAnchor || this.selectionLead, j = this.selectionLead; - return c.row > j.row || c.row == j.row && c.column > j.column + var b = this.selectionAnchor || this.selectionLead, j = this.selectionLead; + return b.row > j.row || b.row == j.row && b.column > j.column }; this.getRange = function() { - var c = this.selectionAnchor || this.selectionLead, j = this.selectionLead; - return this.isBackwards() ? i.fromPoints(j, c) : i.fromPoints(c, j) + var b = this.selectionAnchor || this.selectionLead, j = this.selectionLead; + return this.isBackwards() ? i.fromPoints(j, b) : i.fromPoints(b, j) }; this.clearSelection = function() { if(this.selectionAnchor) { @@ -785,40 +785,40 @@ define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lan } }; this.selectAll = function() { - var c = this.doc.getLength() - 1; - this.setSelectionAnchor(c, this.doc.getLine(c).length); + var b = this.doc.getLength() - 1; + this.setSelectionAnchor(b, this.doc.getLine(b).length); this.$moveSelection(function() { this.moveCursorTo(0, 0) }) }; - this.setSelectionRange = function(c, j) { + this.setSelectionRange = function(b, j) { if(j) { - this.setSelectionAnchor(c.end.row, c.end.column); - this.selectTo(c.start.row, c.start.column) + this.setSelectionAnchor(b.end.row, b.end.column); + this.selectTo(b.start.row, b.start.column) }else { - this.setSelectionAnchor(c.start.row, c.start.column); - this.selectTo(c.end.row, c.end.column) + this.setSelectionAnchor(b.start.row, b.start.column); + this.selectTo(b.end.row, b.end.column) } }; - this.$moveSelection = function(c) { + this.$moveSelection = function(b) { var j = false; if(!this.selectionAnchor) { j = true; this.selectionAnchor = this.$clone(this.selectionLead) }var a = this.$clone(this.selectionLead); - c.call(this); + b.call(this); if(a.row !== this.selectionLead.row || a.column !== this.selectionLead.column) { j = true }j && this.$dispatchEvent("changeSelection", {}) }; - this.selectTo = function(c, j) { + this.selectTo = function(b, j) { this.$moveSelection(function() { - this.moveCursorTo(c, j) + this.moveCursorTo(b, j) }) }; - this.selectToPosition = function(c) { + this.selectToPosition = function(b) { this.$moveSelection(function() { - this.moveCursorToPosition(c) + this.moveCursorToPosition(b) }) }; this.selectUp = function() { @@ -852,8 +852,8 @@ define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lan this.$moveSelection(this.moveCursorWordLeft) }; this.selectWord = function() { - var c = this.selectionLead; - this.setSelectionRange(this.doc.getWordRange(c.row, c.column)) + var b = this.selectionLead; + this.setSelectionRange(this.doc.getWordRange(b.row, b.column)) }; this.selectLine = function() { this.setSelectionAnchor(this.selectionLead.row, 0); @@ -882,25 +882,25 @@ define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lan } }; this.moveCursorLineStart = function() { - var c = this.selectionLead.row, j = this.selectionLead.column, a = this.doc.getLine(c).slice(0, j).match(/^\s*/); + var b = this.selectionLead.row, j = this.selectionLead.column, a = this.doc.getLine(b).slice(0, j).match(/^\s*/); if(a[0].length == 0) { - this.moveCursorTo(c, this.doc.getLine(c).match(/^\s*/)[0].length) + this.moveCursorTo(b, this.doc.getLine(b).match(/^\s*/)[0].length) }else { - a[0].length >= j ? this.moveCursorTo(c, 0) : this.moveCursorTo(c, a[0].length) + a[0].length >= j ? this.moveCursorTo(b, 0) : this.moveCursorTo(b, a[0].length) } }; this.moveCursorLineEnd = function() { this.moveCursorTo(this.selectionLead.row, this.doc.getLine(this.selectionLead.row).length) }; this.moveCursorFileEnd = function() { - var c = this.doc.getLength() - 1, j = this.doc.getLine(c).length; - this.moveCursorTo(c, j) + var b = this.doc.getLength() - 1, j = this.doc.getLine(b).length; + this.moveCursorTo(b, j) }; this.moveCursorFileStart = function() { this.moveCursorTo(0, 0) }; this.moveCursorWordRight = function() { - var c = this.selectionLead.row, j = this.selectionLead.column, a = this.doc.getLine(c), f = a.substring(j); + var b = this.selectionLead.row, j = this.selectionLead.column, a = this.doc.getLine(b), f = a.substring(j); this.doc.nonTokenRe.lastIndex = 0; this.doc.tokenRe.lastIndex = 0; if(j == a.length) { @@ -914,11 +914,11 @@ define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lan j += this.doc.tokenRe.lastIndex; this.doc.tokenRe.lastIndex = 0 } - }this.moveCursorTo(c, j) + }this.moveCursorTo(b, j) } }; this.moveCursorWordLeft = function() { - var c = this.selectionLead.row, j = this.selectionLead.column, a = this.doc.getLine(c); + var b = this.selectionLead.row, j = this.selectionLead.column, a = this.doc.getLine(b); a = e.stringReverse(a.substring(0, j)); this.doc.nonTokenRe.lastIndex = 0; this.doc.tokenRe.lastIndex = 0; @@ -933,42 +933,42 @@ define("ace/selection", ["require", "exports", "module", "./lib/oop", "./lib/lan j -= this.doc.tokenRe.lastIndex; this.doc.tokenRe.lastIndex = 0 } - }this.moveCursorTo(c, j) + }this.moveCursorTo(b, j) } }; - this.moveCursorBy = function(c, j) { - this.moveCursorTo(this.selectionLead.row + c, this.selectionLead.column + j) + this.moveCursorBy = function(b, j) { + this.moveCursorTo(this.selectionLead.row + b, this.selectionLead.column + j) }; - this.moveCursorToPosition = function(c) { - this.moveCursorTo(c.row, c.column) + this.moveCursorToPosition = function(b) { + this.moveCursorTo(b.row, b.column) }; - this.moveCursorTo = function(c, j) { - c = this.$clipPositionToDocument(c, j); - if(c.row !== this.selectionLead.row || c.column !== this.selectionLead.column) { - this.selectionLead = c; + this.moveCursorTo = function(b, j) { + b = this.$clipPositionToDocument(b, j); + if(b.row !== this.selectionLead.row || b.column !== this.selectionLead.column) { + this.selectionLead = b; this.$dispatchEvent("changeCursor", {data:this.getCursor()}) } }; this.moveCursorUp = function() { this.moveCursorBy(-1, 0) }; - this.$clipPositionToDocument = function(c, j) { + this.$clipPositionToDocument = function(b, j) { var a = {}; - if(c >= this.doc.getLength()) { + if(b >= this.doc.getLength()) { a.row = Math.max(0, this.doc.getLength() - 1); a.column = this.doc.getLine(a.row).length }else { - if(c < 0) { + if(b < 0) { a.row = 0; a.column = 0 }else { - a.row = c; + a.row = b; a.column = Math.min(this.doc.getLine(a.row).length, Math.max(0, j)) } }return a }; - this.$clone = function(c) { - return{row:c.row, column:c.column} + this.$clone = function(b) { + return{row:b.row, column:b.column} } }).call(h.prototype); return h @@ -979,36 +979,36 @@ define("ace/tokenizer", ["require", "exports", "module"], function() { this.regExps = {}; for(var e in this.rules) { g = this.rules[e]; - for(var d = [], i = 0;i < g.length;i++) { - d.push(g[i].regex) - }this.regExps[e] = new RegExp("(?:(" + d.join(")|(") + ")|(.))", "g") + for(var c = [], i = 0;i < g.length;i++) { + c.push(g[i].regex) + }this.regExps[e] = new RegExp("(?:(" + c.join(")|(") + ")|(.))", "g") } }; (function() { this.getLineTokens = function(g, e) { e = e; - var d = this.rules[e], i = this.regExps[e]; + var c = this.rules[e], i = this.regExps[e]; i.lastIndex = 0; - for(var c, j = [], a = 0, f = {type:null, value:""};c = i.exec(g);) { - var m = "text", n = c[0]; + for(var b, j = [], a = 0, f = {type:null, value:""};b = i.exec(g);) { + var l = "text", n = b[0]; if(i.lastIndex == a) { throw new Error("tokenizer error"); }a = i.lastIndex; - window.LOG && console.log(e, c); - for(var b = 0;b < d.length;b++) { - if(c[b + 1]) { - m = typeof d[b].token == "function" ? d[b].token(c[0]) : d[b].token; - if(d[b].next && d[b].next !== e) { - e = d[b].next; - d = this.rules[e]; + window.LOG && console.log(e, b); + for(var d = 0;d < c.length;d++) { + if(b[d + 1]) { + l = typeof c[d].token == "function" ? c[d].token(b[0]) : c[d].token; + if(c[d].next && c[d].next !== e) { + e = c[d].next; + c = this.rules[e]; a = i.lastIndex; i = this.regExps[e]; i.lastIndex = a }break } - }if(f.type !== m) { + }if(f.type !== l) { f.type && j.push(f); - f = {type:m, value:n} + f = {type:l, value:n} }else { f.value += n } @@ -1025,11 +1025,11 @@ define("ace/mode/text_highlight_rules", ["require", "exports", "module"], functi }; (function() { this.addRules = function(g, e) { - for(var d in g) { - for(var i = g[d], c = 0;c < i.length;c++) { - var j = i[c]; - j.next = j.next ? e + j.next : e + d - }this.$rules[e + d] = i + for(var c in g) { + for(var i = g[c], b = 0;b < i.length;b++) { + var j = i[b]; + j.next = j.next ? e + j.next : e + c + }this.$rules[e + c] = i } }; this.getRules = function() { @@ -1058,16 +1058,16 @@ define("ace/mode/text", ["require", "exports", "module", "../tokenizer", "./text }; this.autoOutdent = function() { }; - this.$getIndent = function(d) { - if(d = d.match(/^(\s+)/)) { - return d[1] + this.$getIndent = function(c) { + if(c = c.match(/^(\s+)/)) { + return c[1] }return"" } }).call(h.prototype); return h }); define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang", "./event_emitter", "./selection", "./mode/text", "./range"], function(h) { - var g = h("./lib/oop"), e = h("./lib/lang"), d = h("./event_emitter"), i = h("./selection"), c = h("./mode/text"), j = h("./range"); + var g = h("./lib/oop"), e = h("./lib/lang"), c = h("./event_emitter"), i = h("./selection"), b = h("./mode/text"), j = h("./range"); h = function(a, f) { this.modified = true; this.lines = []; @@ -1078,7 +1078,7 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang e.isArray(a) ? this.$insertLines(0, a) : this.$insert({row:0, column:0}, a) }; (function() { - g.implement(this, d); + g.implement(this, c); this.$undoManager = null; this.$split = function(a) { return a.split(/\r\n|\r|\n/) @@ -1167,20 +1167,20 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang this.tokenRe = /^[\w\d]+/g; this.nonTokenRe = /^[^\w\d]+/g; this.getWordRange = function(a, f) { - var m = this.getLine(a), n = false; + var l = this.getLine(a), n = false; if(f > 0) { - n = !!m.charAt(f - 1).match(this.tokenRe) - }n || (n = !!m.charAt(f).match(this.tokenRe)); + n = !!l.charAt(f - 1).match(this.tokenRe) + }n || (n = !!l.charAt(f).match(this.tokenRe)); n = n ? this.tokenRe : this.nonTokenRe; - var b = f; - if(b > 0) { + var d = f; + if(d > 0) { do { - b-- - }while(b >= 0 && m.charAt(b).match(n)); - b++ - }for(f = f;f < m.length && m.charAt(f).match(n);) { + d-- + }while(d >= 0 && l.charAt(d).match(n)); + d++ + }for(f = f;f < l.length && l.charAt(f).match(n);) { f++ - }return new j(a, b, a, f) + }return new j(a, d, a, f) }; this.$getNewLineCharacter = function() { switch(this.$newLineMode) { @@ -1211,7 +1211,7 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang }; this.getMode = function() { if(!this.$mode) { - this.$mode = new c + this.$mode = new b }return this.$mode }; this.$scrollTop = 0; @@ -1235,16 +1235,16 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang this.$computeWidth = function() { if(this.modified) { this.modified = false; - for(var a = this.lines, f = 0, m = 0, n = this.getTabSize(), b = 0;b < a.length;b++) { - var k = a[b].length; + for(var a = this.lines, f = 0, l = 0, n = this.getTabSize(), d = 0;d < a.length;d++) { + var k = a[d].length; f = Math.max(f, k); - a[b].replace("\t", function(p) { + a[d].replace("\t", function(p) { k += n - 1; return p }); - m = Math.max(m, k) + l = Math.max(l, k) }this.width = f; - this.screenWith = m + this.screenWith = l } }; this.getLine = function(a) { @@ -1284,19 +1284,19 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang }; this.$brackets = {")":"(", "(":")", "]":"[", "[":"]", "{":"}", "}":"{"}; this.$findOpeningBracket = function(a, f) { - var m = this.$brackets[a], n = f.column - 2; + var l = this.$brackets[a], n = f.column - 2; f = f.row; - for(var b = 1, k = this.getLine(f);;) { + for(var d = 1, k = this.getLine(f);;) { for(;n >= 0;) { var p = k.charAt(n); - if(p == m) { - b -= 1; - if(b == 0) { + if(p == l) { + d -= 1; + if(d == 0) { return{row:f, column:n} } }else { if(p == a) { - b += 1 + d += 1 } }n -= 1 }f -= 1; @@ -1307,19 +1307,19 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang }return null }; this.$findClosingBracket = function(a, f) { - var m = this.$brackets[a], n = f.column; + var l = this.$brackets[a], n = f.column; f = f.row; - for(var b = 1, k = this.getLine(f), p = this.getLength();;) { + for(var d = 1, k = this.getLine(f), p = this.getLength();;) { for(;n < k.length;) { var o = k.charAt(n); - if(o == m) { - b -= 1; - if(b == 0) { + if(o == l) { + d -= 1; + if(d == 0) { return{row:f, column:n} } }else { if(o == a) { - b += 1 + d += 1 } }n += 1 }f += 1; @@ -1329,49 +1329,49 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang n = 0 }return null }; - this.insert = function(a, f, m) { - f = this.$insert(a, f, m); + this.insert = function(a, f, l) { + f = this.$insert(a, f, l); this.fireChangeEvent(a.row, a.row == f.row ? a.row : undefined); return f }; - this.$insertLines = function(a, f, m) { + this.$insertLines = function(a, f, l) { if(f.length != 0) { var n = [a, 0]; n.push.apply(n, f); this.lines.splice.apply(this.lines, n); - if(!m && this.$undoManager) { - m = this.$getNewLineCharacter(); - this.$deltas.push({action:"insertText", range:new j(a, 0, a + f.length, 0), text:f.join(m) + m}); + if(!l && this.$undoManager) { + l = this.$getNewLineCharacter(); + this.$deltas.push({action:"insertText", range:new j(a, 0, a + f.length, 0), text:f.join(l) + l}); this.$informUndoManager.schedule() } } }; - this.$insert = function(a, f, m) { + this.$insert = function(a, f, l) { if(f.length == 0) { return a }this.modified = true; this.lines.length <= 1 && this.$detectNewLine(f); var n = this.$split(f); if(this.$isNewLine(f)) { - var b = this.lines[a.row] || ""; - this.lines[a.row] = b.substring(0, a.column); - this.lines.splice(a.row + 1, 0, b.substring(a.column)); + var d = this.lines[a.row] || ""; + this.lines[a.row] = d.substring(0, a.column); + this.lines.splice(a.row + 1, 0, d.substring(a.column)); n = {row:a.row + 1, column:0} }else { if(n.length == 1) { - b = this.lines[a.row] || ""; - this.lines[a.row] = b.substring(0, a.column) + f + b.substring(a.column); + d = this.lines[a.row] || ""; + this.lines[a.row] = d.substring(0, a.column) + f + d.substring(a.column); n = {row:a.row, column:a.column + f.length} }else { - b = this.lines[a.row] || ""; - var k = b.substring(0, a.column) + n[0]; - b = n[n.length - 1] + b.substring(a.column); + d = this.lines[a.row] || ""; + var k = d.substring(0, a.column) + n[0]; + d = n[n.length - 1] + d.substring(a.column); this.lines[a.row] = k; - this.$insertLines(a.row + 1, [b], true); + this.$insertLines(a.row + 1, [d], true); n.length > 2 && this.$insertLines(a.row + 1, n.slice(1, -1), true); n = {row:a.row + n.length - 1, column:n[n.length - 1].length} } - }if(!m && this.$undoManager) { + }if(!l && this.$undoManager) { this.$deltas.push({action:"insertText", range:j.fromPoints(a, n), text:f}); this.$informUndoManager.schedule() }return n @@ -1394,20 +1394,20 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang this.$informUndoManager.schedule() }this.modified = true; f = a.start.row; - var m = a.end.row, n = this.getLine(f).substring(0, a.start.column) + this.getLine(m).substring(a.end.column); - this.lines.splice(f, m - f + 1, n); + var l = a.end.row, n = this.getLine(f).substring(0, a.start.column) + this.getLine(l).substring(a.end.column); + n != "" ? this.lines.splice(f, l - f + 1, n) : this.lines.splice(f, l - f + 1, ""); return a.start } }; this.undoChanges = function(a) { this.selection.clearSelection(); for(var f = a.length - 1;f >= 0;f--) { - var m = a[f]; - if(m.action == "insertText") { - this.remove(m.range, true); - this.selection.moveCursorToPosition(m.range.start) + var l = a[f]; + if(l.action == "insertText") { + this.remove(l.range, true); + this.selection.moveCursorToPosition(l.range.start) }else { - this.insert(m.range.start, m.text, true); + this.insert(l.range.start, l.text, true); this.selection.clearSelection() } } @@ -1415,40 +1415,40 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang this.redoChanges = function(a) { this.selection.clearSelection(); for(var f = 0;f < a.length;f++) { - var m = a[f]; - if(m.action == "insertText") { - this.insert(m.range.start, m.text, true); - this.selection.setSelectionRange(m.range) + var l = a[f]; + if(l.action == "insertText") { + this.insert(l.range.start, l.text, true); + this.selection.setSelectionRange(l.range) }else { - this.remove(m.range, true); - this.selection.moveCursorToPosition(m.range.start) + this.remove(l.range, true); + this.selection.moveCursorToPosition(l.range.start) } } }; this.replace = function(a, f) { this.$remove(a); f = f ? this.$insert(a.start, f) : a.start; - var m = a.end.column == 0 ? a.end.column - 1 : a.end.column; - this.fireChangeEvent(a.start.row, m == f.row ? m : undefined); + var l = a.end.column == 0 ? a.end.column - 1 : a.end.column; + this.fireChangeEvent(a.start.row, l == f.row ? l : undefined); return f }; this.indentRows = function(a, f) { f.replace("\t", this.getTabString()); - for(var m = a.start.row;m <= a.end.row;m++) { - this.$insert({row:m, column:0}, f) + for(var l = a.start.row;l <= a.end.row;l++) { + this.$insert({row:l, column:0}, f) }this.fireChangeEvent(a.start.row, a.end.row); return f.length }; this.outdentRows = function(a) { - for(var f = new j(0, 0, 0, 0), m = this.getTabSize(), n = a.start.row;n <= a.end.row;++n) { - var b = this.getLine(n); + for(var f = new j(0, 0, 0, 0), l = this.getTabSize(), n = a.start.row;n <= a.end.row;++n) { + var d = this.getLine(n); f.start.row = n; f.end.row = n; - for(var k = 0;k < m;++k) { - if(b.charAt(k) != " ") { + for(var k = 0;k < l;++k) { + if(d.charAt(k) != " ") { break } - }if(k < m && b.charAt(k) == "\t") { + }if(k < l && d.charAt(k) == "\t") { f.start.column = k; f.end.column = k + 1 }else { @@ -1465,26 +1465,26 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang this.moveLinesUp = function(a, f) { if(a <= 0) { return 0 - }var m = this.lines.slice(a, f + 1); + }var l = this.lines.slice(a, f + 1); this.$remove(new j(a, 0, f + 1, 0)); - this.$insertLines(a - 1, m); + this.$insertLines(a - 1, l); this.fireChangeEvent(a - 1, f); return-1 }; this.moveLinesDown = function(a, f) { if(f >= this.lines.length - 1) { return 0 - }var m = this.lines.slice(a, f + 1); + }var l = this.lines.slice(a, f + 1); this.$remove(new j(a, 0, f + 1, 0)); - this.$insertLines(a + 1, m); + this.$insertLines(a + 1, l); this.fireChangeEvent(a, f + 1); return 1 }; this.duplicateLines = function(a, f) { a = this.$clipRowToDocument(a); f = this.$clipRowToDocument(f); - var m = this.getLines(a, f); - this.$insertLines(a, m); + var l = this.getLines(a, f); + this.$insertLines(a, l); f = f - a + 1; this.fireChangeEvent(a); return f @@ -1493,14 +1493,14 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang return Math.max(0, Math.min(a, this.lines.length - 1)) }; this.documentToScreenColumn = function(a, f) { - var m = this.getTabSize(), n = 0; + var l = this.getTabSize(), n = 0; f = f; a = this.getLine(a).split("\t"); - for(var b = 0;b < a.length;b++) { - var k = a[b].length; + for(var d = 0;d < a.length;d++) { + var k = a[d].length; if(f > k) { f -= k + 1; - n += k + m + n += k + l }else { n += f; break @@ -1508,13 +1508,13 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang }return n }; this.screenToDocumentColumn = function(a, f) { - var m = this.getTabSize(), n = 0; + var l = this.getTabSize(), n = 0; f = f; a = this.getLine(a).split("\t"); - for(var b = 0;b < a.length;b++) { - var k = a[b].length; - if(f >= k + m) { - f -= k + m; + for(var d = 0;d < a.length;d++) { + var k = a[d].length; + if(f >= k + l) { + f -= k + l; n += k + 1 }else { n += f > k ? k : f; @@ -1526,56 +1526,56 @@ define("ace/document", ["require", "exports", "module", "./lib/oop", "./lib/lang return h }); define("ace/search", ["require", "exports", "module", "./lib/lang", "./lib/oop", "./range"], function(h) { - var g = h("./lib/lang"), e = h("./lib/oop"), d = h("./range"), i = function() { + var g = h("./lib/lang"), e = h("./lib/oop"), c = h("./range"), i = function() { this.$options = {needle:"", backwards:false, wrap:false, caseSensitive:false, wholeWord:false, scope:i.ALL, regExp:false} }; i.ALL = 1; i.SELECTION = 2; (function() { - this.set = function(c) { - e.mixin(this.$options, c); + this.set = function(b) { + e.mixin(this.$options, b); return this }; this.getOptions = function() { return g.copyObject(this.$options) }; - this.find = function(c) { + this.find = function(b) { if(!this.$options.needle) { return null }var j = null; - (this.$options.backwards ? this.$backwardMatchIterator(c) : this.$forwardMatchIterator(c)).forEach(function(a) { + (this.$options.backwards ? this.$backwardMatchIterator(b) : this.$forwardMatchIterator(b)).forEach(function(a) { j = a; return true }); return j }; - this.findAll = function(c) { + this.findAll = function(b) { if(!this.$options.needle) { return[] }var j = []; - (this.$options.backwards ? this.$backwardMatchIterator(c) : this.$forwardMatchIterator(c)).forEach(function(a) { + (this.$options.backwards ? this.$backwardMatchIterator(b) : this.$forwardMatchIterator(b)).forEach(function(a) { j.push(a) }); return j }; - this.replace = function(c, j) { - var a = this.$assembleRegExp(), f = a.exec(c); - return f && f[0].length == c.length ? this.$options.regExp ? c.replace(a, j) : j : null + this.replace = function(b, j) { + var a = this.$assembleRegExp(), f = a.exec(b); + return f && f[0].length == b.length ? this.$options.regExp ? b.replace(a, j) : j : null }; - this.$forwardMatchIterator = function(c) { + this.$forwardMatchIterator = function(b) { var j = this.$assembleRegExp(), a = this; return{forEach:function(f) { - a.$forwardLineIterator(c).forEach(function(m, n, b) { + a.$forwardLineIterator(b).forEach(function(l, n, d) { if(n) { - m = m.substring(n) + l = l.substring(n) }var k = []; - m.replace(j, function(o) { + l.replace(j, function(o) { k.push({str:o, offset:n + arguments[arguments.length - 2]}); return o }); - for(m = 0;m < k.length;m++) { - var p = k[m]; - p = a.$rangeFromMatch(b, p.offset, p.str.length); + for(l = 0;l < k.length;l++) { + var p = k[l]; + p = a.$rangeFromMatch(d, p.offset, p.str.length); if(f(p)) { return true } @@ -1583,20 +1583,20 @@ define("ace/search", ["require", "exports", "module", "./lib/lang", "./lib/oop", }) }} }; - this.$backwardMatchIterator = function(c) { + this.$backwardMatchIterator = function(b) { var j = this.$assembleRegExp(), a = this; return{forEach:function(f) { - a.$backwardLineIterator(c).forEach(function(m, n, b) { + a.$backwardLineIterator(b).forEach(function(l, n, d) { if(n) { - m = m.substring(n) + l = l.substring(n) }var k = []; - m.replace(j, function(o, l) { - k.push({str:o, offset:n + l}); + l.replace(j, function(o, m) { + k.push({str:o, offset:n + m}); return o }); - for(m = k.length - 1;m >= 0;m--) { - var p = k[m]; - p = a.$rangeFromMatch(b, p.offset, p.str.length); + for(l = k.length - 1;l >= 0;l--) { + var p = k[l]; + p = a.$rangeFromMatch(d, p.offset, p.str.length); if(f(p)) { return true } @@ -1604,67 +1604,67 @@ define("ace/search", ["require", "exports", "module", "./lib/lang", "./lib/oop", }) }} }; - this.$rangeFromMatch = function(c, j, a) { - return new d(c, j, c, j + a) + this.$rangeFromMatch = function(b, j, a) { + return new c(b, j, b, j + a) }; this.$assembleRegExp = function() { - var c = this.$options.regExp ? this.$options.needle : g.escapeRegExp(this.$options.needle); + var b = this.$options.regExp ? this.$options.needle : g.escapeRegExp(this.$options.needle); if(this.$options.wholeWord) { - c = "\\b" + c + "\\b" + b = "\\b" + b + "\\b" }var j = "g"; this.$options.caseSensitive || (j += "i"); - return new RegExp(c, j) + return new RegExp(b, j) }; - this.$forwardLineIterator = function(c) { + this.$forwardLineIterator = function(b) { function j(o) { - var l = c.getLine(o); + var m = b.getLine(o); if(a && o == f.end.row) { - l = l.substring(0, f.end.column) - }return l + m = m.substring(0, f.end.column) + }return m } - var a = this.$options.scope == i.SELECTION, f = c.getSelection().getRange(), m = c.getSelection().getCursor(), n = a ? f.start.row : 0, b = a ? f.start.column : 0, k = a ? f.end.row : c.getLength() - 1, p = this.$options.wrap; + var a = this.$options.scope == i.SELECTION, f = b.getSelection().getRange(), l = b.getSelection().getCursor(), n = a ? f.start.row : 0, d = a ? f.start.column : 0, k = a ? f.end.row : b.getLength() - 1, p = this.$options.wrap; return{forEach:function(o) { - for(var l = m.row, r = j(l), q = m.column, s = false;!o(r, q, l);) { + for(var m = l.row, r = j(m), q = l.column, s = false;!o(r, q, m);) { if(s) { return - }l++; + }m++; q = 0; - if(l > k) { + if(m > k) { if(p) { - l = n; - q = b + m = n; + q = d }else { return } - }if(l == m.row) { + }if(m == l.row) { s = true - }r = j(l) + }r = j(m) } }} }; - this.$backwardLineIterator = function(c) { - var j = this.$options.scope == i.SELECTION, a = c.getSelection().getRange(), f = j ? a.end : a.start, m = j ? a.start.row : 0, n = j ? a.start.column : 0, b = j ? a.end.row : c.getLength() - 1, k = this.$options.wrap; + this.$backwardLineIterator = function(b) { + var j = this.$options.scope == i.SELECTION, a = b.getSelection().getRange(), f = j ? a.end : a.start, l = j ? a.start.row : 0, n = j ? a.start.column : 0, d = j ? a.end.row : b.getLength() - 1, k = this.$options.wrap; return{forEach:function(p) { - for(var o = f.row, l = c.getLine(o).substring(0, f.column), r = 0, q = false;!p(l, r, o);) { + for(var o = f.row, m = b.getLine(o).substring(0, f.column), r = 0, q = false;!p(m, r, o);) { if(q) { return }o--; r = 0; - if(o < m) { + if(o < l) { if(k) { - o = b + o = d }else { return } }if(o == f.row) { q = true - }l = c.getLine(o); + }m = b.getLine(o); if(j) { - if(o == m) { + if(o == l) { r = n }else { - if(o == b) { - l = l.substring(0, a.end.column) + if(o == d) { + m = m.substring(0, a.end.column) } } } @@ -1676,46 +1676,46 @@ define("ace/search", ["require", "exports", "module", "./lib/lang", "./lib/oop", }); define("ace/background_tokenizer", ["require", "exports", "module", "./lib/oop", "./event_emitter"], function(h) { var g = h("./lib/oop"), e = h("./event_emitter"); - h = function(d, i) { + h = function(c, i) { this.running = false; this.textLines = []; this.lines = []; this.currentLine = 0; - this.tokenizer = d; - var c = this; + this.tokenizer = c; + var b = this; this.$worker = function() { - if(c.running) { - for(var j = new Date, a = c.currentLine, f = c.textLines, m = 0, n = i.getLastVisibleRow();c.currentLine < f.length;) { - c.lines[c.currentLine] = c.$tokenizeRows(c.currentLine, c.currentLine)[0]; - c.currentLine++; - m += 1; - if(m % 5 == 0 && new Date - j > 20) { - c.fireUpdateEvent(a, c.currentLine - 1); - c.running = setTimeout(c.$worker, c.currentLine < n ? 20 : 100); + if(b.running) { + for(var j = new Date, a = b.currentLine, f = b.textLines, l = 0, n = i.getLastVisibleRow();b.currentLine < f.length;) { + b.lines[b.currentLine] = b.$tokenizeRows(b.currentLine, b.currentLine)[0]; + b.currentLine++; + l += 1; + if(l % 5 == 0 && new Date - j > 20) { + b.fireUpdateEvent(a, b.currentLine - 1); + b.running = setTimeout(b.$worker, b.currentLine < n ? 20 : 100); return } - }c.running = false; - c.fireUpdateEvent(a, f.length - 1) + }b.running = false; + b.fireUpdateEvent(a, f.length - 1) } } }; (function() { g.implement(this, e); - this.setTokenizer = function(d) { - this.tokenizer = d; + this.setTokenizer = function(c) { + this.tokenizer = c; this.lines = []; this.start(0) }; - this.setLines = function(d) { - this.textLines = d; + this.setLines = function(c) { + this.textLines = c; this.lines = []; this.stop() }; - this.fireUpdateEvent = function(d, i) { - this.$dispatchEvent("update", {data:{first:d, last:i}}) + this.fireUpdateEvent = function(c, i) { + this.$dispatchEvent("update", {data:{first:c, last:i}}) }; - this.start = function(d) { - this.currentLine = Math.min(d || 0, this.currentLine, this.textLines.length); + this.start = function(c) { + this.currentLine = Math.min(c || 0, this.currentLine, this.textLines.length); this.lines.splice(this.currentLine, this.lines.length); this.stop(); this.running = setTimeout(this.$worker, 700) @@ -1724,58 +1724,58 @@ define("ace/background_tokenizer", ["require", "exports", "module", "./lib/oop", this.running && clearTimeout(this.running); this.running = false }; - this.getTokens = function(d, i, c) { - c(this.$tokenizeRows(d, i)) + this.getTokens = function(c, i, b) { + b(this.$tokenizeRows(c, i)) }; - this.getState = function(d, i) { - i(this.$tokenizeRows(d, d)[0].state) + this.getState = function(c, i) { + i(this.$tokenizeRows(c, c)[0].state) }; - this.$tokenizeRows = function(d, i) { - var c = [], j = "start", a = false; - if(d > 0 && this.lines[d - 1]) { - j = this.lines[d - 1].state; + this.$tokenizeRows = function(c, i) { + var b = [], j = "start", a = false; + if(c > 0 && this.lines[c - 1]) { + j = this.lines[c - 1].state; a = true - }for(d = d;d <= i;d++) { - if(this.lines[d]) { - f = this.lines[d]; + }for(c = c;c <= i;c++) { + if(this.lines[c]) { + f = this.lines[c]; j = f.state; - c.push(f) + b.push(f) }else { - var f = this.tokenizer.getLineTokens(this.textLines[d] || "", j); + var f = this.tokenizer.getLineTokens(this.textLines[c] || "", j); j = f.state; - c.push(f); + b.push(f); if(a) { - this.lines[d] = f + this.lines[c] = f } } - }return c + }return b } }).call(h.prototype); return h }); define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event", "./lib/lang", "./textinput", "./keybinding", "./document", "./search", "./background_tokenizer", "./range", "./event_emitter"], function(h) { - var g = h("./lib/oop"), e = h("./lib/event"), d = h("./lib/lang"), i = h("./textinput"), c = h("./keybinding"), j = h("./document"), a = h("./search"), f = h("./background_tokenizer"), m = h("./range"), n = h("./event_emitter"); - h = function(b, k) { - var p = b.getContainerElement(); + var g = h("./lib/oop"), e = h("./lib/event"), c = h("./lib/lang"), i = h("./textinput"), b = h("./keybinding"), j = h("./document"), a = h("./search"), f = h("./background_tokenizer"), l = h("./range"), n = h("./event_emitter"); + h = function(d, k) { + var p = d.getContainerElement(); this.container = p; - this.renderer = b; + this.renderer = d; this.textInput = new i(p, this); - this.keyBinding = new c(p, this); + this.keyBinding = new b(p, this); var o = this; - e.addListener(p, "mousedown", function(l) { + e.addListener(p, "mousedown", function(m) { setTimeout(function() { o.focus() }); - return e.preventDefault(l) + return e.preventDefault(m) }); - e.addListener(p, "selectstart", function(l) { - return e.preventDefault(l) + e.addListener(p, "selectstart", function(m) { + return e.preventDefault(m) }); - b = b.getMouseEventTarget(); - e.addListener(b, "mousedown", d.bind(this.onMouseDown, this)); - e.addMultiMouseDownListener(b, 0, 2, 500, d.bind(this.onMouseDoubleClick, this)); - e.addMultiMouseDownListener(b, 0, 3, 600, d.bind(this.onMouseTripleClick, this)); - e.addMouseWheelListener(b, d.bind(this.onMouseWheel, this)); + d = d.getMouseEventTarget(); + e.addListener(d, "mousedown", c.bind(this.onMouseDown, this)); + e.addMultiMouseDownListener(d, 0, 2, 500, c.bind(this.onMouseDoubleClick, this)); + e.addMultiMouseDownListener(d, 0, 3, 600, c.bind(this.onMouseTripleClick, this)); + e.addMouseWheelListener(d, c.bind(this.onMouseWheel, this)); this.$highlightLineMarker = this.$selectionMarker = null; this.$blockScrolling = false; this.$search = (new a).set({wrap:true}); @@ -1787,14 +1787,14 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.$forwardEvents = {gutterclick:1, gutterdblclick:1}; this.$originalAddEventListener = this.addEventListener; this.$originalRemoveEventListener = this.removeEventListener; - this.addEventListener = function(b, k) { - return this.$forwardEvents[b] ? this.renderer.addEventListener(b, k) : this.$originalAddEventListener(b, k) + this.addEventListener = function(d, k) { + return this.$forwardEvents[d] ? this.renderer.addEventListener(d, k) : this.$originalAddEventListener(d, k) }; - this.removeEventListener = function(b, k) { - return this.$forwardEvents[b] ? this.renderer.removeEventListener(b, k) : this.$originalRemoveEventListener(b, k) + this.removeEventListener = function(d, k) { + return this.$forwardEvents[d] ? this.renderer.removeEventListener(d, k) : this.$originalRemoveEventListener(d, k) }; - this.setDocument = function(b) { - if(this.doc != b) { + this.setDocument = function(d) { + if(this.doc != d) { if(this.doc) { this.doc.removeEventListener("change", this.$onDocumentChange); this.doc.removeEventListener("changeMode", this.$onDocumentModeChange); @@ -1804,21 +1804,21 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" k.removeEventListener("changeCursor", this.$onCursorChange); k.removeEventListener("changeSelection", this.$onSelectionChange); this.doc.setScrollTopRow(this.renderer.getScrollTopRow()) - }this.doc = b; - this.$onDocumentChange = d.bind(this.onDocumentChange, this); - b.addEventListener("change", this.$onDocumentChange); - this.renderer.setDocument(b); - this.$onDocumentModeChange = d.bind(this.onDocumentModeChange, this); - b.addEventListener("changeMode", this.$onDocumentModeChange); - this.$onDocumentChangeTabSize = d.bind(this.renderer.updateText, this.renderer); - b.addEventListener("changeTabSize", this.$onDocumentChangeTabSize); - this.$onDocumentChangeBreakpoint = d.bind(this.onDocumentChangeBreakpoint, this); + }this.doc = d; + this.$onDocumentChange = c.bind(this.onDocumentChange, this); + d.addEventListener("change", this.$onDocumentChange); + this.renderer.setDocument(d); + this.$onDocumentModeChange = c.bind(this.onDocumentModeChange, this); + d.addEventListener("changeMode", this.$onDocumentModeChange); + this.$onDocumentChangeTabSize = c.bind(this.renderer.updateText, this.renderer); + d.addEventListener("changeTabSize", this.$onDocumentChangeTabSize); + this.$onDocumentChangeBreakpoint = c.bind(this.onDocumentChangeBreakpoint, this); this.doc.addEventListener("changeBreakpoint", this.$onDocumentChangeBreakpoint); - this.selection = b.getSelection(); + this.selection = d.getSelection(); this.$desiredColumn = 0; - this.$onCursorChange = d.bind(this.onCursorChange, this); + this.$onCursorChange = c.bind(this.onCursorChange, this); this.selection.addEventListener("changeCursor", this.$onCursorChange); - this.$onSelectionChange = d.bind(this.onSelectionChange, this); + this.$onSelectionChange = c.bind(this.onSelectionChange, this); this.selection.addEventListener("changeSelection", this.$onSelectionChange); this.onDocumentModeChange(); this.bgTokenizer.setLines(this.doc.lines); @@ -1826,7 +1826,7 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.onCursorChange(); this.onSelectionChange(); this.onDocumentChangeBreakpoint(); - this.renderer.scrollToRow(b.getScrollTopRow()); + this.renderer.scrollToRow(d.getScrollTopRow()); this.renderer.updateFull() } }; @@ -1839,22 +1839,22 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.resize = function() { this.renderer.onResize() }; - this.setTheme = function(b) { - this.renderer.setTheme(b) + this.setTheme = function(d) { + this.renderer.setTheme(d) }; this.$highlightBrackets = function() { if(this.$bracketHighlight) { this.renderer.removeMarker(this.$bracketHighlight); this.$bracketHighlight = null }if(!this.$highlightPending) { - var b = this; + var d = this; this.$highlightPending = true; setTimeout(function() { - b.$highlightPending = false; - var k = b.doc.findMatchingBracket(b.getCursorPosition()); + d.$highlightPending = false; + var k = d.doc.findMatchingBracket(d.getCursorPosition()); if(k) { - k = new m(k.row, k.column, k.row, k.column + 1); - b.$bracketHighlight = b.renderer.addMarker(k, "ace_bracket") + k = new l(k.row, k.column, k.row, k.column + 1); + d.$bracketHighlight = d.renderer.addMarker(k, "ace_bracket") } }, 10) } @@ -1873,15 +1873,15 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.renderer.hideCursor(); this.renderer.visualizeBlur() }; - this.onDocumentChange = function(b) { - b = b.data; - this.bgTokenizer.start(b.firstRow); - this.renderer.updateLines(b.firstRow, b.lastRow); + this.onDocumentChange = function(d) { + d = d.data; + this.bgTokenizer.start(d.firstRow); + this.renderer.updateLines(d.firstRow, d.lastRow); this.renderer.updateCursor(this.getCursorPosition(), this.$overwrite) }; - this.onTokenizerUpdate = function(b) { - b = b.data; - this.renderer.updateLines(b.first, b.last) + this.onTokenizerUpdate = function(d) { + d = d.data; + this.renderer.updateLines(d.first, d.last) }; this.onCursorChange = function() { this.$highlightBrackets(); @@ -1893,59 +1893,59 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.$highlightLineMarker && this.renderer.removeMarker(this.$highlightLineMarker); this.$highlightLineMarker = null; if(this.getHighlightActiveLine() && (this.getSelectionStyle() != "line" || !this.selection.isMultiLine())) { - var b = this.getCursorPosition(); - this.$highlightLineMarker = this.renderer.addMarker(new m(b.row, 0, b.row + 1, 0), "ace_active_line", "line") + var d = this.getCursorPosition(); + this.$highlightLineMarker = this.renderer.addMarker(new l(d.row, 0, d.row + 1, 0), "ace_active_line", "line") } }; this.onSelectionChange = function() { this.$selectionMarker && this.renderer.removeMarker(this.$selectionMarker); this.$selectionMarker = null; if(!this.selection.isEmpty()) { - var b = this.selection.getRange(), k = this.getSelectionStyle(); - this.$selectionMarker = this.renderer.addMarker(b, "ace_selection", k) + var d = this.selection.getRange(), k = this.getSelectionStyle(); + this.$selectionMarker = this.renderer.addMarker(d, "ace_selection", k) }this.onCursorChange() }; this.onDocumentChangeBreakpoint = function() { this.renderer.setBreakpoints(this.doc.getBreakpoints()) }; this.onDocumentModeChange = function() { - var b = this.doc.getMode(); - if(this.mode != b) { - this.mode = b; - b = b.getTokenizer(); + var d = this.doc.getMode(); + if(this.mode != d) { + this.mode = d; + d = d.getTokenizer(); if(this.bgTokenizer) { - this.bgTokenizer.setTokenizer(b) + this.bgTokenizer.setTokenizer(d) }else { - var k = d.bind(this.onTokenizerUpdate, this); - this.bgTokenizer = new f(b, this); + var k = c.bind(this.onTokenizerUpdate, this); + this.bgTokenizer = new f(d, this); this.bgTokenizer.addEventListener("update", k) }this.renderer.setTokenizer(this.bgTokenizer) } }; - this.onMouseDown = function(b) { - var k = e.getDocumentX(b), p = e.getDocumentY(b); + this.onMouseDown = function(d) { + var k = e.getDocumentX(d), p = e.getDocumentY(d); k = this.renderer.screenToTextCoordinates(k, p); k.row = Math.max(0, Math.min(k.row, this.doc.getLength() - 1)); - if(e.getButton(b) != 0) { + if(e.getButton(d) != 0) { this.selection.isEmpty() && this.moveCursorToPosition(k) }else { - if(b.shiftKey) { + if(d.shiftKey) { this.selection.selectToPosition(k) }else { this.moveCursorToPosition(k); this.$clickSelection || this.selection.clearSelection(k.row, k.column) }this.renderer.scrollCursorIntoView(); - var o = this, l, r; + var o = this, m, r; e.capture(this.container, function(s) { - l = e.getDocumentX(s); + m = e.getDocumentX(s); r = e.getDocumentY(s) }, function() { clearInterval(q); o.$clickSelection = null }); var q = setInterval(function() { - if(!(l === undefined || r === undefined)) { - var s = o.renderer.screenToTextCoordinates(l, r); + if(!(m === undefined || r === undefined)) { + var s = o.renderer.screenToTextCoordinates(m, r); s.row = Math.max(0, Math.min(s.row, o.doc.getLength() - 1)); if(o.$clickSelection) { if(o.$clickSelection.contains(s.row, s.column)) { @@ -1960,7 +1960,7 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" }o.renderer.scrollCursorIntoView() } }, 20); - return e.preventDefault(b) + return e.preventDefault(d) } }; this.onMouseDoubleClick = function() { @@ -1973,10 +1973,10 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.$clickSelection = this.getSelectionRange(); this.$updateDesiredColumn() }; - this.onMouseWheel = function(b) { + this.onMouseWheel = function(d) { var k = this.$scrollSpeed * 2; - this.renderer.scrollBy(b.wheelX * k, b.wheelY * k); - return e.preventDefault(b) + this.renderer.scrollBy(d.wheelX * k, d.wheelY * k); + return e.preventDefault(d) }; this.getCopyText = function() { return this.selection.isEmpty() ? "" : this.doc.getTextRange(this.getSelectionRange()) @@ -1989,14 +1989,14 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" } } }; - this.onTextInput = function(b) { + this.onTextInput = function(d) { if(!this.$readOnly) { var k = this.getCursorPosition(); - b = b.replace("\t", this.doc.getTabString()); + d = d.replace("\t", this.doc.getTabString()); if(this.selection.isEmpty()) { if(this.$overwrite) { - var p = new m.fromPoints(k, k); - p.end.column += b.length; + var p = new l.fromPoints(k, k); + p.end.column += d.length; this.doc.remove(p) } }else { @@ -2004,8 +2004,8 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.clearSelection() }this.clearSelection(); var o = this; - this.bgTokenizer.getState(k.row, function(l) { - var r = o.mode.checkOutdent(l, o.doc.getLine(k.row), b), q = o.doc.getLine(k.row), s = o.mode.getNextLineIndent(l, q, o.doc.getTabString()), t = o.doc.insert(k, b); + this.bgTokenizer.getState(k.row, function(m) { + var r = o.mode.checkOutdent(m, o.doc.getLine(k.row), d), q = o.doc.getLine(k.row), s = o.mode.getNextLineIndent(m, q, o.doc.getTabString()), t = o.doc.insert(k, d); o.bgTokenizer.getState(k.row, function(u) { if(k.row !== t.row) { u = o.doc.getTabSize(); @@ -2022,7 +2022,7 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" break } } - }if(/[^\s]$/.test(q)) { + }if(/[^\s]/.test(q)) { y = Math.min(x, y) } }for(w = k.row + 1;w <= t.row;++w) { @@ -2036,8 +2036,8 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" x -= 1 } } - }o.doc.replace(new m(w, 0, w, q.length), q.substr(v)) - }t.column += o.doc.indentRows(new m(k.row + 1, 0, t.row, t.column), s) + }o.doc.replace(new l(w, 0, w, q.length), q.substr(v)) + }t.column += o.doc.indentRows(new l(k.row + 1, 0, t.row, t.column), s) }else { if(r) { t.column += o.mode.autoOutdent(u, o.doc, k.row) @@ -2049,13 +2049,13 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" } }; this.$overwrite = false; - this.setOverwrite = function(b) { - if(this.$overwrite != b) { - this.$overwrite = b; + this.setOverwrite = function(d) { + if(this.$overwrite != d) { + this.$overwrite = d; this.$blockScrolling = true; this.onCursorChange(); this.$blockScrolling = false; - this.$dispatchEvent("changeOverwrite", {data:b}) + this.$dispatchEvent("changeOverwrite", {data:d}) } }; this.getOverwrite = function() { @@ -2065,54 +2065,54 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.setOverwrite(!this.$overwrite) }; this.$scrollSpeed = 1; - this.setScrollSpeed = function(b) { - this.$scrollSpeed = b + this.setScrollSpeed = function(d) { + this.$scrollSpeed = d }; this.getScrollSpeed = function() { return this.$scrollSpeed }; this.$selectionStyle = "line"; - this.setSelectionStyle = function(b) { - if(this.$selectionStyle != b) { - this.$selectionStyle = b; + this.setSelectionStyle = function(d) { + if(this.$selectionStyle != d) { + this.$selectionStyle = d; this.onSelectionChange(); - this.$dispatchEvent("changeSelectionStyle", {data:b}) + this.$dispatchEvent("changeSelectionStyle", {data:d}) } }; this.getSelectionStyle = function() { return this.$selectionStyle }; this.$highlightActiveLine = true; - this.setHighlightActiveLine = function(b) { - if(this.$highlightActiveLine != b) { - this.$highlightActiveLine = b; + this.setHighlightActiveLine = function(d) { + if(this.$highlightActiveLine != d) { + this.$highlightActiveLine = d; this.$updateHighlightActiveLine() } }; this.getHighlightActiveLine = function() { return this.$highlightActiveLine }; - this.setShowInvisibles = function(b) { - this.getShowInvisibles() != b && this.renderer.setShowInvisibles(b) + this.setShowInvisibles = function(d) { + this.getShowInvisibles() != d && this.renderer.setShowInvisibles(d) }; this.getShowInvisibles = function() { return this.renderer.getShowInvisibles() }; - this.setShowPrintMargin = function(b) { - this.renderer.setShowPrintMargin(b) + this.setShowPrintMargin = function(d) { + this.renderer.setShowPrintMargin(d) }; this.getShowPrintMargin = function() { return this.renderer.getShowPrintMargin() }; - this.setPrintMarginColumn = function(b) { - this.renderer.setPrintMarginColumn(b) + this.setPrintMarginColumn = function(d) { + this.renderer.setPrintMarginColumn(d) }; this.getPrintMarginColumn = function() { return this.renderer.getPrintMarginColumn() }; this.$readOnly = false; - this.setReadOnly = function(b) { - this.$readOnly = b + this.setReadOnly = function(d) { + this.$readOnly = d }; this.getReadOnly = function() { return this.$readOnly @@ -2133,31 +2133,33 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" }; this.indent = function() { if(!this.$readOnly) { - var b = this.getSelectionRange(); - if(b.start.row < b.end.row || b.start.column < b.end.column) { - b = this.doc.indentRows(this.getSelectionRange(), "\t"); - this.selection.shiftSelection(b) + var d = this.doc, k = this.getSelectionRange(); + if(k.start.row < k.end.row || k.start.column < k.end.column) { + d = d.indentRows(this.getSelectionRange(), "\t"); + this.selection.shiftSelection(d) }else { if(this.doc.getUseSoftTabs()) { - b = this.doc.getTabSize(); - b = b - this.getCursorPosition().column % b; - b = d.stringRepeat(" ", b) + k = d.getTabSize(); + var p = this.getCursorPosition(); + d = d.documentToScreenColumn(p.row, p.column); + d = k - d % k; + d = c.stringRepeat(" ", d) }else { - b = "\t" - }return this.onTextInput(b) + d = "\t" + }return this.onTextInput(d) } } }; this.blockOutdent = function() { if(!this.$readOnly) { - var b = this.doc.getSelection(), k = this.doc.outdentRows(b.getRange()); - b.setSelectionRange(k, b.isBackwards()); + var d = this.doc.getSelection(), k = this.doc.outdentRows(d.getRange()); + d.setSelectionRange(k, d.isBackwards()); this.$updateDesiredColumn() } }; this.toggleCommentLines = function() { if(!this.$readOnly) { - var b = this.$getSelectedRows(), k = new m(b.first, 0, b.last, 0), p = this; + var d = this.$getSelectedRows(), k = new l(d.first, 0, d.last, 0), p = this; this.bgTokenizer.getState(this.getCursorPosition().row, function(o) { o = p.mode.toggleCommentLines(o, p.doc, k); p.selection.shiftSelection(o) @@ -2166,52 +2168,52 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" }; this.removeLines = function() { if(!this.$readOnly) { - var b = this.$getSelectedRows(); - this.selection.setSelectionAnchor(b.last + 1, 0); - this.selection.selectTo(b.first, 0); + var d = this.$getSelectedRows(); + this.selection.setSelectionAnchor(d.last + 1, 0); + this.selection.selectTo(d.first, 0); this.doc.remove(this.getSelectionRange()); this.clearSelection() } }; this.moveLinesDown = function() { - this.$readOnly || this.$moveLines(function(b, k) { - return this.doc.moveLinesDown(b, k) + this.$readOnly || this.$moveLines(function(d, k) { + return this.doc.moveLinesDown(d, k) }) }; this.moveLinesUp = function() { - this.$readOnly || this.$moveLines(function(b, k) { - return this.doc.moveLinesUp(b, k) + this.$readOnly || this.$moveLines(function(d, k) { + return this.doc.moveLinesUp(d, k) }) }; this.copyLinesUp = function() { - this.$readOnly || this.$moveLines(function(b, k) { - this.doc.duplicateLines(b, k); + this.$readOnly || this.$moveLines(function(d, k) { + this.doc.duplicateLines(d, k); return 0 }) }; this.copyLinesDown = function() { - this.$readOnly || this.$moveLines(function(b, k) { - return this.doc.duplicateLines(b, k) + this.$readOnly || this.$moveLines(function(d, k) { + return this.doc.duplicateLines(d, k) }) }; - this.$moveLines = function(b) { - var k = this.$getSelectedRows(), p = b.call(this, k.first, k.last), o = this.selection; + this.$moveLines = function(d) { + var k = this.$getSelectedRows(), p = d.call(this, k.first, k.last), o = this.selection; o.setSelectionAnchor(k.last + p + 1, 0); o.$moveSelection(function() { o.moveCursorTo(k.first + p, 0) }) }; this.$getSelectedRows = function() { - var b = this.getSelectionRange(), k = b.start.row, p = b.end.row; - if(b.end.column == 0 && b.start.row !== b.end.row) { + var d = this.getSelectionRange(), k = d.start.row, p = d.end.row; + if(d.end.column == 0 && d.start.row !== d.end.row) { p -= 1 }return{first:k, last:p} }; this.onCompositionStart = function() { this.renderer.showComposition(this.getCursorPosition()) }; - this.onCompositionUpdate = function(b) { - this.renderer.setCompositionText(b) + this.onCompositionUpdate = function(d) { + this.renderer.setCompositionText(d) }; this.onCompositionEnd = function() { this.renderer.hideComposition() @@ -2222,8 +2224,8 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.getLastVisibleRow = function() { return this.renderer.getLastVisibleRow() }; - this.isRowVisible = function(b) { - return b >= this.getFirstVisibleRow() && b <= this.getLastVisibleRow() + this.isRowVisible = function(d) { + return d >= this.getFirstVisibleRow() && d <= this.getLastVisibleRow() }; this.getVisibleRowCount = function() { return this.getLastVisibleRow() - this.getFirstVisibleRow() + 1 @@ -2232,19 +2234,19 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" return this.renderer.getLastVisibleRow() - 1 }; this.getPageUpRow = function() { - var b = this.renderer.getFirstVisibleRow(), k = this.renderer.getLastVisibleRow(); - return b - (k - b) + 1 + var d = this.renderer.getFirstVisibleRow(), k = this.renderer.getLastVisibleRow(); + return d - (k - d) + 1 }; this.selectPageDown = function() { - var b = this.getPageDownRow() + Math.floor(this.getVisibleRowCount() / 2); + var d = this.getPageDownRow() + Math.floor(this.getVisibleRowCount() / 2); this.scrollPageDown(); var k = this.getSelection(); k.$moveSelection(function() { - k.moveCursorTo(b, k.getSelectionLead().column) + k.moveCursorTo(d, k.getSelectionLead().column) }) }; this.selectPageUp = function() { - var b = this.getLastVisibleRow() - this.getFirstVisibleRow(), k = this.getPageUpRow() + Math.round(b / 2); + var d = this.getLastVisibleRow() - this.getFirstVisibleRow(), k = this.getPageUpRow() + Math.round(d / 2); this.scrollPageUp(); var p = this.getSelection(); p.$moveSelection(function() { @@ -2252,14 +2254,14 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" }) }; this.gotoPageDown = function() { - var b = this.getPageDownRow(), k = Math.min(this.getCursorPosition().column, this.doc.getLine(b).length); - this.scrollToRow(b); - this.getSelection().moveCursorTo(b, k) + var d = this.getPageDownRow(), k = Math.min(this.getCursorPosition().column, this.doc.getLine(d).length); + this.scrollToRow(d); + this.getSelection().moveCursorTo(d, k) }; this.gotoPageUp = function() { - var b = this.getPageUpRow(), k = Math.min(this.getCursorPosition().column, this.doc.getLine(b).length); - this.scrollToRow(b); - this.getSelection().moveCursorTo(b, k) + var d = this.getPageUpRow(), k = Math.min(this.getCursorPosition().column, this.doc.getLine(d).length); + this.scrollToRow(d); + this.getSelection().moveCursorTo(d, k) }; this.scrollPageDown = function() { this.scrollToRow(this.getPageDownRow()) @@ -2267,8 +2269,8 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.scrollPageUp = function() { this.renderer.scrollToRow(this.getPageUpRow()) }; - this.scrollToRow = function(b) { - this.renderer.scrollToRow(b) + this.scrollToRow = function(d) { + this.renderer.scrollToRow(d) }; this.getCursorPosition = function() { return this.selection.getCursor() @@ -2280,45 +2282,45 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.selection.clearSelection(); this.$updateDesiredColumn() }; - this.moveCursorTo = function(b, k) { - this.selection.moveCursorTo(b, k); + this.moveCursorTo = function(d, k) { + this.selection.moveCursorTo(d, k); this.$updateDesiredColumn() }; - this.moveCursorToPosition = function(b) { - this.selection.moveCursorToPosition(b); + this.moveCursorToPosition = function(d) { + this.selection.moveCursorToPosition(d); this.$updateDesiredColumn() }; - this.gotoLine = function(b, k) { + this.gotoLine = function(d, k) { this.selection.clearSelection(); this.$blockScrolling = true; - this.moveCursorTo(b - 1, k || 0); + this.moveCursorTo(d - 1, k || 0); this.$blockScrolling = false; - this.isRowVisible(this.getCursorPosition().row) || this.scrollToRow(b - 1 - Math.floor(this.getVisibleRowCount() / 2)) + this.isRowVisible(this.getCursorPosition().row) || this.scrollToRow(d - 1 - Math.floor(this.getVisibleRowCount() / 2)) }; - this.navigateTo = function(b, k) { + this.navigateTo = function(d, k) { this.clearSelection(); - this.moveCursorTo(b, k); + this.moveCursorTo(d, k); this.$updateDesiredColumn(k) }; this.navigateUp = function() { this.selection.clearSelection(); this.selection.moveCursorBy(-1, 0); if(this.$desiredColumn) { - var b = this.getCursorPosition(), k = this.doc.screenToDocumentColumn(b.row, this.$desiredColumn); - this.selection.moveCursorTo(b.row, k) + var d = this.getCursorPosition(), k = this.doc.screenToDocumentColumn(d.row, this.$desiredColumn); + this.selection.moveCursorTo(d.row, k) } }; this.navigateDown = function() { this.selection.clearSelection(); this.selection.moveCursorBy(1, 0); if(this.$desiredColumn) { - var b = this.getCursorPosition(), k = this.doc.screenToDocumentColumn(b.row, this.$desiredColumn); - this.selection.moveCursorTo(b.row, k) + var d = this.getCursorPosition(), k = this.doc.screenToDocumentColumn(d.row, this.$desiredColumn); + this.selection.moveCursorTo(d.row, k) } }; this.$updateDesiredColumn = function() { - var b = this.getCursorPosition(); - this.$desiredColumn = this.doc.documentToScreenColumn(b.row, b.column) + var d = this.getCursorPosition(); + this.$desiredColumn = this.doc.documentToScreenColumn(d.row, d.column) }; this.navigateLeft = function() { this.selection.isEmpty() ? this.selection.moveCursorLeft() : this.moveCursorToPosition(this.getSelectionRange().start); @@ -2352,30 +2354,30 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.selection.moveCursorWordLeft(); this.clearSelection() }; - this.replace = function(b, k) { + this.replace = function(d, k) { k && this.$search.set(k); k = this.$search.find(this.doc); - this.$tryReplace(k, b); + this.$tryReplace(k, d); k !== null && this.selection.setSelectionRange(k); this.$updateDesiredColumn() }; - this.replaceAll = function(b, k) { + this.replaceAll = function(d, k) { k && this.$search.set(k); - this.clearSelection(); - this.selection.moveCursorTo(0, 0); k = this.$search.findAll(this.doc); if(k.length) { + this.clearSelection(); + this.selection.moveCursorTo(0, 0); for(var p = k.length - 1;p >= 0;--p) { - this.$tryReplace(k[p], b) + this.$tryReplace(k[p], d) }k[0] !== null && this.selection.setSelectionRange(k[0]); this.$updateDesiredColumn() } }; - this.$tryReplace = function(b, k) { - k = this.$search.replace(this.doc.getTextRange(b), k); + this.$tryReplace = function(d, k) { + k = this.$search.replace(this.doc.getTextRange(d), k); if(k !== null) { - b.end = this.doc.replace(b, k); - return b + d.end = this.doc.replace(d, k); + return d }else { return null } @@ -2383,34 +2385,34 @@ define("ace/editor", ["require", "exports", "module", "./lib/oop", "./lib/event" this.getLastSearchOptions = function() { return this.$search.getOptions() }; - this.find = function(b, k) { + this.find = function(d, k) { this.clearSelection(); k = k || {}; - k.needle = b; + k.needle = d; this.$search.set(k); this.$find() }; - this.findNext = function(b) { - b = b || {}; - if(typeof b.backwards == "undefined") { - b.backwards = false - }this.$search.set(b); + this.findNext = function(d) { + d = d || {}; + if(typeof d.backwards == "undefined") { + d.backwards = false + }this.$search.set(d); this.$find() }; - this.findPrevious = function(b) { - b = b || {}; - if(typeof b.backwards == "undefined") { - b.backwards = true - }this.$search.set(b); + this.findPrevious = function(d) { + d = d || {}; + if(typeof d.backwards == "undefined") { + d.backwards = true + }this.$search.set(d); this.$find() }; - this.$find = function(b) { + this.$find = function(d) { this.selection.isEmpty() || this.$search.set({needle:this.doc.getTextRange(this.getSelectionRange())}); - typeof b != "undefined" && this.$search.set({backwards:b}); - if(b = this.$search.find(this.doc)) { - this.gotoLine(b.end.row + 1, b.end.column); + typeof d != "undefined" && this.$search.set({backwards:d}); + if(d = this.$search.find(this.doc)) { + this.gotoLine(d.end.row + 1, d.end.column); this.$updateDesiredColumn(); - this.selection.setSelectionRange(b) + this.selection.setSelectionRange(d) } }; this.undo = function() { @@ -2471,8 +2473,8 @@ define("ace/layer/gutter", ["require", "exports", "module"], function() { }; this.update = function(g) { this.$config = g; - for(var e = [], d = g.firstRow;d <= g.lastRow;d++) { - e.push("
", d + 1, "
"); + for(var e = [], c = g.firstRow;c <= g.lastRow;c++) { + e.push("
", c + 1, "
"); e.push("") }this.element.innerHTML = e.join(""); this.element.style.height = g.minHeight + "px" @@ -2493,10 +2495,10 @@ define("ace/layer/marker", ["require", "exports", "module", "../range"], functio this.setDocument = function(e) { this.doc = e }; - this.addMarker = function(e, d, i) { - var c = this.$markerId++; - this.markers[c] = {range:e, type:i || "line", clazz:d}; - return c + this.addMarker = function(e, c, i) { + var b = this.$markerId++; + this.markers[b] = {range:e, type:i || "line", clazz:c}; + return b }; this.removeMarker = function(e) { this.markers[e] && delete this.markers[e] @@ -2504,121 +2506,121 @@ define("ace/layer/marker", ["require", "exports", "module", "../range"], functio this.update = function(e) { if(e = e || this.config) { this.config = e; - var d = []; + var c = []; for(var i in this.markers) { - var c = this.markers[i], j = c.range.clipRows(e.firstRow, e.lastRow); + var b = this.markers[i], j = b.range.clipRows(e.firstRow, e.lastRow); if(!j.isEmpty()) { if(j.isMultiLine()) { - c.type == "text" ? this.drawTextMarker(d, j, c.clazz, e) : this.drawMultiLineMarker(d, j, c.clazz, e) + b.type == "text" ? this.drawTextMarker(c, j, b.clazz, e) : this.drawMultiLineMarker(c, j, b.clazz, e) }else { - this.drawSingleLineMarker(d, j, c.clazz, e) + this.drawSingleLineMarker(c, j, b.clazz, e) } } - }this.element.innerHTML = d.join("") + }this.element.innerHTML = c.join("") } }; - this.drawTextMarker = function(e, d, i, c) { - var j = d.start.row, a = new g(j, d.start.column, j, this.doc.getLine(j).length); - this.drawSingleLineMarker(e, a, i, c); - j = d.end.row; - a = new g(j, 0, j, d.end.column); - this.drawSingleLineMarker(e, a, i, c); - for(j = d.start.row + 1;j < d.end.row;j++) { + this.drawTextMarker = function(e, c, i, b) { + var j = c.start.row, a = new g(j, c.start.column, j, this.doc.getLine(j).length); + this.drawSingleLineMarker(e, a, i, b); + j = c.end.row; + a = new g(j, 0, j, c.end.column); + this.drawSingleLineMarker(e, a, i, b); + for(j = c.start.row + 1;j < c.end.row;j++) { a.start.row = j; a.end.row = j; a.end.column = this.doc.getLine(j).length; - this.drawSingleLineMarker(e, a, i, c) + this.drawSingleLineMarker(e, a, i, b) } }; - this.drawMultiLineMarker = function(e, d, i, c) { - d = d.toScreenRange(this.doc); - var j = c.lineHeight, a = Math.round(c.width - d.start.column * c.characterWidth), f = (d.start.row - c.firstRow) * c.lineHeight, m = Math.round(d.start.column * c.characterWidth); - e.push("
"); - f = (d.end.row - c.firstRow) * c.lineHeight; - a = Math.round(d.end.column * c.characterWidth); + this.drawMultiLineMarker = function(e, c, i, b) { + c = c.toScreenRange(this.doc); + var j = b.lineHeight, a = Math.round(b.width - c.start.column * b.characterWidth), f = (c.start.row - b.firstRow) * b.lineHeight, l = Math.round(c.start.column * b.characterWidth); + e.push("
"); + f = (c.end.row - b.firstRow) * b.lineHeight; + a = Math.round(c.end.column * b.characterWidth); e.push("
"); - j = (d.end.row - d.start.row - 1) * c.lineHeight; + j = (c.end.row - c.start.row - 1) * b.lineHeight; if(!(j < 0)) { - f = (d.start.row + 1 - c.firstRow) * c.lineHeight; - e.push("
") + f = (c.start.row + 1 - b.firstRow) * b.lineHeight; + e.push("
") } }; - this.drawSingleLineMarker = function(e, d, i, c) { - d = d.toScreenRange(this.doc); - var j = c.lineHeight, a = Math.round((d.end.column - d.start.column) * c.characterWidth), f = (d.start.row - c.firstRow) * c.lineHeight; - d = Math.round(d.start.column * c.characterWidth); - e.push("
") + this.drawSingleLineMarker = function(e, c, i, b) { + c = c.toScreenRange(this.doc); + var j = b.lineHeight, a = Math.round((c.end.column - c.start.column) * b.characterWidth), f = (c.start.row - b.firstRow) * b.lineHeight; + c = Math.round(c.start.column * b.characterWidth); + e.push("
") } }).call(h.prototype); return h }); define("ace/lib/dom", ["require", "exports", "module", "./lang"], function(h) { var g = h("./lang"), e = {}; - e.setText = function(d, i) { - if(d.innerText !== undefined) { - d.innerText = i - }if(d.textContent !== undefined) { - d.textContent = i + e.setText = function(c, i) { + if(c.innerText !== undefined) { + c.innerText = i + }if(c.textContent !== undefined) { + c.textContent = i } }; - e.hasCssClass = function(d, i) { - d = d.className.split(/\s+/g); - return g.arrayIndexOf(d, i) !== -1 + e.hasCssClass = function(c, i) { + c = c.className.split(/\s+/g); + return g.arrayIndexOf(c, i) !== -1 }; - e.addCssClass = function(d, i) { - e.hasCssClass(d, i) || (d.className += " " + i) + e.addCssClass = function(c, i) { + e.hasCssClass(c, i) || (c.className += " " + i) }; - e.removeCssClass = function(d, i) { - for(var c = d.className.split(/\s+/g);;) { - var j = g.arrayIndexOf(c, i); + e.removeCssClass = function(c, i) { + for(var b = c.className.split(/\s+/g);;) { + var j = g.arrayIndexOf(b, i); if(j == -1) { break - }c.splice(j, 1) - }d.className = c.join(" ") + }b.splice(j, 1) + }c.className = b.join(" ") }; - e.importCssString = function(d, i) { + e.importCssString = function(c, i) { i = i || document; if(i.createStyleSheet) { - i.createStyleSheet().cssText = d + i.createStyleSheet().cssText = c }else { - var c = i.createElement("style"); - c.appendChild(i.createTextNode(d)); - i.getElementsByTagName("head")[0].appendChild(c) + var b = i.createElement("style"); + b.appendChild(i.createTextNode(c)); + i.getElementsByTagName("head")[0].appendChild(b) } }; - e.getInnerWidth = function(d) { - return parseInt(e.computedStyle(d, "paddingLeft")) + parseInt(e.computedStyle(d, "paddingRight")) + d.clientWidth + e.getInnerWidth = function(c) { + return parseInt(e.computedStyle(c, "paddingLeft")) + parseInt(e.computedStyle(c, "paddingRight")) + c.clientWidth }; - e.getInnerHeight = function(d) { - return parseInt(e.computedStyle(d, "paddingTop")) + parseInt(e.computedStyle(d, "paddingBottom")) + d.clientHeight + e.getInnerHeight = function(c) { + return parseInt(e.computedStyle(c, "paddingTop")) + parseInt(e.computedStyle(c, "paddingBottom")) + c.clientHeight }; - e.computedStyle = function(d, i) { - return window.getComputedStyle ? (window.getComputedStyle(d, "") || {})[i] || "" : d.currentStyle[i] + e.computedStyle = function(c, i) { + return window.getComputedStyle ? (window.getComputedStyle(c, "") || {})[i] || "" : c.currentStyle[i] }; e.scrollbarWidth = function() { - var d = document.createElement("p"); - d.style.width = "100%"; - d.style.height = "200px"; - var i = document.createElement("div"), c = i.style; - c.position = "absolute"; - c.left = "-10000px"; - c.overflow = "hidden"; - c.width = "200px"; - c.height = "150px"; - i.appendChild(d); + var c = document.createElement("p"); + c.style.width = "100%"; + c.style.height = "200px"; + var i = document.createElement("div"), b = i.style; + b.position = "absolute"; + b.left = "-10000px"; + b.overflow = "hidden"; + b.width = "200px"; + b.height = "150px"; + i.appendChild(c); document.body.appendChild(i); - var j = d.offsetWidth; - c.overflow = "scroll"; - d = d.offsetWidth; - if(j == d) { - d = i.clientWidth + var j = c.offsetWidth; + b.overflow = "scroll"; + c = c.offsetWidth; + if(j == c) { + c = i.clientWidth }document.body.removeChild(i); - return j - d + return j - c }; return e }); define("ace/layer/text", ["require", "exports", "module", "../lib/oop", "../lib/dom", "../event_emitter"], function(h) { - var g = h("../lib/oop"), e = h("../lib/dom"), d = h("../event_emitter"); + var g = h("../lib/oop"), e = h("../lib/dom"), c = h("../event_emitter"); h = function(i) { this.element = document.createElement("div"); this.element.className = "ace_layer ace_text-layer"; @@ -2627,7 +2629,7 @@ define("ace/layer/text", ["require", "exports", "module", "../lib/oop", "../lib/ this.$pollSizeChanges() }; (function() { - g.implement(this, d); + g.implement(this, c); this.EOF_CHAR = "¶"; this.EOL_CHAR = "¬"; this.TAB_CHAR = "→"; @@ -2644,29 +2646,29 @@ define("ace/layer/text", ["require", "exports", "module", "../lib/oop", "../lib/ this.$pollSizeChanges = function() { var i = this; setInterval(function() { - var c = i.$measureSizes(); - if(i.$characterSize.width !== c.width || i.$characterSize.height !== c.height) { - i.$characterSize = c; - i.$dispatchEvent("changeCharaterSize", {data:c}) + var b = i.$measureSizes(); + if(i.$characterSize.width !== b.width || i.$characterSize.height !== b.height) { + i.$characterSize = b; + i.$dispatchEvent("changeCharaterSize", {data:b}) } }, 500) }; this.$fontStyles = {fontFamily:1, fontSize:1, fontWeight:1, fontStyle:1, lineHeight:1}; this.$measureSizes = function() { - var i = document.createElement("div"), c = i.style; - c.width = c.height = "auto"; - c.left = c.top = "-1000px"; - c.visibility = "hidden"; - c.position = "absolute"; - c.overflow = "visible"; + var i = document.createElement("div"), b = i.style; + b.width = b.height = "auto"; + b.left = b.top = "-1000px"; + b.visibility = "hidden"; + b.position = "absolute"; + b.overflow = "visible"; for(var j in this.$fontStyles) { var a = e.computedStyle(this.element, j); - c[j] = a + b[j] = a }i.innerHTML = (new Array(1E3)).join("Xy"); document.body.insertBefore(i, document.body.firstChild); - c = {height:i.offsetHeight, width:i.offsetWidth / 2E3}; + b = {height:i.offsetHeight, width:i.offsetWidth / 2E3}; document.body.removeChild(i); - return c + return b }; this.setDocument = function(i) { this.doc = i @@ -2684,30 +2686,31 @@ define("ace/layer/text", ["require", "exports", "module", "../lib/oop", "../lib/ this.$tabString = (new Array(i + 1)).join(" ") } }; - this.updateLines = function(i, c, j) { + this.updateLines = function(i, b, j) { this.$computeTabString(); - var a = Math.max(c, i.firstRow), f = Math.min(j, i.lastRow), m = this.element.childNodes, n = this; - this.tokenizer.getTokens(a, f, function(b) { + this.config = i; + var a = Math.max(b, i.firstRow), f = Math.min(j, i.lastRow), l = this.element.childNodes, n = this; + this.tokenizer.getTokens(a, f, function(d) { for(var k = a;k <= f;k++) { - var p = m[k - i.firstRow]; + var p = l[k - i.firstRow]; if(p) { var o = []; - n.$renderLine(o, k, b[k - a].tokens); + n.$renderLine(o, k, d[k - a].tokens); p.innerHTML = o.join("") } } }) }; this.scrollLines = function(i) { - function c(b) { + function b(d) { i.firstRow < f.firstRow ? a.$renderLinesFragment(i, i.firstRow, f.firstRow - 1, function(k) { - m.firstChild ? m.insertBefore(k, m.firstChild) : m.appendChild(k); - b() - }) : b() + l.firstChild ? l.insertBefore(k, l.firstChild) : l.appendChild(k); + d() + }) : d() } function j() { - i.lastRow > f.lastRow && a.$renderLinesFragment(i, f.lastRow + 1, i.lastRow, function(b) { - m.appendChild(b) + i.lastRow > f.lastRow && a.$renderLinesFragment(i, f.lastRow + 1, i.lastRow, function(d) { + l.appendChild(d) }) } var a = this; @@ -2718,28 +2721,28 @@ define("ace/layer/text", ["require", "exports", "module", "../lib/oop", "../lib/ return this.update(i) }if(i.lastRow < f.firstRow) { return this.update(i) - }var m = this.element; + }var l = this.element; if(f.firstRow < i.firstRow) { for(var n = f.firstRow;n < i.firstRow;n++) { - m.removeChild(m.firstChild) + l.removeChild(l.firstChild) } }if(f.lastRow > i.lastRow) { for(n = i.lastRow + 1;n <= f.lastRow;n++) { - m.removeChild(m.lastChild) + l.removeChild(l.lastChild) } - }c(j) + }b(j) }; - this.$renderLinesFragment = function(i, c, j, a) { - var f = document.createDocumentFragment(), m = this; - this.tokenizer.getTokens(c, j, function(n) { - for(var b = c;b <= j;b++) { + this.$renderLinesFragment = function(i, b, j, a) { + var f = document.createDocumentFragment(), l = this; + this.tokenizer.getTokens(b, j, function(n) { + for(var d = b;d <= j;d++) { var k = document.createElement("div"); k.className = "ace_line"; var p = k.style; - p.height = m.$characterSize.height + "px"; + p.height = l.$characterSize.height + "px"; p.width = i.width + "px"; p = []; - m.$renderLine(p, b, n[b - c].tokens); + l.$renderLine(p, d, n[d - b].tokens); k.innerHTML = p.join(""); f.appendChild(k) }a(f) @@ -2747,27 +2750,28 @@ define("ace/layer/text", ["require", "exports", "module", "../lib/oop", "../lib/ }; this.update = function(i) { this.$computeTabString(); - var c = [], j = this; + this.config = i; + var b = [], j = this; this.tokenizer.getTokens(i.firstRow, i.lastRow, function(a) { for(var f = i.firstRow;f <= i.lastRow;f++) { - c.push("
"); - j.$renderLine(c, f, a[f - i.firstRow].tokens); - c.push("
") - }j.element.innerHTML = c.join("") + b.push("
"); + j.$renderLine(b, f, a[f - i.firstRow].tokens); + b.push("
") + }j.element.innerHTML = b.join("") }) }; this.$textToken = {text:true, rparen:true, lparen:true}; - this.$renderLine = function(i, c, j) { + this.$renderLine = function(i, b, j) { for(var a = /[\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]/g, f = 0;f < j.length;f++) { - var m = j[f], n = m.value.replace(/&/g, "&").replace(/", n, "") + l = "ace_" + l.type.replace(/\./g, " ace_"); + i.push("", n, "") } }if(this.$showInvisibles) { - c !== this.doc.getLength() - 1 ? i.push("" + this.EOL_CHAR + "") : i.push("" + this.EOF_CHAR + "") + b !== this.doc.getLength() - 1 ? i.push("" + this.EOL_CHAR + "") : i.push("" + this.EOF_CHAR + "") } } }).call(h.prototype); @@ -2787,9 +2791,9 @@ define("ace/layer/cursor", ["require", "exports", "module", "../lib/dom"], funct this.setDocument = function(e) { this.doc = e }; - this.setCursor = function(e, d) { + this.setCursor = function(e, c) { this.position = {row:e.row, column:this.doc.documentToScreenColumn(e.row, e.column)}; - d ? g.addCssClass(this.cursor, "ace_overwrite") : g.removeCssClass(this.cursor, "ace_overwrite") + c ? g.addCssClass(this.cursor, "ace_overwrite") : g.removeCssClass(this.cursor, "ace_overwrite") }; this.hideCursor = function() { this.isVisible = false; @@ -2823,9 +2827,9 @@ define("ace/layer/cursor", ["require", "exports", "module", "../lib/dom"], funct this.update = function(e) { if(this.position) { this.config = e; - var d = Math.round(this.position.column * e.characterWidth), i = this.position.row * e.lineHeight; - this.pixelPos = {left:d, top:i}; - this.cursor.style.left = d + "px"; + var c = Math.round(this.position.column * e.characterWidth), i = this.position.row * e.lineHeight; + this.pixelPos = {left:c, top:i}; + this.cursor.style.left = c + "px"; this.cursor.style.top = i - e.firstRow * e.lineHeight + "px"; this.cursor.style.width = e.characterWidth + "px"; this.cursor.style.height = e.lineHeight + "px"; @@ -2837,19 +2841,19 @@ define("ace/layer/cursor", ["require", "exports", "module", "../lib/dom"], funct return h }); define("ace/scrollbar", ["require", "exports", "module", "./lib/oop", "./lib/lang", "./lib/dom", "./lib/event", "./event_emitter"], function(h) { - var g = h("./lib/oop"), e = h("./lib/lang"), d = h("./lib/dom"), i = h("./lib/event"), c = h("./event_emitter"); + var g = h("./lib/oop"), e = h("./lib/lang"), c = h("./lib/dom"), i = h("./lib/event"), b = h("./event_emitter"); h = function(j) { this.element = document.createElement("div"); this.element.className = "ace_sb"; this.inner = document.createElement("div"); this.element.appendChild(this.inner); j.appendChild(this.element); - this.width = d.scrollbarWidth(); + this.width = c.scrollbarWidth(); this.element.style.width = this.width; i.addListener(this.element, "scroll", e.bind(this.onScroll, this)) }; (function() { - g.implement(this, c); + g.implement(this, b); this.onScroll = function() { this.$dispatchEvent("scroll", {data:this.element.scrollTop}) }; @@ -2880,11 +2884,12 @@ define("ace/renderloop", ["require", "exports", "module", "./lib/event"], functi this.changes |= e; if(!this.pending) { this.pending = true; - var d = this; + var c = this; this.setTimeoutZero(function() { - d.pending = false; - d.onRender(d.changes); - d.changes = 0 + c.pending = false; + var i = c.changes; + c.changes = 0; + c.onRender(i) }) } }; @@ -2892,11 +2897,11 @@ define("ace/renderloop", ["require", "exports", "module", "./lib/event"], functi this.messageName = "zero-timeout-message"; this.setTimeoutZero = function(e) { if(!this.attached) { - var d = this; + var c = this; g.addListener(window, "message", function(i) { - if(i.source == window && d.callback && i.data == d.messageName) { + if(i.source == window && c.callback && i.data == c.messageName) { g.stopPropagation(i); - d.callback() + c.callback() } }); this.attached = true @@ -2912,32 +2917,32 @@ define("ace/renderloop", ["require", "exports", "module", "./lib/event"], functi return h }); define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/editor.css!.ace_editor {\n position: absolute;\n overflow: hidden;\n\n font-family: "Menlo", "Monaco", "Courier New", monospace;\n font-size: 12px; \n}\n\n.ace_scroller {\n position: absolute;\n overflow-x: scroll;\n overflow-y: hidden; \n}\n\n.ace_gutter {\n position: absolute;\n overflow-x: hidden;\n overflow-y: hidden;\n height: 100%;\n}\n\n.ace_editor .ace_sb {\n position: absolute;\n overflow-x: hidden;\n overflow-y: scroll;\n right: 0;\n}\n\n.ace_editor .ace_sb div {\n position: absolute;\n width: 1px;\n left: 0px;\n}\n\n.ace_editor .ace_printMargin {\n position: absolute;\n height: 100%;\n}\n\n.ace_layer {\n z-index: 0;\n position: absolute;\n overflow: hidden; \n white-space: nowrap;\n height: 100%;\n}\n\n.ace_text-layer {\n font-family: Monaco, "Courier New", monospace;\n color: black;\n}\n\n.ace_cursor-layer {\n cursor: text;\n}\n\n.ace_cursor {\n z-index: 3;\n position: absolute;\n}\n\n.ace_line {\n white-space: nowrap;\n}\n\n.ace_marker-layer {\n}\n\n.ace_marker-layer .ace_step {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 4;\n}\n\n.ace_marker-layer .ace_active_line {\n position: absolute;\n z-index: 1;\n}', -"./lib/oop", "./lib/oop", "./lib/event", "./layer/gutter", "./layer/marker", "./layer/text", "./layer/cursor", "./scrollbar", "./renderloop", "./event_emitter"], function(h, g, e, d) { - var i = h("./lib/oop"), c = h("./lib/lang"), j = h("./lib/dom"), a = h("./lib/event"), f = h("./layer/gutter"), m = h("./layer/marker"), n = h("./layer/text"), b = h("./layer/cursor"), k = h("./scrollbar"), p = h("./renderloop"), o = h("./event_emitter"); - j.importCssString(d); - g = function(l, r) { - this.container = l; +"./lib/oop", "./lib/oop", "./lib/event", "./layer/gutter", "./layer/marker", "./layer/text", "./layer/cursor", "./scrollbar", "./renderloop", "./event_emitter"], function(h, g, e, c) { + var i = h("./lib/oop"), b = h("./lib/lang"), j = h("./lib/dom"), a = h("./lib/event"), f = h("./layer/gutter"), l = h("./layer/marker"), n = h("./layer/text"), d = h("./layer/cursor"), k = h("./scrollbar"), p = h("./renderloop"), o = h("./event_emitter"); + j.importCssString(c); + g = function(m, r) { + this.container = m; j.addCssClass(this.container, "ace_editor"); this.setTheme(r); - this.scroller = document.createElement("div"); - this.scroller.className = "ace_scroller"; - this.container.appendChild(this.scroller); this.$gutter = document.createElement("div"); this.$gutter.className = "ace_gutter"; this.container.appendChild(this.$gutter); + this.scroller = document.createElement("div"); + this.scroller.className = "ace_scroller"; + this.container.appendChild(this.scroller); this.content = document.createElement("div"); this.content.style.position = "absolute"; this.scroller.appendChild(this.content); this.$gutterLayer = new f(this.$gutter); - this.$markerLayer = new m(this.content); + this.$markerLayer = new l(this.content); var q = this.$textLayer = new n(this.content); this.canvas = q.element; this.characterWidth = q.getCharacterWidth(); this.lineHeight = q.getLineHeight(); - this.$cursorLayer = new b(this.content); + this.$cursorLayer = new d(this.content); this.layers = [this.$markerLayer, q, this.$cursorLayer]; - this.scrollBar = new k(l); - this.scrollBar.addEventListener("scroll", c.bind(this.onScroll, this)); + this.scrollBar = new k(m); + this.scrollBar.addEventListener("scroll", b.bind(this.onScroll, this)); this.scrollTop = 0; this.cursorPos = {row:0, column:0}; var s = this; @@ -2946,10 +2951,10 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed s.lineHeight = q.getLineHeight(); s.$loop.schedule(s.CHANGE_FULL) }); - a.addListener(this.$gutter, "click", c.bind(this.$onGutterClick, this)); - a.addListener(this.$gutter, "dblclick", c.bind(this.$onGutterClick, this)); + a.addListener(this.$gutter, "click", b.bind(this.$onGutterClick, this)); + a.addListener(this.$gutter, "dblclick", b.bind(this.$onGutterClick, this)); this.$size = {width:0, height:0, scrollerHeight:0, scrollerWidth:0}; - this.$loop = new p(c.bind(this.$renderChanges, this)); + this.$loop = new p(b.bind(this.$renderChanges, this)); this.$loop.schedule(this.CHANGE_FULL); this.$updatePrintMargin(); this.setPadding(4) @@ -2965,25 +2970,25 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed this.CHANGE_SIZE = 64; this.CHANGE_FULL = 128; i.implement(this, o); - this.setDocument = function(l) { - this.lines = l.lines; - this.doc = l; - this.$cursorLayer.setDocument(l); - this.$markerLayer.setDocument(l); - this.$textLayer.setDocument(l); + this.setDocument = function(m) { + this.lines = m.lines; + this.doc = m; + this.$cursorLayer.setDocument(m); + this.$markerLayer.setDocument(m); + this.$textLayer.setDocument(m); this.$loop.schedule(this.CHANGE_FULL) }; - this.updateLines = function(l, r) { + this.updateLines = function(m, r) { if(r === undefined) { r = Infinity }if(this.$changedLines) { - if(this.$changedLines.firstRow > l) { - this.$changedLines.firstRow = l + if(this.$changedLines.firstRow > m) { + this.$changedLines.firstRow = m }if(this.$changedLines.lastRow < r) { this.$changedLines.lastRow = r } }else { - this.$changedLines = {firstRow:l, lastRow:r} + this.$changedLines = {firstRow:m, lastRow:r} }this.$loop.schedule(this.CHANGE_LINES) }; this.updateText = function() { @@ -2994,61 +2999,61 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed }; this.onResize = function() { this.$loop.schedule(this.CHANGE_SIZE); - var l = j.getInnerHeight(this.container); - if(this.$size.height != l) { - this.$size.height = l; - this.scroller.style.height = l + "px"; - this.scrollBar.setHeight(l); + var m = j.getInnerHeight(this.container); + if(this.$size.height != m) { + this.$size.height = m; + this.scroller.style.height = m + "px"; + this.scrollBar.setHeight(m); if(this.doc) { this.scrollToY(this.getScrollTop()); this.$loop.schedule(this.CHANGE_FULL) } - }l = j.getInnerWidth(this.container); - if(this.$size.width != l) { - this.$size.width = l; + }m = j.getInnerWidth(this.container); + if(this.$size.width != m) { + this.$size.width = m; var r = this.showGutter ? this.$gutter.offsetWidth : 0; this.scroller.style.left = r + "px"; - this.scroller.style.width = Math.max(0, l - r - this.scrollBar.getWidth()) + "px" + this.scroller.style.width = Math.max(0, m - r - this.scrollBar.getWidth()) + "px" }this.$size.scrollerWidth = this.scroller.clientWidth; this.$size.scrollerHeight = this.scroller.clientHeight }; - this.setTokenizer = function(l) { - this.$tokenizer = l; - this.$textLayer.setTokenizer(l); + this.setTokenizer = function(m) { + this.$tokenizer = m; + this.$textLayer.setTokenizer(m); this.$loop.schedule(this.CHANGE_TEXT) }; - this.$onGutterClick = function(l) { - var r = a.getDocumentX(l), q = a.getDocumentY(l); - this.$dispatchEvent("gutter" + l.type, {row:this.screenToTextCoordinates(r, q).row, htmlEvent:l}) + this.$onGutterClick = function(m) { + var r = a.getDocumentX(m), q = a.getDocumentY(m); + this.$dispatchEvent("gutter" + m.type, {row:this.screenToTextCoordinates(r, q).row, htmlEvent:m}) }; this.$showInvisibles = true; - this.setShowInvisibles = function(l) { - this.$showInvisibles = l; - this.$textLayer.setShowInvisibles(l); + this.setShowInvisibles = function(m) { + this.$showInvisibles = m; + this.$textLayer.setShowInvisibles(m); this.$loop.schedule(this.CHANGE_TEXT) }; this.getShowInvisibles = function() { return this.$showInvisibles }; this.$showPrintMargin = true; - this.setShowPrintMargin = function(l) { - this.$showPrintMargin = l; + this.setShowPrintMargin = function(m) { + this.$showPrintMargin = m; this.$updatePrintMargin() }; this.getShowPrintMargin = function() { return this.$showPrintMargin }; this.$printMarginColumn = 80; - this.setPrintMarginColumn = function(l) { - this.$printMarginColumn = l; + this.setPrintMarginColumn = function(m) { + this.$printMarginColumn = m; this.$updatePrintMargin() }; this.getPrintMarginColumn = function() { return this.$printMarginColumn }; - this.setShowGutter = function(l) { - this.$gutter.style.display = l ? "block" : "none"; - this.showGutter = l; + this.setShowGutter = function(m) { + this.$gutter.style.display = m ? "block" : "none"; + this.showGutter = m; this.onResize() }; this.$updatePrintMargin = function() { @@ -3057,9 +3062,9 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed this.$printMarginEl = document.createElement("div"); this.$printMarginEl.className = "ace_printMargin"; this.content.insertBefore(this.$printMarginEl, this.$textLayer.element) - }var l = this.$printMarginEl.style; - l.left = this.characterWidth * this.$printMarginColumn + "px"; - l.visibility = this.$showPrintMargin ? "visible" : "hidden" + }var m = this.$printMarginEl.style; + m.left = this.characterWidth * this.$printMarginColumn + "px"; + m.visibility = this.$showPrintMargin ? "visible" : "hidden" } }; this.getContainerElement = function() { @@ -3085,117 +3090,112 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed return(this.layerConfig || {}).lastRow || 0 }; this.$padding = null; - this.setPadding = function(l) { - this.$padding = l; - this.content.style.padding = "0 " + l + "px"; + this.setPadding = function(m) { + this.$padding = m; + this.content.style.padding = "0 " + m + "px"; this.$loop.schedule(this.CHANGE_FULL) }; - this.onScroll = function(l) { - this.scrollToY(l.data) + this.onScroll = function(m) { + this.scrollToY(m.data) }; this.$updateScrollBar = function() { this.scrollBar.setInnerHeight(this.doc.getLength() * this.lineHeight); this.scrollBar.setScrollTop(this.scrollTop) }; - this.$renderChanges = function(l) { - if(!(!l || !this.doc || !this.$tokenizer)) { - if(!this.layerConfig || l & this.CHANGE_FULL || l & this.CHANGE_SIZE || l & this.CHANGE_TEXT || l & this.CHANGE_LINES || l & this.CHANGE_SCROLL) { + this.$renderChanges = function(m) { + if(!(!m || !this.doc || !this.$tokenizer)) { + if(!this.layerConfig || m & this.CHANGE_FULL || m & this.CHANGE_SIZE || m & this.CHANGE_TEXT || m & this.CHANGE_LINES || m & this.CHANGE_SCROLL) { this.$computeLayerConfig() - }if(l & this.CHANGE_FULL) { + }if(m & this.CHANGE_FULL) { this.$textLayer.update(this.layerConfig); this.showGutter && this.$gutterLayer.update(this.layerConfig); this.$markerLayer.update(this.layerConfig); this.$cursorLayer.update(this.layerConfig); this.$updateScrollBar() }else { - if(l & this.CHANGE_SCROLL) { - l & this.CHANGE_TEXT || l & this.CHANGE_LINES ? this.$textLayer.scrollLines(this.layerConfig) : this.$textLayer.update(this.layerConfig); + if(m & this.CHANGE_SCROLL) { + m & this.CHANGE_TEXT || m & this.CHANGE_LINES ? this.$textLayer.update(this.layerConfig) : this.$textLayer.scrollLines(this.layerConfig); this.showGutter && this.$gutterLayer.update(this.layerConfig); this.$markerLayer.update(this.layerConfig); this.$cursorLayer.update(this.layerConfig); this.$updateScrollBar() }else { - if(l & this.CHANGE_TEXT) { + if(m & this.CHANGE_TEXT) { this.$textLayer.update(this.layerConfig); this.showGutter && this.$gutterLayer.update(this.layerConfig) }else { - if(l & this.CHANGE_LINES) { + if(m & this.CHANGE_LINES) { this.$updateLines(); this.$updateScrollBar() - }else { - if(l & this.CHANGE_SCROLL) { - this.$textLayer.scrollLines(this.layerConfig); - this.showGutter && this.$gutterLayer.update(this.layerConfig) - } } - }l & this.CHANGE_GUTTER && this.showGutter && this.$gutterLayer.update(this.layerConfig); - l & this.CHANGE_CURSOR && this.$cursorLayer.update(this.layerConfig); - l & this.CHANGE_MARKER && this.$markerLayer.update(this.layerConfig); - l & this.CHANGE_SIZE && this.$updateScrollBar() + }m & this.CHANGE_GUTTER && this.showGutter && this.$gutterLayer.update(this.layerConfig); + m & this.CHANGE_CURSOR && this.$cursorLayer.update(this.layerConfig); + m & this.CHANGE_MARKER && this.$markerLayer.update(this.layerConfig); + m & this.CHANGE_SIZE && this.$updateScrollBar() } } } }; this.$computeLayerConfig = function() { - var l = this.scrollTop % this.lineHeight, r = this.$size.scrollerHeight + this.lineHeight, q = this.$getLongestLine(), s = !this.layerConfig ? true : this.layerConfig.width != q, t = Math.ceil(r / this.lineHeight), u = Math.max(0, Math.round((this.scrollTop - l) / this.lineHeight)); + var m = this.scrollTop % this.lineHeight, r = this.$size.scrollerHeight + this.lineHeight, q = this.$getLongestLine(), s = !this.layerConfig ? true : this.layerConfig.width != q, t = Math.ceil(r / this.lineHeight), u = Math.max(0, Math.round((this.scrollTop - m) / this.lineHeight)); t = Math.min(this.lines.length, u + t) - 1; - this.layerConfig = {width:q, padding:this.$padding, firstRow:u, lastRow:t, lineHeight:this.lineHeight, characterWidth:this.characterWidth, minHeight:r, offset:l, height:this.$size.scrollerHeight}; + this.layerConfig = {width:q, padding:this.$padding, firstRow:u, lastRow:t, lineHeight:this.lineHeight, characterWidth:this.characterWidth, minHeight:r, offset:m, height:this.$size.scrollerHeight}; for(u = 0;u < this.layers.length;u++) { t = this.layers[u]; if(s) { t.element.style.width = q + "px" } - }this.$gutterLayer.element.style.marginTop = -l + "px"; - this.content.style.marginTop = -l + "px"; + }this.$gutterLayer.element.style.marginTop = -m + "px"; + this.content.style.marginTop = -m + "px"; this.content.style.width = q + "px"; this.content.style.height = r + "px" }; this.$updateLines = function() { - var l = this.$changedLines.firstRow, r = this.$changedLines.lastRow; + var m = this.$changedLines.firstRow, r = this.$changedLines.lastRow; this.$changedLines = null; var q = this.layerConfig; if(q.width != this.$getLongestLine()) { return this.$textLayer.update(q) - }if(!(l > q.lastRow + 1)) { + }if(!(m > q.lastRow + 1)) { if(!(r < q.firstRow)) { if(r === Infinity) { this.showGutter && this.$gutterLayer.update(q); this.$textLayer.update(q) }else { - this.$textLayer.updateLines(q, l, r) + this.$textLayer.updateLines(q, m, r) } } } }; this.$getLongestLine = function() { - var l = this.doc.getScreenWidth(); + var m = this.doc.getScreenWidth(); if(this.$showInvisibles) { - l += 1 - }return Math.max(this.$size.scrollerWidth - this.$padding * 2, Math.round(l * this.characterWidth)) + m += 1 + }return Math.max(this.$size.scrollerWidth - this.$padding * 2, Math.round(m * this.characterWidth)) }; - this.addMarker = function(l, r, q) { - l = this.$markerLayer.addMarker(l, r, q); + this.addMarker = function(m, r, q) { + m = this.$markerLayer.addMarker(m, r, q); this.$loop.schedule(this.CHANGE_MARKER); - return l + return m }; - this.removeMarker = function(l) { - this.$markerLayer.removeMarker(l); + this.removeMarker = function(m) { + this.$markerLayer.removeMarker(m); this.$loop.schedule(this.CHANGE_MARKER) }; - this.addGutterDecoration = function(l, r) { - this.$gutterLayer.addGutterDecoration(l, r); + this.addGutterDecoration = function(m, r) { + this.$gutterLayer.addGutterDecoration(m, r); this.$loop.schedule(this.CHANGE_GUTTER) }; - this.removeGutterDecoration = function(l, r) { - this.$gutterLayer.removeGutterDecoration(l, r); + this.removeGutterDecoration = function(m, r) { + this.$gutterLayer.removeGutterDecoration(m, r); this.$loop.schedule(this.CHANGE_GUTTER) }; - this.setBreakpoints = function(l) { - this.$gutterLayer.setBreakpoints(l); + this.setBreakpoints = function(m) { + this.$gutterLayer.setBreakpoints(m); this.$loop.schedule(this.CHANGE_GUTTER) }; - this.updateCursor = function(l, r) { - this.$cursorLayer.setCursor(l, r); + this.updateCursor = function(m, r) { + this.$cursorLayer.setCursor(m, r); this.$loop.schedule(this.CHANGE_CURSOR) }; this.hideCursor = function() { @@ -3205,10 +3205,10 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed this.$cursorLayer.showCursor() }; this.scrollCursorIntoView = function() { - var l = this.$cursorLayer.getPixelPosition(), r = l.left + this.$padding; - l = l.top; - this.getScrollTop() > l && this.scrollToY(l); - this.getScrollTop() + this.$size.scrollerHeight < l + this.lineHeight && this.scrollToY(l + this.lineHeight - this.$size.scrollerHeight); + var m = this.$cursorLayer.getPixelPosition(), r = m.left + this.$padding; + m = m.top; + this.getScrollTop() > m && this.scrollToY(m); + this.getScrollTop() + this.$size.scrollerHeight < m + this.lineHeight && this.scrollToY(m + this.lineHeight - this.$size.scrollerHeight); this.scroller.scrollLeft > r && this.scrollToX(r); this.scroller.scrollLeft + this.$size.scrollerWidth < r + this.characterWidth && this.scrollToX(Math.round(r + this.characterWidth - this.$size.scrollerWidth)) }; @@ -3221,36 +3221,36 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed this.getScrollTopRow = function() { return this.scrollTop / this.lineHeight }; - this.scrollToRow = function(l) { - this.scrollToY(l * this.lineHeight) + this.scrollToRow = function(m) { + this.scrollToY(m * this.lineHeight) }; - this.scrollToY = function(l) { - l = Math.max(0, Math.min(this.lines.length * this.lineHeight - this.$size.scrollerHeight, l)); - if(this.scrollTop !== l) { - this.scrollTop = l; + this.scrollToY = function(m) { + m = Math.max(0, Math.min(this.lines.length * this.lineHeight - this.$size.scrollerHeight, m)); + if(this.scrollTop !== m) { + this.scrollTop = m; this.$loop.schedule(this.CHANGE_SCROLL) } }; - this.scrollToX = function(l) { - if(l <= this.$padding) { - l = 0 - }this.scroller.scrollLeft = l + this.scrollToX = function(m) { + if(m <= this.$padding) { + m = 0 + }this.scroller.scrollLeft = m }; - this.scrollBy = function(l, r) { + this.scrollBy = function(m, r) { r && this.scrollToY(this.scrollTop + r); - l && this.scrollToX(this.scroller.scrollLeft + l) + m && this.scrollToX(this.scroller.scrollLeft + m) }; - this.screenToTextCoordinates = function(l, r) { + this.screenToTextCoordinates = function(m, r) { var q = this.scroller.getBoundingClientRect(); - l = Math.round((l + this.scroller.scrollLeft - q.left - this.$padding) / this.characterWidth); + m = Math.round((m + this.scroller.scrollLeft - q.left - this.$padding) / this.characterWidth); r = Math.floor((r + this.scrollTop - q.top) / this.lineHeight); - return{row:r, column:this.doc.screenToDocumentColumn(Math.max(0, Math.min(r, this.doc.getLength() - 1)), l)} + return{row:r, column:this.doc.screenToDocumentColumn(Math.max(0, Math.min(r, this.doc.getLength() - 1)), m)} }; - this.textToScreenCoordinates = function(l, r) { + this.textToScreenCoordinates = function(m, r) { var q = this.scroller.getBoundingClientRect(); - r = this.padding + Math.round(this.doc.documentToScreenColumn(l, r) * this.characterWidth); - l = l * this.lineHeight; - return{pageX:q.left + r - this.getScrollLeft(), pageY:q.top + l - this.getScrollTop()} + r = this.padding + Math.round(this.doc.documentToScreenColumn(m, r) * this.characterWidth); + m = m * this.lineHeight; + return{pageX:q.left + r - this.getScrollLeft(), pageY:q.top + m - this.getScrollTop()} }; this.visualizeFocus = function() { j.addCssClass(this.container, "ace_focus") @@ -3264,7 +3264,7 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed }; this.hideComposition = function() { }; - this.setTheme = function(l) { + this.setTheme = function(m) { function r(s) { q.$theme && j.removeCssClass(q.container, q.$theme); q.$theme = s ? s.cssClass : null; @@ -3275,13 +3275,13 @@ define("ace/virtual_renderer", ["require", "exports", "module", 'text!ace/css/ed } } var q = this; - if(!l || typeof l == "string") { - l = l || "ace/theme/TextMate"; - h([l], function(s) { + if(!m || typeof m == "string") { + m = m || "ace/theme/textmate"; + h([m], function(s) { r(s) }) }else { - r(l) + r(m) }q = this } }).call(g.prototype); @@ -3295,20 +3295,20 @@ define("ace/mode/doc_comment_highlight_rules", ["require", "exports", "module", }; g.inherits(e, h); (function() { - this.getStartRule = function(d) { - return{token:"comment.doc", regex:"\\/\\*(?=\\*)", next:d} + this.getStartRule = function(c) { + return{token:"comment.doc", regex:"\\/\\*(?=\\*)", next:c} } }).call(e.prototype); return e }); define("ace/mode/javascript_highlight_rules", ["require", "exports", "module", "../lib/oop", "../lib/lang", "./doc_comment_highlight_rules", "./text_highlight_rules"], function(h) { - var g = h("../lib/oop"), e = h("../lib/lang"), d = h("./doc_comment_highlight_rules"); + var g = h("../lib/oop"), e = h("../lib/lang"), c = h("./doc_comment_highlight_rules"); h = h("./text_highlight_rules"); JavaScriptHighlightRules = function() { - var i = new d, c = e.arrayToMap("break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|while|with".split("|")), j = e.arrayToMap("true|false|null|undefined|Infinity|NaN|undefined".split("|")), a = e.arrayToMap("class|enum|extends|super|const|export|import|implements|let|private|public|yield|interface|package|protected|static".split("|")); + var i = new c, b = e.arrayToMap("break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|while|with".split("|")), j = e.arrayToMap("true|false|null|undefined|Infinity|NaN|undefined".split("|")), a = e.arrayToMap("class|enum|extends|super|const|export|import|implements|let|private|public|yield|interface|package|protected|static".split("|")); this.$rules = {start:[{token:"comment", regex:"\\/\\/.*$"}, i.getStartRule("doc-start"), {token:"comment", regex:"\\/\\*", next:"comment"}, {token:"string.regexp", regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"}, {token:"string", regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'}, {token:"string", regex:'["].*\\\\$', next:"qqstring"}, {token:"string", regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}, {token:"string", regex:"['].*\\\\$", next:"qstring"}, {token:"constant.numeric", regex:"0[xX][0-9a-fA-F]+\\b"}, {token:"constant.numeric", regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}, {token:function(f) { - return f == "this" ? "variable.language" : c[f] ? "keyword" : j[f] ? "constant.language" : a[f] ? "invalid.illegal" : f == "debugger" ? "invalid.deprecated" : "identifier" + return f == "this" ? "variable.language" : b[f] ? "keyword" : j[f] ? "constant.language" : a[f] ? "invalid.illegal" : f == "debugger" ? "invalid.deprecated" : "identifier" }, regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}, {token:"keyword.operator", regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(in|instanceof|new|delete|typeof|void)"}, {token:"lparen", regex:"[\\[\\(\\{]"}, {token:"rparen", regex:"[\\]\\)\\}]"}, {token:"text", regex:"\\s+"}], comment:[{token:"comment", regex:".*?\\*\\/", next:"start"}, {token:"comment", regex:".+"}], qqstring:[{token:"string", regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"', next:"start"}, {token:"string", regex:".+"}], qstring:[{token:"string", regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'", next:"start"}, {token:"string", regex:".+"}]}; this.addRules(i.getRules(), "doc-"); @@ -3322,22 +3322,22 @@ define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "../r h = function() { }; (function() { - this.checkOutdent = function(e, d) { + this.checkOutdent = function(e, c) { if(!/^\s+$/.test(e)) { return false - }return/^\s*\}/.test(d) + }return/^\s*\}/.test(c) }; - this.autoOutdent = function(e, d) { - var i = e.getLine(d).match(/^(\s*\})/); + this.autoOutdent = function(e, c) { + var i = e.getLine(c).match(/^(\s*\})/); if(!i) { return 0 }i = i[1].length; - var c = e.findMatchingBracket({row:d, column:i}); - if(!c || c.row == d) { + var b = e.findMatchingBracket({row:c, column:i}); + if(!b || b.row == c) { return 0 - }c = this.$getIndent(e.getLine(c.row)); - e.replace(new g(d, 0, d, i - 1), c); - return c.length - (i - 1) + }b = this.$getIndent(e.getLine(b.row)); + e.replace(new g(c, 0, c, i - 1), b); + return b.length - (i - 1) }; this.$getIndent = function(e) { if(e = e.match(/^(\s+)/)) { @@ -3348,66 +3348,68 @@ define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "../r return h }); define("ace/mode/javascript", ["require", "exports", "module", "../lib/oop", "./text", "../tokenizer", "./javascript_highlight_rules", "./matching_brace_outdent", "../range"], function(h) { - var g = h("../lib/oop"), e = h("./text"), d = h("../tokenizer"), i = h("./javascript_highlight_rules"), c = h("./matching_brace_outdent"), j = h("../range"); + var g = h("../lib/oop"), e = h("./text"), c = h("../tokenizer"), i = h("./javascript_highlight_rules"), b = h("./matching_brace_outdent"), j = h("../range"); h = function() { - this.$tokenizer = new d((new i).getRules()); - this.$outdent = new c + this.$tokenizer = new c((new i).getRules()); + this.$outdent = new b }; g.inherits(h, e); (function() { - this.toggleCommentLines = function(a, f, m) { + this.toggleCommentLines = function(a, f, l) { var n = true; a = /^(\s*)\/\//; - for(var b = m.start.row;b <= m.end.row;b++) { - if(!a.test(f.getLine(b))) { + for(var d = l.start.row;d <= l.end.row;d++) { + if(!a.test(f.getLine(d))) { n = false; break } }if(n) { n = new j(0, 0, 0, 0); - for(b = m.start.row;b <= m.end.row;b++) { - var k = f.getLine(b).replace(a, "$1"); - n.start.row = b; - n.end.row = b; + for(d = l.start.row;d <= l.end.row;d++) { + var k = f.getLine(d).replace(a, "$1"); + n.start.row = d; + n.end.row = d; n.end.column = k.length + 2; f.replace(n, k) }return-2 }else { - return f.indentRows(m, "//") + return f.indentRows(l, "//") } }; - this.getNextLineIndent = function(a, f, m) { - var n = this.$getIndent(f), b = this.$tokenizer.getLineTokens(f, a), k = b.tokens; - b = b.state; + this.getNextLineIndent = function(a, f, l) { + var n = this.$getIndent(f), d = this.$tokenizer.getLineTokens(f, a), k = d.tokens; + d = d.state; if(k.length && k[k.length - 1].type == "comment") { return n }if(a == "start") { if(a = f.match(/^.*[\{\(\[]\s*$/)) { - n += m + n += l } }else { if(a == "doc-start") { - if(b == "start") { + if(d == "start") { return"" }if(a = f.match(/^\s*(\/?)\*/)) { if(a[1]) { n += " " }n += "* " - } + }if(a[1]) { + n += " " + }n += "* " } }return n }; - this.checkOutdent = function(a, f, m) { - return this.$outdent.checkOutdent(f, m) + this.checkOutdent = function(a, f, l) { + return this.$outdent.checkOutdent(f, l) }; - this.autoOutdent = function(a, f, m) { - return this.$outdent.autoOutdent(f, m) + this.autoOutdent = function(a, f, l) { + return this.$outdent.autoOutdent(f, l) } }).call(h.prototype); return h }); define("ace/theme/textmate", ["require", "exports", "module", "text!ace/theme/tm.css!.ace-tm .ace_editor {\n border: 2px solid rgb(159, 159, 159);\n}\n\n.ace-tm .ace_editor.ace_focus {\n border: 2px solid #327fbd;\n}\n\n.ace-tm .ace_gutter {\n width: 50px;\n background: #e8e8e8;\n color: #333;\n overflow : hidden;\n}\n\n.ace-tm .ace_gutter-layer {\n width: 100%;\n text-align: right;\n}\n\n.ace-tm .ace_gutter-layer .ace_gutter-cell {\n padding-right: 6px;\n}\n\n.ace-tm .ace_editor .ace_printMargin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_text-layer {\n cursor: text;\n}\n\n.ace-tm .ace_cursor {\n border-left: 2px solid black;\n}\n\n.ace-tm .ace_cursor.ace_overwrite {\n border-left: 0px;\n border-bottom: 1px solid black;\n}\n \n.ace-tm .ace_line .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_line .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_line .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_line .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_line .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-tm .ace_line .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_line .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_line .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_line .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_line .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_line .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_line .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_line .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_line .ace_xml_pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active_line {\n background: rgb(232, 242, 254);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0) \n}", -"../lib/dom"], function(h, g, e, d) { - h("../lib/dom").importCssString(d); +"../lib/dom"], function(h, g, e, c) { + h("../lib/dom").importCssString(c); return{cssClass:"ace-tm"} }); \ No newline at end of file diff --git a/build/ace/layer/text.js b/build/ace/layer/text.js index 58692e6a..7e37774c 100644 --- a/build/ace/layer/text.js +++ b/build/ace/layer/text.js @@ -67,6 +67,7 @@ define(function(k) { }; this.updateLines = function(a, b, e) { this.$computeTabString(); + this.config = a; var f = Math.max(b, a.firstRow), c = Math.min(e, a.lastRow), d = this.element.childNodes, h = this; this.tokenizer.getTokens(f, c, function(i) { for(var g = f;g <= c;g++) { @@ -128,6 +129,7 @@ define(function(k) { }; this.update = function(a) { this.$computeTabString(); + this.config = a; var b = [], e = this; this.tokenizer.getTokens(a.firstRow, a.lastRow, function(f) { for(var c = a.firstRow;c <= a.lastRow;c++) { diff --git a/build/ace/mode/javascript.js b/build/ace/mode/javascript.js index 5db7b0ef..0217d3fc 100644 --- a/build/ace/mode/javascript.js +++ b/build/ace/mode/javascript.js @@ -6,53 +6,55 @@ define(function(f) { }; h.inherits(f, i); (function() { - this.toggleCommentLines = function(d, b, e) { - var c = true; - d = /^(\s*)\/\//; - for(var a = e.start.row;a <= e.end.row;a++) { - if(!d.test(b.getLine(a))) { - c = false; + this.toggleCommentLines = function(c, d, e) { + var a = true; + c = /^(\s*)\/\//; + for(var b = e.start.row;b <= e.end.row;b++) { + if(!c.test(d.getLine(b))) { + a = false; break } - }if(c) { - c = new m(0, 0, 0, 0); - for(a = e.start.row;a <= e.end.row;a++) { - var g = b.getLine(a).replace(d, "$1"); - c.start.row = a; - c.end.row = a; - c.end.column = g.length + 2; - b.replace(c, g) + }if(a) { + a = new m(0, 0, 0, 0); + for(b = e.start.row;b <= e.end.row;b++) { + var g = d.getLine(b).replace(c, "$1"); + a.start.row = b; + a.end.row = b; + a.end.column = g.length + 2; + d.replace(a, g) }return-2 }else { - return b.indentRows(e, "//") + return d.indentRows(e, "//") } }; - this.getNextLineIndent = function(d, b, e) { - var c = this.$getIndent(b), a = this.$tokenizer.getLineTokens(b, d), g = a.tokens; - a = a.state; + this.getNextLineIndent = function(c, d, e) { + var a = this.$getIndent(d), b = this.$tokenizer.getLineTokens(d, c), g = b.tokens; + b = b.state; if(g.length && g[g.length - 1].type == "comment") { - return c - }if(d == "start") { - if(d = b.match(/^.*[\{\(\[]\s*$/)) { - c += e + return a + }if(c == "start") { + if(c = d.match(/^.*[\{\(\[]\s*$/)) { + a += e } }else { - if(d == "doc-start") { - if(a == "start") { + if(c == "doc-start") { + if(b == "start") { return"" - }if(d = b.match(/^\s*(\/?)\*/)) { - if(d[1]) { - c += " " - }c += "* " - } + }if(c = d.match(/^\s*(\/?)\*/)) { + if(c[1]) { + a += " " + }a += "* " + }if(c[1]) { + a += " " + }a += "* " } - }return c + }return a }; - this.checkOutdent = function(d, b, e) { - return this.$outdent.checkOutdent(b, e) + this.checkOutdent = function(c, d, e) { + return this.$outdent.checkOutdent(d, e) }; - this.autoOutdent = function(d, b, e) { - return this.$outdent.autoOutdent(b, e) + this.autoOutdent = function(c, d, e) { + return this.$outdent.autoOutdent(d, e) } }).call(f.prototype); return f diff --git a/build/ace/mode/python.js b/build/ace/mode/python.js new file mode 100644 index 00000000..1df73e4d --- /dev/null +++ b/build/ace/mode/python.js @@ -0,0 +1,93 @@ +define("ace/mode/python_highlight_rules", ["require", "exports", "module", "../lib/oop", "../lib/lang", "./text_highlight_rules"], function(a) { + var k = a("../lib/oop"), b = a("../lib/lang"); + a = a("./text_highlight_rules"); + PythonHighlightRules = function() { + var f = b.arrayToMap("and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield".split("|")), i = b.arrayToMap("True|False|None|NotImplemented|Ellipsis|__debug__".split("|")), j = b.arrayToMap("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern".split("|")), + l = b.arrayToMap("".split("|")); + this.$rules = {start:[{token:"comment", regex:"#.*$"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}(?:(?:.)|(?:^"{3}))*?"{3}'}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}.*$', next:"qqstring"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"(?:(?:\\\\.)|(?:[^"\\\\]))*?"'}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}(?:(?:.)|(?:^'{3}))*?'{3}"}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}.*$", next:"qstring"}, {token:"string", + regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'(?:(?:\\\\.)|(?:[^'\\\\]))*?'"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))|\\d+)[jJ]\\b"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))"}, {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))[lL]\\b"}, + {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b"}, {token:function(c) { + return f[c] ? "keyword" : i[c] ? "constant.language" : l[c] ? "invalid.illegal" : j[c] ? "support.function" : c == "debugger" ? "invalid.deprecated" : "identifier" + }, regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}, {token:"keyword.operator", regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="}, {token:"lparen", regex:"[\\[\\(\\{]"}, {token:"rparen", regex:"[\\]\\)\\}]"}, {token:"text", regex:"\\s+"}], qqstring:[{token:"string", regex:'(?:^"{3})*?"{3}', next:"start"}, {token:"string", regex:".+"}], qstring:[{token:"string", regex:"(?:^'{3})*?'{3}", next:"start"}, {token:"string", regex:".+"}]} + }; + k.inherits(PythonHighlightRules, a); + return PythonHighlightRules +}); +define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "../range"], function(a) { + var k = a("../range"); + a = function() { + }; + (function() { + this.checkOutdent = function(b, f) { + if(!/^\s+$/.test(b)) { + return false + }return/^\s*\}/.test(f) + }; + this.autoOutdent = function(b, f) { + var i = b.getLine(f).match(/^(\s*\})/); + if(!i) { + return 0 + }i = i[1].length; + var j = b.findMatchingBracket({row:f, column:i}); + if(!j || j.row == f) { + return 0 + }j = this.$getIndent(b.getLine(j.row)); + b.replace(new k(f, 0, f, i - 1), j); + return j.length - (i - 1) + }; + this.$getIndent = function(b) { + if(b = b.match(/^(\s+)/)) { + return b[1] + }return"" + } + }).call(a.prototype); + return a +}); +define("ace/mode/python", ["require", "exports", "module", "../lib/oop", "./text", "../tokenizer", "./python_highlight_rules", "./matching_brace_outdent", "../range"], function(a) { + var k = a("../lib/oop"), b = a("./text"), f = a("../tokenizer"), i = a("./python_highlight_rules"), j = a("./matching_brace_outdent"), l = a("../range"); + a = function() { + this.$tokenizer = new f((new i).getRules()); + this.$outdent = new j + }; + k.inherits(a, b); + (function() { + this.toggleCommentLines = function(c, e, g) { + var h = true; + c = /^(\s*)#/; + for(var d = g.start.row;d <= g.end.row;d++) { + if(!c.test(e.getLine(d))) { + h = false; + break + } + }if(h) { + h = new l(0, 0, 0, 0); + for(d = g.start.row;d <= g.end.row;d++) { + var m = e.getLine(d).replace(c, "$1"); + h.start.row = d; + h.end.row = d; + h.end.column = m.length + 2; + e.replace(h, m) + }return-2 + }else { + return e.indentRows(g, "#") + } + }; + this.getNextLineIndent = function(c, e, g) { + var h = this.$getIndent(e), d = this.$tokenizer.getLineTokens(e, c).tokens; + if(d.length && d[d.length - 1].type == "comment") { + return h + }if(c == "start") { + if(e.match(/^.*[\{\(\[\:]\s*$/)) { + h += g + } + }return h + }; + this.checkOutdent = function(c, e, g) { + return this.$outdent.checkOutdent(e, g) + }; + this.autoOutdent = function(c, e, g) { + return this.$outdent.autoOutdent(e, g) + } + }).call(a.prototype); + return a +}); \ No newline at end of file diff --git a/build/ace/mode/python_highlight_rules.js b/build/ace/mode/python_highlight_rules.js new file mode 100644 index 00000000..cade2c71 --- /dev/null +++ b/build/ace/mode/python_highlight_rules.js @@ -0,0 +1,15 @@ +define(function(a) { + var d = a("../lib/oop"), c = a("../lib/lang"); + a = a("./text_highlight_rules"); + PythonHighlightRules = function() { + var e = c.arrayToMap("and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield".split("|")), f = c.arrayToMap("True|False|None|NotImplemented|Ellipsis|__debug__".split("|")), g = c.arrayToMap("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern".split("|")), + h = c.arrayToMap("".split("|")); + this.$rules = {start:[{token:"comment", regex:"#.*$"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}(?:(?:.)|(?:^"{3}))*?"{3}'}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}.*$', next:"qqstring"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"(?:(?:\\\\.)|(?:[^"\\\\]))*?"'}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}(?:(?:.)|(?:^'{3}))*?'{3}"}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}.*$", next:"qstring"}, {token:"string", + regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'(?:(?:\\\\.)|(?:[^'\\\\]))*?'"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))|\\d+)[jJ]\\b"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))"}, {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))[lL]\\b"}, + {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b"}, {token:function(b) { + return e[b] ? "keyword" : f[b] ? "constant.language" : h[b] ? "invalid.illegal" : g[b] ? "support.function" : b == "debugger" ? "invalid.deprecated" : "identifier" + }, regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}, {token:"keyword.operator", regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="}, {token:"lparen", regex:"[\\[\\(\\{]"}, {token:"rparen", regex:"[\\]\\)\\}]"}, {token:"text", regex:"\\s+"}], qqstring:[{token:"string", regex:'(?:^"{3})*?"{3}', next:"start"}, {token:"string", regex:".+"}], qstring:[{token:"string", regex:"(?:^'{3})*?'{3}", next:"start"}, {token:"string", regex:".+"}]} + }; + d.inherits(PythonHighlightRules, a); + return PythonHighlightRules +}); \ No newline at end of file diff --git a/build/ace/renderloop.js b/build/ace/renderloop.js index 7eac3a96..fbd33510 100644 --- a/build/ace/renderloop.js +++ b/build/ace/renderloop.js @@ -1,6 +1,6 @@ -define(function(c) { - var e = c("./lib/event"); - c = function(b) { +define(function(d) { + var e = d("./lib/event"); + d = function(b) { this.onRender = b; this.pending = false; this.changes = 0 @@ -13,8 +13,9 @@ define(function(c) { var a = this; this.setTimeoutZero(function() { a.pending = false; - a.onRender(a.changes); - a.changes = 0 + var c = a.changes; + a.changes = 0; + a.onRender(c) }) } }; @@ -23,9 +24,9 @@ define(function(c) { this.setTimeoutZero = function(b) { if(!this.attached) { var a = this; - e.addListener(window, "message", function(d) { - if(d.source == window && a.callback && d.data == a.messageName) { - e.stopPropagation(d); + e.addListener(window, "message", function(c) { + if(c.source == window && a.callback && c.data == a.messageName) { + e.stopPropagation(c); a.callback() } }); @@ -38,6 +39,6 @@ define(function(c) { setTimeout(b, 0) } } - }).call(c.prototype); - return c + }).call(d.prototype); + return d }); \ No newline at end of file diff --git a/build/ace/test/assertions.js b/build/ace/test/assertions.js index c7c5eefa..e69de29b 100644 --- a/build/ace/test/assertions.js +++ b/build/ace/test/assertions.js @@ -1,16 +0,0 @@ -/* - LGPLv3 -*/ -require.def([], function() { - window.assertPosition = function(a, b, c) { - assertEquals(a, c.row); - assertEquals(b, c.column) - }; - window.assertRange = function(a, b, c, e, d) { - assertPosition(a, b, d.start); - assertPosition(c, e, d.end) - }; - window.assertJsonEquals = function(a, b) { - assertEquals(JSON.stringify(a), JSON.stringify(b)) - } -}); \ No newline at end of file diff --git a/build/ace/test/change_document_test.js b/build/ace/test/change_document_test.js index afd3d113..e69de29b 100644 --- a/build/ace/test/change_document_test.js +++ b/build/ace/test/change_document_test.js @@ -1,79 +0,0 @@ -/* - LGPLv3 -*/ -require.def(["ace/Document", "ace/Editor", "ace/mode/Text", "ace/mode/JavaScript", "ace/test/MockRenderer"], function(b, c, f, d, e) { - new TestCase("ChangeDocumentTest", {setUp:function() { - this.doc1 = new b("abc\ndef"); - this.doc2 = new b("ghi\njkl"); - this.editor = new c(new e) - }, "test: change document":function() { - this.editor.setDocument(this.doc1); - assertEquals(this.doc1, this.editor.getDocument()); - this.editor.setDocument(this.doc2); - assertEquals(this.doc2, this.editor.getDocument()) - }, "test: only changes to the new document should have effect":function() { - var a = false; - this.editor.onDocumentChange = function() { - a = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - this.doc1.duplicateLines(0, 0); - assertFalse(a); - this.doc2.duplicateLines(0, 0); - assertTrue(a) - }, "test: should use cursor of new document":function() { - this.doc1.getSelection().moveCursorTo(0, 1); - this.doc2.getSelection().moveCursorTo(1, 0); - this.editor.setDocument(this.doc1); - assertPosition(0, 1, this.editor.getCursorPosition()); - this.editor.setDocument(this.doc2); - assertPosition(1, 0, this.editor.getCursorPosition()) - }, "test: only changing the cursor of the new doc should not have an effect":function() { - this.editor.onCursorChange = function() { - a = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - assertPosition(0, 0, this.editor.getCursorPosition()); - var a = false; - this.doc1.getSelection().moveCursorTo(0, 1); - assertPosition(0, 0, this.editor.getCursorPosition()); - assertFalse(a); - this.doc2.getSelection().moveCursorTo(1, 1); - assertPosition(1, 1, this.editor.getCursorPosition()); - assertTrue(a) - }, "test: should use selection of new document":function() { - this.doc1.getSelection().selectTo(0, 1); - this.doc2.getSelection().selectTo(1, 0); - this.editor.setDocument(this.doc1); - assertPosition(0, 1, this.editor.getSelection().getSelectionLead()); - this.editor.setDocument(this.doc2); - assertPosition(1, 0, this.editor.getSelection().getSelectionLead()) - }, "test: only changing the selection of the new doc should not have an effect":function() { - this.editor.onSelectionChange = function() { - a = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - assertPosition(0, 0, this.editor.getSelection().getSelectionLead()); - var a = false; - this.doc1.getSelection().selectTo(0, 1); - assertPosition(0, 0, this.editor.getSelection().getSelectionLead()); - assertFalse(a); - this.doc2.getSelection().selectTo(1, 1); - assertPosition(1, 1, this.editor.getSelection().getSelectionLead()); - assertTrue(a) - }, "test: should use mode of new document":function() { - this.editor.onDocumentModeChange = function() { - a = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - var a = false; - this.doc1.setMode(new Text); - assertFalse(a); - this.doc2.setMode(new d); - assertTrue(a) - }}) -}); \ No newline at end of file diff --git a/build/ace/test/document_test.js b/build/ace/test/document_test.js index c9e44b04..2e8f4bdd 100644 --- a/build/ace/test/document_test.js +++ b/build/ace/test/document_test.js @@ -1,148 +1,153 @@ /* LGPLv3 */ -require.def(["ace/Document", "ace/UndoManager", "ace/Editor", "ace/test/MockRenderer"], function(b, h, i, j) { - new TestCase("TextDocumentTest", {"test: find matching opening bracket":function() { - var a = new b(["(()(", "())))"]); - assertPosition(0, 1, a.findMatchingBracket({row:0, column:3})); - assertPosition(1, 0, a.findMatchingBracket({row:1, column:2})); - assertPosition(0, 3, a.findMatchingBracket({row:1, column:3})); - assertPosition(0, 0, a.findMatchingBracket({row:1, column:4})); - assertEquals(null, a.findMatchingBracket({row:1, column:5})) - }, "test: find matching closing bracket":function() { - var a = new b(["(()(", "())))"]); - assertPosition(1, 1, a.findMatchingBracket({row:1, column:1})); - assertPosition(1, 1, a.findMatchingBracket({row:1, column:1})); - assertPosition(1, 2, a.findMatchingBracket({row:0, column:4})); - assertPosition(0, 2, a.findMatchingBracket({row:0, column:2})); - assertPosition(1, 3, a.findMatchingBracket({row:0, column:1})); - assertEquals(null, a.findMatchingBracket({row:0, column:0})) - }, "test: match different bracket types":function() { - var a = new b(["({[", ")]}"]); - assertPosition(1, 0, a.findMatchingBracket({row:0, column:1})); - assertPosition(1, 2, a.findMatchingBracket({row:0, column:2})); - assertPosition(1, 1, a.findMatchingBracket({row:0, column:3})); - assertPosition(0, 0, a.findMatchingBracket({row:1, column:1})); - assertPosition(0, 2, a.findMatchingBracket({row:1, column:2})); - assertPosition(0, 1, a.findMatchingBracket({row:1, column:3})) - }, "test: move lines down":function() { - var a = new b(["1", "2", "3", "4"]); - a.moveLinesDown(0, 1); - assertEquals("3\n1\n2\n4", a.toString()); - a.moveLinesDown(1, 2); - assertEquals("3\n4\n1\n2", a.toString()); - a.moveLinesDown(2, 3); - assertEquals("3\n4\n1\n2", a.toString()); - a.moveLinesDown(2, 2); - assertEquals("3\n4\n2\n1", a.toString()) - }, "test: move lines up":function() { - var a = new b(["1", "2", "3", "4"]); - a.moveLinesUp(2, 3); - assertEquals("1\n3\n4\n2", a.toString()); - a.moveLinesUp(1, 2); - assertEquals("3\n4\n1\n2", a.toString()); - a.moveLinesUp(0, 1); - assertEquals("3\n4\n1\n2", a.toString()); - a.moveLinesUp(2, 2); - assertEquals("3\n1\n4\n2", a.toString()) - }, "test: duplicate lines":function() { - var a = new b(["1", "2", "3", "4"]); - a.duplicateLines(1, 2); - assertEquals("1\n2\n3\n2\n3\n4", a.toString()) - }, "test: duplicate last line":function() { - var a = new b(["1", "2", "3"]); - a.duplicateLines(2, 2); - assertEquals("1\n2\n3\n3", a.toString()) - }, "test: duplicate first line":function() { - var a = new b(["1", "2", "3"]); - a.duplicateLines(0, 0); - assertEquals("1\n1\n2\n3", a.toString()) - }, "test: should handle unix style new lines":function() { - var a = new b(["1", "2", "3"]); - assertEquals("1\n2\n3", a.toString()) - }, "test: should handle windows style new lines":function() { - var a = new b("1\r\n2\r\n3"); - a.setNewLineMode("unix"); - assertEquals("1\n2\n3", a.toString()) - }, "test: set new line mode to 'windows' should use '\r\n' as new lines":function() { - var a = new b("1\n2\n3"); - a.setNewLineMode("windows"); - assertEquals("1\r\n2\r\n3", a.toString()) - }, "test: set new line mode to 'unix' should use '\n' as new lines":function() { - var a = new b("1\r\n2\r\n3"); - a.setNewLineMode("unix"); - assertEquals("1\n2\n3", a.toString()) - }, "test: set new line mode to 'auto' should use detect the incoming nl type":function() { - var a = new b("1\n2\n3"); - a.setNewLineMode("auto"); - assertEquals("1\n2\n3", a.toString()); - a = new b("1\r\n2\r\n3"); - a.setNewLineMode("auto"); - assertEquals("1\r\n2\r\n3", a.toString()); - a.replace(new Range(0, 0, 2, 1), "4\n5\n6"); - assertEquals("4\n5\n6", a.toString()) - }, "test: undo/redo for delete line":function() { - var a = new b(["111", "222", "333"]), c = new h; - a.setUndoManager(c); - var e = a.toString(), d = new i(new j, a); - d.removeLines(); - var f = a.toString(); - assertEquals("222\n333", f); - a.$informUndoManager.call(); - d.removeLines(); - var g = a.toString(); - assertEquals("333", g); - a.$informUndoManager.call(); - d.removeLines(); - d = a.toString(); - assertEquals("", d); - a.$informUndoManager.call(); - c.undo(); - a.$informUndoManager.call(); - assertEquals(g, a.toString()); - c.undo(); - a.$informUndoManager.call(); - assertEquals(f, a.toString()); - c.undo(); - a.$informUndoManager.call(); - assertEquals(e, a.toString()); - c.undo(); - a.$informUndoManager.call(); - assertEquals(e, a.toString()) - }, "test: convert document to screen coordinates":function() { - var a = new b("01234\t567890\t1234"); - a.setTabSize(4); - assertEquals(0, a.documentToScreenColumn(0, 0)); - assertEquals(4, a.documentToScreenColumn(0, 4)); - assertEquals(5, a.documentToScreenColumn(0, 5)); - assertEquals(9, a.documentToScreenColumn(0, 6)); - assertEquals(15, a.documentToScreenColumn(0, 12)); - assertEquals(19, a.documentToScreenColumn(0, 13)); - a.setTabSize(2); - assertEquals(0, a.documentToScreenColumn(0, 0)); - assertEquals(4, a.documentToScreenColumn(0, 4)); - assertEquals(5, a.documentToScreenColumn(0, 5)); - assertEquals(7, a.documentToScreenColumn(0, 6)); - assertEquals(13, a.documentToScreenColumn(0, 12)); - assertEquals(15, a.documentToScreenColumn(0, 13)) - }, "test: convert document to scrren coordinates with leading tabs":function() { - var a = new b("\t\t123"); - a.setTabSize(4); - assertEquals(0, a.documentToScreenColumn(0, 0)); - assertEquals(4, a.documentToScreenColumn(0, 1)); - assertEquals(8, a.documentToScreenColumn(0, 2)); - assertEquals(9, a.documentToScreenColumn(0, 3)) - }, "test: convert screen to document coordinates":function() { - var a = new b("01234\t567890\t1234"); - a.setTabSize(4); - assertEquals(0, a.screenToDocumentColumn(0, 0)); - assertEquals(4, a.screenToDocumentColumn(0, 4)); - assertEquals(5, a.screenToDocumentColumn(0, 5)); - assertEquals(5, a.screenToDocumentColumn(0, 6)); - assertEquals(5, a.screenToDocumentColumn(0, 7)); - assertEquals(5, a.screenToDocumentColumn(0, 8)); - assertEquals(6, a.screenToDocumentColumn(0, 9)); - assertEquals(12, a.screenToDocumentColumn(0, 15)); - assertEquals(13, a.screenToDocumentColumn(0, 19)) - }}) -}); \ No newline at end of file +require("../../../support/paths"); +var Document = require("../document"), UndoManager = require("../undomanager"), MockRenderer = require("./mockrenderer"), Range = require("../range"), assert = require("./assertions"), async = require("async"), Test = {"test: find matching opening bracket":function() { + var a = new Document(["(()(", "())))"]); + assert.position(a.findMatchingBracket({row:0, column:3}), 0, 1); + assert.position(a.findMatchingBracket({row:1, column:2}), 1, 0); + assert.position(a.findMatchingBracket({row:1, column:3}), 0, 3); + assert.position(a.findMatchingBracket({row:1, column:4}), 0, 0); + assert.equal(a.findMatchingBracket({row:1, column:5}), null) +}, "test: find matching closing bracket":function() { + var a = new Document(["(()(", "())))"]); + assert.position(a.findMatchingBracket({row:1, column:1}), 1, 1); + assert.position(a.findMatchingBracket({row:1, column:1}), 1, 1); + assert.position(a.findMatchingBracket({row:0, column:4}), 1, 2); + assert.position(a.findMatchingBracket({row:0, column:2}), 0, 2); + assert.position(a.findMatchingBracket({row:0, column:1}), 1, 3); + assert.equal(a.findMatchingBracket({row:0, column:0}), null) +}, "test: match different bracket types":function() { + var a = new Document(["({[", ")]}"]); + assert.position(a.findMatchingBracket({row:0, column:1}), 1, 0); + assert.position(a.findMatchingBracket({row:0, column:2}), 1, 2); + assert.position(a.findMatchingBracket({row:0, column:3}), 1, 1); + assert.position(a.findMatchingBracket({row:1, column:1}), 0, 0); + assert.position(a.findMatchingBracket({row:1, column:2}), 0, 2); + assert.position(a.findMatchingBracket({row:1, column:3}), 0, 1) +}, "test: move lines down":function() { + var a = new Document(["1", "2", "3", "4"]); + console.log(a.toString().replace(/\n/g, "\\n")); + a.moveLinesDown(0, 1); + console.log(a.toString().replace(/\n/g, "\\n")); + assert.equal(a.toString(), "3\n1\n2\n4"); + a.moveLinesDown(1, 2); + assert.equal(a.toString(), "3\n4\n1\n2"); + a.moveLinesDown(2, 3); + assert.equal(a.toString(), "3\n4\n1\n2"); + a.moveLinesDown(2, 2); + assert.equal(a.toString(), "3\n4\n2\n1") +}, "__test: move lines up":function() { + var a = new Document(["1", "2", "3", "4"]); + console.log(a.toString().replace(/\n/g, "\\n")); + a.moveLinesUp(2, 3); + console.log(a.toString().replace(/\n/g, "\\n")); + assert.equal(a.toString(), "1\n3\n4\n2"); + a.moveLinesUp(1, 2); + assert.equal(a.toString(), "3\n4\n1\n2"); + a.moveLinesUp(0, 1); + assert.equal(a.toString(), "3\n4\n1\n2"); + a.moveLinesUp(2, 2); + assert.equal(a.toString(), "3\n1\n4\n2") +}, "test: duplicate lines":function() { + var a = new Document(["1", "2", "3", "4"]); + a.duplicateLines(1, 2); + assert.equal(a.toString(), "1\n2\n3\n2\n3\n4") +}, "test: duplicate last line":function() { + var a = new Document(["1", "2", "3"]); + a.duplicateLines(2, 2); + assert.equal(a.toString(), "1\n2\n3\n3") +}, "test: duplicate first line":function() { + var a = new Document(["1", "2", "3"]); + a.duplicateLines(0, 0); + assert.equal(a.toString(), "1\n1\n2\n3") +}, "test: should handle unix style new lines":function() { + var a = new Document(["1", "2", "3"]); + assert.equal(a.toString(), "1\n2\n3") +}, "test: should handle windows style new lines":function() { + var a = new Document("1\r\n2\r\n3"); + a.setNewLineMode("unix"); + assert.equal(a.toString(), "1\n2\n3") +}, "test: set new line mode to 'windows' should use '\r\n' as new lines":function() { + var a = new Document("1\n2\n3"); + a.setNewLineMode("windows"); + assert.equal(a.toString(), "1\r\n2\r\n3") +}, "test: set new line mode to 'unix' should use '\n' as new lines":function() { + var a = new Document("1\r\n2\r\n3"); + a.setNewLineMode("unix"); + assert.equal(a.toString(), "1\n2\n3") +}, "test: set new line mode to 'auto' should detect the incoming nl type":function() { + var a = new Document("1\n2\n3"); + a.setNewLineMode("auto"); + assert.equal(a.toString(), "1\n2\n3"); + a = new Document("1\r\n2\r\n3"); + a.setNewLineMode("auto"); + assert.equal(a.toString(), "1\r\n2\r\n3"); + a.replace(new Range(0, 0, 2, 1), "4\n5\n6"); + assert.equal("4\n5\n6", a.toString()) +}, "__test: undo/redo for delete line":function() { + var a = new Document(["111", "222", "333"]), b = new UndoManager; + a.setUndoManager(b); + var d = a.toString(), c = new Editor(new MockRenderer, a); + c.removeLines(); + var e = a.toString(); + assert.equal(e, "222\n333"); + a.$informUndoManager.call(); + c.removeLines(); + var f = a.toString(); + assert.equal(f, "333"); + a.$informUndoManager.call(); + c.removeLines(); + c = a.toString(); + assert.equal(c, ""); + a.$informUndoManager.call(); + b.undo(); + a.$informUndoManager.call(); + assert.equal(a.toString(), f); + b.undo(); + a.$informUndoManager.call(); + assert.equal(a.toString(), e); + b.undo(); + a.$informUndoManager.call(); + assert.equal(a.toString(), d); + b.undo(); + a.$informUndoManager.call(); + assert.equal(a.toString(), d) +}, "test: convert document to screen coordinates":function() { + var a = new Document("01234\t567890\t1234"); + a.setTabSize(4); + assert.equal(a.documentToScreenColumn(0, 0), 0); + assert.equal(a.documentToScreenColumn(0, 4), 4); + assert.equal(a.documentToScreenColumn(0, 5), 5); + assert.equal(a.documentToScreenColumn(0, 6), 9); + assert.equal(a.documentToScreenColumn(0, 12), 15); + assert.equal(a.documentToScreenColumn(0, 13), 19); + a.setTabSize(2); + assert.equal(a.documentToScreenColumn(0, 0), 0); + assert.equal(a.documentToScreenColumn(0, 4), 4); + assert.equal(a.documentToScreenColumn(0, 5), 5); + assert.equal(a.documentToScreenColumn(0, 6), 7); + assert.equal(a.documentToScreenColumn(0, 12), 13); + assert.equal(a.documentToScreenColumn(0, 13), 15) +}, "test: convert document to scrren coordinates with leading tabs":function() { + var a = new Document("\t\t123"); + a.setTabSize(4); + assert.equal(a.documentToScreenColumn(0, 0), 0); + assert.equal(a.documentToScreenColumn(0, 1), 4); + assert.equal(a.documentToScreenColumn(0, 2), 8); + assert.equal(a.documentToScreenColumn(0, 3), 9) +}, "test: convert screen to document coordinates":function() { + var a = new Document("01234\t567890\t1234"); + a.setTabSize(4); + assert.equal(a.screenToDocumentColumn(0, 0), 0); + assert.equal(a.screenToDocumentColumn(0, 4), 4); + assert.equal(a.screenToDocumentColumn(0, 5), 5); + assert.equal(a.screenToDocumentColumn(0, 6), 5); + assert.equal(a.screenToDocumentColumn(0, 7), 5); + assert.equal(a.screenToDocumentColumn(0, 8), 5); + assert.equal(a.screenToDocumentColumn(0, 9), 6); + assert.equal(a.screenToDocumentColumn(0, 15), 12); + assert.equal(a.screenToDocumentColumn(0, 19), 13) +}}; +module.exports = require("async/test").testcase(Test); +module === require.main && module.exports.exec(); \ No newline at end of file diff --git a/build/ace/test/event_emitter_test.js b/build/ace/test/event_emitter_test.js index 5b91cdfa..e69de29b 100644 --- a/build/ace/test/event_emitter_test.js +++ b/build/ace/test/event_emitter_test.js @@ -1,17 +0,0 @@ -/* - LGPLv3 -*/ -require.def(["ace/lib/oop", "ace/MEventEmitter"], function(d, e) { - var a = function() { - }; - d.implement(a.prototype, e); - new TestCase("EventEmitterTest", {"test: dispatch event with no data":function() { - var b = new a, c = false; - b.addEventListener("juhu", function(f) { - c = true; - assertEquals("juhu", f.type) - }); - b.$dispatchEvent("juhu"); - assertTrue(c) - }}) -}); \ No newline at end of file diff --git a/build/ace/test/mockrenderer.js b/build/ace/test/mockrenderer.js index 80df09eb..54fe2288 100644 --- a/build/ace/test/mockrenderer.js +++ b/build/ace/test/mockrenderer.js @@ -1,7 +1,7 @@ /* LGPLv3 */ -require.def([], function() { +define(function() { MockRenderer = function(a) { this.container = document.createElement("div"); this.cursor = {row:0, column:0}; @@ -52,5 +52,11 @@ require.def([], function() { }; MockRenderer.prototype.setBreakpoints = function() { }; + MockRenderer.prototype.updateFull = function() { + }; + MockRenderer.prototype.showCursor = function() { + }; + MockRenderer.prototype.visualizeFocus = function() { + }; return MockRenderer }); \ No newline at end of file diff --git a/build/ace/test/navigation_test.js b/build/ace/test/navigation_test.js index 7a33ea4d..e69de29b 100644 --- a/build/ace/test/navigation_test.js +++ b/build/ace/test/navigation_test.js @@ -1,77 +0,0 @@ -/* - LGPLv3 -*/ -require.def(["ace/Document", "ace/Editor", "ace/test/MockRenderer"], function(e, c, d) { - TestCase("NavigationTest", {createTextDocument:function(a, b) { - b = (new Array(b + 1)).join("a"); - a = (new Array(a)).join(b + "\n") + b; - return new e(a) - }, "test: navigate to end of file should scroll the last line into view":function() { - var a = this.createTextDocument(200, 10); - a = new c(new d, a); - a.navigateFileEnd(); - var b = a.getCursorPosition(); - assertTrue(a.getFirstVisibleRow() <= b.row); - assertTrue(a.getLastVisibleRow() >= b.row) - }, "test: navigate to start of file should scroll the first row into view":function() { - var a = this.createTextDocument(200, 10); - a = new c(new d, a); - a.moveCursorTo(a.getLastVisibleRow() + 20); - a.navigateFileStart(); - assertEquals(0, a.getFirstVisibleRow()) - }, "test: goto hidden line should scroll the line into the middle of the viewport":function() { - var a = new c(new d, this.createTextDocument(200, 5)); - a.navigateTo(0, 0); - a.gotoLine(101); - assertPosition(100, 0, a.getCursorPosition()); - assertEquals(90, a.getFirstVisibleRow()); - a.navigateTo(100, 0); - a.gotoLine(11); - assertPosition(10, 0, a.getCursorPosition()); - assertEquals(0, a.getFirstVisibleRow()); - a.navigateTo(100, 0); - a.gotoLine(6); - assertPosition(5, 0, a.getCursorPosition()); - assertEquals(0, a.getFirstVisibleRow()); - a.navigateTo(100, 0); - a.gotoLine(1); - assertPosition(0, 0, a.getCursorPosition()); - assertEquals(0, a.getFirstVisibleRow()); - a.navigateTo(0, 0); - a.gotoLine(191); - assertPosition(190, 0, a.getCursorPosition()); - assertEquals(180, a.getFirstVisibleRow()); - a.navigateTo(0, 0); - a.gotoLine(196); - assertPosition(195, 0, a.getCursorPosition()); - assertEquals(180, a.getFirstVisibleRow()) - }, "test: goto visible line should only move the cursor and not scroll":function() { - var a = new c(new d, this.createTextDocument(200, 5)); - a.navigateTo(0, 0); - a.gotoLine(12); - assertPosition(11, 0, a.getCursorPosition()); - assertEquals(0, a.getFirstVisibleRow()); - a.navigateTo(30, 0); - a.gotoLine(33); - assertPosition(32, 0, a.getCursorPosition()); - assertEquals(30, a.getFirstVisibleRow()) - }, "test: navigate from the end of a long line down to a short line and back should maintain the curser column":function() { - var a = new c(new d, new e(["123456", "1"])); - a.navigateTo(0, 6); - assertPosition(0, 6, a.getCursorPosition()); - a.navigateDown(); - assertPosition(1, 1, a.getCursorPosition()); - a.navigateUp(); - assertPosition(0, 6, a.getCursorPosition()) - }, "test: reset desired column on navigate left or right":function() { - var a = new c(new d, new e(["123456", "12"])); - a.navigateTo(0, 6); - assertPosition(0, 6, a.getCursorPosition()); - a.navigateDown(); - assertPosition(1, 2, a.getCursorPosition()); - a.navigateLeft(); - assertPosition(1, 1, a.getCursorPosition()); - a.navigateUp(); - assertPosition(0, 1, a.getCursorPosition()) - }}) -}); \ No newline at end of file diff --git a/build/ace/test/range_test.js b/build/ace/test/range_test.js index 56243724..e69de29b 100644 --- a/build/ace/test/range_test.js +++ b/build/ace/test/range_test.js @@ -1,74 +0,0 @@ -/* - LGPLv3 -*/ -require.def(["ace/Range"], function(b) { - RangeTest = new TestCase("RangeTest", {"test: create range":function() { - var a = new b(1, 2, 3, 4); - assertEquals(1, a.start.row); - assertEquals(2, a.start.column); - assertEquals(3, a.end.row); - assertEquals(4, a.end.column) - }, "test: create from points":function() { - var a = b.fromPoints({row:1, column:2}, {row:3, column:4}); - assertEquals(1, a.start.row); - assertEquals(2, a.start.column); - assertEquals(3, a.end.row); - assertEquals(4, a.end.column) - }, "test: clip to rows":function() { - assertRange(10, 0, 31, 0, (new b(0, 20, 100, 30)).clipRows(10, 30)); - assertRange(10, 0, 30, 10, (new b(0, 20, 30, 10)).clipRows(10, 30)); - var a = new b(0, 20, 3, 10); - a = a.clipRows(10, 30); - assertTrue(a.isEmpty()); - assertRange(10, 0, 10, 0, a) - }, "test: isEmpty":function() { - var a = new b(1, 2, 1, 2); - assertTrue(a.isEmpty()); - a = new b(1, 2, 1, 6); - assertFalse(a.isEmpty()) - }, "test: is multi line":function() { - var a = new b(1, 2, 1, 6); - assertFalse(a.isMultiLine()); - a = new b(1, 2, 2, 6); - assertTrue(a.isMultiLine()) - }, "test: clone":function() { - var a = new b(1, 2, 3, 4), c = a.clone(); - assertPosition(1, 2, c.start); - assertPosition(3, 4, c.end); - c.start.column = 20; - assertPosition(1, 2, a.start); - c.end.column = 20; - assertPosition(3, 4, a.end) - }, "test: contains for multi line ranges":function() { - var a = new b(1, 10, 5, 20); - assertTrue(a.contains(1, 10)); - assertTrue(a.contains(2, 0)); - assertTrue(a.contains(3, 100)); - assertTrue(a.contains(5, 19)); - assertTrue(a.contains(5, 20)); - assertFalse(a.contains(1, 9)); - assertFalse(a.contains(0, 0)); - assertFalse(a.contains(5, 21)) - }, "test: contains for single line ranges":function() { - var a = new b(1, 10, 1, 20); - assertTrue(a.contains(1, 10)); - assertTrue(a.contains(1, 15)); - assertTrue(a.contains(1, 20)); - assertFalse(a.contains(0, 9)); - assertFalse(a.contains(2, 9)); - assertFalse(a.contains(1, 9)); - assertFalse(a.contains(1, 21)) - }, "test: extend range":function() { - var a = new b(2, 10, 2, 30); - a = a.extend(2, 5); - assertRange(2, 5, 2, 30, a); - a = a.extend(2, 35); - assertRange(2, 5, 2, 35, a); - a = a.extend(2, 15); - assertRange(2, 5, 2, 35, a); - a = a.extend(1, 4); - assertRange(1, 4, 2, 35, a); - a = a.extend(6, 10); - assertRange(1, 4, 6, 10, a) - }}) -}); \ No newline at end of file diff --git a/build/ace/test/search_test.js b/build/ace/test/search_test.js index 83494e64..a0b34be2 100644 --- a/build/ace/test/search_test.js +++ b/build/ace/test/search_test.js @@ -1,135 +1,135 @@ /* LGPLv3 */ -require.def(["ace/Document", "ace/Search"], function(c, b) { - new TestCase("SearchTest", {"test: configure the search object":function() { - (new b).set({needle:"juhu", scope:b.ALL}) - }, "test: find simple text in document":function() { - var a = new c(["juhu kinners 123", "456"]); - a = (new b).set({needle:"kinners"}).find(a); - assertPosition(0, 5, a.start); - assertPosition(0, 12, a.end) - }, "test: find simple text in next line":function() { - var a = new c(["abc", "juhu kinners 123", "456"]); - a = (new b).set({needle:"kinners"}).find(a); - assertPosition(1, 5, a.start); - assertPosition(1, 12, a.end) - }, "test: find text starting at cursor position":function() { - var a = new c(["juhu kinners", "juhu kinners 123"]); - a.getSelection().moveCursorTo(0, 6); - a = (new b).set({needle:"kinners"}).find(a); - assertPosition(1, 5, a.start); - assertPosition(1, 12, a.end) - }, "test: wrap search is off by default":function() { - var a = new c(["abc", "juhu kinners 123", "456"]); - a.getSelection().moveCursorTo(2, 1); - var d = (new b).set({needle:"kinners"}); - assertEquals(null, d.find(a)) - }, "test: wrap search should wrap at file end":function() { - var a = new c(["abc", "juhu kinners 123", "456"]); - a.getSelection().moveCursorTo(2, 1); - a = (new b).set({needle:"kinners", wrap:true}).find(a); - assertPosition(1, 5, a.start); - assertPosition(1, 12, a.end) - }, "test: wrap search with no match should return 'null'":function() { - var a = new c(["abc", "juhu kinners 123", "456"]); - a.getSelection().moveCursorTo(2, 1); - var d = (new b).set({needle:"xyz", wrap:true}); - assertEquals(null, d.find(a)) - }, "test: case sensitive is by default off":function() { - var a = new c(["abc", "juhu kinners 123", "456"]), d = (new b).set({needle:"JUHU"}); - assertEquals(null, d.find(a)) - }, "test: case sensitive search":function() { - var a = new c(["abc", "juhu kinners 123", "456"]); - a = (new b).set({needle:"KINNERS", caseSensitive:true}).find(a); - assertPosition(1, 5, a.start); - assertPosition(1, 12, a.end) - }, "test: whole word search should not match inside of words":function() { - var a = new c(["juhukinners", "juhu kinners 123", "456"]); - a = (new b).set({needle:"kinners", wholeWord:true}).find(a); - assertPosition(1, 5, a.start); - assertPosition(1, 12, a.end) - }, "test: find backwards":function() { - var a = new c(["juhu juhu juhu juhu"]); - a.getSelection().moveCursorTo(0, 10); - a = (new b).set({needle:"juhu", backwards:true}).find(a); - assertPosition(0, 5, a.start); - assertPosition(0, 9, a.end) - }, "test: find in selection":function() { - var a = new c(["juhu", "juhu", "juhu", "juhu"]); - a.getSelection().setSelectionAnchor(1, 0); - a.getSelection().selectTo(3, 5); - var d = (new b).set({needle:"juhu", wrap:true, scope:b.SELECTION}), e = d.find(a); - assertPosition(1, 0, e.start); - assertPosition(1, 4, e.end); - a.getSelection().setSelectionAnchor(0, 2); - a.getSelection().selectTo(3, 2); - e = d.find(a); - assertPosition(1, 0, e.start); - assertPosition(1, 4, e.end) - }, "test: find backwards in selection":function() { - var a = new c(["juhu", "juhu", "juhu", "juhu"]), d = (new b).set({needle:"juhu", wrap:true, backwards:true, scope:b.SELECTION}); - a.getSelection().setSelectionAnchor(0, 2); - a.getSelection().selectTo(3, 2); - var e = d.find(a); - assertPosition(2, 0, e.start); - assertPosition(2, 4, e.end); - a.getSelection().setSelectionAnchor(0, 2); - a.getSelection().selectTo(1, 2); - assertEquals(null, d.find(a)) - }, "test: edge case - match directly before the cursor":function() { - var a = new c(["123", "123", "juhu"]), d = (new b).set({needle:"juhu", wrap:true}); - a.getSelection().moveCursorTo(2, 5); - a = d.find(a); - assertPosition(2, 0, a.start); - assertPosition(2, 4, a.end) - }, "test: edge case - match backwards directly after the cursor":function() { - var a = new c(["123", "123", "juhu"]), d = (new b).set({needle:"juhu", wrap:true, backwards:true}); - a.getSelection().moveCursorTo(2, 0); - a = d.find(a); - assertPosition(2, 0, a.start); - assertPosition(2, 4, a.end) - }, "test: find using a regular expression":function() { - var a = new c(["abc123 123 cd", "abc"]); - a = (new b).set({needle:"\\d+", regExp:true}).find(a); - assertPosition(0, 3, a.start); - assertPosition(0, 6, a.end) - }, "test: find using a regular expression and whole word":function() { - var a = new c(["abc123 123 cd", "abc"]); - a = (new b).set({needle:"\\d+\\b", regExp:true, wholeWord:true}).find(a); - assertPosition(0, 7, a.start); - assertPosition(0, 10, a.end) - }, "test: use regular expressions with capture groups":function() { - var a = new c([" ab: 12px", "

-*/ -require.def(["ace/Document"], function(c) { - TestCase("SelectionTest", {createTextDocument:function(a, b) { - b = (new Array(b + 1)).join("a"); - a = (new Array(a)).join(b + "\n") + b; - return new c(a) - }, "test: move cursor to end of file should place the cursor on last row and column":function() { - var a = this.createTextDocument(200, 10).getSelection(); - a.moveCursorFileEnd(); - assertPosition(199, 10, a.getCursor()) - }, "test: moveCursor to start of file should place the cursor on the first row and column":function() { - var a = this.createTextDocument(200, 10).getSelection(); - a.moveCursorFileStart(); - assertPosition(0, 0, a.getCursor()) - }, "test: move selection lead to end of file":function() { - var a = this.createTextDocument(200, 10).getSelection(); - a.moveCursorTo(100, 5); - a.selectFileEnd(); - a = a.getRange(); - assertPosition(100, 5, a.start); - assertPosition(199, 10, a.end) - }, "test: move selection lead to start of file":function() { - var a = this.createTextDocument(200, 10).getSelection(); - a.moveCursorTo(100, 5); - a.selectFileStart(); - a = a.getRange(); - assertPosition(0, 0, a.start); - assertPosition(100, 5, a.end) - }, "test: move cursor word right":function() { - var a = (new c("ab\n Juhu Kinners (abc, 12)\n cde")).getSelection(); - a.moveCursorDown(); - assertPosition(1, 0, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 1, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 5, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 6, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 13, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 15, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 18, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 20, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 22, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(1, 23, a.getCursor()); - a.moveCursorWordRight(); - assertPosition(2, 0, a.getCursor()) - }, "test: select word right if cursor in word":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 2); - a.moveCursorWordRight(); - assertPosition(0, 4, a.getCursor()) - }, "test: moveCursor word left":function() { - var a = (new c("ab\n Juhu Kinners (abc, 12)\n cde")).getSelection(); - a.moveCursorDown(); - a.moveCursorLineEnd(); - assertPosition(1, 23, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 22, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 20, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 18, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 15, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 13, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 6, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 5, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 1, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(1, 0, a.getCursor()); - a.moveCursorWordLeft(); - assertPosition(0, 2, a.getCursor()) - }, "test: select word left if cursor in word":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 8); - a.moveCursorWordLeft(); - assertPosition(0, 5, a.getCursor()) - }, "test: select word right and select":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 0); - a.selectWordRight(); - a = a.getRange(); - assertPosition(0, 0, a.start); - assertPosition(0, 4, a.end) - }, "test: select word left and select":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 3); - a.selectWordLeft(); - a = a.getRange(); - assertPosition(0, 0, a.start); - assertPosition(0, 3, a.end) - }, "test: select word with cursor in word should select the word":function() { - var a = (new c("Juhu Kinners 123")).getSelection(); - a.moveCursorTo(0, 8); - a.selectWord(); - a = a.getRange(); - assertPosition(0, 5, a.start); - assertPosition(0, 12, a.end) - }, "test: select word with cursor betwen white space and word should select the word":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 4); - a.selectWord(); - var b = a.getRange(); - assertPosition(0, 0, b.start); - assertPosition(0, 4, b.end); - a.moveCursorTo(0, 5); - a.selectWord(); - b = a.getRange(); - assertPosition(0, 5, b.start); - assertPosition(0, 12, b.end) - }, "test: select word with cursor in white space should select white space":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 5); - a.selectWord(); - a = a.getRange(); - assertPosition(0, 4, a.start); - assertPosition(0, 6, a.end) - }, "test: moving cursor should fire a 'changeCursor' event":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 5); - var b = false; - a.addEventListener("changeCursor", function() { - b = true - }); - a.moveCursorTo(0, 6); - assertTrue(b) - }, "test: calling setCursor with the same position should not fire an event":function() { - var a = (new c("Juhu Kinners")).getSelection(); - a.moveCursorTo(0, 5); - var b = false; - a.addEventListener("changeCursor", function() { - b = true - }); - a.moveCursorTo(0, 5); - assertFalse(b) - }}) -}); \ No newline at end of file diff --git a/build/ace/test/text_edit_test.js b/build/ace/test/text_edit_test.js index f69ce6f4..218e7848 100644 --- a/build/ace/test/text_edit_test.js +++ b/build/ace/test/text_edit_test.js @@ -1,178 +1,185 @@ /* LGPLv3 */ -require.def(["ace/Document", "ace/Editor", "ace/mode/JavaScript", "ace/test/MockRenderer"], function(c, d, g, e) { - TestCase("TextEditTest", {"test: delete line from the middle":function() { - var b = new c("a\nb\nc\nd"), a = new d(new e, b); - a.moveCursorTo(1, 1); - a.removeLines(); - assertEquals("a\nc\nd", b.toString()); - assertPosition(1, 0, a.getCursorPosition()); - a.removeLines(); - assertEquals("a\nd", b.toString()); - assertPosition(1, 0, a.getCursorPosition()); - a.removeLines(); - assertEquals("a\n", b.toString()); - assertPosition(1, 0, a.getCursorPosition()); - a.removeLines(); - assertEquals("a\n", b.toString()); - assertPosition(1, 0, a.getCursorPosition()) - }, "test: delete multiple selected lines":function() { - var b = new c("a\nb\nc\nd"), a = new d(new e, b); - a.moveCursorTo(1, 1); - a.getSelection().selectDown(); - a.removeLines(); - assertEquals("a\nd", b.toString()); - assertPosition(1, 0, a.getCursorPosition()) - }, "test: delete first line":function() { - var b = new c("a\nb\nc"), a = new d(new e, b); - a.removeLines(); - assertEquals("b\nc", b.toString()); - assertPosition(0, 0, a.getCursorPosition()) - }, "test: delete last":function() { - var b = new c("a\nb\nc"), a = new d(new e, b); - a.moveCursorTo(2, 1); - a.removeLines(); - assertEquals("a\nb\n", b.toString()); - assertPosition(2, 0, a.getCursorPosition()) - }, "test: indent block":function() { - var b = new c("a12345\nb12345\nc12345"), a = new d(new e, b); - a.moveCursorTo(1, 3); - a.getSelection().selectDown(); - a.blockIndent(" "); - assertEquals("a12345\n b12345\n c12345", b.toString()); - assertPosition(2, 7, a.getCursorPosition()); - b = a.getSelectionRange(); - assertPosition(1, 7, b.start); - assertPosition(2, 7, b.end) - }, "test: outdent block":function() { - var b = new c(" a12345\n b12345\n c12345"), a = new d(new e, b); - a.moveCursorTo(0, 3); - a.getSelection().selectDown(); - a.getSelection().selectDown(); - a.blockOutdent(" "); - assertEquals(" a12345\nb12345\n c12345", b.toString()); - assertPosition(2, 1, a.getCursorPosition()); - var f = a.getSelectionRange(); - assertPosition(0, 1, f.start); - assertPosition(2, 1, f.end); - a.blockOutdent(" "); - assertEquals(" a12345\nb12345\n c12345", b.toString()); - f = a.getSelectionRange(); - assertPosition(0, 1, f.start); - assertPosition(2, 1, f.end) - }, "test: outent without a selection should update cursor":function() { - var b = new c(" 12"), a = new d(new e, b); - a.moveCursorTo(0, 3); - a.blockOutdent(" "); - assertEquals(" 12", b.toString()); - assertPosition(0, 1, a.getCursorPosition()) - }, "test: comment lines should perserve selection":function() { - var b = new c(" abc\ncde", new g), a = new d(new e, b); - a.moveCursorTo(0, 2); - a.getSelection().selectDown(); - a.toggleCommentLines(); - assertEquals("// abc\n//cde", b.toString()); - b = a.getSelectionRange(); - assertPosition(0, 4, b.start); - assertPosition(1, 4, b.end) - }, "test: uncomment lines should perserve selection":function() { - var b = new c("// abc\n//cde", new g), a = new d(new e, b); - a.moveCursorTo(0, 1); - a.getSelection().selectDown(); - a.getSelection().selectRight(); - a.getSelection().selectRight(); - a.toggleCommentLines(); - assertEquals(" abc\ncde", b.toString()); - assertRange(0, 0, 1, 1, a.getSelectionRange()) - }, "test: comment lines - if the selection end is at the line start it should stay there":function() { - var b = new c("abc\ncde", new g); - b = new d(new e, b); - b.moveCursorTo(0, 0); - b.getSelection().selectDown(); - b.toggleCommentLines(); - assertRange(0, 2, 1, 0, b.getSelectionRange()); - b = new c("abc\ncde", new g); - b = new d(new e, b); - b.moveCursorTo(1, 0); - b.getSelection().selectUp(); - b.toggleCommentLines(); - assertRange(0, 2, 1, 0, b.getSelectionRange()) - }, "test: move lines down should select moved lines":function() { - var b = new c("11\n22\n33\n44"), a = new d(new e, b); - a.moveCursorTo(0, 1); - a.getSelection().selectDown(); - a.moveLinesDown(); - assertEquals("33\n11\n22\n44", b.toString()); - assertPosition(1, 0, a.getCursorPosition()); - assertPosition(3, 0, a.getSelection().getSelectionAnchor()); - assertPosition(1, 0, a.getSelection().getSelectionLead()); - a.moveLinesDown(); - assertEquals("33\n44\n11\n22", b.toString()); - assertPosition(2, 0, a.getCursorPosition()); - assertPosition(3, 2, a.getSelection().getSelectionAnchor()); - assertPosition(2, 0, a.getSelection().getSelectionLead()); - a.moveLinesDown(); - assertEquals("33\n44\n11\n22", b.toString()); - assertPosition(2, 0, a.getCursorPosition()); - assertPosition(3, 2, a.getSelection().getSelectionAnchor()); - assertPosition(2, 0, a.getSelection().getSelectionLead()) - }, "test: move lines up should select moved lines":function() { - var b = new c("11\n22\n33\n44"), a = new d(new e, b); - a.moveCursorTo(2, 1); - a.getSelection().selectDown(); - a.moveLinesUp(); - assertEquals("11\n33\n44\n22", b.toString()); - assertPosition(1, 0, a.getCursorPosition()); - assertPosition(3, 0, a.getSelection().getSelectionAnchor()); - assertPosition(1, 0, a.getSelection().getSelectionLead()); - a.moveLinesUp(); - assertEquals("33\n44\n11\n22", b.toString()); - assertPosition(0, 0, a.getCursorPosition()); - assertPosition(2, 0, a.getSelection().getSelectionAnchor()); - assertPosition(0, 0, a.getSelection().getSelectionLead()) - }, "test: move line without active selection should move cursor to start of the moved line":function() { - var b = new c("11\n22\n33\n44"), a = new d(new e, b); - a.moveCursorTo(1, 1); - a.clearSelection(); - a.moveLinesDown(); - assertEquals("11\n33\n22\n44", b.toString()); - assertPosition(2, 0, a.getCursorPosition()); - a.clearSelection(); - a.moveLinesUp(); - assertEquals("11\n22\n33\n44", b.toString()); - assertPosition(1, 0, a.getCursorPosition()) - }, "test: copy lines down should select lines and place cursor at the selection start":function() { - var b = new c("11\n22\n33\n44"), a = new d(new e, b); - a.moveCursorTo(1, 1); - a.getSelection().selectDown(); - a.copyLinesDown(); - assertEquals("11\n22\n33\n22\n33\n44", b.toString()); - assertPosition(3, 0, a.getCursorPosition()); - assertPosition(5, 0, a.getSelection().getSelectionAnchor()); - assertPosition(3, 0, a.getSelection().getSelectionLead()) - }, "test: copy lines up should select lines and place cursor at the selection start":function() { - var b = new c("11\n22\n33\n44"), a = new d(new e, b); - a.moveCursorTo(1, 1); - a.getSelection().selectDown(); - a.copyLinesUp(); - assertEquals("11\n22\n33\n22\n33\n44", b.toString()); - assertPosition(1, 0, a.getCursorPosition()); - assertPosition(3, 0, a.getSelection().getSelectionAnchor()); - assertPosition(1, 0, a.getSelection().getSelectionLead()) - }, "test: input a tab with soft tab should convert it to spaces":function() { - var b = new c(""), a = new d(new e, b); - b.setTabSize(2); - b.setUseSoftTabs(true); - a.onTextInput("\t"); - assertEquals(" ", b.toString()); - b.setTabSize(5); - a.onTextInput("\t"); - assertEquals(" ", b.toString()) - }, "test: input tab without soft tabs should keep the tab character":function() { - var b = new c(""), a = new d(new e, b); - b.setUseSoftTabs(false); - a.onTextInput("\t"); - assertEquals("\t", b.toString()) - }}) -}); \ No newline at end of file +require("../../../support/paths"); +var dom = require("jsdom/level2/html").dom.level2.html, browser = require("jsdom/browser/index").windowAugmentation(dom); +global.document = browser.document; +global.window = browser.window; +global.self = browser.self; +global.navigator = browser.navigator; +global.location = browser.location; +var Document = require("../document"), Editor = require("../editor"), JavaScriptMode = require("../mode/javascript"), MockRenderer = require("./mockrenderer"), assert = require("./assertions"), Test = {"test: delete line from the middle":function() { + var b = new Document("a\nb\nc\nd"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(1, 1); + a.removeLines(); + assert.equal(b.toString(), "a\nc\nd"); + assert.position(a.getCursorPosition(), 1, 0); + a.removeLines(); + assert.equal(b.toString(), "a\nd"); + assert.position(a.getCursorPosition(), 1, 0); + a.removeLines(); + assert.equal(b.toString(), "a\n"); + assert.position(a.getCursorPosition(), 1, 0); + a.removeLines(); + assert.equal(b.toString(), "a\n"); + assert.position(a.getCursorPosition(), 1, 0) +}, "test: delete multiple selected lines":function() { + var b = new Document("a\nb\nc\nd"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(1, 1); + a.getSelection().selectDown(); + a.removeLines(); + assert.equal(b.toString(), "a\nd"); + assert.position(a.getCursorPosition(), 1, 0) +}, "test: delete first line":function() { + var b = new Document("a\nb\nc"), a = new Editor(new MockRenderer, b); + a.removeLines(); + assert.equal(b.toString(), "b\nc"); + assert.position(a.getCursorPosition(), 0, 0) +}, "test: delete last":function() { + var b = new Document("a\nb\nc"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(2, 1); + a.removeLines(); + assert.equal(b.toString(), "a\nb\n"); + assert.position(a.getCursorPosition(), 2, 0) +}, "__test: indent block":function() { + var b = new Document("a12345\nb12345\nc12345"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(1, 3); + a.getSelection().selectDown(); + a.blockIndent(" "); + assert.equal("a12345\n b12345\n c12345", b.toString()); + assert.position(a.getCursorPosition(), 2, 7); + b = a.getSelectionRange(); + assert.position(b.start, 1, 7); + assert.position(b.end, 2, 7) +}, "__test: outdent block":function() { + var b = new Document(" a12345\n b12345\n c12345"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(0, 3); + a.getSelection().selectDown(); + a.getSelection().selectDown(); + a.blockOutdent(" "); + assert.equal(b.toString(), " a12345\nb12345\n c12345"); + assert.position(a.getCursorPosition(), 2, 0); + var c = a.getSelectionRange(); + assert.position(c.start, 0, 1); + assert.position(c.end, 2, 1); + a.blockOutdent(" "); + assert.equal(b.toString(), "a12345\nb12345\nc12345"); + c = a.getSelectionRange(); + assert.position(c.start, 0, 1); + assert.position(c.end, 2, 1) +}, "test: outent without a selection should update cursor":function() { + var b = new Document(" 12"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(0, 3); + a.blockOutdent(" "); + assert.equal(b.toString(), " 12"); + assert.position(a.getCursorPosition(), 0, 0) +}, "test: comment lines should perserve selection":function() { + var b = new Document(" abc\ncde", new JavaScriptMode), a = new Editor(new MockRenderer, b); + a.moveCursorTo(0, 2); + a.getSelection().selectDown(); + a.toggleCommentLines(); + assert.equal("// abc\n//cde", b.toString()); + b = a.getSelectionRange(); + assert.position(b.start, 0, 4); + assert.position(b.end, 1, 4) +}, "test: uncomment lines should perserve selection":function() { + var b = new Document("// abc\n//cde", new JavaScriptMode), a = new Editor(new MockRenderer, b); + a.moveCursorTo(0, 1); + a.getSelection().selectDown(); + a.getSelection().selectRight(); + a.getSelection().selectRight(); + a.toggleCommentLines(); + assert.equal(" abc\ncde", b.toString()); + assert.range(a.getSelectionRange(), 0, 0, 1, 1) +}, "test: comment lines - if the selection end is at the line start it should stay there":function() { + var b = new Document("abc\ncde", new JavaScriptMode); + b = new Editor(new MockRenderer, b); + b.moveCursorTo(0, 0); + b.getSelection().selectDown(); + b.toggleCommentLines(); + assert.range(b.getSelectionRange(), 0, 2, 1, 0); + b = new Document("abc\ncde", new JavaScriptMode); + b = new Editor(new MockRenderer, b); + b.moveCursorTo(1, 0); + b.getSelection().selectUp(); + b.toggleCommentLines(); + assert.range(b.getSelectionRange(), 0, 2, 1, 0) +}, "test: move lines down should select moved lines":function() { + var b = new Document("11\n22\n33\n44"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(0, 1); + a.getSelection().selectDown(); + a.moveLinesDown(); + assert.equal("33\n11\n22\n44", b.toString()); + assert.position(a.getCursorPosition(), 1, 0); + assert.position(a.getSelection().getSelectionAnchor(), 3, 0); + assert.position(a.getSelection().getSelectionLead(), 1, 0); + a.moveLinesDown(); + assert.equal("33\n44\n11\n22", b.toString()); + assert.position(a.getCursorPosition(), 2, 0); + assert.position(a.getSelection().getSelectionAnchor(), 3, 2); + assert.position(a.getSelection().getSelectionLead(), 2, 0); + a.moveLinesDown(); + assert.equal("33\n44\n11\n22", b.toString()); + assert.position(a.getCursorPosition(), 2, 0); + assert.position(a.getSelection().getSelectionAnchor(), 3, 2); + assert.position(a.getSelection().getSelectionLead(), 2, 0) +}, "__test: move lines up should select moved lines":function() { + var b = new Document("11\n22\n33\n44"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(2, 1); + a.getSelection().selectDown(); + a.moveLinesUp(); + assert.equal(b.toString(), "11\n33\n44\n22"); + assert.position(a.getCursorPosition(), 1, 0); + assert.position(a.getSelection().getSelectionAnchor(), 3, 0); + assert.position(a.getSelection().getSelectionLead(), 1, 0); + a.moveLinesUp(); + assert.equal(b.toString(), "33\n44\n11\n22"); + assert.position(a.getCursorPosition(), 0, 0); + assert.position(a.getSelection().getSelectionAnchor(), 2, 0); + assert.position(a.getSelection().getSelectionLead(), 0, 0) +}, "test: move line without active selection should move cursor to start of the moved line":function() { + var b = new Document("11\n22\n33\n44"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(1, 1); + a.clearSelection(); + a.moveLinesDown(); + assert.equal("11\n33\n22\n44", b.toString()); + assert.position(a.getCursorPosition(), 2, 0); + a.clearSelection(); + a.moveLinesUp(); + assert.equal("11\n22\n33\n44", b.toString()); + assert.position(a.getCursorPosition(), 1, 0) +}, "test: copy lines down should select lines and place cursor at the selection start":function() { + var b = new Document("11\n22\n33\n44"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(1, 1); + a.getSelection().selectDown(); + a.copyLinesDown(); + assert.equal("11\n22\n33\n22\n33\n44", b.toString()); + assert.position(a.getCursorPosition(), 3, 0); + assert.position(a.getSelection().getSelectionAnchor(), 5, 0); + assert.position(a.getSelection().getSelectionLead(), 3, 0) +}, "test: copy lines up should select lines and place cursor at the selection start":function() { + var b = new Document("11\n22\n33\n44"), a = new Editor(new MockRenderer, b); + a.moveCursorTo(1, 1); + a.getSelection().selectDown(); + a.copyLinesUp(); + assert.equal("11\n22\n33\n22\n33\n44", b.toString()); + assert.position(a.getCursorPosition(), 1, 0); + assert.position(a.getSelection().getSelectionAnchor(), 3, 0); + assert.position(a.getSelection().getSelectionLead(), 1, 0) +}, "test: input a tab with soft tab should convert it to spaces":function() { + var b = new Document(""), a = new Editor(new MockRenderer, b); + b.setTabSize(2); + b.setUseSoftTabs(true); + a.onTextInput("\t"); + assert.equal(b.toString(), " "); + b.setTabSize(5); + a.onTextInput("\t"); + assert.equal(b.toString(), " ") +}, "test: input tab without soft tabs should keep the tab character":function() { + var b = new Document(""), a = new Editor(new MockRenderer, b); + b.setUseSoftTabs(false); + a.onTextInput("\t"); + assert.equal(b.toString(), "\t") +}}; +module.exports = require("async/test").testcase(Test); +module === require.main && module.exports.exec(); \ No newline at end of file diff --git a/build/ace/test/virtual_renderer_test.js b/build/ace/test/virtual_renderer_test.js index 8c3a51c3..a594764a 100644 --- a/build/ace/test/virtual_renderer_test.js +++ b/build/ace/test/virtual_renderer_test.js @@ -1,27 +1,28 @@ /* LGPLv3 */ -require.def(["ace/Document", "ace/VirtualRenderer"], function(c, d) { - new TestCase("VirtualRendererTest", {"test: screen2text the column should be rounded to the next character edge":function() { - var b = document.createElement("div"); - b.style.left = "0px"; - b.style.top = "0px"; - b.style.width = "100px"; - b.style.height = "100px"; - document.body.style.margin = "0px"; - document.body.style.padding = "0px"; - document.body.appendChild(b); - var a = new d(b); - a.setDocument(new c("1234")); - a.characterWidth = 10; - a.lineHeight = 15; - assertPosition(0, 0, a.screenToTextCoordinates(0, 0)); - assertPosition(0, 0, a.screenToTextCoordinates(4, 0)); - assertPosition(0, 1, a.screenToTextCoordinates(5, 0)); - assertPosition(0, 1, a.screenToTextCoordinates(9, 0)); - assertPosition(0, 1, a.screenToTextCoordinates(10, 0)); - assertPosition(0, 1, a.screenToTextCoordinates(14, 0)); - assertPosition(0, 2, a.screenToTextCoordinates(15, 0)); - document.body.removeChild(b) - }}) -}); \ No newline at end of file +require("../../../support/paths"); +var Document = "../document", VirtualRenderer = "../virtual_renderer", assert = "../assertions", Test = {"test: screen2text the column should be rounded to the next character edge":function() { + var b = document.createElement("div"); + b.style.left = "0px"; + b.style.top = "0px"; + b.style.width = "100px"; + b.style.height = "100px"; + document.body.style.margin = "0px"; + document.body.style.padding = "0px"; + document.body.appendChild(b); + var a = new VirtualRenderer(b); + a.setDocument(new Document("1234")); + a.characterWidth = 10; + a.lineHeight = 15; + assert.position(a.screenToTextCoordinates(0, 0), 0, 0); + assert.position(a.screenToTextCoordinates(4, 0), 0, 0); + assert.position(a.screenToTextCoordinates(5, 0), 0, 1); + assert.position(a.screenToTextCoordinates(9, 0), 0, 1); + assert.position(a.screenToTextCoordinates(10, 0), 0, 1); + assert.position(a.screenToTextCoordinates(14, 0), 0, 1); + assert.position(a.screenToTextCoordinates(15, 0), 0, 2); + document.body.removeChild(b) +}}; +module.exports = require("async/test").testcase(Test); +module === require.main && module.exports.exec(); \ No newline at end of file diff --git a/build/ace/virtual_renderer.js b/build/ace/virtual_renderer.js index d6913644..b2121244 100644 --- a/build/ace/virtual_renderer.js +++ b/build/ace/virtual_renderer.js @@ -6,12 +6,12 @@ define(["require", "exports", "module", 'text!ace/css/editor.css!.ace_editor {\n this.container = a; f.addCssClass(this.container, "ace_editor"); this.setTheme(b); - this.scroller = document.createElement("div"); - this.scroller.className = "ace_scroller"; - this.container.appendChild(this.scroller); this.$gutter = document.createElement("div"); this.$gutter.className = "ace_gutter"; this.container.appendChild(this.$gutter); + this.scroller = document.createElement("div"); + this.scroller.className = "ace_scroller"; + this.container.appendChild(this.scroller); this.content = document.createElement("div"); this.content.style.position = "absolute"; this.scroller.appendChild(this.content); @@ -196,7 +196,7 @@ define(["require", "exports", "module", 'text!ace/css/editor.css!.ace_editor {\n this.$updateScrollBar() }else { if(a & this.CHANGE_SCROLL) { - a & this.CHANGE_TEXT || a & this.CHANGE_LINES ? this.$textLayer.scrollLines(this.layerConfig) : this.$textLayer.update(this.layerConfig); + a & this.CHANGE_TEXT || a & this.CHANGE_LINES ? this.$textLayer.update(this.layerConfig) : this.$textLayer.scrollLines(this.layerConfig); this.showGutter && this.$gutterLayer.update(this.layerConfig); this.$markerLayer.update(this.layerConfig); this.$cursorLayer.update(this.layerConfig); @@ -209,11 +209,6 @@ define(["require", "exports", "module", 'text!ace/css/editor.css!.ace_editor {\n if(a & this.CHANGE_LINES) { this.$updateLines(); this.$updateScrollBar() - }else { - if(a & this.CHANGE_SCROLL) { - this.$textLayer.scrollLines(this.layerConfig); - this.showGutter && this.$gutterLayer.update(this.layerConfig) - } } }a & this.CHANGE_GUTTER && this.showGutter && this.$gutterLayer.update(this.layerConfig); a & this.CHANGE_CURSOR && this.$cursorLayer.update(this.layerConfig); @@ -363,7 +358,7 @@ define(["require", "exports", "module", 'text!ace/css/editor.css!.ace_editor {\n } var c = this; if(!a || typeof a == "string") { - a = a || "ace/theme/TextMate"; + a = a || "ace/theme/textmate"; d([a], function(e) { b(e) }) diff --git a/build/build.txt b/build/build.txt index ccdafa0a..db072cfc 100644 --- a/build/build.txt +++ b/build/build.txt @@ -55,3 +55,9 @@ ace/mode/html.js ---------------- ace/mode/html_highlight_rules.js ace/mode/html.js + +ace/mode/python.js +---------------- +ace/mode/python_highlight_rules.js +ace/mode/matching_brace_outdent.js +ace/mode/python.js diff --git a/demo/editor-build.html b/demo/editor-build.html index 7f791814..8ebcdf9e 100644 --- a/demo/editor-build.html +++ b/demo/editor-build.html @@ -62,6 +62,7 @@ + @@ -72,6 +73,7 @@ + @@ -132,10 +134,30 @@ + + + +