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 @@
+
+
+
+
|