From 36f9b537cc6303640b0568051f3d9f0792c6b2bb Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 13 Feb 2013 23:49:48 +0400 Subject: [PATCH 1/5] fix loading of worker files from UIWorkerClient --- lib/ace/worker/worker.js | 30 +++++++++++++++--------------- lib/ace/worker/worker_client.js | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js index 46f173a5..00fef1f8 100644 --- a/lib/ace/worker/worker.js +++ b/lib/ace/worker/worker.js @@ -1,9 +1,10 @@ "no use strict"; +;(function(window) { +if (typeof window.window != "undefined" && window.document) { + return; +} -if (typeof window != "undefined" && window.document) - throw "atempt to load ace worker into main window instead of webWorker"; - -var console = { +window.console = { log: function() { var msgs = Array.prototype.slice.call(arguments, 0); postMessage({type: "log", data: msgs}); @@ -13,11 +14,9 @@ var console = { postMessage({type: "log", data: msgs}); } }; -var window = { - console: console -}; +window.window = window; -var normalizeModule = function(parentId, moduleName) { +window.normalizeModule = function(parentId, moduleName) { // normalize plugin requires if (moduleName.indexOf("!") !== -1) { var chunks = moduleName.split("!"); @@ -37,7 +36,7 @@ var normalizeModule = function(parentId, moduleName) { return moduleName; }; -var require = function(parentId, id) { +window.require = function(parentId, id) { if (!id.charAt) throw new Error("worker.js require() accepts only (parentId, id) as arguments"); @@ -64,7 +63,7 @@ var require = function(parentId, id) { require.modules = {}; require.tlns = {}; -var define = function(id, deps, factory) { +window.define = function(id, deps, factory) { if (arguments.length == 2) { factory = deps; if (typeof id != "string") { @@ -96,11 +95,11 @@ var define = function(id, deps, factory) { }; }; -function initBaseUrls(topLevelNamespaces) { +window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { require.tlns = topLevelNamespaces; } -function initSender() { +window.initSender = function initSender() { var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter; var oop = require(null, "ace/lib/oop"); @@ -132,10 +131,10 @@ function initSender() { return new Sender(); } -var main; -var sender; +window.main = null; +window.sender = null; -onmessage = function(e) { +window.onmessage = function(e) { var msg = e.data; if (msg.command) { if (main[msg.command]) @@ -154,3 +153,4 @@ onmessage = function(e) { sender._emit(msg.event, msg.data); } }; +})(this); \ No newline at end of file diff --git a/lib/ace/worker/worker_client.js b/lib/ace/worker/worker_client.js index a93abcc2..ddd27050 100644 --- a/lib/ace/worker/worker_client.js +++ b/lib/ace/worker/worker_client.js @@ -203,7 +203,7 @@ var UIWorkerClient = function(topLevelNamespaces, mod, classname) { this.postMessage({type: "event", name: name, data: data}); }; - require([mod], function(Main) { + config.loadModule(["worker", mod], function(Main) { main = new Main[classname](sender); while (_self.messageBuffer.length) processNext(); From 9ab8f1684083ddf97426795ff3222832e7e4623d Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 13 Feb 2013 23:51:53 +0400 Subject: [PATCH 2/5] restore textmate theme in build --- lib/ace/ace.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ace/ace.js b/lib/ace/ace.js index 002c9058..52a2ad87 100644 --- a/lib/ace/ace.js +++ b/lib/ace/ace.js @@ -53,6 +53,8 @@ require("./worker/worker_client"); require("./keyboard/hash_handler"); require("./placeholder"); require("./mode/folding/fold_mode"); +require("./theme/textmate"); + exports.config = require("./config"); /** From 564310b040bb0e2838cf43c2ff53414b4e8bef1b Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 14 Feb 2013 00:59:04 +0400 Subject: [PATCH 3/5] use noconflict filter for workers too --- Makefile.dryice.js | 3 --- lib/ace/worker/worker.js | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile.dryice.js b/Makefile.dryice.js index 4ecd397f..6c2d67db 100755 --- a/Makefile.dryice.js +++ b/Makefile.dryice.js @@ -269,9 +269,6 @@ function getWriteFilters(options, projectType) { if (options.filters) filters = filters.concat(options.filters); - if (projectType == "worker") - return filters; - if (options.noconflict) filters.push(namespace(options.ns)); diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js index 00fef1f8..96ab3989 100644 --- a/lib/ace/worker/worker.js +++ b/lib/ace/worker/worker.js @@ -15,6 +15,7 @@ window.console = { } }; window.window = window; +window.ace = window; window.normalizeModule = function(parentId, moduleName) { // normalize plugin requires From 37d41ab6fdafc14fcdbc52728d32eee1a38e0506 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 14 Feb 2013 01:02:24 +0400 Subject: [PATCH 4/5] remove window resize listener when destroying the editor --- lib/ace/ace.js | 3 +++ lib/ace/editor.js | 1 + 2 files changed, 4 insertions(+) diff --git a/lib/ace/ace.js b/lib/ace/ace.js index 52a2ad87..c8dba8f2 100644 --- a/lib/ace/ace.js +++ b/lib/ace/ace.js @@ -94,6 +94,9 @@ exports.edit = function(el) { onResize: editor.resize.bind(editor) }; event.addListener(window, "resize", env.onResize); + editor.on("destroy", function() { + event.removeListener(window, "resize", env.onResize); + }); el.env = editor.env = env; return editor; }; diff --git a/lib/ace/editor.js b/lib/ace/editor.js index d7a56fb2..8e9fad42 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -2169,6 +2169,7 @@ var Editor = function(renderer, session) { **/ this.destroy = function() { this.renderer.destroy(); + this._emit("destroy", this); }; }).call(Editor.prototype); From a40d9bce76574992112531bdd1dfc88a7934440e Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 16 Feb 2013 23:06:38 +0400 Subject: [PATCH 5/5] exclude files with whitespace in name from the build --- Makefile.dryice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.dryice.js b/Makefile.dryice.js index 6c2d67db..e5c73ac0 100755 --- a/Makefile.dryice.js +++ b/Makefile.dryice.js @@ -236,7 +236,7 @@ function jsFileList(path, filter) { filter = /_test/; return fs.readdirSync(path).map(function(x) { - if (x.slice(-3) == ".js" && !filter.test(x)) + if (x.slice(-3) == ".js" && !filter.test(x) && !/\s/.test(x)) return x.slice(0, -3); }).filter(function(x){ return !!x }); }