diff --git a/lib/ace/config.js b/lib/ace/config.js index 4a7dc286..97a18954 100644 --- a/lib/ace/config.js +++ b/lib/ace/config.js @@ -93,22 +93,37 @@ exports.setModuleUrl = function(name, subst) { return options.$moduleUrls[name] = subst; }; +exports.$loading = {}; exports.loadModule = function(moduleName, onLoad) { var module, moduleType; if (Array.isArray(moduleName)) { moduleType = moduleName[0]; moduleName = moduleName[1]; } + try { module = require(moduleName); } catch (e) {}; - if (module) + // require(moduleName) can return empty object if called after require([moduleName], callback) + if (module && !exports.$loading[moduleName]) return onLoad && onLoad(module); + if (!exports.$loading[moduleName]) + exports.$loading[moduleName] = []; + + exports.$loading[moduleName].push(onLoad); + + if (exports.$loading[moduleName].length > 1) + return; + var afterLoad = function() { require([moduleName], function(module) { exports._emit("load.module", {name: moduleName, module: module}); - onLoad && onLoad(module); + var listeners = exports.$loading[moduleName]; + exports.$loading[moduleName] = null; + listeners.forEach(function(onLoad) { + onLoad && onLoad(module); + }); }); }; diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 7ef2f106..a76ec222 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -496,7 +496,7 @@ var VirtualRenderer = function(container, theme) { var style = this.$printMarginEl.style; style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + "px"; style.visibility = this.$showPrintMargin ? "visible" : "hidden"; - + if (this.session && this.session.$wrap == -1) this.adjustWrapLimit(); }; @@ -1268,6 +1268,8 @@ var VirtualRenderer = function(container, theme) { } function afterLoad(theme) { + if (!theme.cssClass) + return; dom.importCssString( theme.cssText, theme.cssClass, @@ -1367,7 +1369,7 @@ config.defineOptions(VirtualRenderer.prototype, "renderer", { this.$updatePrintMargin(); }, get: function() { - return this.$showPrintMargin && this.$printMarginColumn; + return this.$showPrintMargin && this.$printMarginColumn; } }, showGutter: {