diff --git a/.gitmodules b/.gitmodules
index 5785c2c9..29473c2b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "support/pilot"]
- path = support/pilot
- url = git://github.com/ajaxorg/pilot.git
[submodule "support/dryice"]
path = support/dryice
url = git://github.com/ajaxorg/dryice.git
diff --git a/Makefile.dryice.js b/Makefile.dryice.js
index fcd54805..39f2ce97 100755
--- a/Makefile.dryice.js
+++ b/Makefile.dryice.js
@@ -79,7 +79,6 @@ var aceHome = __dirname;
console.log('# ace ---------');
var aceProject = [
- aceHome + '/support/pilot/lib',
aceHome + '/lib',
aceHome
];
@@ -128,7 +127,7 @@ copy({
copy.source.commonjs({
project: project,
require: [
- "pilot/fixoldbrowsers",
+ "ace/lib/fixoldbrowsers",
"ace/ace"
]
})
@@ -264,7 +263,6 @@ console.log('# ace worker ---------');
console.log("worker for " + mode + " mode");
var worker = copy.createDataObject();
var workerProject = copy.createCommonJsProject([
- aceHome + '/support/pilot/lib',
aceHome + '/lib'
]);
copy({
@@ -272,9 +270,9 @@ console.log('# ace worker ---------');
copy.source.commonjs({
project: workerProject,
require: [
- 'pilot/fixoldbrowsers',
- 'pilot/event_emitter',
- 'pilot/oop',
+ 'ace/lib/fixoldbrowsers',
+ 'ace/lib/event_emitter',
+ 'ace/lib/oop',
'ace/mode/' + mode + '_worker'
]
})
diff --git a/build_support/boot_textarea.js b/build_support/boot_textarea.js
index cb845355..123b6371 100644
--- a/build_support/boot_textarea.js
+++ b/build_support/boot_textarea.js
@@ -40,11 +40,9 @@
var require = window.__ace_shadowed__.require;
-require("pilot/index");
-
-var Dom = require("pilot/dom");
-var Event = require("pilot/event");
-var UA = require("pilot/useragent")
+var Dom = require("ace/lib/dom");
+var Event = require("ace/lib/event");
+var UA = require("ace/lib/useragent")
var Editor = require("ace/editor").Editor;
var Buffer = require("ace/model/buffer").Buffer;
diff --git a/build_support/editor_textarea.html b/build_support/editor_textarea.html
index 5751dc74..d8e3da05 100644
--- a/build_support/editor_textarea.html
+++ b/build_support/editor_textarea.html
@@ -81,10 +81,10 @@ function inject() {
load.scripts = {};
window.__ace_shadowed_load__ = load;
- load('ace.js', 'text!ace/view/css/editor.css', function() {
+ load("ace.js", "text!ace/view/css/editor.css", function() {
var ace = window.__ace_shadowed__;
ace.options.mode = "javascript";
- var Event = ace.require('pilot/event');
+ var Event = ace.require("lib/ace/event");
var areas = document.getElementsByTagName("textarea");
for (var i = 0; i < areas.length; i++) {
Event.addListener(areas[i], "click", function(e) {
diff --git a/demo/demo.js b/demo/demo.js
index 4bedb7ad..9a2bb243 100644
--- a/demo/demo.js
+++ b/demo/demo.js
@@ -40,10 +40,10 @@
define(function(require, exports, module) {
- require("pilot/fixoldbrowsers");
+ require("ace/lib/fixoldbrowsers");
var env = {};
- var event = require("pilot/event");
+ var event = require("ace/lib/event");
var Range = require("ace/range").Range;
var Editor = require("ace/editor").Editor;
var Renderer = require("ace/view/window_view").WindowView;
diff --git a/kitchen-sink.html b/kitchen-sink.html
index 73b644e9..cefb23d4 100644
--- a/kitchen-sink.html
+++ b/kitchen-sink.html
@@ -218,9 +218,7 @@
diff --git a/lib/ace/ace.js b/lib/ace/ace.js
index 722c9328..350228b7 100644
--- a/lib/ace/ace.js
+++ b/lib/ace/ace.js
@@ -37,11 +37,10 @@
define(function(require, exports, module) {
- require("pilot/index");
- require("pilot/fixoldbrowsers");
+ require("ace/lib/fixoldbrowsers");
- var Dom = require("pilot/dom");
- var Event = require("pilot/event");
+ var Dom = require("ace/lib/dom");
+ var Event = require("ace/lib/event");
var Editor = require("ace/editor").Editor;
var Buffer = require("ace/model/buffer").Buffer;
diff --git a/lib/ace/anchor.js b/lib/ace/anchor.js
index 876a2dfb..caa732f2 100644
--- a/lib/ace/anchor.js
+++ b/lib/ace/anchor.js
@@ -37,8 +37,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
/**
* An Anchor is a floating pointer in the document. Whenever text is inserted or
diff --git a/lib/ace/background_tokenizer.js b/lib/ace/background_tokenizer.js
index eb23bf74..96688b2f 100644
--- a/lib/ace/background_tokenizer.js
+++ b/lib/ace/background_tokenizer.js
@@ -37,8 +37,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var BackgroundTokenizer = function(tokenizer, editor) {
this.running = false;
diff --git a/lib/ace/commands/command_manager.js b/lib/ace/commands/command_manager.js
index 432decb6..36b7c273 100644
--- a/lib/ace/commands/command_manager.js
+++ b/lib/ace/commands/command_manager.js
@@ -1,7 +1,7 @@
define(function(require, exports, module) {
-var keyUtil = require('pilot/keys');
-var useragent = require('pilot/useragent');
+var keyUtil = require("ace/lib/keys");
+var useragent = require("ace/lib/useragent");
var CommandManager = function(commands) {
this.commands = {};
diff --git a/lib/ace/commands/default_commands.js b/lib/ace/commands/default_commands.js
index 9e328b16..67447632 100644
--- a/lib/ace/commands/default_commands.js
+++ b/lib/ace/commands/default_commands.js
@@ -40,7 +40,7 @@
define(function(require, exports, module) {
-var lang = require("pilot/lang");
+var lang = require("ace/lib/lang");
function bindKey(win, mac) {
return {
diff --git a/lib/ace/document.js b/lib/ace/document.js
index 7e31f8bd..23408c5b 100644
--- a/lib/ace/document.js
+++ b/lib/ace/document.js
@@ -37,8 +37,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var Range = require("ace/range").Range;
var Anchor = require("ace/anchor").Anchor;
diff --git a/lib/ace/editor.js b/lib/ace/editor.js
index 8191c7d8..689c9910 100644
--- a/lib/ace/editor.js
+++ b/lib/ace/editor.js
@@ -40,12 +40,12 @@
define(function(require, exports, module) {
-require("pilot/fixoldbrowsers");
+require("ace/lib/fixoldbrowsers");
-var oop = require("pilot/oop");
-var event = require("pilot/event");
-var lang = require("pilot/lang");
-var useragent = require("pilot/useragent");
+var oop = require("ace/lib/oop");
+var event = require("ace/lib/event");
+var lang = require("ace/lib/lang");
+var useragent = require("ace/lib/useragent");
var TextInput = require("ace/keyboard/textinput").TextInput;
var MouseHandler = require("ace/mouse_handler").MouseHandler;
//var TouchHandler = require("ace/touch_handler").TouchHandler;
@@ -55,7 +55,7 @@ var Window = require("ace/model/window").Window;
var WindowController = require("ace/window_controller").WindowController;
var Search = require("ace/search").Search;
var Range = require("ace/range").Range;
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var CommandManager = require("ace/commands/command_manager").CommandManager;
var defaultCommands = require("ace/commands/default_commands").commands;
diff --git a/lib/ace/keyboard/hash_handler.js b/lib/ace/keyboard/hash_handler.js
index f968b39b..d06374d3 100644
--- a/lib/ace/keyboard/hash_handler.js
+++ b/lib/ace/keyboard/hash_handler.js
@@ -38,7 +38,7 @@
define(function(require, exports, module) {
-var keyUtil = require("pilot/keys");
+var keyUtil = require("ace/lib/keys");
function HashHandler(config) {
this.setConfig(config);
diff --git a/lib/ace/keyboard/keybinding.js b/lib/ace/keyboard/keybinding.js
index ccd42fe2..f8b640bc 100644
--- a/lib/ace/keyboard/keybinding.js
+++ b/lib/ace/keyboard/keybinding.js
@@ -38,9 +38,9 @@
define(function(require, exports, module) {
-var useragent = require("pilot/useragent");
-var keyUtil = require("pilot/keys");
-var event = require("pilot/event");
+var useragent = require("ace/lib/useragent");
+var keyUtil = require("ace/lib/keys");
+var event = require("ace/lib/event");
require("ace/commands/default_commands");
var KeyBinding = function(editor) {
diff --git a/lib/ace/keyboard/textinput.js b/lib/ace/keyboard/textinput.js
index 268af0f3..6bcafc14 100644
--- a/lib/ace/keyboard/textinput.js
+++ b/lib/ace/keyboard/textinput.js
@@ -39,9 +39,9 @@
define(function(require, exports, module) {
-var event = require("pilot/event");
-var useragent = require("pilot/useragent");
-var dom = require("pilot/dom");
+var event = require("ace/lib/event");
+var useragent = require("ace/lib/useragent");
+var dom = require("ace/lib/dom");
var TextInput = function(parentNode, host) {
diff --git a/lib/ace/lib/browser_focus.js b/lib/ace/lib/browser_focus.js
new file mode 100644
index 00000000..6e7bc662
--- /dev/null
+++ b/lib/ace/lib/browser_focus.js
@@ -0,0 +1,91 @@
+/* vim:ts=4:sts=4:sw=4:
+ * ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Ajax.org Code Editor (ACE).
+ *
+ * The Initial Developer of the Original Code is
+ * Ajax.org B.V.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Fabian Jakobs
+ * Irakli Gozalishvili (http://jeditoolkit.com)
+ * Julian Viereck
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+var oop = require("ace/lib/oop");
+var event = require("ace/lib/event");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
+
+/**
+ * This class keeps track of the focus state of the given window.
+ * Focus changes for example when the user switches a browser tab,
+ * goes to the location bar or switches to another application.
+ */
+var BrowserFocus = function(win) {
+ win = win || window;
+
+ this.lastFocus = new Date().getTime();
+ this._isFocused = true;
+
+ var _self = this;
+ event.addListener(win, "blur", function(e) {
+ _self._setFocused(false);
+ });
+
+ event.addListener(win, "focus", function(e) {
+ _self._setFocused(true);
+ });
+};
+
+(function(){
+
+ oop.implement(this, EventEmitter);
+
+ this.isFocused = function() {
+ return this._isFocused;
+ };
+
+ this._setFocused = function(isFocused) {
+ if (this._isFocused == isFocused)
+ return;
+
+ if (isFocused)
+ this.lastFocus = new Date().getTime();
+
+ this._isFocused = isFocused;
+ this._emit("changeFocus");
+ };
+
+}).call(BrowserFocus.prototype);
+
+
+exports.BrowserFocus = BrowserFocus;
+});
diff --git a/lib/ace/lib/dom.js b/lib/ace/lib/dom.js
new file mode 100644
index 00000000..ee186d72
--- /dev/null
+++ b/lib/ace/lib/dom.js
@@ -0,0 +1,296 @@
+/* vim:ts=4:sts=4:sw=4:
+ * ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Ajax.org Code Editor (ACE).
+ *
+ * The Initial Developer of the Original Code is
+ * Ajax.org B.V.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Fabian Jakobs
+ * Mihai Sucan
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+var XHTML_NS = "http://www.w3.org/1999/xhtml";
+
+exports.createElement = function(tag, ns) {
+ return document.createElementNS ?
+ document.createElementNS(ns || XHTML_NS, tag) :
+ document.createElement(tag);
+};
+
+exports.setText = function(elem, text) {
+ if (elem.innerText !== undefined) {
+ elem.innerText = text;
+ }
+ if (elem.textContent !== undefined) {
+ elem.textContent = text;
+ }
+};
+
+if (!document.documentElement.classList) {
+ exports.hasCssClass = function(el, name) {
+ var classes = el.className.split(/\s+/g);
+ return classes.indexOf(name) !== -1;
+ };
+
+ /**
+ * Add a CSS class to the list of classes on the given node
+ */
+ exports.addCssClass = function(el, name) {
+ if (!exports.hasCssClass(el, name)) {
+ el.className += " " + name;
+ }
+ };
+
+ /**
+ * Remove a CSS class from the list of classes on the given node
+ */
+ exports.removeCssClass = function(el, name) {
+ var classes = el.className.split(/\s+/g);
+ while (true) {
+ var index = classes.indexOf(name);
+ if (index == -1) {
+ break;
+ }
+ classes.splice(index, 1);
+ }
+ el.className = classes.join(" ");
+ };
+
+ exports.toggleCssClass = function(el, name) {
+ var classes = el.className.split(/\s+/g), add = true;
+ while (true) {
+ var index = classes.indexOf(name);
+ if (index == -1) {
+ break;
+ }
+ add = false;
+ classes.splice(index, 1);
+ }
+ if(add)
+ classes.push(name);
+
+ el.className = classes.join(" ");
+ return add;
+ };
+} else {
+ exports.hasCssClass = function(el, name) {
+ return el.classList.contains(name);
+ };
+
+ exports.addCssClass = function(el, name) {
+ el.classList.add(name);
+ };
+
+ exports.removeCssClass = function(el, name) {
+ el.classList.remove(name);
+ };
+
+ exports.toggleCssClass = function(el, name) {
+ return el.classList.toggle(name);
+ };
+}
+
+/**
+ * Add or remove a CSS class from the list of classes on the given node
+ * depending on the value of include
+ */
+exports.setCssClass = function(node, className, include) {
+ if (include) {
+ exports.addCssClass(node, className);
+ } else {
+ exports.removeCssClass(node, className);
+ }
+};
+
+exports.importCssString = function(cssText, doc){
+ doc = doc || document;
+
+ if (doc.createStyleSheet) {
+ var sheet = doc.createStyleSheet();
+ sheet.cssText = cssText;
+ }
+ else {
+ var style = doc.createElementNS ?
+ doc.createElementNS(XHTML_NS, "style") :
+ doc.createElement("style");
+
+ style.appendChild(doc.createTextNode(cssText));
+
+ var head = doc.getElementsByTagName("head")[0] || doc.documentElement;
+ head.appendChild(style);
+ }
+};
+
+exports.getInnerWidth = function(element) {
+ return (parseInt(exports.computedStyle(element, "paddingLeft"))
+ + parseInt(exports.computedStyle(element, "paddingRight")) + element.clientWidth);
+};
+
+exports.getInnerHeight = function(element) {
+ return (parseInt(exports.computedStyle(element, "paddingTop"))
+ + parseInt(exports.computedStyle(element, "paddingBottom")) + element.clientHeight);
+};
+
+if (window.pageYOffset !== undefined) {
+ exports.getPageScrollTop = function() {
+ return window.pageYOffset;
+ };
+
+ exports.getPageScrollLeft = function() {
+ return window.pageXOffset;
+ };
+}
+else {
+ exports.getPageScrollTop = function() {
+ return document.body.scrollTop;
+ };
+
+ exports.getPageScrollLeft = function() {
+ return document.body.scrollLeft;
+ };
+}
+
+if (window.getComputedStyle)
+ exports.computedStyle = function(element, style) {
+ if (style)
+ return (window.getComputedStyle(element, "") || {})[style] || "";
+ return window.getComputedStyle(element, "") || {}
+ };
+else
+ exports.computedStyle = function(element, style) {
+ if (style)
+ return element.currentStyle[style];
+ return element.currentStyle
+ };
+
+exports.scrollbarWidth = function() {
+
+ var inner = exports.createElement("p");
+ inner.style.width = "100%";
+ inner.style.minWidth = "0px";
+ inner.style.height = "200px";
+
+ var outer = exports.createElement("div");
+ var style = outer.style;
+
+ style.position = "absolute";
+ style.left = "-10000px";
+ style.overflow = "hidden";
+ style.width = "200px";
+ style.minWidth = "0px";
+ style.height = "150px";
+
+ outer.appendChild(inner);
+
+ var body = document.body || document.documentElement;
+ body.appendChild(outer);
+
+ var noScrollbar = inner.offsetWidth;
+
+ style.overflow = "scroll";
+ var withScrollbar = inner.offsetWidth;
+
+ if (noScrollbar == withScrollbar) {
+ withScrollbar = outer.clientWidth;
+ }
+
+ body.removeChild(outer);
+
+ return noScrollbar-withScrollbar;
+};
+
+/**
+ * Optimized set innerHTML. This is faster than plain innerHTML if the element
+ * already contains a lot of child elements.
+ *
+ * See http://blog.stevenlevithan.com/archives/faster-than-innerhtml for details
+ */
+exports.setInnerHtml = function(el, innerHtml) {
+ var element = el.cloneNode(false);//document.createElement("div");
+ element.innerHTML = innerHtml;
+ el.parentNode.replaceChild(element, el);
+ return element;
+};
+
+exports.setInnerText = function(el, innerText) {
+ if (document.body && "textContent" in document.body)
+ el.textContent = innerText;
+ else
+ el.innerText = innerText;
+
+};
+
+exports.getInnerText = function(el) {
+ if (document.body && "textContent" in document.body)
+ return el.textContent;
+ else
+ return el.innerText || el.textContent || "";
+};
+
+exports.getParentWindow = function(document) {
+ return document.defaultView || document.parentWindow;
+};
+
+exports.getSelectionStart = function(textarea) {
+ // TODO IE
+ var start;
+ try {
+ start = textarea.selectionStart || 0;
+ } catch (e) {
+ start = 0;
+ }
+ return start;
+};
+
+exports.setSelectionStart = function(textarea, start) {
+ // TODO IE
+ return textarea.selectionStart = start;
+};
+
+exports.getSelectionEnd = function(textarea) {
+ // TODO IE
+ var end;
+ try {
+ end = textarea.selectionEnd || 0;
+ } catch (e) {
+ end = 0;
+ }
+ return end;
+};
+
+exports.setSelectionEnd = function(textarea, end) {
+ // TODO IE
+ return textarea.selectionEnd = end;
+};
+
+});
diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js
new file mode 100644
index 00000000..a2d10534
--- /dev/null
+++ b/lib/ace/lib/event.js
@@ -0,0 +1,308 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Ajax.org Code Editor (ACE).
+ *
+ * The Initial Developer of the Original Code is
+ * Ajax.org B.V.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Fabian Jakobs
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+var keys = require("ace/lib/keys");
+var useragent = require("ace/lib/useragent");
+var dom = require("ace/lib/dom");
+
+exports.addListener = function(elem, type, callback) {
+ if (elem.addEventListener) {
+ return elem.addEventListener(type, callback, false);
+ }
+ if (elem.attachEvent) {
+ var wrapper = function() {
+ callback(window.event);
+ };
+ callback._wrapper = wrapper;
+ elem.attachEvent("on" + type, wrapper);
+ }
+};
+
+exports.removeListener = function(elem, type, callback) {
+ if (elem.removeEventListener) {
+ return elem.removeEventListener(type, callback, false);
+ }
+ if (elem.detachEvent) {
+ elem.detachEvent("on" + type, callback._wrapper || callback);
+ }
+};
+
+/**
+* Prevents propagation and clobbers the default action of the passed event
+*/
+exports.stopEvent = function(e) {
+ exports.stopPropagation(e);
+ exports.preventDefault(e);
+ return false;
+};
+
+exports.stopPropagation = function(e) {
+ if (e.stopPropagation)
+ e.stopPropagation();
+ else
+ e.cancelBubble = true;
+};
+
+exports.preventDefault = function(e) {
+ if (e.preventDefault)
+ e.preventDefault();
+ else
+ e.returnValue = false;
+};
+
+exports.getDocumentX = function(e) {
+ if (e.clientX) {
+ return e.clientX + dom.getPageScrollLeft();
+ } else {
+ return e.pageX;
+ }
+};
+
+exports.getDocumentY = function(e) {
+ if (e.clientY) {
+ return e.clientY + dom.getPageScrollTop();
+ } else {
+ return e.pageY;
+ }
+};
+
+/**
+ * @return {Number} 0 for left button, 1 for middle button, 2 for right button
+ */
+exports.getButton = function(e) {
+ if (e.type == "dblclick")
+ return 0;
+ else if (e.type == "contextmenu")
+ return 2;
+
+ // DOM Event
+ if (e.preventDefault) {
+ return e.button;
+ }
+ // old IE
+ else {
+ return {1:0, 2:2, 4:1}[e.button];
+ }
+};
+
+if (document.documentElement.setCapture) {
+ exports.capture = function(el, eventHandler, releaseCaptureHandler) {
+ function onMouseMove(e) {
+ eventHandler(e);
+ return exports.stopPropagation(e);
+ }
+
+ function onReleaseCapture(e) {
+ eventHandler && eventHandler(e);
+ releaseCaptureHandler && releaseCaptureHandler();
+
+ exports.removeListener(el, "mousemove", eventHandler);
+ exports.removeListener(el, "mouseup", onReleaseCapture);
+ exports.removeListener(el, "losecapture", onReleaseCapture);
+
+ el.releaseCapture();
+ }
+
+ exports.addListener(el, "mousemove", eventHandler);
+ exports.addListener(el, "mouseup", onReleaseCapture);
+ exports.addListener(el, "losecapture", onReleaseCapture);
+ el.setCapture();
+ };
+}
+else {
+ exports.capture = function(el, eventHandler, releaseCaptureHandler) {
+ function onMouseMove(e) {
+ eventHandler(e);
+ e.stopPropagation();
+ }
+
+ function onMouseUp(e) {
+ eventHandler && eventHandler(e);
+ releaseCaptureHandler && releaseCaptureHandler();
+
+ document.removeEventListener("mousemove", onMouseMove, true);
+ document.removeEventListener("mouseup", onMouseUp, true);
+
+ e.stopPropagation();
+ }
+
+ document.addEventListener("mousemove", onMouseMove, true);
+ document.addEventListener("mouseup", onMouseUp, true);
+ };
+}
+
+exports.addMouseWheelListener = function(el, callback) {
+ var listener = function(e) {
+ if (e.wheelDelta !== undefined) {
+ if (e.wheelDeltaX !== undefined) {
+ e.wheelX = -e.wheelDeltaX / 8;
+ e.wheelY = -e.wheelDeltaY / 8;
+ } else {
+ e.wheelX = 0;
+ e.wheelY = -e.wheelDelta / 8;
+ }
+ }
+ else {
+ if (e.axis && e.axis == e.HORIZONTAL_AXIS) {
+ e.wheelX = (e.detail || 0) * 5;
+ e.wheelY = 0;
+ } else {
+ e.wheelX = 0;
+ e.wheelY = (e.detail || 0) * 5;
+ }
+ }
+ callback(e);
+ };
+ exports.addListener(el, "DOMMouseScroll", listener);
+ exports.addListener(el, "mousewheel", listener);
+};
+
+exports.addMultiMouseDownListener = function(el, button, count, timeout, callback) {
+ var clicks = 0;
+ var startX, startY;
+
+ var listener = function(e) {
+ clicks += 1;
+ if (clicks == 1) {
+ startX = e.clientX;
+ startY = e.clientY;
+
+ setTimeout(function() {
+ clicks = 0;
+ }, timeout || 600);
+ }
+
+ var isButton = exports.getButton(e) == button;
+ if (!isButton || Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5)
+ clicks = 0;
+
+ if (clicks == count) {
+ clicks = 0;
+ callback(e);
+ }
+
+ if (isButton)
+ return exports.preventDefault(e);
+ };
+
+ exports.addListener(el, "mousedown", listener);
+ useragent.isIE && exports.addListener(el, "dblclick", listener);
+};
+
+function normalizeCommandKeys(callback, e, keyCode) {
+ var hashId = 0;
+ if (useragent.isOpera && useragent.isMac) {
+ hashId = 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0)
+ | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);
+ } else {
+ hashId = 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0)
+ | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);
+ }
+
+ if (keyCode in keys.MODIFIER_KEYS) {
+ switch (keys.MODIFIER_KEYS[keyCode]) {
+ case "Alt":
+ hashId = 2;
+ break;
+ case "Shift":
+ hashId = 4;
+ break
+ case "Ctrl":
+ hashId = 1;
+ break;
+ default:
+ hashId = 8;
+ break;
+ }
+ keyCode = 0;
+ }
+
+ if (hashId & 8 && (keyCode == 91 || keyCode == 93)) {
+ keyCode = 0;
+ }
+
+ // If there is no hashID and the keyCode is not a function key, then
+ // we don't call the callback as we don't handle a command key here
+ // (it's a normal key/character input).
+ if (hashId == 0 && !(keyCode in keys.FUNCTION_KEYS)) {
+ return false;
+ }
+
+ return callback(e, hashId, keyCode);
+}
+
+exports.addCommandKeyListener = function(el, callback) {
+ var addListener = exports.addListener;
+ if (useragent.isOldGecko) {
+ // Old versions of Gecko aka. Firefox < 4.0 didn't repeat the keydown
+ // event if the user pressed the key for a longer time. Instead, the
+ // keydown event was fired once and later on only the keypress event.
+ // To emulate the 'right' keydown behavior, the keyCode of the initial
+ // keyDown event is stored and in the following keypress events the
+ // stores keyCode is used to emulate a keyDown event.
+ var lastKeyDownKeyCode = null;
+ addListener(el, "keydown", function(e) {
+ lastKeyDownKeyCode = e.keyCode;
+ });
+ addListener(el, "keypress", function(e) {
+ return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);
+ });
+ } else {
+ var lastDown = null;
+
+ addListener(el, "keydown", function(e) {
+ lastDown = e.keyIdentifier || e.keyCode;
+ return normalizeCommandKeys(callback, e, e.keyCode);
+ });
+
+ // repeated keys are fired as keypress and not keydown events
+ if (useragent.isMac && useragent.isOpera) {
+ addListener(el, "keypress", function(e) {
+ var keyId = e.keyIdentifier || e.keyCode;
+ if (lastDown !== keyId) {
+ return normalizeCommandKeys(callback, e, e.keyCode);
+ } else {
+ lastDown = null;
+ }
+ });
+ }
+ }
+};
+
+});
diff --git a/lib/ace/settings/default-settings.js b/lib/ace/lib/event_emitter.js
similarity index 54%
rename from lib/ace/settings/default-settings.js
rename to lib/ace/lib/event_emitter.js
index 4e5e0fdf..de6523e1 100644
--- a/lib/ace/settings/default-settings.js
+++ b/lib/ace/lib/event_emitter.js
@@ -20,6 +20,7 @@
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
+ * Fabian Jakobs
* Irakli Gozalishvili (http://jeditoolkit.com)
*
* Alternatively, the contents of this file may be used under the terms of
@@ -38,60 +39,54 @@
define(function(require, exports, module) {
-var types = require('pilot/types')
-var SelectionType = require('pilot/types/basic').SelectionType
+var EventEmitter = {};
-var env
+EventEmitter._emit =
+EventEmitter._dispatchEvent = function(eventName, e) {
+ this._eventRegistry = this._eventRegistry || {};
-var settingTypes = {
- selectionStyle: new SelectionType({
- data: [ 'line', 'text' ]
- })
-}
+ var listeners = this._eventRegistry[eventName];
+ if (!listeners || !listeners.length) return;
-var settings = {
- printMargin: {
- description: 'Position of the print margin column.',
- type: 'number',
- defaultValue: 80,
- onChange: function onChange(event) {
- if (env.editor) env.editor.setPrintMarginColumn(event.value)
- }
- },
- showIvisibles: {
- description: 'Whether or not to show invisible characters.',
- type: 'bool',
- defaultValue: false,
- onChange: function onChange(event) {
- if (env.editor) env.editor.setShowInvisibles(event.value)
- }
- },
- highlightActiveLine: {
- description: 'Whether or not highlight active line.',
- type: 'bool',
- defaultValue: true,
- onChange: function onChange(event) {
- if (env.editor) env.editor.setHighlightActiveLine(event.value)
- }
- },
- selectionStyle: {
- description: 'Type of text selection.',
- type: 'selectionStyle',
- defaultValue: 'line',
- onChange: function onChange(event) {
- if (env.editor) env.editor.setSelectionStyle(event.value)
- }
+ var e = e || {};
+ e.type = eventName;
+
+ for (var i=0; i= 2) {
+ var rv = arguments[1];
+ } else {
+ do {
+ if (i in this) {
+ rv = this[i++];
+ break;
+ }
+
+ // if array contains no values, no initial value to return
+ if (++i >= len)
+ throw new TypeError();
+ } while (true);
+ }
+
+ for (; i < len; i++) {
+ if (i in this)
+ rv = fun.call(null, rv, this[i], i, this);
+ }
+
+ return rv;
+ };
+}
+
+// ES5 15.4.4.22
+// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
+if (!Array.prototype.reduceRight) {
+ Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
+ var len = +this.length;
+ if (typeof fun !== "function")
+ throw new TypeError();
+
+ // no value to return if no initial value, empty array
+ if (len === 0 && arguments.length === 1)
+ throw new TypeError();
+
+ var i = len - 1;
+ if (arguments.length >= 2) {
+ var rv = arguments[1];
+ } else {
+ do {
+ if (i in this) {
+ rv = this[i--];
+ break;
+ }
+
+ // if array contains no values, no initial value to return
+ if (--i < 0)
+ throw new TypeError();
+ } while (true);
+ }
+
+ for (; i >= 0; i--) {
+ if (i in this)
+ rv = fun.call(null, rv, this[i], i, this);
+ }
+
+ return rv;
+ };
+}
+
+// ES5 15.4.4.14
+if (!Array.prototype.indexOf) {
+ Array.prototype.indexOf = function indexOf(value /*, fromIndex */ ) {
+ var length = this.length;
+ if (!length)
+ return -1;
+ var i = arguments[1] || 0;
+ if (i >= length)
+ return -1;
+ if (i < 0)
+ i += length;
+ for (; i < length; i++) {
+ if (!owns(this, i))
+ continue;
+ if (value === this[i])
+ return i;
+ }
+ return -1;
+ };
+}
+
+// ES5 15.4.4.15
+if (!Array.prototype.lastIndexOf) {
+ Array.prototype.lastIndexOf = function lastIndexOf(value /*, fromIndex */) {
+ var length = this.length;
+ if (!length)
+ return -1;
+ var i = arguments[1] || length;
+ if (i < 0)
+ i += length;
+ i = Math.min(i, length - 1);
+ for (; i >= 0; i--) {
+ if (!owns(this, i))
+ continue;
+ if (value === this[i])
+ return i;
+ }
+ return -1;
+ };
+}
+
+//
+// Object
+// ======
+//
+
+// ES5 15.2.3.2
+if (!Object.getPrototypeOf) {
+ // https://github.com/kriskowal/es5-shim/issues#issue/2
+ // http://ejohn.org/blog/objectgetprototypeof/
+ // recommended by fschaefer on github
+ Object.getPrototypeOf = function getPrototypeOf(object) {
+ return object.__proto__ || object.constructor.prototype;
+ // or undefined if not available in this engine
+ };
+}
+
+// ES5 15.2.3.3
+if (!Object.getOwnPropertyDescriptor) {
+ var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
+ "non-object: ";
+ Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
+ if ((typeof object !== "object" && typeof object !== "function") || object === null)
+ throw new TypeError(ERR_NON_OBJECT + object);
+ // If object does not owns property return undefined immediately.
+ if (!owns(object, property))
+ return undefined;
+
+ var despriptor, getter, setter;
+
+ // If object has a property then it's for sure both `enumerable` and
+ // `configurable`.
+ despriptor = { enumerable: true, configurable: true };
+
+ // If JS engine supports accessor properties then property may be a
+ // getter or setter.
+ if (supportsAccessors) {
+ // Unfortunately `__lookupGetter__` will return a getter even
+ // if object has own non getter property along with a same named
+ // inherited getter. To avoid misbehavior we temporary remove
+ // `__proto__` so that `__lookupGetter__` will return getter only
+ // if it's owned by an object.
+ var prototype = object.__proto__;
+ object.__proto__ = prototypeOfObject;
+
+ var getter = lookupGetter(object, property);
+ var setter = lookupSetter(object, property);
+
+ // Once we have getter and setter we can put values back.
+ object.__proto__ = prototype;
+
+ if (getter || setter) {
+ if (getter) descriptor.get = getter;
+ if (setter) descriptor.set = setter;
+
+ // If it was accessor property we're done and return here
+ // in order to avoid adding `value` to the descriptor.
+ return descriptor;
+ }
+ }
+
+ // If we got this far we know that object has an own property that is
+ // not an accessor so we set it as a value and return descriptor.
+ descriptor.value = object[property];
+ return descriptor;
+ };
+}
+
+// ES5 15.2.3.4
+if (!Object.getOwnPropertyNames) {
+ Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
+ return Object.keys(object);
+ };
+}
+
+// ES5 15.2.3.5
+if (!Object.create) {
+ Object.create = function create(prototype, properties) {
+ var object;
+ if (prototype === null) {
+ object = { "__proto__": null };
+ } else {
+ if (typeof prototype !== "object")
+ throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
+ var Type = function () {};
+ Type.prototype = prototype;
+ object = new Type();
+ // IE has no built-in implementation of `Object.getPrototypeOf`
+ // neither `__proto__`, but this manually setting `__proto__` will
+ // guarantee that `Object.getPrototypeOf` will work as expected with
+ // objects created using `Object.create`
+ object.__proto__ = prototype;
+ }
+ if (typeof properties !== "undefined")
+ Object.defineProperties(object, properties);
+ return object;
+ };
+}
+
+// ES5 15.2.3.6
+if (!Object.defineProperty) {
+ var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
+ var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
+ var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
+ "on this javascript engine";
+
+ Object.defineProperty = function defineProperty(object, property, descriptor) {
+ if (typeof object !== "object" && typeof object !== "function")
+ throw new TypeError(ERR_NON_OBJECT_TARGET + object);
+ if (typeof object !== "object" || object === null)
+ throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
+
+ // If it's a data property.
+ if (owns(descriptor, "value")) {
+ // fail silently if "writable", "enumerable", or "configurable"
+ // are requested but not supported
+ /*
+ // alternate approach:
+ if ( // can't implement these features; allow false but not true
+ !(owns(descriptor, "writable") ? descriptor.writable : true) ||
+ !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
+ !(owns(descriptor, "configurable") ? descriptor.configurable : true)
+ )
+ throw new RangeError(
+ "This implementation of Object.defineProperty does not " +
+ "support configurable, enumerable, or writable."
+ );
+ */
+
+ if (supportsAccessors && (lookupGetter(object, property) ||
+ lookupSetter(object, property)))
+ {
+ // As accessors are supported only on engines implementing
+ // `__proto__` we can safely override `__proto__` while defining
+ // a property to make sure that we don't hit an inherited
+ // accessor.
+ var prototype = object.__proto__;
+ object.__proto__ = prototypeOfObject;
+ // Deleting a property anyway since getter / setter may be
+ // defined on object itself.
+ delete object[property];
+ object[property] = descriptor.value;
+ // Setting original `__proto__` back now.
+ object.prototype;
+ } else {
+ object[property] = descriptor.value;
+ }
+ } else {
+ if (!supportsAccessors)
+ throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
+ // If we got that far then getters and setters can be defined !!
+ if (owns(descriptor, "get"))
+ defineGetter(object, property, descriptor.get);
+ if (owns(descriptor, "set"))
+ defineSetter(object, property, descriptor.set);
+ }
+
+ return object;
+ };
+}
+
+// ES5 15.2.3.7
+if (!Object.defineProperties) {
+ Object.defineProperties = function defineProperties(object, properties) {
+ for (var property in properties) {
+ if (owns(properties, property))
+ Object.defineProperty(object, property, properties[property]);
+ }
+ return object;
+ };
+}
+
+// ES5 15.2.3.8
+if (!Object.seal) {
+ Object.seal = function seal(object) {
+ // this is misleading and breaks feature-detection, but
+ // allows "securable" code to "gracefully" degrade to working
+ // but insecure code.
+ return object;
+ };
+}
+
+// ES5 15.2.3.9
+if (!Object.freeze) {
+ Object.freeze = function freeze(object) {
+ // this is misleading and breaks feature-detection, but
+ // allows "securable" code to "gracefully" degrade to working
+ // but insecure code.
+ return object;
+ };
+}
+
+// detect a Rhino bug and patch it
+try {
+ Object.freeze(function () {});
+} catch (exception) {
+ Object.freeze = (function freeze(freezeObject) {
+ return function freeze(object) {
+ if (typeof object === "function") {
+ return object;
+ } else {
+ return freezeObject(object);
+ }
+ };
+ })(Object.freeze);
+}
+
+// ES5 15.2.3.10
+if (!Object.preventExtensions) {
+ Object.preventExtensions = function preventExtensions(object) {
+ // this is misleading and breaks feature-detection, but
+ // allows "securable" code to "gracefully" degrade to working
+ // but insecure code.
+ return object;
+ };
+}
+
+// ES5 15.2.3.11
+if (!Object.isSealed) {
+ Object.isSealed = function isSealed(object) {
+ return false;
+ };
+}
+
+// ES5 15.2.3.12
+if (!Object.isFrozen) {
+ Object.isFrozen = function isFrozen(object) {
+ return false;
+ };
+}
+
+// ES5 15.2.3.13
+if (!Object.isExtensible) {
+ Object.isExtensible = function isExtensible(object) {
+ return true;
+ };
+}
+
+// ES5 15.2.3.14
+// http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
+if (!Object.keys) {
+
+ var hasDontEnumBug = true,
+ dontEnums = [
+ 'toString',
+ 'toLocaleString',
+ 'valueOf',
+ 'hasOwnProperty',
+ 'isPrototypeOf',
+ 'propertyIsEnumerable',
+ 'constructor'
+ ],
+ dontEnumsLength = dontEnums.length;
+
+ for (var key in {"toString": null})
+ hasDontEnumBug = false;
+
+ Object.keys = function keys(object) {
+
+ if (
+ typeof object !== "object" && typeof object !== "function"
+ || object === null
+ )
+ throw new TypeError("Object.keys called on a non-object");
+
+ var keys = [];
+ for (var name in object) {
+ if (owns(object, name)) {
+ keys.push(name);
+ }
+ }
+
+ if (hasDontEnumBug) {
+ for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
+ var dontEnum = dontEnums[i];
+ if (owns(object, dontEnum)) {
+ keys.push(dontEnum);
+ }
+ }
+ }
+
+ return keys;
+ };
+
+}
+
+//
+// Date
+// ====
+//
+
+// ES5 15.9.5.43
+// Format a Date object as a string according to a subset of the ISO-8601 standard.
+// Useful in Atom, among other things.
+if (!Date.prototype.toISOString) {
+ Date.prototype.toISOString = function toISOString() {
+ return (
+ this.getUTCFullYear() + "-" +
+ (this.getUTCMonth() + 1) + "-" +
+ this.getUTCDate() + "T" +
+ this.getUTCHours() + ":" +
+ this.getUTCMinutes() + ":" +
+ this.getUTCSeconds() + "Z"
+ );
+ }
+}
+
+// ES5 15.9.4.4
+if (!Date.now) {
+ Date.now = function now() {
+ return new Date().getTime();
+ };
+}
+
+// ES5 15.9.5.44
+if (!Date.prototype.toJSON) {
+ Date.prototype.toJSON = function toJSON(key) {
+ // This function provides a String representation of a Date object for
+ // use by JSON.stringify (15.12.3). When the toJSON method is called
+ // with argument key, the following steps are taken:
+
+ // 1. Let O be the result of calling ToObject, giving it the this
+ // value as its argument.
+ // 2. Let tv be ToPrimitive(O, hint Number).
+ // 3. If tv is a Number and is not finite, return null.
+ // XXX
+ // 4. Let toISO be the result of calling the [[Get]] internal method of
+ // O with argument "toISOString".
+ // 5. If IsCallable(toISO) is false, throw a TypeError exception.
+ if (typeof this.toISOString !== "function")
+ throw new TypeError();
+ // 6. Return the result of calling the [[Call]] internal method of
+ // toISO with O as the this value and an empty argument list.
+ return this.toISOString();
+
+ // NOTE 1 The argument is ignored.
+
+ // NOTE 2 The toJSON function is intentionally generic; it does not
+ // require that its this value be a Date object. Therefore, it can be
+ // transferred to other kinds of objects for use as a method. However,
+ // it does require that any such object have a toISOString method. An
+ // object is free to use the argument key to filter its
+ // stringification.
+ };
+}
+
+// 15.9.4.2 Date.parse (string)
+// 15.9.1.15 Date Time String Format
+// Date.parse
+// based on work shared by Daniel Friesen (dantman)
+// http://gist.github.com/303249
+if (isNaN(Date.parse("T00:00"))) {
+ // XXX global assignment won't work in embeddings that use
+ // an alternate object for the context.
+ Date = (function(NativeDate) {
+
+ // Date.length === 7
+ var Date = function(Y, M, D, h, m, s, ms) {
+ var length = arguments.length;
+ if (this instanceof NativeDate) {
+ var date = length === 1 && String(Y) === Y ? // isString(Y)
+ // We explicitly pass it through parse:
+ new NativeDate(Date.parse(Y)) :
+ // We have to manually make calls depending on argument
+ // length here
+ length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
+ length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
+ length >= 5 ? new NativeDate(Y, M, D, h, m) :
+ length >= 4 ? new NativeDate(Y, M, D, h) :
+ length >= 3 ? new NativeDate(Y, M, D) :
+ length >= 2 ? new NativeDate(Y, M) :
+ length >= 1 ? new NativeDate(Y) :
+ new NativeDate();
+ // Prevent mixups with unfixed Date object
+ date.constructor = Date;
+ return date;
+ }
+ return NativeDate.apply(this, arguments);
+ };
+
+ // 15.9.1.15 Date Time String Format
+ var isoDateExpression = new RegExp("^" +
+ "(?:" + // optional year-month-day
+ "(" + // year capture
+ "(?:[+-]\\d\\d)?" + // 15.9.1.15.1 Extended years
+ "\\d\\d\\d\\d" + // four-digit year
+ ")" +
+ "(?:-" + // optional month-day
+ "(\\d\\d)" + // month capture
+ "(?:-" + // optional day
+ "(\\d\\d)" + // day capture
+ ")?" +
+ ")?" +
+ ")?" +
+ "(?:T" + // hour:minute:second.subsecond
+ "(\\d\\d)" + // hour capture
+ ":(\\d\\d)" + // minute capture
+ "(?::" + // optional :second.subsecond
+ "(\\d\\d)" + // second capture
+ "(?:\\.(\\d\\d\\d))?" + // milisecond capture
+ ")?" +
+ ")?" +
+ "(?:" + // time zone
+ "Z|" + // UTC capture
+ "([+-])(\\d\\d):(\\d\\d)" + // timezone offset
+ // capture sign, hour, minute
+ ")?" +
+ "$");
+
+ // Copy any custom methods a 3rd party library may have added
+ for (var key in NativeDate)
+ Date[key] = NativeDate[key];
+
+ // Copy "native" methods explicitly; they may be non-enumerable
+ Date.now = NativeDate.now;
+ Date.UTC = NativeDate.UTC;
+ Date.prototype = NativeDate.prototype;
+ Date.prototype.constructor = Date;
+
+ // Upgrade Date.parse to handle the ISO dates we use
+ // TODO review specification to ascertain whether it is
+ // necessary to implement partial ISO date strings.
+ Date.parse = function parse(string) {
+ var match = isoDateExpression.exec(string);
+ if (match) {
+ match.shift(); // kill match[0], the full match
+ // recognize times without dates before normalizing the
+ // numeric values, for later use
+ var timeOnly = match[0] === undefined;
+ // parse numerics
+ for (var i = 0; i < 10; i++) {
+ // skip + or - for the timezone offset
+ if (i === 7)
+ continue;
+ // Note: parseInt would read 0-prefix numbers as
+ // octal. Number constructor or unary + work better
+ // here:
+ match[i] = +(match[i] || (i < 3 ? 1 : 0));
+ // match[1] is the month. Months are 0-11 in JavaScript
+ // Date objects, but 1-12 in ISO notation, so we
+ // decrement.
+ if (i === 1)
+ match[i]--;
+ }
+ // if no year-month-date is provided, return a milisecond
+ // quantity instead of a UTC date number value.
+ if (timeOnly)
+ return ((match[3] * 60 + match[4]) * 60 + match[5]) * 1000 + match[6];
+
+ // account for an explicit time zone offset if provided
+ var offset = (match[8] * 60 + match[9]) * 60 * 1000;
+ if (match[6] === "-")
+ offset = -offset;
+
+ return NativeDate.UTC.apply(this, match.slice(0, 7)) + offset;
+ }
+ return NativeDate.parse.apply(this, arguments);
+ };
+
+ return Date;
+ })(Date);
+}
+
+//
+// String
+// ======
+//
+
+// ES5 15.5.4.20
+if (!String.prototype.trim) {
+ // http://blog.stevenlevithan.com/archives/faster-trim-javascript
+ var trimBeginRegexp = /^\s\s*/;
+ var trimEndRegexp = /\s\s*$/;
+ String.prototype.trim = function trim() {
+ return String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, '');
+ };
+}
+
+});
\ No newline at end of file
diff --git a/lib/ace/lib/keys.js b/lib/ace/lib/keys.js
new file mode 100644
index 00000000..f6e9d0bc
--- /dev/null
+++ b/lib/ace/lib/keys.js
@@ -0,0 +1,118 @@
+/*! @license
+==========================================================================
+SproutCore -- JavaScript Application Framework
+copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.
+
+For more information about SproutCore, visit http://www.sproutcore.com
+
+
+==========================================================================
+@license */
+
+// Most of the following code is taken from SproutCore with a few changes.
+
+define(function(require, exports, module) {
+
+var oop = require("ace/lib/oop");
+
+/**
+ * Helper functions and hashes for key handling.
+ */
+var Keys = (function() {
+ var ret = {
+ MODIFIER_KEYS: {
+ 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta'
+ },
+
+ KEY_MODS: {
+ "ctrl": 1, "alt": 2, "option" : 2,
+ "shift": 4, "meta": 8, "command": 8
+ },
+
+ FUNCTION_KEYS : {
+ 8 : "Backspace",
+ 9 : "Tab",
+ 13 : "Return",
+ 19 : "Pause",
+ 27 : "Esc",
+ 32 : "Space",
+ 33 : "PageUp",
+ 34 : "PageDown",
+ 35 : "End",
+ 36 : "Home",
+ 37 : "Left",
+ 38 : "Up",
+ 39 : "Right",
+ 40 : "Down",
+ 44 : "Print",
+ 45 : "Insert",
+ 46 : "Delete",
+ 112: "F1",
+ 113: "F2",
+ 114: "F3",
+ 115: "F4",
+ 116: "F5",
+ 117: "F6",
+ 118: "F7",
+ 119: "F8",
+ 120: "F9",
+ 121: "F10",
+ 122: "F11",
+ 123: "F12",
+ 144: "Numlock",
+ 145: "Scrolllock"
+ },
+
+ PRINTABLE_KEYS: {
+ 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',
+ 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',
+ 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',
+ 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',
+ 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',
+ 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',
+ 188: ',', 190: '.', 191: '/', 192: '`', 219: '[', 220: '\\',
+ 221: ']', 222: '\"'
+ }
+ };
+
+ // A reverse map of FUNCTION_KEYS
+ for (i in ret.FUNCTION_KEYS) {
+ var name = ret.FUNCTION_KEYS[i].toUpperCase();
+ ret[name] = parseInt(i, 10);
+ }
+
+ // Add the MODIFIER_KEYS, FUNCTION_KEYS and PRINTABLE_KEYS to the KEY
+ // variables as well.
+ oop.mixin(ret, ret.MODIFIER_KEYS);
+ oop.mixin(ret, ret.PRINTABLE_KEYS);
+ oop.mixin(ret, ret.FUNCTION_KEYS);
+
+ return ret;
+})();
+oop.mixin(exports, Keys);
+
+exports.keyCodeToString = function(keyCode) {
+ return (Keys[keyCode] || String.fromCharCode(keyCode)).toLowerCase();
+}
+
+});
diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js
new file mode 100644
index 00000000..a65f9a19
--- /dev/null
+++ b/lib/ace/lib/lang.js
@@ -0,0 +1,150 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Ajax.org Code Editor (ACE).
+ *
+ * The Initial Developer of the Original Code is
+ * Ajax.org B.V.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Fabian Jakobs
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+exports.stringReverse = function(string) {
+ return string.split("").reverse().join("");
+};
+
+exports.stringRepeat = function (string, count) {
+ return new Array(count + 1).join(string);
+};
+
+var trimBeginRegexp = /^\s\s*/;
+var trimEndRegexp = /\s\s*$/;
+
+exports.stringTrimLeft = function (string) {
+ return string.replace(trimBeginRegexp, '')
+};
+
+exports.stringTrimRight = function (string) {
+ return string.replace(trimEndRegexp, '');
+};
+
+exports.copyObject = function(obj) {
+ var copy = {};
+ for (var key in obj) {
+ copy[key] = obj[key];
+ }
+ return copy;
+};
+
+exports.copyArray = function(array){
+ var copy = [];
+ for (i=0, l=array.length; i
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+exports.inherits = (function() {
+ var tempCtor = function() {};
+ return function(ctor, superCtor) {
+ tempCtor.prototype = superCtor.prototype;
+ ctor.super_ = superCtor.prototype;
+ ctor.prototype = new tempCtor();
+ ctor.prototype.constructor = ctor;
+ }
+}());
+
+exports.mixin = function(obj, mixin) {
+ for (var key in mixin) {
+ obj[key] = mixin[key];
+ }
+};
+
+exports.implement = function(proto, mixin) {
+ exports.mixin(proto, mixin);
+};
+
+});
diff --git a/lib/ace/lib/useragent.js b/lib/ace/lib/useragent.js
new file mode 100644
index 00000000..165e7e1d
--- /dev/null
+++ b/lib/ace/lib/useragent.js
@@ -0,0 +1,97 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Ajax.org Code Editor (ACE).
+ *
+ * The Initial Developer of the Original Code is
+ * Ajax.org B.V.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Fabian Jakobs
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+var os = (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase();
+var ua = navigator.userAgent;
+var av = navigator.appVersion;
+
+/** Is the user using a browser that identifies itself as Windows */
+exports.isWin = (os == "win");
+
+/** Is the user using a browser that identifies itself as Mac OS */
+exports.isMac = (os == "mac");
+
+/** Is the user using a browser that identifies itself as Linux */
+exports.isLinux = (os == "linux");
+
+exports.isIE = ! + "\v1";
+
+/** Is this Firefox or related? */
+exports.isGecko = exports.isMozilla = window.controllers && window.navigator.product === "Gecko";
+
+/** oldGecko == rev < 2.0 **/
+exports.isOldGecko = exports.isGecko && /rv\:1/.test(navigator.userAgent);
+
+/** Is this Opera */
+exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]";
+
+/** Is the user using a browser that identifies itself as WebKit */
+exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;
+
+exports.isAIR = ua.indexOf("AdobeAIR") >= 0;
+
+exports.isIPad = ua.indexOf("iPad") >= 0;
+
+/**
+ * I hate doing this, but we need some way to determine if the user is on a Mac
+ * The reason is that users have different expectations of their key combinations.
+ *
+ * Take copy as an example, Mac people expect to use CMD or APPLE + C
+ * Windows folks expect to use CTRL + C
+ */
+exports.OS = {
+ LINUX: 'LINUX',
+ MAC: 'MAC',
+ WINDOWS: 'WINDOWS'
+};
+
+/**
+ * Return an exports.OS constant
+ */
+exports.getOS = function() {
+ if (exports.isMac) {
+ return exports.OS['MAC'];
+ } else if (exports.isLinux) {
+ return exports.OS['LINUX'];
+ } else {
+ return exports.OS['WINDOWS'];
+ }
+};
+
+});
diff --git a/lib/ace/mode/behaviour/cstyle.js b/lib/ace/mode/behaviour/cstyle.js
index bfa14273..10bee574 100644
--- a/lib/ace/mode/behaviour/cstyle.js
+++ b/lib/ace/mode/behaviour/cstyle.js
@@ -38,7 +38,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var Behaviour = require('ace/mode/behaviour').Behaviour;
var CstyleBehaviour = function () {
diff --git a/lib/ace/mode/behaviour/xml.js b/lib/ace/mode/behaviour/xml.js
index 182b350e..546f32a9 100644
--- a/lib/ace/mode/behaviour/xml.js
+++ b/lib/ace/mode/behaviour/xml.js
@@ -38,7 +38,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var Behaviour = require('ace/mode/behaviour').Behaviour;
var CstyleBehaviour = require('ace/mode/behaviour/cstyle').CstyleBehaviour;
diff --git a/lib/ace/mode/c_cpp.js b/lib/ace/mode/c_cpp.js
index 958aed92..04081c9c 100644
--- a/lib/ace/mode/c_cpp.js
+++ b/lib/ace/mode/c_cpp.js
@@ -38,7 +38,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var c_cppHighlightRules = require("ace/mode/c_cpp_highlight_rules").c_cppHighlightRules;
diff --git a/lib/ace/mode/c_cpp_highlight_rules.js b/lib/ace/mode/c_cpp_highlight_rules.js
index 8efffa3a..dcf80215 100644
--- a/lib/ace/mode/c_cpp_highlight_rules.js
+++ b/lib/ace/mode/c_cpp_highlight_rules.js
@@ -40,8 +40,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/clojure.js b/lib/ace/mode/clojure.js
index 65d06333..3bd8127f 100644
--- a/lib/ace/mode/clojure.js
+++ b/lib/ace/mode/clojure.js
@@ -39,7 +39,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var ClojureHighlightRules = require("ace/mode/clojure_highlight_rules").ClojureHighlightRules;
diff --git a/lib/ace/mode/clojure_highlight_rules.js b/lib/ace/mode/clojure_highlight_rules.js
index 5797b996..5ea1087e 100644
--- a/lib/ace/mode/clojure_highlight_rules.js
+++ b/lib/ace/mode/clojure_highlight_rules.js
@@ -39,8 +39,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/coffee.js b/lib/ace/mode/coffee.js
index 01584d54..c632807a 100644
--- a/lib/ace/mode/coffee.js
+++ b/lib/ace/mode/coffee.js
@@ -43,7 +43,7 @@ var Outdent = require("ace/mode/matching_brace_outdent").MatchingBraceOutdent;
var Range = require("ace/range").Range;
var TextMode = require("ace/mode/text").Mode;
var WorkerClient = require("ace/worker/worker_client").WorkerClient;
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
function Mode() {
this.$tokenizer = new Tokenizer(new Rules().getRules());
@@ -98,7 +98,7 @@ oop.inherits(Mode, TextMode);
this.createWorker = function(session) {
var doc = session.getDocument();
- var worker = new WorkerClient(["ace", "pilot"], "worker-coffee.js", "ace/mode/coffee_worker", "Worker");
+ var worker = new WorkerClient(["ace"], "worker-coffee.js", "ace/mode/coffee_worker", "Worker");
worker.call("setValue", [doc.getValue()]);
doc.on("change", function(e) {
diff --git a/lib/ace/mode/coffee_highlight_rules.js b/lib/ace/mode/coffee_highlight_rules.js
index a0608bd1..04742b1b 100644
--- a/lib/ace/mode/coffee_highlight_rules.js
+++ b/lib/ace/mode/coffee_highlight_rules.js
@@ -37,8 +37,10 @@
define(function(require, exports, module) {
- require("pilot/oop").inherits(CoffeeHighlightRules,
- require("ace/mode/text_highlight_rules").TextHighlightRules);
+ require("ace/lib/oop").inherits(
+ CoffeeHighlightRules,
+ require("ace/mode/text_highlight_rules").TextHighlightRules
+ );
function CoffeeHighlightRules() {
var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*";
diff --git a/lib/ace/mode/coffee_worker.js b/lib/ace/mode/coffee_worker.js
index 5cf1010e..ef39e0ac 100644
--- a/lib/ace/mode/coffee_worker.js
+++ b/lib/ace/mode/coffee_worker.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var Mirror = require("ace/worker/mirror").Mirror;
var coffee = require("ace/mode/coffee/coffee-script");
diff --git a/lib/ace/mode/csharp.js b/lib/ace/mode/csharp.js
index 472e775f..5750d7d1 100644
--- a/lib/ace/mode/csharp.js
+++ b/lib/ace/mode/csharp.js
@@ -1,6 +1,6 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var CSharpHighlightRules = require("ace/mode/csharp_highlight_rules").CSharpHighlightRules;
diff --git a/lib/ace/mode/csharp_highlight_rules.js b/lib/ace/mode/csharp_highlight_rules.js
index a246a296..c85cf957 100644
--- a/lib/ace/mode/csharp_highlight_rules.js
+++ b/lib/ace/mode/csharp_highlight_rules.js
@@ -1,7 +1,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/css.js b/lib/ace/mode/css.js
index 9f89228a..80960fbb 100644
--- a/lib/ace/mode/css.js
+++ b/lib/ace/mode/css.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var CssHighlightRules = require("ace/mode/css_highlight_rules").CssHighlightRules;
@@ -79,7 +79,7 @@ oop.inherits(Mode, TextMode);
this.createWorker = function(session) {
var doc = session.getDocument();
- var worker = new WorkerClient(["ace", "pilot"], "worker-css.js", "ace/mode/css_worker", "Worker");
+ var worker = new WorkerClient(["ace"], "worker-css.js", "ace/mode/css_worker", "Worker");
worker.call("setValue", [doc.getValue()]);
doc.on("change", function(e) {
diff --git a/lib/ace/mode/css_highlight_rules.js b/lib/ace/mode/css_highlight_rules.js
index 967d7d67..91813819 100644
--- a/lib/ace/mode/css_highlight_rules.js
+++ b/lib/ace/mode/css_highlight_rules.js
@@ -37,8 +37,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var CssHighlightRules = function() {
diff --git a/lib/ace/mode/css_worker.js b/lib/ace/mode/css_worker.js
index 96196baf..354ab31b 100644
--- a/lib/ace/mode/css_worker.js
+++ b/lib/ace/mode/css_worker.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var Mirror = require("ace/worker/mirror").Mirror;
var CSSLint = require("ace/mode/css/csslint").CSSLint;
diff --git a/lib/ace/mode/doc_comment_highlight_rules.js b/lib/ace/mode/doc_comment_highlight_rules.js
index f2918948..320f58a0 100644
--- a/lib/ace/mode/doc_comment_highlight_rules.js
+++ b/lib/ace/mode/doc_comment_highlight_rules.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var DocCommentHighlightRules = function() {
diff --git a/lib/ace/mode/groovy.js b/lib/ace/mode/groovy.js
index b0d51d87..0172c8e7 100644
--- a/lib/ace/mode/groovy.js
+++ b/lib/ace/mode/groovy.js
@@ -1,6 +1,6 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var JavaScriptMode = require("ace/mode/javascript").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var GroovyHighlightRules = require("ace/mode/groovy_highlight_rules").GroovyHighlightRules;
diff --git a/lib/ace/mode/groovy_highlight_rules.js b/lib/ace/mode/groovy_highlight_rules.js
index 202f361c..5339c4eb 100644
--- a/lib/ace/mode/groovy_highlight_rules.js
+++ b/lib/ace/mode/groovy_highlight_rules.js
@@ -1,7 +1,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/html.js b/lib/ace/mode/html.js
index 01896126..7d964e8f 100644
--- a/lib/ace/mode/html.js
+++ b/lib/ace/mode/html.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var JavaScriptMode = require("ace/mode/javascript").Mode;
var CssMode = require("ace/mode/css").Mode;
diff --git a/lib/ace/mode/html_highlight_rules.js b/lib/ace/mode/html_highlight_rules.js
index 3dff3c5a..a28fa3a4 100644
--- a/lib/ace/mode/html_highlight_rules.js
+++ b/lib/ace/mode/html_highlight_rules.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var CssHighlightRules = require("ace/mode/css_highlight_rules").CssHighlightRules;
var JavaScriptHighlightRules = require("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
@@ -195,4 +195,4 @@ var HtmlHighlightRules = function() {
oop.inherits(HtmlHighlightRules, TextHighlightRules);
exports.HtmlHighlightRules = HtmlHighlightRules;
-});
\ No newline at end of file
+});
diff --git a/lib/ace/mode/java.js b/lib/ace/mode/java.js
index ac3c942a..9c8c018e 100644
--- a/lib/ace/mode/java.js
+++ b/lib/ace/mode/java.js
@@ -1,6 +1,6 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var JavaScriptMode = require("ace/mode/javascript").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var JavaHighlightRules = require("ace/mode/java_highlight_rules").JavaHighlightRules;
diff --git a/lib/ace/mode/java_highlight_rules.js b/lib/ace/mode/java_highlight_rules.js
index a97e46bc..46e0ebbd 100644
--- a/lib/ace/mode/java_highlight_rules.js
+++ b/lib/ace/mode/java_highlight_rules.js
@@ -1,7 +1,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/javascript.js b/lib/ace/mode/javascript.js
index 1302ad69..b329e9b4 100644
--- a/lib/ace/mode/javascript.js
+++ b/lib/ace/mode/javascript.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var JavaScriptHighlightRules = require("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules;
@@ -126,7 +126,7 @@ oop.inherits(Mode, TextMode);
this.createWorker = function(session) {
var doc = session.getDocument();
- var worker = new WorkerClient(["ace", "pilot"], "worker-javascript.js", "ace/mode/javascript_worker", "JavaScriptWorker");
+ var worker = new WorkerClient(["ace"], "worker-javascript.js", "ace/mode/javascript_worker", "JavaScriptWorker");
worker.call("setValue", [doc.getValue()]);
doc.on("change", function(e) {
diff --git a/lib/ace/mode/javascript_highlight_rules.js b/lib/ace/mode/javascript_highlight_rules.js
index eeb8479f..c3bf95ce 100644
--- a/lib/ace/mode/javascript_highlight_rules.js
+++ b/lib/ace/mode/javascript_highlight_rules.js
@@ -38,8 +38,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var unicode = require("ace/unicode");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/javascript_worker.js b/lib/ace/mode/javascript_worker.js
index 09d285b0..3b543602 100644
--- a/lib/ace/mode/javascript_worker.js
+++ b/lib/ace/mode/javascript_worker.js
@@ -1,6 +1,6 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var Mirror = require("ace/worker/mirror").Mirror;
//var lint = require("ace/worker/jslint").JSLINT;
var lint = require("ace/worker/jshint").JSHINT;
diff --git a/lib/ace/mode/json.js b/lib/ace/mode/json.js
index 9019af14..885a3f3d 100644
--- a/lib/ace/mode/json.js
+++ b/lib/ace/mode/json.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var HighlightRules = require("ace/mode/json_highlight_rules").JsonHighlightRules;
diff --git a/lib/ace/mode/json_highlight_rules.js b/lib/ace/mode/json_highlight_rules.js
index 116b093c..1958abcf 100644
--- a/lib/ace/mode/json_highlight_rules.js
+++ b/lib/ace/mode/json_highlight_rules.js
@@ -38,8 +38,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var JsonHighlightRules = function() {
diff --git a/lib/ace/mode/ocaml.js b/lib/ace/mode/ocaml.js
index 7455691b..d226ed9d 100644
--- a/lib/ace/mode/ocaml.js
+++ b/lib/ace/mode/ocaml.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var OcamlHighlightRules = require("ace/mode/ocaml_highlight_rules").OcamlHighlightRules;
diff --git a/lib/ace/mode/ocaml_highlight_rules.js b/lib/ace/mode/ocaml_highlight_rules.js
index 892ce409..ac10831f 100644
--- a/lib/ace/mode/ocaml_highlight_rules.js
+++ b/lib/ace/mode/ocaml_highlight_rules.js
@@ -39,8 +39,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var OcamlHighlightRules = function() {
diff --git a/lib/ace/mode/perl.js b/lib/ace/mode/perl.js
index 0173067c..7174e995 100644
--- a/lib/ace/mode/perl.js
+++ b/lib/ace/mode/perl.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var PerlHighlightRules = require("ace/mode/perl_highlight_rules").PerlHighlightRules;
diff --git a/lib/ace/mode/perl_highlight_rules.js b/lib/ace/mode/perl_highlight_rules.js
index 12ede240..a1365c18 100644
--- a/lib/ace/mode/perl_highlight_rules.js
+++ b/lib/ace/mode/perl_highlight_rules.js
@@ -37,8 +37,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var PerlHighlightRules = function() {
diff --git a/lib/ace/mode/php.js b/lib/ace/mode/php.js
index a11a7c49..869c709b 100644
--- a/lib/ace/mode/php.js
+++ b/lib/ace/mode/php.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var PhpHighlightRules = require("ace/mode/php_highlight_rules").PhpHighlightRules;
diff --git a/lib/ace/mode/php_highlight_rules.js b/lib/ace/mode/php_highlight_rules.js
index e9c2268c..a088784a 100644
--- a/lib/ace/mode/php_highlight_rules.js
+++ b/lib/ace/mode/php_highlight_rules.js
@@ -38,8 +38,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/python.js b/lib/ace/mode/python.js
index 2d8569e6..4e53256f 100644
--- a/lib/ace/mode/python.js
+++ b/lib/ace/mode/python.js
@@ -38,7 +38,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var PythonHighlightRules = require("ace/mode/python_highlight_rules").PythonHighlightRules;
diff --git a/lib/ace/mode/python_highlight_rules.js b/lib/ace/mode/python_highlight_rules.js
index eb060df2..c0215ec6 100644
--- a/lib/ace/mode/python_highlight_rules.js
+++ b/lib/ace/mode/python_highlight_rules.js
@@ -41,8 +41,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var PythonHighlightRules = function() {
diff --git a/lib/ace/mode/ruby.js b/lib/ace/mode/ruby.js
index 532c8cec..b223c997 100644
--- a/lib/ace/mode/ruby.js
+++ b/lib/ace/mode/ruby.js
@@ -38,7 +38,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var RubyHighlightRules = require("ace/mode/ruby_highlight_rules").RubyHighlightRules;
diff --git a/lib/ace/mode/ruby_highlight_rules.js b/lib/ace/mode/ruby_highlight_rules.js
index 24cca739..a1471104 100644
--- a/lib/ace/mode/ruby_highlight_rules.js
+++ b/lib/ace/mode/ruby_highlight_rules.js
@@ -38,8 +38,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var RubyHighlightRules = function() {
diff --git a/lib/ace/mode/scala.js b/lib/ace/mode/scala.js
index f1690fb6..b71f9790 100644
--- a/lib/ace/mode/scala.js
+++ b/lib/ace/mode/scala.js
@@ -1,6 +1,6 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var JavaScriptMode = require("ace/mode/javascript").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var ScalaHighlightRules = require("ace/mode/scala_highlight_rules").ScalaHighlightRules;
diff --git a/lib/ace/mode/scala_highlight_rules.js b/lib/ace/mode/scala_highlight_rules.js
index 11456522..da166f58 100644
--- a/lib/ace/mode/scala_highlight_rules.js
+++ b/lib/ace/mode/scala_highlight_rules.js
@@ -1,7 +1,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var DocCommentHighlightRules = require("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules;
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
diff --git a/lib/ace/mode/scss.js b/lib/ace/mode/scss.js
index 9d8bc4b7..8810590e 100644
--- a/lib/ace/mode/scss.js
+++ b/lib/ace/mode/scss.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var ScssHighlightRules = require("ace/mode/scss_highlight_rules").ScssHighlightRules;
diff --git a/lib/ace/mode/scss_highlight_rules.js b/lib/ace/mode/scss_highlight_rules.js
index d93bf0e4..fb590926 100644
--- a/lib/ace/mode/scss_highlight_rules.js
+++ b/lib/ace/mode/scss_highlight_rules.js
@@ -37,8 +37,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var ScssHighlightRules = function() {
diff --git a/lib/ace/mode/svg.js b/lib/ace/mode/svg.js
index 87a42ae5..64549f0d 100644
--- a/lib/ace/mode/svg.js
+++ b/lib/ace/mode/svg.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var XmlMode = require("ace/mode/text").Mode;
var JavaScriptMode = require("ace/mode/javascript").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
diff --git a/lib/ace/mode/svg_highlight_rules.js b/lib/ace/mode/svg_highlight_rules.js
index 50c1b3f4..9d9d79c2 100644
--- a/lib/ace/mode/svg_highlight_rules.js
+++ b/lib/ace/mode/svg_highlight_rules.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var JavaScriptHighlightRules = require("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules;
var XmlHighlightRules = require("ace/mode/xml_highlight_rules").XmlHighlightRules;
diff --git a/lib/ace/mode/text_highlight_rules.js b/lib/ace/mode/text_highlight_rules.js
index 06be7946..639bcb3b 100644
--- a/lib/ace/mode/text_highlight_rules.js
+++ b/lib/ace/mode/text_highlight_rules.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var lang = require("pilot/lang");
+var lang = require("ace/lib/lang");
var TextHighlightRules = function() {
diff --git a/lib/ace/mode/textile.js b/lib/ace/mode/textile.js
index 6bfd4d47..92473587 100644
--- a/lib/ace/mode/textile.js
+++ b/lib/ace/mode/textile.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var TextileHighlightRules = require("ace/mode/textile_highlight_rules").TextileHighlightRules;
diff --git a/lib/ace/mode/textile_highlight_rules.js b/lib/ace/mode/textile_highlight_rules.js
index 4e923fad..1d9fca54 100644
--- a/lib/ace/mode/textile_highlight_rules.js
+++ b/lib/ace/mode/textile_highlight_rules.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var TextileHighlightRules = function() {
diff --git a/lib/ace/mode/xml.js b/lib/ace/mode/xml.js
index a6d5fa9c..68d1af33 100644
--- a/lib/ace/mode/xml.js
+++ b/lib/ace/mode/xml.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var XmlHighlightRules = require("ace/mode/xml_highlight_rules").XmlHighlightRules;
diff --git a/lib/ace/mode/xml_highlight_rules.js b/lib/ace/mode/xml_highlight_rules.js
index d7eaa18e..649a2f46 100644
--- a/lib/ace/mode/xml_highlight_rules.js
+++ b/lib/ace/mode/xml_highlight_rules.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
+var oop = require("ace/lib/oop");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var XmlHighlightRules = function() {
diff --git a/lib/ace/model/buffer.js b/lib/ace/model/buffer.js
index faf3ae30..b83b537f 100644
--- a/lib/ace/model/buffer.js
+++ b/lib/ace/model/buffer.js
@@ -40,9 +40,9 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var Selection = require("ace/selection").Selection;
var TextMode = require("ace/mode/text").Mode;
var Range = require("ace/range").Range;
diff --git a/lib/ace/model/buffer_test.js b/lib/ace/model/buffer_test.js
index aee4ca15..3650179c 100644
--- a/lib/ace/model/buffer_test.js
+++ b/lib/ace/model/buffer_test.js
@@ -43,7 +43,7 @@ if (typeof process !== "undefined") {
define(function(require, exports, module) {
-var lang = require("pilot/lang");
+var lang = require("ace/lib/lang");
var Buffer = require("ace/model/buffer").Buffer;
var Editor = require("ace/editor").Editor;
var UndoManager = require("ace/undomanager").UndoManager;
diff --git a/lib/ace/model/editor.js b/lib/ace/model/editor.js
new file mode 100644
index 00000000..7a8aad8e
--- /dev/null
+++ b/lib/ace/model/editor.js
@@ -0,0 +1,70 @@
+/* vim:ts=4:sts=4:sw=4:
+ * ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Ajax.org Code Editor (ACE).
+ *
+ * The Initial Developer of the Original Code is
+ * Ajax.org B.V.
+ * Portions created by the Initial Developer are Copyright (C) 2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Fabian Jakobs
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
+
+var Editor = exports.Editor = function() {
+ this._buffers = [];
+ this._windows = [];
+};
+
+(function() {
+
+ oop.implement(this, EventEmitter);
+
+ this.addBuffer = function(buffer) {
+ this._buffers.push(buffer);
+ return this._buffers.length-1;
+ };
+
+ this.addWindow = function(win) {
+ this._windows.push(win);
+ return this._windows.length-1;
+ };
+
+ this.openInWindow = function(bufferId, winId) {
+ this._windows[winId || 0].setBuffer(this._buffers[bufferId]);
+ };
+
+}).call(Editor.prototype);
+
+});
\ No newline at end of file
diff --git a/lib/ace/model/window.js b/lib/ace/model/window.js
index 456e9ebe..a4b873ba 100644
--- a/lib/ace/model/window.js
+++ b/lib/ace/model/window.js
@@ -38,9 +38,9 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
/**
* A window represents the viewport of a buffer
diff --git a/lib/ace/mouse_handler.js b/lib/ace/mouse_handler.js
index f77eb2d1..de2a1fc1 100644
--- a/lib/ace/mouse_handler.js
+++ b/lib/ace/mouse_handler.js
@@ -39,9 +39,9 @@
define(function(require, exports, module) {
-var event = require("pilot/event");
-var dom = require("pilot/dom");
-var BrowserFocus = require("pilot/browser_focus").BrowserFocus;
+var event = require("ace/lib/event");
+var dom = require("ace/lib/dom");
+var BrowserFocus = require("ace/lib/browser_focus").BrowserFocus;
var STATE_UNKNOWN = 0;
var STATE_SELECT = 1;
diff --git a/lib/ace/renderloop.js b/lib/ace/renderloop.js
index afe998c3..8d1839af 100644
--- a/lib/ace/renderloop.js
+++ b/lib/ace/renderloop.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
-var event = require("pilot/event");
+var event = require("ace/lib/event");
var RenderLoop = function(onRender) {
this.onRender = onRender;
diff --git a/lib/ace/scrollbar.js b/lib/ace/scrollbar.js
index 55a75b33..fae55164 100644
--- a/lib/ace/scrollbar.js
+++ b/lib/ace/scrollbar.js
@@ -37,10 +37,10 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var dom = require("pilot/dom");
-var event = require("pilot/event");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var dom = require("ace/lib/dom");
+var event = require("ace/lib/event");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var ScrollBar = function(parent) {
this.element = dom.createElement("div");
diff --git a/lib/ace/search.js b/lib/ace/search.js
index 9df4f6f8..67e2641f 100644
--- a/lib/ace/search.js
+++ b/lib/ace/search.js
@@ -39,8 +39,8 @@
define(function(require, exports, module) {
-var lang = require("pilot/lang");
-var oop = require("pilot/oop");
+var lang = require("ace/lib/lang");
+var oop = require("ace/lib/oop");
var Range = require("ace/range").Range;
var Search = function() {
diff --git a/lib/ace/selection.js b/lib/ace/selection.js
index 65e0fec5..a05fe90f 100644
--- a/lib/ace/selection.js
+++ b/lib/ace/selection.js
@@ -38,9 +38,9 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var lang = require("pilot/lang");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var lang = require("ace/lib/lang");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var Range = require("ace/range").Range;
/**
diff --git a/lib/ace/split.js b/lib/ace/split.js
index d112727d..38e104a9 100644
--- a/lib/ace/split.js
+++ b/lib/ace/split.js
@@ -38,10 +38,10 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var dom = require("pilot/dom");
-var lang = require("pilot/lang");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var dom = require("ace/lib/dom");
+var lang = require("ace/lib/lang");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var Editor = require("ace/editor").Editor;
var Renderer = require("ace/view/window_view").WindowView;
diff --git a/lib/ace/test/all_browser.js b/lib/ace/test/all_browser.js
index 42e32731..9b01d91d 100644
--- a/lib/ace/test/all_browser.js
+++ b/lib/ace/test/all_browser.js
@@ -1,9 +1,14 @@
define(function(require, exports, module) {
+<<<<<<< HEAD
require("pilot/fixoldbrowsers");
var AsyncTest = require("asyncjs/test");
+=======
+require("ace/lib/fixoldbrowsers");
+var AsyncTest = require("asyncjs").test;
+>>>>>>> move pilot code back into Ace
var async = require("asyncjs");
-var dom = require("pilot/dom");
+var dom = require("ace/lib/dom");
var passed = 0
var failed = 0
diff --git a/lib/ace/test/asyncjs/assert.js b/lib/ace/test/asyncjs/assert.js
index 198da4b2..3ce1b31b 100644
--- a/lib/ace/test/asyncjs/assert.js
+++ b/lib/ace/test/asyncjs/assert.js
@@ -25,7 +25,7 @@ define(function(require, exports, module) {
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// UTILITY
-var oop = require('pilot/oop');
+var oop = require("ace/lib/oop");
var pSlice = Array.prototype.slice;
// 1. The assert module provides functions that throw
diff --git a/lib/ace/test/asyncjs/test.js b/lib/ace/test/asyncjs/test.js
index d1f68b06..7504a3e2 100644
--- a/lib/ace/test/asyncjs/test.js
+++ b/lib/ace/test/asyncjs/test.js
@@ -6,7 +6,7 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop")
+var oop = require("ace/lib/oop")
var async = require("asyncjs/async")
require("asyncjs/utils")
diff --git a/lib/ace/test/event_emitter_test.js b/lib/ace/test/event_emitter_test.js
index 16edf708..3c94f582 100644
--- a/lib/ace/test/event_emitter_test.js
+++ b/lib/ace/test/event_emitter_test.js
@@ -41,8 +41,8 @@ if (typeof process !== "undefined") {
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var assert = require("ace/test/assertions");
var Emitter = function() {};
diff --git a/lib/ace/theme/clouds.js b/lib/ace/theme/clouds.js
index 039c1a3c..6eafa8fc 100644
--- a/lib/ace/theme/clouds.js
+++ b/lib/ace/theme/clouds.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-clouds .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/clouds_midnight.js b/lib/ace/theme/clouds_midnight.js
index 027537fd..db9d0d78 100644
--- a/lib/ace/theme/clouds_midnight.js
+++ b/lib/ace/theme/clouds_midnight.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-clouds-midnight .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/cobalt.js b/lib/ace/theme/cobalt.js
index 0abc16bd..5f4c6957 100644
--- a/lib/ace/theme/cobalt.js
+++ b/lib/ace/theme/cobalt.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-cobalt .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/crimson_editor.js b/lib/ace/theme/crimson_editor.js
index 54ea8d97..7b2f7351 100644
--- a/lib/ace/theme/crimson_editor.js
+++ b/lib/ace/theme/crimson_editor.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-crimson-editor .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/dawn.js b/lib/ace/theme/dawn.js
index c70fac51..06862104 100644
--- a/lib/ace/theme/dawn.js
+++ b/lib/ace/theme/dawn.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-dawn .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/eclipse.js b/lib/ace/theme/eclipse.js
index 0f2017e9..416e1c28 100644
--- a/lib/ace/theme/eclipse.js
+++ b/lib/ace/theme/eclipse.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-eclipse .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/idle_fingers.js b/lib/ace/theme/idle_fingers.js
index c68810b8..95d256d0 100644
--- a/lib/ace/theme/idle_fingers.js
+++ b/lib/ace/theme/idle_fingers.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-idle-fingers .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/kr_theme.js b/lib/ace/theme/kr_theme.js
index 3f76e941..971366c1 100644
--- a/lib/ace/theme/kr_theme.js
+++ b/lib/ace/theme/kr_theme.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-kr-theme .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/merbivore.js b/lib/ace/theme/merbivore.js
index 65972b40..b74d3014 100644
--- a/lib/ace/theme/merbivore.js
+++ b/lib/ace/theme/merbivore.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-merbivore .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/merbivore_soft.js b/lib/ace/theme/merbivore_soft.js
index a51e600c..57dde939 100644
--- a/lib/ace/theme/merbivore_soft.js
+++ b/lib/ace/theme/merbivore_soft.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-merbivore-soft .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/mono_industrial.js b/lib/ace/theme/mono_industrial.js
index da368c32..4a57c016 100644
--- a/lib/ace/theme/mono_industrial.js
+++ b/lib/ace/theme/mono_industrial.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-mono-industrial .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/monokai.js b/lib/ace/theme/monokai.js
index 38b645cc..13de4370 100644
--- a/lib/ace/theme/monokai.js
+++ b/lib/ace/theme/monokai.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-monokai .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/pastel_on_dark.js b/lib/ace/theme/pastel_on_dark.js
index 2c5b49a2..9682002c 100644
--- a/lib/ace/theme/pastel_on_dark.js
+++ b/lib/ace/theme/pastel_on_dark.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-pastel-on-dark .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/solarized_dark.js b/lib/ace/theme/solarized_dark.js
index 65991223..f28f6b3c 100644
--- a/lib/ace/theme/solarized_dark.js
+++ b/lib/ace/theme/solarized_dark.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-solarized-dark .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/solarized_light.js b/lib/ace/theme/solarized_light.js
index cae5d526..c8f6afa7 100644
--- a/lib/ace/theme/solarized_light.js
+++ b/lib/ace/theme/solarized_light.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-solarized-light .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/textmate.js b/lib/ace/theme/textmate.js
index 842d7969..9a032120 100644
--- a/lib/ace/theme/textmate.js
+++ b/lib/ace/theme/textmate.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-tm .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/twilight.js b/lib/ace/theme/twilight.js
index 06ca00c8..9f38056d 100644
--- a/lib/ace/theme/twilight.js
+++ b/lib/ace/theme/twilight.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-twilight .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/theme/vibrant_ink.js b/lib/ace/theme/vibrant_ink.js
index 0e1296f4..d92a5b37 100644
--- a/lib/ace/theme/vibrant_ink.js
+++ b/lib/ace/theme/vibrant_ink.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = ".ace-vibrant-ink .ace_editor {\
border: 2px solid rgb(159, 159, 159);\
diff --git a/lib/ace/view/layer/cursor.js b/lib/ace/view/layer/cursor.js
index d2f22985..e892c5db 100644
--- a/lib/ace/view/layer/cursor.js
+++ b/lib/ace/view/layer/cursor.js
@@ -39,7 +39,7 @@
define(function(require, exports, module) {
-var dom = require("pilot/dom");
+var dom = require("ace/lib/dom");
var Cursor = function(model, parentEl) {
this.model = model;
diff --git a/lib/ace/view/layer/gutter.js b/lib/ace/view/layer/gutter.js
index 3687697b..38e590be 100644
--- a/lib/ace/view/layer/gutter.js
+++ b/lib/ace/view/layer/gutter.js
@@ -39,7 +39,7 @@
define(function(require, exports, module) {
-var dom = require("pilot/dom");
+var dom = require("ace/lib/dom");
var Gutter = function(model, parentEl) {
this.model = model;
diff --git a/lib/ace/view/layer/marker.js b/lib/ace/view/layer/marker.js
index f480435a..28694aa4 100644
--- a/lib/ace/view/layer/marker.js
+++ b/lib/ace/view/layer/marker.js
@@ -40,7 +40,7 @@
define(function(require, exports, module) {
var Range = require("ace/range").Range;
-var dom = require("pilot/dom");
+var dom = require("ace/lib/dom");
var Marker = function(model, parentEl) {
this.model = model;
diff --git a/lib/ace/view/layer/text.js b/lib/ace/view/layer/text.js
index 281a076d..45933f45 100644
--- a/lib/ace/view/layer/text.js
+++ b/lib/ace/view/layer/text.js
@@ -40,11 +40,11 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var dom = require("pilot/dom");
-var lang = require("pilot/lang");
-var useragent = require("pilot/useragent");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var dom = require("ace/lib/dom");
+var lang = require("ace/lib/lang");
+var useragent = require("ace/lib/useragent");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var Text = function(model, parentEl) {
this.model = model;
diff --git a/lib/ace/view/measure_text.js b/lib/ace/view/measure_text.js
index 19aff254..72480f1e 100644
--- a/lib/ace/view/measure_text.js
+++ b/lib/ace/view/measure_text.js
@@ -38,11 +38,11 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var dom = require("pilot/dom");
-var lang = require("pilot/lang");
-var useragent = require("pilot/useragent");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var dom = require("ace/lib/dom");
+var lang = require("ace/lib/lang");
+var useragent = require("ace/lib/useragent");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var MeasureText = exports.MeasureText = function(parentEl, interval) {
this.parentEl = parentEl;
diff --git a/lib/ace/view/window_view.js b/lib/ace/view/window_view.js
index 5963bc2a..c27f4f37 100644
--- a/lib/ace/view/window_view.js
+++ b/lib/ace/view/window_view.js
@@ -40,10 +40,10 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var dom = require("pilot/dom");
-var event = require("pilot/event");
-var useragent = require("pilot/useragent");
+var oop = require("ace/lib/oop");
+var dom = require("ace/lib/dom");
+var event = require("ace/lib/event");
+var useragent = require("ace/lib/useragent");
var GutterLayer = require("ace/view/layer/gutter").Gutter;
var MarkerLayer = require("ace/view/layer/marker").Marker;
var TextLayer = require("ace/view/layer/text").Text;
@@ -51,7 +51,7 @@ var CursorLayer = require("ace/view/layer/cursor").Cursor;
var ScrollBar = require("ace/scrollbar").ScrollBar;
var RenderLoop = require("ace/renderloop").RenderLoop;
var MeasureText = require("ace/view/measure_text").MeasureText;
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var editorCss = require("text!ace/view/css/editor.css");
// import CSS once
diff --git a/lib/ace/worker/mirror.js b/lib/ace/worker/mirror.js
index cf543fd3..18d4bbc4 100644
--- a/lib/ace/worker/mirror.js
+++ b/lib/ace/worker/mirror.js
@@ -2,7 +2,7 @@
define(function(require, exports, module) {
var Document = require("ace/document").Document;
-var lang = require("pilot/lang");
+var lang = require("ace/lib/lang");
var Mirror = exports.Mirror = function(sender) {
this.sender = sender;
diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js
index afff4d75..42fbdbfb 100644
--- a/lib/ace/worker/worker.js
+++ b/lib/ace/worker/worker.js
@@ -60,8 +60,8 @@ function initBaseUrls(topLevelNamespaces) {
function initSender() {
- var EventEmitter = require("pilot/event_emitter").EventEmitter;
- var oop = require("pilot/oop");
+ var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
+ var oop = require("ace/lib/oop");
var Sender = function() {};
@@ -100,7 +100,7 @@ onmessage = function(e) {
}
else if (msg.init) {
initBaseUrls(msg.tlns);
- require("pilot/fixoldbrowsers");
+ require("ace/lib/fixoldbrowsers");
sender = initSender();
var clazz = require(msg.module)[msg.classname];
main = new clazz(sender);
diff --git a/lib/ace/worker/worker_client.js b/lib/ace/worker/worker_client.js
index 525e8add..76f27fb6 100644
--- a/lib/ace/worker/worker_client.js
+++ b/lib/ace/worker/worker_client.js
@@ -37,8 +37,8 @@
define(function(require, exports, module) {
-var oop = require("pilot/oop");
-var EventEmitter = require("pilot/event_emitter").EventEmitter;
+var oop = require("ace/lib/oop");
+var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
diff --git a/package.json b/package.json
index ad4f2cb5..acb9a6f0 100644
--- a/package.json
+++ b/package.json
@@ -13,10 +13,7 @@
"overlay": {
"teleport": {
"directories": {
- "lib": "lib/ace",
- "dependencies": {
- "pilot": ">=0.1.1"
- }
+ "lib": "lib/ace"
}
}
},
diff --git a/support/paths.js b/support/paths.js
index db8a150d..316a9f82 100644
--- a/support/paths.js
+++ b/support/paths.js
@@ -1,6 +1,5 @@
require("./requireJS-node");
require.paths.unshift(__dirname + "/../lib");
-require.paths.unshift(__dirname + "/pilot/lib");
require.paths.unshift(__dirname + "/dryice/lib");
require.paths.unshift(__dirname + "/async/lib");
require.paths.unshift(__dirname + "/jsdom/lib");
diff --git a/tool/theme.tmpl.js b/tool/theme.tmpl.js
index 3c965dac..403130e4 100644
--- a/tool/theme.tmpl.js
+++ b/tool/theme.tmpl.js
@@ -37,7 +37,7 @@
define(function(require, exports, module) {
- var dom = require("pilot/dom");
+ var dom = require("ace/lib/dom");
var cssText = %css%;