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%;