Fix env.editor to point to the right object and add editor.env = env such that you can access env from the returned editor object

This commit is contained in:
Julian Viereck 2011-02-18 06:29:40 +08:00 • committed by Fabian Jakobs
commit 7ed9cb2f57

View file

@ -50,38 +50,41 @@ var deps = [
require(deps, function() { require(deps, function() {
var catalog = require("pilot/plugin_manager").catalog; var catalog = require("pilot/plugin_manager").catalog;
catalog.registerPlugins([ "pilot/index" ]); catalog.registerPlugins([ "pilot/index" ]);
var Dom = require("pilot/dom"); var Dom = require("pilot/dom");
var Event = require("pilot/event"); var Event = require("pilot/event");
var Editor = require("ace/editor").Editor; var Editor = require("ace/editor").Editor;
var EditSession = require("ace/edit_session").EditSession; var EditSession = require("ace/edit_session").EditSession;
var UndoManager = require("ace/undomanager").UndoManager; var UndoManager = require("ace/undomanager").UndoManager;
var Renderer = require("ace/virtual_renderer").VirtualRenderer; var Renderer = require("ace/virtual_renderer").VirtualRenderer;
window.ace = { window.ace = {
edit: function(el) { edit: function(el) {
if (typeof(el) == "string") { if (typeof(el) == "string") {
el = document.getElementById(el); el = document.getElementById(el);
} }
var doc = new EditSession(Dom.getInnerText(el)); var doc = new EditSession(Dom.getInnerText(el));
doc.setUndoManager(new UndoManager()); doc.setUndoManager(new UndoManager());
el.innerHTML = ''; el.innerHTML = '';
var editor = new Editor(new Renderer(el, "ace/theme/textmate")); var editor = new Editor(new Renderer(el, "ace/theme/textmate"));
editor.setSession(doc); editor.setSession(doc);
var env = require("pilot/environment").create(); var env = require("pilot/environment").create();
catalog.startupPlugins({ env: env }).then(function() { catalog.startupPlugins({ env: env }).then(function() {
env.document = doc; env.document = doc;
env.editor = env; env.editor = editor;
editor.resize(); editor.resize();
Event.addListener(window, "resize", function() { Event.addListener(window, "resize", function() {
editor.resize(); editor.resize();
}); });
el.env = env; el.env = env;
}); });
// Store env on editor such that it can be accessed later on from
// the returned object.
editor.env = env;
return editor; return editor;
} }
}; };