Merge pull request +12170 from c9/sdk

fix custom theme loading
pull/261/head
Harutyun Amirjanyan 2016-02-15 16:36:50 +04:00
commit 5d5269e872
3 zmienionych plików z 38 dodań i 12 usunięć

Wyświetl plik

@ -298,7 +298,7 @@ config.paths = Object.create(null);
config.baseUrl = "";
config.useCache = false;
require.undef = function(module, recursive) {
define.undef = require.undef = function(module, recursive) {
if (recursive) {
var root = (module + "/").replace(/\/+$/, "/");
undefAll(root, define.errors);

Wyświetl plik

@ -56,7 +56,7 @@
"c9"
],
"c9plugins": {
"c9.ide.language": "#9ecb087000",
"c9.ide.language": "#f8ab7c7f92",
"c9.ide.language.css": "#be07d72209",
"c9.ide.language.generic": "#a4023db7f6",
"c9.ide.language.html": "#22fdc74869",
@ -67,7 +67,7 @@
"c9.ide.language.javascript.tern": "#bf1072b11a",
"c9.ide.language.javascript.infer": "#0561c69d67",
"c9.ide.language.jsonalyzer": "#bf12af3d0a",
"c9.ide.collab": "#e2d334eee6",
"c9.ide.collab": "#00bd850bba",
"c9.ide.local": "#ded0db8949",
"c9.ide.find": "#e33fbaed2f",
"c9.ide.find.infiles": "#f0149b05ff",

Wyświetl plik

@ -37,6 +37,7 @@ define(function(require, exports, module) {
require("./scrollbar");
// Ace
var dom = require("ace/lib/dom");
var lang = require("ace/lib/lang");
var Range = require("ace/range").Range;
var config = require("ace/config");
@ -144,6 +145,11 @@ define(function(require, exports, module) {
function setTheme(path, isPreview, fromServer, $err) {
// Get Theme or wait for theme to load
theme = fromServer;
if (/custom_themes/.test(path)) {
theme = themes[path];
if (!theme) return;
dom.importCssString(theme.cssText, theme.cssClass);
}
if (!theme) {
return $err || config.loadModule(path, function(m) {
setTheme(path, isPreview, m, true);
@ -154,6 +160,8 @@ define(function(require, exports, module) {
if (settings.get("user/ace/@theme") != path) {
settings.set("user/ace/@theme", path);
settings.set("user/ace/@customTheme", theme.customCss);
// Emit theme change event
var style = (theme.isDark ? "dark" : "light");
if (settings.get("user/general/@skin").indexOf(style) == -1)
@ -504,7 +512,12 @@ define(function(require, exports, module) {
settings.on("read", function(e) {
settings.setDefaults("user/ace", userSettings);
settings.setDefaults("project/ace", projectSettings);
// TODO remove when there is a better way of loading custom themes
var customTheme = settings.get("user/ace/@customTheme");
if (customTheme)
addTheme(customTheme, handle);
// pre load custom mime types
loadCustomExtensions();
@ -1243,20 +1256,33 @@ define(function(require, exports, module) {
theme[info[0].trim()] = info[1].trim();
});
theme.isDark = theme.isDark == "true";
themes[theme.name] = theme;
ui.insertCss(exports.cssText, plugin);
addThemeMenu(theme.name, theme, null, plugin);
theme.id = "custom_themes/" + theme.name;
theme.customCss = css;
define.undef(theme.id);
define(theme.id, [], theme);
handleEmit("addTheme");
themes[theme.id] = theme;
addThemeMenu(theme.name, theme.id, null, plugin);
handleEmit("addTheme", theme);
if (settings.get("user/ace/@theme") == theme.id)
setTheme(theme.id);
plugin.addOther(function(){
delete themes[theme.name];
handleEmit("removeTheme");
removeTheme(theme, true);
});
}
function removeTheme(theme, silent) {
var el = document.getElementById(theme.cssClass);
el && el.remove();
delete themes[theme.name];
silent || handleEmit("removeTheme");
}
function rebuildSyntaxMenu() {
menus.remove("View/Syntax/");
var c = 0;
@ -1707,7 +1733,7 @@ define(function(require, exports, module) {
/***** Initialization *****/
function Ace(isBaseclass, exts) {
if ( !exts) exts = [];
if (!exts) exts = [];
var plugin = new Editor("Ajax.org", main.consumes,
exts && exts.concat(extensions) || extensions);
var emit = plugin.getEmitter();