improve ace.js api

This commit is contained in:
nightwing 2012-11-18 01:44:42 +04:00
commit be35d27c95

View file

@ -39,8 +39,8 @@ define(function(require, exports, module) {
require("./lib/fixoldbrowsers"); require("./lib/fixoldbrowsers");
var Dom = require("./lib/dom"); var dom = require("./lib/dom");
var Event = require("./lib/event"); var event = require("./lib/event");
var Editor = require("./editor").Editor; var Editor = require("./editor").Editor;
var EditSession = require("./edit_session").EditSession; var EditSession = require("./edit_session").EditSession;
@ -54,41 +54,48 @@ require("./keyboard/hash_handler");
require("./placeholder"); require("./placeholder");
require("./mode/folding/fold_mode"); require("./mode/folding/fold_mode");
exports.config = require("./config"); 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) { exports.edit = function(el) {
if (typeof(el) == "string") { if (typeof(el) == "string") {
var _id = el; var _id = el;
if (!(el = document.getElementById(el))) var el = document.getElementById(_id);
if (!el)
throw "ace.edit can't find div #" + _id; throw "ace.edit can't find div #" + _id;
} }
if (el.env && el.env.editor instanceof Editor) if (el.env && el.env.editor instanceof Editor)
return el.env.editor; return el.env.editor;
var doc = new EditSession(Dom.getInnerText(el)); var doc = exports.createEditSession(dom.getInnerText(el));
doc.setUndoManager(new UndoManager());
el.innerHTML = ''; el.innerHTML = '';
var editor = new Editor(new Renderer(el, require("./theme/textmate"))); var editor = new Editor(new Renderer(el));
new MultiSelect(editor); new MultiSelect(editor);
editor.setSession(doc); editor.setSession(doc);
var env = {}; var env = {
env.document = doc; document: doc,
env.editor = editor; editor: editor,
editor.resize(); onResize: editor.resize.bind(editor)
Event.addListener(window, "resize", function() { };
editor.resize(); event.addListener(window, "resize", env.onResize);
}); el.env = editor.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;
}; };
exports.createEditSession = function(text, mode) {
var doc = new EditSession(text, doc);
doc.setUndoManager(new UndoManager());
return doc;
}
exports.EditSession = EditSession;
exports.UndoManager = UndoManager;
}); });