diff --git a/lib/ace/ace.js b/lib/ace/ace.js index d31ceb3a..69c21274 100644 --- a/lib/ace/ace.js +++ b/lib/ace/ace.js @@ -39,8 +39,8 @@ define(function(require, exports, module) { require("./lib/fixoldbrowsers"); -var Dom = require("./lib/dom"); -var Event = require("./lib/event"); +var dom = require("./lib/dom"); +var event = require("./lib/event"); var Editor = require("./editor").Editor; var EditSession = require("./edit_session").EditSession; @@ -54,41 +54,48 @@ require("./keyboard/hash_handler"); require("./placeholder"); require("./mode/folding/fold_mode"); exports.config = require("./config"); - /** - * Embeds the Ace editor into the DOM, at the element provided by `el`. - * @param {String | DOMElement} el Either the id of an element, or the element itself - * - **/ + +/** + * Embeds the Ace editor into the DOM, at the element provided by `el`. + * @param {String | DOMElement} el Either the id of an element, or the element itself + * + * This method embeds the Ace editor into the DOM, at the element provided by `el`. + * + **/ exports.edit = function(el) { if (typeof(el) == "string") { var _id = el; - if (!(el = document.getElementById(el))) + var el = document.getElementById(_id); + if (!el) throw "ace.edit can't find div #" + _id; } if (el.env && el.env.editor instanceof Editor) return el.env.editor; - var doc = new EditSession(Dom.getInnerText(el)); - doc.setUndoManager(new UndoManager()); + var doc = exports.createEditSession(dom.getInnerText(el)); el.innerHTML = ''; - var editor = new Editor(new Renderer(el, require("./theme/textmate"))); + var editor = new Editor(new Renderer(el)); new MultiSelect(editor); editor.setSession(doc); - var env = {}; - env.document = doc; - env.editor = editor; - editor.resize(); - Event.addListener(window, "resize", function() { - editor.resize(); - }); - el.env = env; - // Store env on editor such that it can be accessed later on from - // the returned object. - editor.env = env; + var env = { + document: doc, + editor: editor, + onResize: editor.resize.bind(editor) + }; + event.addListener(window, "resize", env.onResize); + el.env = editor.env = env; return editor; }; + +exports.createEditSession = function(text, mode) { + var doc = new EditSession(text, doc); + doc.setUndoManager(new UndoManager()); + return doc; +} +exports.EditSession = EditSession; +exports.UndoManager = UndoManager; });