From 46b1e9d862ada5175787197e3dddb33c7f62a65b Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Fri, 3 Apr 2015 01:24:25 +0000 Subject: [PATCH] Messing around --- plugins/c9.ide.ace/ace.js | 12 +++++++++++ plugins/c9.ide.ace/themes.js | 39 ++++++++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/plugins/c9.ide.ace/ace.js b/plugins/c9.ide.ace/ace.js index 74f3a6be..996e7794 100644 --- a/plugins/c9.ide.ace/ace.js +++ b/plugins/c9.ide.ace/ace.js @@ -1168,6 +1168,13 @@ define(function(require, exports, module) { ui.insertCss(exports.cssText, plugin); addThemeMenu(theme.name, theme, null, plugin); + + handleEmit("addTheme"); + + plugin.addOther(function(){ + delete themes[theme.name]; + handleEmit("removeTheme"); + }); } function rebuildSyntaxMenu() { @@ -1218,15 +1225,18 @@ define(function(require, exports, module) { function defineSyntax(opts) { if (!opts.name || !opts.caption) throw new Error("malformed syntax definition"); + var name = opts.name; modes.byCaption[opts.caption] = opts; modes.byName[name] = opts; if (!opts.extensions) opts.extensions = ""; + opts.extensions.split("|").forEach(function(ext) { modes.extensions[ext] = name; }); + updateSyntaxMenu.schedule(); } @@ -1235,9 +1245,11 @@ define(function(require, exports, module) { var extPos = fileName.lastIndexOf(".") + 1; if (extPos) return fileName.substr(extPos).toLowerCase(); + // special case for new files if (/^Untitled\d+$/.test(fileName)) fileName = fileName.replace(/\d+/, ""); + return "^" + fileName; } diff --git a/plugins/c9.ide.ace/themes.js b/plugins/c9.ide.ace/themes.js index 66c8000e..94fe9cce 100644 --- a/plugins/c9.ide.ace/themes.js +++ b/plugins/c9.ide.ace/themes.js @@ -31,6 +31,18 @@ define(function(require, exports, module) { if (loaded) return false; loaded = true; + function update(){ + if (!drawn) return; + + var list = getThemes(); + plugin.form.update({ + id: "syntax", + items: list + }); + } + + ace.on("addTheme", update); + ace.on("removeTheme", update); } var drawn; @@ -38,17 +50,7 @@ define(function(require, exports, module) { if (drawn) return; drawn = true; - var list = []; - var themes = ace.themes - for (var base in themes) { - if (themes[base] instanceof Array) - themes[base].forEach(function (n) { - var themeprop = Object.keys(n)[0]; - list.push({ caption: themeprop, value: n[themeprop] }); - }); - else - list.push({ caption: base, value: themes[base] }); - } + var list = getThemes(); var rb1, rb2, rb3, rb4, rb5; plugin.form.add([ @@ -138,6 +140,7 @@ define(function(require, exports, module) { title: "Syntax Theme", type: "dropdown", path: "user/ace/@theme", + name: "syntax", width: 165, onchange: function(e) { ace.setTheme(e.value); @@ -175,6 +178,20 @@ define(function(require, exports, module) { /***** Methods *****/ + function getThemes(){ + var list = []; + var themes = ace.themes + for (var base in themes) { + if (themes[base] instanceof Array) + themes[base].forEach(function (n) { + var themeprop = Object.keys(n)[0]; + list.push({ caption: themeprop, value: n[themeprop] }); + }); + else + list.push({ caption: base, value: themes[base] }); + } + return list; + } /***** Lifecycle *****/